Skip to content

Commit 192a8d8

Browse files
committed
Observe site publisher to update site title and URL
1 parent 1e6ee6c commit 192a8d8

File tree

2 files changed

+26
-22
lines changed

2 files changed

+26
-22
lines changed

WooCommerce/Classes/ViewRelated/Hub Menu/HubMenu.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ struct HubMenu: View {
3434
VStack {
3535
TopBar(avatarURL: viewModel.avatarURL,
3636
storeTitle: viewModel.storeTitle,
37-
storeURL: viewModel.storeURL.absoluteString) {
37+
storeURL: viewModel.storeURL?.absoluteString) {
3838
viewModel.presentSwitchStore()
3939
}
4040
.padding([.leading, .trailing], Constants.padding)

WooCommerce/Classes/ViewRelated/Hub Menu/HubMenuViewModel.swift

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -29,23 +29,11 @@ final class HubMenuViewModel: ObservableObject {
2929
return url
3030
}
3131

32-
var storeTitle: String {
33-
stores.sessionManager.defaultSite?.name ?? Localization.myStore
34-
}
32+
@Published private(set) var storeTitle = Localization.myStore
3533

36-
var storeURL: URL {
37-
guard let urlString = stores.sessionManager.defaultSite?.url, let url = URL(string: urlString) else {
38-
return WooConstants.URLs.blog.asURL()
39-
}
40-
return url
41-
}
42-
var woocommerceAdminURL: URL {
43-
guard let urlString = stores.sessionManager.defaultSite?.adminURL, let url = URL(string: urlString) else {
44-
return stores.sessionManager.defaultSite?.adminURLWithFallback() ??
45-
WooConstants.URLs.blog.asURL()
46-
}
47-
return url
48-
}
34+
@Published private(set) var storeURL: URL?
35+
36+
@Published private(set) var woocommerceAdminURL: URL?
4937

5038
/// Child items
5139
///
@@ -61,8 +49,6 @@ final class HubMenuViewModel: ObservableObject {
6149

6250
private var storePickerCoordinator: StorePickerCoordinator?
6351

64-
private var cancellables = Set<AnyCancellable>()
65-
6652
init(siteID: Int64,
6753
navigationController: UINavigationController? = nil,
6854
featureFlagService: FeatureFlagService = ServiceLocator.featureFlagService,
@@ -139,9 +125,27 @@ final class HubMenuViewModel: ObservableObject {
139125
}
140126

141127
private func observeSiteForUIUpdates() {
142-
stores.site.sink { site in
143-
// This will be useful in the future for updating some info of the screen depending on the store site info
144-
}.store(in: &cancellables)
128+
stores.site
129+
.compactMap { site -> URL? in
130+
guard let urlString = site?.url, let url = URL(string: urlString) else {
131+
return nil
132+
}
133+
return url
134+
}
135+
.assign(to: &$storeURL)
136+
137+
stores.site
138+
.compactMap { $0?.name }
139+
.assign(to: &$storeTitle)
140+
141+
stores.site
142+
.compactMap { site -> URL? in
143+
guard let urlString = site?.adminURL, let url = URL(string: urlString) else {
144+
return site?.adminURLWithFallback()
145+
}
146+
return url
147+
}
148+
.assign(to: &$woocommerceAdminURL)
145149
}
146150
}
147151

0 commit comments

Comments
 (0)