diff --git a/packages/nicolium/src/actions/importer.ts b/packages/nicolium/src/actions/importer.ts index 41cc0033b..b457bf670 100644 --- a/packages/nicolium/src/actions/importer.ts +++ b/packages/nicolium/src/actions/importer.ts @@ -10,8 +10,11 @@ import type { Poll as BasePoll, Relationship as BaseRelationship, Status as BaseStatus, + StatusWithoutAccount, } from 'pl-api'; +type Status = BaseStatus | (StatusWithoutAccount & { expectsCard?: boolean }); + const STATUS_IMPORT = 'STATUS_IMPORT' as const; const STATUSES_IMPORT = 'STATUSES_IMPORT' as const; @@ -19,13 +22,13 @@ const isEmpty = (object: Record) => !Object.values(object).some((va interface ImportStatusAction { type: typeof STATUS_IMPORT; - status: BaseStatus; + status: Status; idempotencyKey?: string; } interface ImportStatusesAction { type: typeof STATUSES_IMPORT; - statuses: Array; + statuses: Array; } const importEntities = @@ -34,7 +37,7 @@ const importEntities = accounts?: Array; groups?: Array; polls?: Array; - statuses?: Array<(BaseStatus & { expectsCard?: boolean }) | undefined | null>; + statuses?: Array; relationships?: Array; }, options: { @@ -53,7 +56,7 @@ const importEntities = const groups: Record = {}; const polls: Record = {}; const relationships: Record = {}; - const statuses: Record = {}; + const statuses: Record = {}; const processAccount = (account: BaseAccount, withSelf = true) => { if (!override && selectAccount(account.id)) return; @@ -64,7 +67,7 @@ const importEntities = if (account.relationship) relationships[account.relationship.id] = account.relationship; }; - const processStatus = (status: BaseStatus, withSelf = true) => { + const processStatus = (status: Status, withSelf = true) => { // Skip broken statuses if (status.scheduled_at !== null) return; diff --git a/packages/nicolium/src/init/nicolium.tsx b/packages/nicolium/src/init/nicolium.tsx index 356ce7d63..b111c616b 100644 --- a/packages/nicolium/src/init/nicolium.tsx +++ b/packages/nicolium/src/init/nicolium.tsx @@ -14,26 +14,24 @@ import NicoliumLoad from './nicolium-load'; import NicoliumMount from './nicolium-mount'; // Preload happens synchronously -store.dispatch(preload() as any); +store.dispatch(preload()); /** The root React node of the application. */ const Nicolium: React.FC = () => ( - <> - - - - - - - - - - - - - - - + + + + + + + + + + + + + + ); export { Nicolium as default }; diff --git a/packages/nicolium/src/queries/conversations/use-conversations.ts b/packages/nicolium/src/queries/conversations/use-conversations.ts index 3d5cceeae..07762c875 100644 --- a/packages/nicolium/src/queries/conversations/use-conversations.ts +++ b/packages/nicolium/src/queries/conversations/use-conversations.ts @@ -33,7 +33,7 @@ const importConversationEntities = (conversations: Conversation[]) => { importEntities({ accounts: conversations.flatMap((conversation) => conversation.accounts), statuses: conversations.map((conversation) => conversation.last_status), - }) as any, + }), ); }; diff --git a/packages/nicolium/src/queries/utils/minify-list.ts b/packages/nicolium/src/queries/utils/minify-list.ts index 9c4f34fed..a9a10b3da 100644 --- a/packages/nicolium/src/queries/utils/minify-list.ts +++ b/packages/nicolium/src/queries/utils/minify-list.ts @@ -47,9 +47,7 @@ const minifyStatusList = (response: PaginatedResponse): PaginatedRespons minifyList( response, (status) => status.id, - (statuses) => { - store.dispatch(importEntities({ statuses }) as any); - }, + (statuses) => store.dispatch(importEntities({ statuses })), ); const minifyAccountList = (response: PaginatedResponse): PaginatedResponse => @@ -134,7 +132,7 @@ const minifyConversationList = (response: PaginatedResponse) => importEntities({ accounts: conversations.flatMap((conversation) => conversation.accounts), statuses: conversations.map((conversation) => conversation.last_status), - }) as any, + }), ); }); @@ -147,7 +145,7 @@ const minifyGroupedNotifications = ( (results) => { const { accounts, statuses } = results; - store.dispatch(importEntities({ accounts, statuses }) as any); + store.dispatch(importEntities({ accounts, statuses })); }, false, ); @@ -198,8 +196,8 @@ const minifyAdminReport = ({ assigned_account?.account, target_account?.account, ], - statuses: statuses as any, - }) as any, + statuses: statuses, + }), ); return { account_id: account.id, diff --git a/packages/nicolium/src/store.ts b/packages/nicolium/src/store.ts index a9cce158f..c652f13fb 100644 --- a/packages/nicolium/src/store.ts +++ b/packages/nicolium/src/store.ts @@ -5,17 +5,21 @@ import errorsMiddleware from './middleware/errors'; import soundsMiddleware from './middleware/sounds'; import appReducer from './reducers'; -const store = configureStore({ +const untypedStore = configureStore({ reducer: appReducer, middleware: () => new Tuple(thunk, errorsMiddleware(), soundsMiddleware()), devTools: true, }); -type Store = typeof store; +type Store = typeof untypedStore & { + dispatch: AppDispatch; +}; + +const store: Store = untypedStore as Store; // Infer the `RootState` and `AppDispatch` types from the store itself // https://redux.js.org/usage/usage-with-typescript -type RootState = ReturnType; +type RootState = ReturnType; type AppDispatch = ThunkDispatch; export { store, type Store, type RootState, type AppDispatch };