Skip to content

Commit c8d6be6

Browse files
committed
fix: refresh mobile home run badges eagerly
1 parent 5f92cfb commit c8d6be6

2 files changed

Lines changed: 32 additions & 0 deletions

File tree

mobile/garyx-mobile/App/GaryxMobile/GaryxMobileModel+Composer.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,8 +197,10 @@ extension GaryxMobileModel {
197197
intentId: clientIntentId,
198198
error: "Thread is busy"
199199
)
200+
refreshHomeThreadsAfterLocalRunStateChange()
200201
return
201202
}
203+
refreshHomeThreadsAfterLocalRunStart()
202204
lastError = nil
203205
if !hasPendingDirectFollowUpAssistant(threadId: thread.id, assistantId: assistantId) {
204206
activeAssistantMessageIdsByThread[thread.id] = assistantId
@@ -241,6 +243,7 @@ extension GaryxMobileModel {
241243
intentId: clientIntentId,
242244
error: displayMessage(for: error)
243245
)
246+
refreshHomeThreadsAfterLocalRunStateChange()
244247
}
245248
lastError = displayMessage(for: error)
246249
}
@@ -383,6 +386,7 @@ extension GaryxMobileModel {
383386
intentId: queued.clientIntentId,
384387
text: queued.text
385388
)
389+
refreshHomeThreadsAfterLocalRunStart()
386390
activeAssistantMessageIdsByThread[queued.threadId] = assistantId
387391
let workspacePath = Self.firstNonEmpty(
388392
thread.workspacePath,
@@ -410,6 +414,7 @@ extension GaryxMobileModel {
410414
intentId: queued.clientIntentId,
411415
error: displayMessage(for: error)
412416
)
417+
refreshHomeThreadsAfterLocalRunStateChange()
413418
lastError = displayMessage(for: error)
414419
}
415420
}
@@ -449,6 +454,7 @@ extension GaryxMobileModel {
449454
intentId: clientIntentId,
450455
runId: result.runId
451456
)
457+
refreshHomeThreadsAfterLocalRunStateChange()
452458
if !hasPendingDirectFollowUpAssistant(threadId: acceptedThreadId, assistantId: assistantMessageId) {
453459
activeAssistantMessageIdsByThread[acceptedThreadId] = assistantMessageId
454460
}

mobile/garyx-mobile/App/GaryxMobile/GaryxMobileModel+Threads.swift

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,31 @@ extension GaryxMobileModel {
263263
}
264264
}
265265

266+
func refreshHomeThreadsAfterLocalRunStart() {
267+
refreshHomeThreadsAfterLocalRunStateChange()
268+
scheduleHomeThreadsRunStateRefresh(after: 350_000_000)
269+
}
270+
271+
func refreshHomeThreadsAfterLocalRunStateChange() {
272+
scheduleHomeThreadsRunStateRefresh()
273+
}
274+
275+
private func scheduleHomeThreadsRunStateRefresh(after delayNanos: UInt64? = nil) {
276+
guard hasGatewaySettings else { return }
277+
Task { [weak self] in
278+
if let delayNanos {
279+
try? await Task.sleep(nanoseconds: delayNanos)
280+
guard !Task.isCancelled else { return }
281+
}
282+
await self?.refreshHomeThreadsRunStateIfConnected()
283+
}
284+
}
285+
286+
private func refreshHomeThreadsRunStateIfConnected() async {
287+
guard hasGatewaySettings, case .ready = connectionState else { return }
288+
await refreshThreads(silent: true)
289+
}
290+
266291
func applyRecentThreadsPage(_ page: GaryxRecentThreadsPage, preservesLoadedPages: Bool) {
267292
let pageIds = pendingThreadArchives.visibleThreads(page.threads).map(\.id)
268293
let returnedEnd = page.offset + page.count
@@ -1311,6 +1336,7 @@ extension GaryxMobileModel {
13111336
} else {
13121337
runTracker.completeCommittedRun(threadId: threadId)
13131338
}
1339+
refreshHomeThreadsAfterLocalRunStateChange()
13141340
}
13151341

13161342
func summaryWithCommittedRunState(_ thread: GaryxThreadSummary) -> GaryxThreadSummary {

0 commit comments

Comments
 (0)