[🐴] Mod disabled (#4089)

* Handle send failures

* Add chat disabled state
This commit is contained in:
Eric Bailey
2024-05-17 18:05:21 -05:00
committed by GitHub
parent 8b3bfb3cf7
commit 49314e2d1f
6 changed files with 109 additions and 10 deletions
+43 -3
View File
@@ -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`,