diff options
Diffstat (limited to 'src/state/messages/convo/agent.ts')
-rw-r--r-- | src/state/messages/convo/agent.ts | 46 |
1 files changed, 43 insertions, 3 deletions
diff --git a/src/state/messages/convo/agent.ts b/src/state/messages/convo/agent.ts index 8673c70ad..0a75401c2 100644 --- a/src/state/messages/convo/agent.ts +++ b/src/state/messages/convo/agent.ts @@ -152,6 +152,7 @@ export class Convo { fetchMessageHistory: undefined, } } + case ConvoStatus.Disabled: case ConvoStatus.Suspended: case ConvoStatus.Backgrounded: case ConvoStatus.Ready: { @@ -241,6 +242,13 @@ export class Convo { this.withdrawRequestedPollInterval() break } + case ConvoDispatchEvent.Disable: { + this.status = ConvoStatus.Disabled + this.fetchMessageHistory() // finish init + this.cleanupFirehoseConnection?.() + this.withdrawRequestedPollInterval() + break + } } break } @@ -269,6 +277,12 @@ export class Convo { this.withdrawRequestedPollInterval() break } + case ConvoDispatchEvent.Disable: { + this.status = ConvoStatus.Disabled + this.cleanupFirehoseConnection?.() + this.withdrawRequestedPollInterval() + break + } } break } @@ -303,6 +317,12 @@ export class Convo { this.withdrawRequestedPollInterval() break } + case ConvoDispatchEvent.Disable: { + this.status = ConvoStatus.Disabled + this.cleanupFirehoseConnection?.() + this.withdrawRequestedPollInterval() + break + } } break } @@ -321,6 +341,10 @@ export class Convo { this.error = action.payload break } + case ConvoDispatchEvent.Disable: { + this.status = ConvoStatus.Disabled + break + } } break } @@ -343,9 +367,17 @@ export class Convo { this.error = action.payload break } + case ConvoDispatchEvent.Disable: { + this.status = ConvoStatus.Disabled + break + } } break } + case ConvoStatus.Disabled: { + // can't do anything + break + } default: break } @@ -424,9 +456,13 @@ export class Convo { throw new Error('Convo: could not find recipients in convo') } - // await new Promise(y => setTimeout(y, 2000)) - // throw new Error('UNCOMMENT TO TEST INIT FAILURE') - this.dispatch({event: ConvoDispatchEvent.Ready}) + const userIsDisabled = this.sender.chatDisabled as boolean + + if (userIsDisabled) { + this.dispatch({event: ConvoDispatchEvent.Disable}) + } else { + this.dispatch({event: ConvoDispatchEvent.Ready}) + } } catch (e: any) { logger.error(e, {context: 'Convo: setup failed'}) @@ -829,6 +865,10 @@ export class Convo { ], }) break + case 'Account is disabled': + this.pendingMessageFailure = 'unrecoverable' + this.dispatch({event: ConvoDispatchEvent.Disable}) + break default: logger.warn( `Convo handleSendMessageFailure could not handle error`, |