How do I utilize both @Environment(\.scenePhase) var phase
and @AsyncOpen
without causing re-draws on re-open (SwiftUI, Realm SDK)?
Current behavior: @AsyncOpen
refreshes each time I close and re-open the app, causing a loading indicator to show each time.
Expected behavior: The app should re-open from where the user left it.
IMPORTANT - the issue does not exist if I remove @Environment(\.scenePhase) var phase
Here’s my code:
@main
struct RealmMainActorPOCApp: SwiftUI.App {
@Environment(\.scenePhase) var phase
@StateObject var manager = Session.shared
var body: some Scene {
WindowGroup {
Group {
if let config = manager.configuration {
OpenSyncedRealmView()
.environment(\.realmConfiguration, config)
} else {
Login()
}
}
}
}
}
struct OpenSyncedRealmView: View {
@AsyncOpen(appId: "app_name", timeout: 4000) var asyncOpen
var body: some View {
switch asyncOpen {
case .open(let realm):
ContentView()
.environment(\.realm, realm)
case .connecting:
Text("waiting")
case .error(let err):
Text("error" + err.localizedDescription)
case .progress:
Text("progress")
case .waitingForUser:
Text("waiting for user")
}
}
}