Reset after 5 min

This commit is contained in:
Eric Bailey
2024-05-14 20:11:48 -05:00
parent 0e04b19627
commit cfef0c61c7
2 changed files with 27 additions and 7 deletions
+26 -7
View File
@@ -13,6 +13,7 @@ import {isNative} from '#/platform/detection'
import {
ACTIVE_POLL_INTERVAL,
BACKGROUND_POLL_INTERVAL,
INACTIVE_TIMEOUT,
} from '#/state/messages/convo/const'
import {
ConvoDispatch,
@@ -79,6 +80,8 @@ export class Convo {
private isProcessingPendingMessages = false
private lastActiveTimestamp: number | undefined
convoId: string
convo: ChatBskyConvoDefs.ConvoView | undefined
sender: AppBskyActorDefs.ProfileViewBasic | undefined
@@ -272,16 +275,19 @@ export class Convo {
}
case ConvoStatus.Backgrounded: {
switch (action.event) {
// TODO truncate history if needed
case ConvoDispatchEvent.Resume: {
if (this.convo) {
this.status = ConvoStatus.Ready
this.refreshConvo()
if (this.wasChatInactive()) {
this.reset()
} else {
this.status = ConvoStatus.Initializing
this.setup()
if (this.convo) {
this.status = ConvoStatus.Ready
this.refreshConvo()
} else {
this.status = ConvoStatus.Initializing
this.setup()
}
this.requestPollInterval(ACTIVE_POLL_INTERVAL)
}
this.requestPollInterval(ACTIVE_POLL_INTERVAL)
break
}
case ConvoDispatchEvent.Suspend: {
@@ -354,6 +360,7 @@ export class Convo {
logger.DebugContext.convo,
)
this.updateLastActiveTimestamp()
this.commit()
}
@@ -436,6 +443,18 @@ export class Convo {
DEBUG_ACTIVE_CHAT = undefined
}
/**
* Called on any state transition, like when the chat is backgrounded. This
* value is then checked on background -> foreground transitions.
*/
private updateLastActiveTimestamp() {
this.lastActiveTimestamp = Date.now()
}
private wasChatInactive() {
if (!this.lastActiveTimestamp) return true
return Date.now() - this.lastActiveTimestamp > INACTIVE_TIMEOUT
}
private requestedPollInterval: (() => void) | undefined
private requestPollInterval(interval: number) {
this.withdrawRequestedPollInterval()
+1
View File
@@ -1,2 +1,3 @@
export const ACTIVE_POLL_INTERVAL = 1e3
export const BACKGROUND_POLL_INTERVAL = 5e3
export const INACTIVE_TIMEOUT = 60e3 * 5