diff --git a/apps/ios/Shared/Views/ChatList/ChatListView.swift b/apps/ios/Shared/Views/ChatList/ChatListView.swift index 91e280f76a..11644d1378 100644 --- a/apps/ios/Shared/Views/ChatList/ChatListView.swift +++ b/apps/ios/Shared/Views/ChatList/ChatListView.swift @@ -265,8 +265,15 @@ struct ChatListView: View { struct SubsStatusIndicator: View { @State private var subs: SMPServerSubs = SMPServerSubs(ssActive: 0, ssPending: 0) + @State private var timer: Timer? = nil + @State private var timerCounter = 0 @State private var showServersSummary = false + // Constants for the intervals + let initialInterval: TimeInterval = 1.0 + let regularInterval: TimeInterval = 5.0 + let initialPhaseDuration: TimeInterval = 10.0 // Duration for initial phase in seconds + var body: some View { Button { showServersSummary = true @@ -274,14 +281,39 @@ struct SubsStatusIndicator: View { SubscriptionStatusView(activeSubs: subs.ssActive, pendingSubs: subs.ssPending) } .onAppear { - // TODO update - getSubsSummary() + startInitialTimer() + } + .onDisappear { + stopTimer() } .sheet(isPresented: $showServersSummary) { ServersSummaryView() } } + private func startInitialTimer() { + timer = Timer.scheduledTimer(withTimeInterval: initialInterval, repeats: true) { _ in + getSubsSummary() + timerCounter += 1 + // Switch to the regular timer after the initial phase + if timerCounter * Int(initialInterval) >= Int(initialPhaseDuration) { + switchToRegularTimer() + } + } + } + + func switchToRegularTimer() { + timer?.invalidate() + timer = Timer.scheduledTimer(withTimeInterval: regularInterval, repeats: true) { _ in + getSubsSummary() + } + } + + func stopTimer() { + timer?.invalidate() + timer = nil + } + private func getSubsSummary() { do { subs = try getAgentSubsSummary()