-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathDataManager.swift
More file actions
50 lines (39 loc) · 1.6 KB
/
Copy pathDataManager.swift
File metadata and controls
50 lines (39 loc) · 1.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
//
// DataManager.swift
// NativeAppTemplate
//
import SwiftUI
@MainActor @Observable class DataManager {
// MARK: - Properties
/// Initialiser Arguments
var sessionController: SessionControllerProtocol
// Repositories
private(set) var signUpRepository: SignUpRepositoryProtocol!
private(set) var accountPasswordRepository: AccountPasswordRepositoryProtocol!
private(set) var shopRepository: ShopRepositoryProtocol!
private(set) var itemTagRepository: ItemTagRepositoryProtocol!
private(set) var isRebuildingRepositories = false
// MARK: - Initializers
init(sessionController: SessionControllerProtocol) {
self.sessionController = sessionController
rebuildRepositories()
}
func rebuildRepositories() {
isRebuildingRepositories = true
withObservationTracking {
_ = sessionController.client
} onChange: {
Task { @MainActor in
self.rebuildRepositories()
}
}
let accountPasswordService = AccountPasswordService(networkClient: sessionController.client)
let shopsService = ShopsService(networkClient: sessionController.client)
let itemTagsService = ItemTagsService(networkClient: sessionController.client)
signUpRepository = SignUpRepository()
accountPasswordRepository = AccountPasswordRepository(accountPasswordService: accountPasswordService)
shopRepository = ShopRepository(shopsService: shopsService)
itemTagRepository = ItemTagRepository(itemTagsService: itemTagsService)
isRebuildingRepositories = false
}
}