@@ -29,28 +29,20 @@ 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 = WooConstants . URLs. blog. asURL ( )
35+
36+ @Published private( set) var woocommerceAdminURL = WooConstants . URLs. blog. asURL ( )
4937
5038 /// Child items
5139 ///
5240 @Published private( set) var menuElements : [ HubMenuItem ] = [ ]
5341
42+ /// The switch store button should be hidden when logged in with site credentials only.
43+ ///
44+ @Published private( set) var switchStoreEnabled = false
45+
5446 @Published var showingReviewDetail = false
5547
5648 private let stores : StoresManager
@@ -61,8 +53,6 @@ final class HubMenuViewModel: ObservableObject {
6153
6254 private var storePickerCoordinator : StorePickerCoordinator ?
6355
64- private var cancellables = Set < AnyCancellable > ( )
65-
6656 init ( siteID: Int64 ,
6757 navigationController: UINavigationController ? = nil ,
6858 featureFlagService: FeatureFlagService = ServiceLocator . featureFlagService,
@@ -73,6 +63,7 @@ final class HubMenuViewModel: ObservableObject {
7363 self . stores = stores
7464 self . featureFlagService = featureFlagService
7565 self . generalAppSettings = generalAppSettings
66+ self . switchStoreEnabled = stores. isAuthenticatedWithoutWPCom == false
7667 observeSiteForUIUpdates ( )
7768 }
7869
@@ -139,9 +130,27 @@ final class HubMenuViewModel: ObservableObject {
139130 }
140131
141132 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)
133+ stores. site
134+ . compactMap { site -> URL ? in
135+ guard let urlString = site? . url, let url = URL ( string: urlString) else {
136+ return nil
137+ }
138+ return url
139+ }
140+ . assign ( to: & $storeURL)
141+
142+ stores. site
143+ . compactMap { $0? . name }
144+ . assign ( to: & $storeTitle)
145+
146+ stores. site
147+ . compactMap { site -> URL ? in
148+ guard let urlString = site? . adminURL, let url = URL ( string: urlString) else {
149+ return site? . adminURLWithFallback ( )
150+ }
151+ return url
152+ }
153+ . assign ( to: & $woocommerceAdminURL)
145154 }
146155}
147156
0 commit comments