[🐴] Convo agent cleanup (#4109)

* Move comment, remove unused code

* Clean up sending

* Remove temp hack

* Remove debug
zio/stable
Eric Bailey 2024-05-19 18:52:51 -05:00 committed by GitHub
parent 3ca671d9aa
commit 7de0b0a58c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 12 additions and 34 deletions

View File

@ -34,9 +34,6 @@ import {MessagesEventBus} from '#/state/messages/events/agent'
import {MessagesEventBusError} from '#/state/messages/events/types' import {MessagesEventBusError} from '#/state/messages/events/types'
import {DM_SERVICE_HEADERS} from '#/state/queries/messages/const' import {DM_SERVICE_HEADERS} from '#/state/queries/messages/const'
// TODO temporary
let DEBUG_ACTIVE_CHAT: string | undefined
export function isConvoItemMessage( export function isConvoItemMessage(
item: ConvoItem, item: ConvoItem,
): item is ConvoItem & {type: 'message'} { ): item is ConvoItem & {type: 'message'} {
@ -102,14 +99,6 @@ export class Convo {
this.ingestFirehose = this.ingestFirehose.bind(this) this.ingestFirehose = this.ingestFirehose.bind(this)
this.onFirehoseConnect = this.onFirehoseConnect.bind(this) this.onFirehoseConnect = this.onFirehoseConnect.bind(this)
this.onFirehoseError = this.onFirehoseError.bind(this) this.onFirehoseError = this.onFirehoseError.bind(this)
if (DEBUG_ACTIVE_CHAT) {
logger.error(`Convo: another chat was already active`, {
convoId: this.convoId,
})
} else {
DEBUG_ACTIVE_CHAT = this.convoId
}
} }
private commit() { private commit() {
@ -494,7 +483,6 @@ export class Convo {
suspend() { suspend() {
this.dispatch({event: ConvoDispatchEvent.Suspend}) this.dispatch({event: ConvoDispatchEvent.Suspend})
DEBUG_ACTIVE_CHAT = undefined
} }
/** /**
@ -602,15 +590,6 @@ export class Convo {
this.isFetchingHistory = true this.isFetchingHistory = true
this.commit() this.commit()
/*
* Delay if paginating while scrolled to prevent momentum scrolling from
* jerking the list around, plus makes it feel a little more human.
*/
if (this.pastMessages.size > 0) {
await new Promise(y => setTimeout(y, 500))
// throw new Error('UNCOMMENT TO TEST RETRY')
}
const nextCursor = this.oldestRev // for TS const nextCursor = this.oldestRev // for TS
const response = await networkRetry(2, () => { const response = await networkRetry(2, () => {
return this.agent.api.chat.bsky.convo.getMessages( return this.agent.api.chat.bsky.convo.getMessages(
@ -679,6 +658,9 @@ export class Convo {
} }
} }
}, },
/*
* This is VERY important we only want events for this convo.
*/
{convoId: this.convoId}, {convoId: this.convoId},
) )
} }
@ -725,12 +707,6 @@ export class Convo {
*/ */
this.latestRev = ev.rev this.latestRev = ev.rev
/*
* This is VERY important. We don't want to insert any messages from
* your other chats.
*/
if (ev.convoId !== this.convoId) continue
if ( if (
ChatBskyConvoDefs.isLogCreateMessage(ev) && ChatBskyConvoDefs.isLogCreateMessage(ev) &&
ChatBskyConvoDefs.isMessageView(ev.message) ChatBskyConvoDefs.isMessageView(ev.message)
@ -775,7 +751,7 @@ export class Convo {
private pendingMessageFailure: 'recoverable' | 'unrecoverable' | null = null private pendingMessageFailure: 'recoverable' | 'unrecoverable' | null = null
async sendMessage(message: ChatBskyConvoSendMessage.InputSchema['message']) { sendMessage(message: ChatBskyConvoSendMessage.InputSchema['message']) {
// Ignore empty messages for now since they have no other purpose atm // Ignore empty messages for now since they have no other purpose atm
if (!message.text.trim()) return if (!message.text.trim()) return
@ -828,6 +804,9 @@ export class Convo {
}) })
const res = response.data const res = response.data
// remove from queue
this.pendingMessages.delete(id)
/* /*
* Insert into `newMessages` as soon as we have a real ID. That way, when * Insert into `newMessages` as soon as we have a real ID. That way, when
* we get an event log back, we can replace in situ. * we get an event log back, we can replace in situ.
@ -836,15 +815,14 @@ export class Convo {
...res, ...res,
$type: 'chat.bsky.convo.defs#messageView', $type: 'chat.bsky.convo.defs#messageView',
}) })
this.pendingMessages.delete(id) // render new message state, prior to firehose
await this.processPendingMessages()
this.commit() this.commit()
// continue queue processing
await this.processPendingMessages()
} catch (e: any) { } catch (e: any) {
logger.error(e, {context: `Convo: failed to send message`}) logger.error(e, {context: `Convo: failed to send message`})
this.handleSendMessageFailure(e) this.handleSendMessageFailure(e)
} finally {
this.isProcessingPendingMessages = false this.isProcessingPendingMessages = false
} }
} }

View File

@ -124,7 +124,7 @@ export type ConvoItem =
type DeleteMessage = (messageId: string) => Promise<void> type DeleteMessage = (messageId: string) => Promise<void>
type SendMessage = ( type SendMessage = (
message: ChatBskyConvoSendMessage.InputSchema['message'], message: ChatBskyConvoSendMessage.InputSchema['message'],
) => Promise<void> ) => void
type FetchMessageHistory = () => Promise<void> type FetchMessageHistory = () => Promise<void>
export type ConvoStateUninitialized = { export type ConvoStateUninitialized = {