mirror of
https://github.com/warmbly/warmbly.git
synced 2026-09-06 08:01:24 +00:00
37 lines
955 B
Swift
37 lines
955 B
Swift
import Foundation
|
|
|
|
/// Live tab-badge counts, updated by feature stores.
|
|
@MainActor
|
|
@Observable
|
|
final class AppBadges {
|
|
var uniboxUnread: Int = 0
|
|
}
|
|
|
|
/// Root object graph, injected once via `.environment(...)`.
|
|
@MainActor
|
|
@Observable
|
|
final class AppEnvironment {
|
|
let api: APIClient
|
|
let session: SessionStore
|
|
let realtime: RealtimeService
|
|
let badges = AppBadges()
|
|
|
|
init() {
|
|
let api = APIClient()
|
|
self.api = api
|
|
session = SessionStore(api: api)
|
|
realtime = RealtimeService(api: api)
|
|
PushManager.shared.configure(api: api)
|
|
|
|
session.onReady = { [weak self] userID, orgID in
|
|
self?.realtime.connect(userID: userID, orgID: orgID)
|
|
PushManager.shared.sessionReady()
|
|
}
|
|
session.onLoggedOut = { [weak self] in
|
|
self?.realtime.disconnect()
|
|
self?.badges.uniboxUnread = 0
|
|
PushManager.shared.sessionEnded()
|
|
}
|
|
}
|
|
}
|