feat(android): complete first successful skip export

This commit is contained in:
Daniel Arantes Loverde
2026-03-20 10:56:22 -03:00
parent cb7bfef356
commit 9bdb9dfdea
22 changed files with 360 additions and 153 deletions

View File

@@ -14,6 +14,7 @@ struct ContentView: View {
#if os(iOS)
@State private var sessionExpiredObserver: NSObjectProtocol?
#endif
@State var cartResetObserver: Any?
#if os(Android)
@State var snackbarCenter = SnackbarCenter.shared
#else
@@ -69,9 +70,6 @@ struct ContentView: View {
.onChange(of: appState.address.longitude) { _, _ in
dismissAddressPickerIfAddressExists()
}
.onReceive(NotificationCenter.default.publisher(for: .cartDidReset)) { _ in
appState.cart = CartState()
}
.task {
await performInitialLaunchBootstrap()
}
@@ -83,11 +81,13 @@ struct ContentView: View {
}
}
.onAppear {
attachCartResetObserverIfNeeded()
#if os(iOS)
attachSessionExpiredObserverIfNeeded()
#endif
}
.onDisappear {
detachCartResetObserver()
#if os(iOS)
detachSessionExpiredObserver()
#endif
@@ -182,6 +182,23 @@ struct ContentView: View {
isBootstrappingSession = false
}
private func attachCartResetObserverIfNeeded() {
guard cartResetObserver == nil else { return }
cartResetObserver = NotificationCenter.default.addObserver(
forName: .cartDidReset,
object: nil,
queue: nil
) { _ in
appState.cart = CartState()
}
}
private func detachCartResetObserver() {
guard let cartResetObserver else { return }
NotificationCenter.default.removeObserver(cartResetObserver)
self.cartResetObserver = nil
}
@MainActor
private func hydrateAppState(with customer: CustomerProfile) {
appState.profile.id = customer.id