diff options
Diffstat (limited to 'src/state/messages')
-rw-r--r-- | src/state/messages/convo/agent.ts | 21 | ||||
-rw-r--r-- | src/state/messages/convo/index.tsx | 4 | ||||
-rw-r--r-- | src/state/messages/convo/types.ts | 8 | ||||
-rw-r--r-- | src/state/messages/convo/util.ts | 18 |
4 files changed, 42 insertions, 9 deletions
diff --git a/src/state/messages/convo/agent.ts b/src/state/messages/convo/agent.ts index 73e75f58d..f6a8d6dc4 100644 --- a/src/state/messages/convo/agent.ts +++ b/src/state/messages/convo/agent.ts @@ -105,6 +105,7 @@ export class Convo { this.ingestFirehose = this.ingestFirehose.bind(this) this.onFirehoseConnect = this.onFirehoseConnect.bind(this) this.onFirehoseError = this.onFirehoseError.bind(this) + this.markConvoAccepted = this.markConvoAccepted.bind(this) } private commit() { @@ -145,6 +146,7 @@ export class Convo { deleteMessage: undefined, sendMessage: undefined, fetchMessageHistory: undefined, + markConvoAccepted: undefined, } } case ConvoStatus.Disabled: @@ -162,6 +164,7 @@ export class Convo { deleteMessage: this.deleteMessage, sendMessage: this.sendMessage, fetchMessageHistory: this.fetchMessageHistory, + markConvoAccepted: this.markConvoAccepted, } } case ConvoStatus.Error: { @@ -176,6 +179,7 @@ export class Convo { deleteMessage: undefined, sendMessage: undefined, fetchMessageHistory: undefined, + markConvoAccepted: undefined, } } default: { @@ -190,6 +194,7 @@ export class Convo { deleteMessage: undefined, sendMessage: undefined, fetchMessageHistory: undefined, + markConvoAccepted: undefined, } } } @@ -780,6 +785,12 @@ export class Convo { id: tempId, message, }) + if (this.convo?.status === 'request') { + this.convo = { + ...this.convo, + status: 'accepted', + } + } this.commit() if (!this.isProcessingPendingMessages && !this.pendingMessageFailure) { @@ -787,6 +798,16 @@ export class Convo { } } + markConvoAccepted() { + if (this.convo) { + this.convo = { + ...this.convo, + status: 'accepted', + } + } + this.commit() + } + async processPendingMessages() { logger.debug( `Convo: processing messages (${this.pendingMessages.size} remaining)`, diff --git a/src/state/messages/convo/index.tsx b/src/state/messages/convo/index.tsx index a1750bdf0..f004566e8 100644 --- a/src/state/messages/convo/index.tsx +++ b/src/state/messages/convo/index.tsx @@ -19,7 +19,7 @@ import { RQKEY as getConvoKey, useMarkAsReadMutation, } from '#/state/queries/messages/conversation' -import {RQKEY as ListConvosQueryKey} from '#/state/queries/messages/list-conversations' +import {RQKEY_ROOT as ListConvosQueryKeyRoot} from '#/state/queries/messages/list-conversations' import {RQKEY as createProfileQueryKey} from '#/state/queries/profile' import {useAgent} from '#/state/session' @@ -104,7 +104,7 @@ export function ConvoProvider({ }) } queryClient.invalidateQueries({ - queryKey: ListConvosQueryKey, + queryKey: [ListConvosQueryKeyRoot], }) } } diff --git a/src/state/messages/convo/types.ts b/src/state/messages/convo/types.ts index 69e15acc4..83499de2e 100644 --- a/src/state/messages/convo/types.ts +++ b/src/state/messages/convo/types.ts @@ -141,6 +141,7 @@ type SendMessage = ( message: ChatBskyConvoSendMessage.InputSchema['message'], ) => void type FetchMessageHistory = () => Promise<void> +type MarkConvoAccepted = () => void export type ConvoStateUninitialized = { status: ConvoStatus.Uninitialized @@ -153,6 +154,7 @@ export type ConvoStateUninitialized = { deleteMessage: undefined sendMessage: undefined fetchMessageHistory: undefined + markConvoAccepted: undefined } export type ConvoStateInitializing = { status: ConvoStatus.Initializing @@ -165,6 +167,7 @@ export type ConvoStateInitializing = { deleteMessage: undefined sendMessage: undefined fetchMessageHistory: undefined + markConvoAccepted: undefined } export type ConvoStateReady = { status: ConvoStatus.Ready @@ -177,6 +180,7 @@ export type ConvoStateReady = { deleteMessage: DeleteMessage sendMessage: SendMessage fetchMessageHistory: FetchMessageHistory + markConvoAccepted: MarkConvoAccepted } export type ConvoStateBackgrounded = { status: ConvoStatus.Backgrounded @@ -189,6 +193,7 @@ export type ConvoStateBackgrounded = { deleteMessage: DeleteMessage sendMessage: SendMessage fetchMessageHistory: FetchMessageHistory + markConvoAccepted: MarkConvoAccepted } export type ConvoStateSuspended = { status: ConvoStatus.Suspended @@ -201,6 +206,7 @@ export type ConvoStateSuspended = { deleteMessage: DeleteMessage sendMessage: SendMessage fetchMessageHistory: FetchMessageHistory + markConvoAccepted: MarkConvoAccepted } export type ConvoStateError = { status: ConvoStatus.Error @@ -213,6 +219,7 @@ export type ConvoStateError = { deleteMessage: undefined sendMessage: undefined fetchMessageHistory: undefined + markConvoAccepted: undefined } export type ConvoStateDisabled = { status: ConvoStatus.Disabled @@ -225,6 +232,7 @@ export type ConvoStateDisabled = { deleteMessage: DeleteMessage sendMessage: SendMessage fetchMessageHistory: FetchMessageHistory + markConvoAccepted: MarkConvoAccepted } export type ConvoState = | ConvoStateUninitialized diff --git a/src/state/messages/convo/util.ts b/src/state/messages/convo/util.ts index 200d85dfa..92046cf1f 100644 --- a/src/state/messages/convo/util.ts +++ b/src/state/messages/convo/util.ts @@ -8,17 +8,21 @@ import { } from './types' /** - * Checks if a `Convo` has a `status` that is "active", meaning the chat is - * loaded and ready to be used, or its in a suspended or background state, and - * ready for resumption. + * States where the convo is ready to be used - either ready, or backgrounded/suspended + * and ready to be resumed */ -export function isConvoActive( - convo: ConvoState, -): convo is +export type ActiveConvoStates = | ConvoStateReady | ConvoStateBackgrounded | ConvoStateSuspended - | ConvoStateDisabled { + | ConvoStateDisabled + +/** + * Checks if a `Convo` has a `status` that is "active", meaning the chat is + * loaded and ready to be used, or its in a suspended or background state, and + * ready for resumption. + */ +export function isConvoActive(convo: ConvoState): convo is ActiveConvoStates { return ( convo.status === ConvoStatus.Ready || convo.status === ConvoStatus.Backgrounded || |