Skip to content

Commit 5e4d391

Browse files
graycreateclaude
andcommitted
fix: add minimum delay for pull-to-refresh animation
- Add 800ms minimum delay in UpdatableView to prevent immediate retraction - Fetch online stats on first load for smoother subsequent refreshes - Fixes issue where pull-to-refresh would snap back immediately 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
1 parent ff8c91c commit 5e4d391

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

V2er/View/Feed/FeedPage.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ struct FeedPage: BaseHomePageView {
2525
log("FeedPage.onAppear")
2626
if !state.hasLoadedOnce {
2727
dispatch(FeedActions.FetchData.Start(autoLoad: true))
28+
if AccountState.hasSignIn() {
29+
Task { await run(action: FeedActions.FetchOnlineStats.Start()) }
30+
}
2831
}
2932
}
3033
}

V2er/View/Widget/Updatable/UpdatableView.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,9 +130,9 @@ struct UpdatableView<Content: View>: View {
130130

131131
Task {
132132
await onRefresh?()
133-
// Decide delay (ms): 1200 if we had/now have online stats so users can notice updates; otherwise 0.
133+
// Minimum 800ms delay for refresh animation, 1000ms if online stats exist
134134
let hasOnlineStatsNow = onlineStats != nil
135-
let delayMs = (hadOnlineStatsBefore || hasOnlineStatsNow) ? 1000 : 0
135+
let delayMs = (hadOnlineStatsBefore || hasOnlineStatsNow) ? 1000 : 800
136136
runInMain(delay: delayMs) {
137137
withAnimation {
138138
isRefreshing = false

0 commit comments

Comments
 (0)