Skip to content
Snippets Groups Projects

Update example app

4 files
+ 43
66
Compare changes
  • Side-by-side
  • Inline

Files

@@ -3,8 +3,6 @@ import ComposableArchitecture
@@ -3,8 +3,6 @@ import ComposableArchitecture
import ElixxirDAppsSDK
import ElixxirDAppsSDK
import ErrorFeature
import ErrorFeature
import LandingFeature
import LandingFeature
import MyContactFeature
import MyIdentityFeature
import SessionFeature
import SessionFeature
import SwiftUI
import SwiftUI
@@ -23,9 +21,7 @@ struct App: SwiftUI.App {
@@ -23,9 +21,7 @@ struct App: SwiftUI.App {
extension AppEnvironment {
extension AppEnvironment {
static func live() -> AppEnvironment {
static func live() -> AppEnvironment {
let clientSubject = CurrentValueSubject<Client?, Never>(nil)
let cmixSubject = CurrentValueSubject<Cmix?, Never>(nil)
let identitySubject = CurrentValueSubject<Identity?, Never>(nil)
let contactSubject = CurrentValueSubject<Data?, Never>(nil)
let mainScheduler = DispatchQueue.main.eraseToAnyScheduler()
let mainScheduler = DispatchQueue.main.eraseToAnyScheduler()
let bgScheduler = DispatchQueue(
let bgScheduler = DispatchQueue(
label: "xx.network.dApps.ExampleApp.bg",
label: "xx.network.dApps.ExampleApp.bg",
@@ -34,40 +30,22 @@ extension AppEnvironment {
@@ -34,40 +30,22 @@ extension AppEnvironment {
return AppEnvironment(
return AppEnvironment(
makeId: UUID.init,
makeId: UUID.init,
hasClient: clientSubject.map { $0 != nil }.eraseToAnyPublisher(),
hasCmix: { cmixSubject.map { $0 != nil }.eraseToAnyPublisher() },
mainScheduler: mainScheduler,
mainScheduler: mainScheduler,
landing: LandingEnvironment(
landing: LandingEnvironment(
clientStorage: .live(
cmixManager: .live(
passwordStorage: .keychain
passwordStorage: .keychain
),
),
setClient: { clientSubject.send($0) },
setCmix: { cmixSubject.value = $0 },
bgScheduler: bgScheduler,
bgScheduler: bgScheduler,
mainScheduler: mainScheduler,
mainScheduler: mainScheduler,
error: ErrorEnvironment()
error: ErrorEnvironment()
),
),
session: SessionEnvironment(
session: SessionEnvironment(
getClient: { clientSubject.value },
getCmix: { cmixSubject.value },
bgScheduler: bgScheduler,
bgScheduler: bgScheduler,
mainScheduler: mainScheduler,
mainScheduler: mainScheduler,
makeId: UUID.init,
error: ErrorEnvironment()
error: ErrorEnvironment(),
myIdentity: MyIdentityEnvironment(
getClient: { clientSubject.value },
observeIdentity: { identitySubject.eraseToAnyPublisher() },
updateIdentity: { identitySubject.value = $0 },
bgScheduler: bgScheduler,
mainScheduler: mainScheduler,
error: ErrorEnvironment()
),
myContact: MyContactEnvironment(
getClient: { clientSubject.value },
getIdentity: { identitySubject.value },
observeContact: { contactSubject.eraseToAnyPublisher() },
updateContact: { contactSubject.value = $0 },
bgScheduler: bgScheduler,
mainScheduler: mainScheduler,
error: ErrorEnvironment()
)
)
)
)
)
}
}
Loading