From 5a67dc9110b135023b6b6de0f37bbecb06b62a01 Mon Sep 17 00:00:00 2001 From: Samuel Newman Date: Fri, 16 Jan 2026 11:46:28 +0200 Subject: [PATCH] move state to colo with composer --- src/state/drafts/index.ts | 3 --- src/view/com/composer/Composer.tsx | 14 +++++----- src/view/com/composer/drafts/DraftItem.tsx | 26 ++++++++++++------- src/view/com/composer/drafts/DraftsButton.tsx | 3 ++- .../com/composer/drafts/DraftsListDialog.tsx | 5 ++-- .../com/composer/drafts/state}/api.ts | 0 .../com/composer/drafts/state}/hooks.ts | 0 .../com/composer/drafts/state}/logger.ts | 0 .../com/composer/drafts/state}/schema.ts | 0 .../com/composer/drafts/state}/storage.ts | 0 .../com/composer/drafts/state}/storage.web.ts | 0 11 files changed, 29 insertions(+), 22 deletions(-) delete mode 100644 src/state/drafts/index.ts rename src/{state/drafts => view/com/composer/drafts/state}/api.ts (100%) rename src/{state/drafts => view/com/composer/drafts/state}/hooks.ts (100%) rename src/{state/drafts => view/com/composer/drafts/state}/logger.ts (100%) rename src/{state/drafts => view/com/composer/drafts/state}/schema.ts (100%) rename src/{state/drafts => view/com/composer/drafts/state}/storage.ts (100%) rename src/{state/drafts => view/com/composer/drafts/state}/storage.web.ts (100%) diff --git a/src/state/drafts/index.ts b/src/state/drafts/index.ts deleted file mode 100644 index a6a0003e2e..0000000000 --- a/src/state/drafts/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './api' -export * from './hooks' -export * from './schema' diff --git a/src/view/com/composer/Composer.tsx b/src/view/com/composer/Composer.tsx index eaa775c1ed..7c01414d5a 100644 --- a/src/view/com/composer/Composer.tsx +++ b/src/view/com/composer/Composer.tsx @@ -76,13 +76,6 @@ import {cleanError} from '#/lib/strings/errors' import {colors} from '#/lib/styles' import {logger} from '#/logger' import {useDialogStateControlContext} from '#/state/dialogs' -import { - type DraftSummary, - draftToComposerPosts, - threadgateToUISettings, - useLoadDraft, - useSaveDraft, -} from '#/state/drafts' import {emitPostCreated} from '#/state/events' import { type ComposerImage, @@ -139,6 +132,13 @@ import {Text as NewText} from '#/components/Typography' import {useAnalytics} from '#/analytics' import {IS_ANDROID, IS_IOS, IS_NATIVE, IS_WEB} from '#/env' import {BottomSheetPortalProvider} from '../../../../modules/bottom-sheet' +import { + draftToComposerPosts, + threadgateToUISettings, + useLoadDraft, + useSaveDraft, +} from './drafts/state/hooks' +import {type DraftSummary} from './drafts/state/schema' import {PostLanguageSelect} from './select-language/PostLanguageSelect' import { type AssetType, diff --git a/src/view/com/composer/drafts/DraftItem.tsx b/src/view/com/composer/drafts/DraftItem.tsx index bd051e0b1c..9aac81677e 100644 --- a/src/view/com/composer/drafts/DraftItem.tsx +++ b/src/view/com/composer/drafts/DraftItem.tsx @@ -5,12 +5,6 @@ import {type AppBskyEmbedImages} from '@atproto/api' import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' -import { - type DraftPostDisplay, - type DraftSummary, - type LocalMediaDisplay, -} from '#/state/drafts' -import * as storage from '#/state/drafts/storage' import {useCurrentAccountProfile} from '#/state/queries/useCurrentAccountProfile' import {useSession} from '#/state/session' import {TimeElapsed} from '#/view/com/util/TimeElapsed' @@ -22,6 +16,12 @@ import {AutoSizedImage} from '#/components/images/AutoSizedImage' import {ImageLayoutGrid} from '#/components/images/ImageLayoutGrid' import * as Prompt from '#/components/Prompt' import {Text} from '#/components/Typography' +import { + type DraftPostDisplay, + type DraftSummary, + type LocalMediaDisplay, +} from './state/schema' +import * as storage from './state/storage' export function DraftItem({ draft, @@ -193,9 +193,17 @@ function DraftPostRow({ {/* Post text - full, not truncated */} {post.text ? ( - {post.text} + + {post.text} + ) : ( - + (No text) )} @@ -267,7 +275,7 @@ function DraftMediaPreview({post}: {post: DraftPostDisplay}) { } return ( - + {/* Images - use real embed components */} {viewImages.length === 1 && ( diff --git a/src/view/com/composer/drafts/DraftsButton.tsx b/src/view/com/composer/drafts/DraftsButton.tsx index 9f3563b6e0..efe411184a 100644 --- a/src/view/com/composer/drafts/DraftsButton.tsx +++ b/src/view/com/composer/drafts/DraftsButton.tsx @@ -1,12 +1,13 @@ import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' -import {type DraftSummary, useSaveDraft} from '#/state/drafts' import {atoms as a} from '#/alf' import {Button, ButtonText} from '#/components/Button' import * as Dialog from '#/components/Dialog' import * as Prompt from '#/components/Prompt' import {DraftsListDialog} from './DraftsListDialog' +import {useSaveDraft} from './state/hooks' +import {type DraftSummary} from './state/schema' export function DraftsButton({ onSelectDraft, diff --git a/src/view/com/composer/drafts/DraftsListDialog.tsx b/src/view/com/composer/drafts/DraftsListDialog.tsx index 8db7006f61..3fb943054d 100644 --- a/src/view/com/composer/drafts/DraftsListDialog.tsx +++ b/src/view/com/composer/drafts/DraftsListDialog.tsx @@ -4,14 +4,15 @@ import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' import {isNative} from '#/platform/detection' -import {type DraftSummary, useDeleteDraft, useDrafts} from '#/state/drafts' +import {EmptyState} from '#/view/com/util/EmptyState' import {atoms as a, useTheme, web} from '#/alf' import {Button, ButtonText} from '#/components/Button' import * as Dialog from '#/components/Dialog' import {PageX_Stroke2_Corner0_Rounded_Large as PageXIcon} from '#/components/icons/PageX' import {Loader} from '#/components/Loader' -import {EmptyState} from '../../util/EmptyState' import {DraftItem} from './DraftItem' +import {useDeleteDraft, useDrafts} from './state/hooks' +import {type DraftSummary} from './state/schema' export function DraftsListDialog({ control, diff --git a/src/state/drafts/api.ts b/src/view/com/composer/drafts/state/api.ts similarity index 100% rename from src/state/drafts/api.ts rename to src/view/com/composer/drafts/state/api.ts diff --git a/src/state/drafts/hooks.ts b/src/view/com/composer/drafts/state/hooks.ts similarity index 100% rename from src/state/drafts/hooks.ts rename to src/view/com/composer/drafts/state/hooks.ts diff --git a/src/state/drafts/logger.ts b/src/view/com/composer/drafts/state/logger.ts similarity index 100% rename from src/state/drafts/logger.ts rename to src/view/com/composer/drafts/state/logger.ts diff --git a/src/state/drafts/schema.ts b/src/view/com/composer/drafts/state/schema.ts similarity index 100% rename from src/state/drafts/schema.ts rename to src/view/com/composer/drafts/state/schema.ts diff --git a/src/state/drafts/storage.ts b/src/view/com/composer/drafts/state/storage.ts similarity index 100% rename from src/state/drafts/storage.ts rename to src/view/com/composer/drafts/state/storage.ts diff --git a/src/state/drafts/storage.web.ts b/src/view/com/composer/drafts/state/storage.web.ts similarity index 100% rename from src/state/drafts/storage.web.ts rename to src/view/com/composer/drafts/state/storage.web.ts