From 0193fa6ac1efbf69d5262a56f9d3742bff6e51e9 Mon Sep 17 00:00:00 2001 From: ThomazFB Date: Tue, 23 Jul 2024 23:18:26 -0300 Subject: [PATCH 1/5] Introduce LoginRepository support for ApplicationPassword scenario --- .../android/wear/ui/login/LoginRepository.kt | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/ui/login/LoginRepository.kt b/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/ui/login/LoginRepository.kt index 0e5c90960082..39542f3748c7 100644 --- a/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/ui/login/LoginRepository.kt +++ b/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/ui/login/LoginRepository.kt @@ -34,6 +34,10 @@ class LoginRepository @Inject constructor( val selectedSiteFlow: StateFlow = siteFlow val selectedSite get() = selectedSiteFlow.value val isSiteAvailable = siteFlow.map { it != null && it.siteId > 0 } + val isWPCOMSite + get() = siteFlow.value + ?.let { it.origin == SiteModel.ORIGIN_WPCOM_REST } + ?: false init { loginDataStore.data @@ -49,15 +53,20 @@ class LoginRepository @Inject constructor( ?.let { gson.fromJson(it, SiteModel::class.java) } ?: return - coroutineScope.async { - wooCommerceStore.fetchSiteGeneralSettings(site) - }.await() - - loginDataStore.edit { prefs -> - prefs[stringPreferencesKey(CURRENT_SITE_KEY)] = siteJSON - data.getString(TOKEN.value)?.let { token -> - wearableStore.updateToken(token) - prefs[stringPreferencesKey(generateTokenKey(site.siteId))] = token + if (site.origin == SiteModel.ORIGIN_XMLRPC || site.origin == SiteModel.ORIGIN_WPAPI) { + loginDataStore.edit { prefs -> + prefs[stringPreferencesKey(CURRENT_SITE_KEY)] = siteJSON + } + } else { + coroutineScope.async { + wooCommerceStore.fetchSiteGeneralSettings(site) + }.await() + loginDataStore.edit { prefs -> + prefs[stringPreferencesKey(CURRENT_SITE_KEY)] = siteJSON + data.getString(TOKEN.value)?.let { token -> + wearableStore.updateToken(token) + prefs[stringPreferencesKey(generateTokenKey(site.siteId))] = token + } } } } From d4194657db93374bc704f489ac80989938a5e347 Mon Sep 17 00:00:00 2001 From: ThomazFB Date: Tue, 23 Jul 2024 23:20:11 -0300 Subject: [PATCH 2/5] Repurpose the NetworkStatus to ConnectionStatus --- .../android/wear/system/ConnectionStatus.kt | 14 ++++++++++++++ .../android/wear/system/NetworkStatus.kt | 10 ---------- .../wear/ui/orders/details/FetchOrderProducts.kt | 6 +++--- .../android/wear/ui/orders/list/FetchOrders.kt | 6 +++--- .../wear/ui/stats/datasource/FetchStats.kt | 6 +++--- .../ui/orders/details/FetchOrderProductsTest.kt | 8 ++++---- .../wear/ui/orders/list/FetchOrdersTest.kt | 16 ++++++++-------- .../wear/ui/stats/datasource/FetchStatsTest.kt | 16 ++++++++-------- 8 files changed, 43 insertions(+), 39 deletions(-) create mode 100644 WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/system/ConnectionStatus.kt delete mode 100644 WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/system/NetworkStatus.kt diff --git a/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/system/ConnectionStatus.kt b/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/system/ConnectionStatus.kt new file mode 100644 index 000000000000..487448f95896 --- /dev/null +++ b/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/system/ConnectionStatus.kt @@ -0,0 +1,14 @@ +package com.woocommerce.android.wear.system + +import android.content.Context +import com.woocommerce.android.wear.ui.login.LoginRepository +import dagger.Reusable +import org.wordpress.android.util.NetworkUtils + +@Reusable +class ConnectionStatus( + private val context: Context, + private val loginRepository: LoginRepository +) { + fun isStoreConnected() = NetworkUtils.isNetworkAvailable(context) && loginRepository.isWPCOMSite +} diff --git a/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/system/NetworkStatus.kt b/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/system/NetworkStatus.kt deleted file mode 100644 index ef7d5b229b51..000000000000 --- a/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/system/NetworkStatus.kt +++ /dev/null @@ -1,10 +0,0 @@ -package com.woocommerce.android.wear.system - -import android.content.Context -import dagger.Reusable -import org.wordpress.android.util.NetworkUtils - -@Reusable -class NetworkStatus(private val context: Context) { - fun isConnected() = NetworkUtils.isNetworkAvailable(context) -} diff --git a/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/ui/orders/details/FetchOrderProducts.kt b/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/ui/orders/details/FetchOrderProducts.kt index 84e02a6a4f6c..914343c13a40 100644 --- a/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/ui/orders/details/FetchOrderProducts.kt +++ b/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/ui/orders/details/FetchOrderProducts.kt @@ -6,7 +6,7 @@ import com.woocommerce.android.wear.model.Refund import com.woocommerce.android.wear.model.getNonRefundedProducts import com.woocommerce.android.wear.model.toAppModel import com.woocommerce.android.wear.phone.PhoneConnectionRepository -import com.woocommerce.android.wear.system.NetworkStatus +import com.woocommerce.android.wear.system.ConnectionStatus import com.woocommerce.android.wear.ui.orders.OrdersRepository import com.woocommerce.android.wear.ui.orders.details.FetchOrderProducts.OrderProductsRequest.Error import com.woocommerce.android.wear.ui.orders.details.FetchOrderProducts.OrderProductsRequest.Finished @@ -22,7 +22,7 @@ import javax.inject.Inject class FetchOrderProducts @Inject constructor( private val phoneRepository: PhoneConnectionRepository, private val ordersRepository: OrdersRepository, - private val networkStatus: NetworkStatus + private val connectionStatus: ConnectionStatus ) { suspend operator fun invoke( selectedSite: SiteModel, @@ -43,7 +43,7 @@ class FetchOrderProducts @Inject constructor( orderId: Long ): Flow> { return when { - networkStatus.isConnected() -> flow { + connectionStatus.isStoreConnected() -> flow { ordersRepository.fetchOrderRefunds(selectedSite, orderId) .asWearOrderedProducts(retrieveOrderLineItems(selectedSite, orderId)) .let { emit(it) } diff --git a/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/ui/orders/list/FetchOrders.kt b/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/ui/orders/list/FetchOrders.kt index 7c003e9e0952..304aee456528 100644 --- a/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/ui/orders/list/FetchOrders.kt +++ b/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/ui/orders/list/FetchOrders.kt @@ -4,7 +4,7 @@ import com.woocommerce.android.wear.analytics.AnalyticsTracker import com.woocommerce.android.wear.extensions.combineWithTimeout import com.woocommerce.android.wear.extensions.toWearOrder import com.woocommerce.android.wear.phone.PhoneConnectionRepository -import com.woocommerce.android.wear.system.NetworkStatus +import com.woocommerce.android.wear.system.ConnectionStatus import com.woocommerce.android.wear.ui.orders.OrdersRepository import com.woocommerce.android.wear.ui.orders.list.FetchOrders.OrdersRequest.Error import com.woocommerce.android.wear.ui.orders.list.FetchOrders.OrdersRequest.Finished @@ -24,7 +24,7 @@ import javax.inject.Inject class FetchOrders @Inject constructor( private val phoneRepository: PhoneConnectionRepository, private val ordersRepository: OrdersRepository, - private val networkStatus: NetworkStatus, + private val connectionStatus: ConnectionStatus, private val analyticsTracker: AnalyticsTracker ) { suspend operator fun invoke( @@ -43,7 +43,7 @@ class FetchOrders @Inject constructor( selectedSite: SiteModel ): Flow> { return when { - networkStatus.isConnected() -> flow { + connectionStatus.isStoreConnected() -> flow { analyticsTracker.track(WATCH_DATA_REQUESTED_FROM_STORE) when (val result = ordersRepository.fetchOrders(selectedSite)) { is Success -> result.orders diff --git a/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/ui/stats/datasource/FetchStats.kt b/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/ui/stats/datasource/FetchStats.kt index 5fa9f0b8da0c..007837d2cb5e 100644 --- a/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/ui/stats/datasource/FetchStats.kt +++ b/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/ui/stats/datasource/FetchStats.kt @@ -3,7 +3,7 @@ package com.woocommerce.android.wear.ui.stats.datasource import com.woocommerce.android.wear.analytics.AnalyticsTracker import com.woocommerce.android.wear.extensions.combineWithTimeout import com.woocommerce.android.wear.phone.PhoneConnectionRepository -import com.woocommerce.android.wear.system.NetworkStatus +import com.woocommerce.android.wear.system.ConnectionStatus import com.woocommerce.android.wear.ui.stats.datasource.FetchStats.StoreStatsRequest.Error import com.woocommerce.android.wear.ui.stats.datasource.FetchStats.StoreStatsRequest.Finished import com.woocommerce.android.wear.ui.stats.datasource.FetchStats.StoreStatsRequest.Waiting @@ -25,7 +25,7 @@ class FetchStats @Inject constructor( private val statsRepository: StatsRepository, private val phoneRepository: PhoneConnectionRepository, private val wooCommerceStore: WooCommerceStore, - private val networkStatus: NetworkStatus, + private val connectionStatus: ConnectionStatus, private val analyticsTracker: AnalyticsTracker ) { private val revenueStats = MutableStateFlow(null) @@ -34,7 +34,7 @@ class FetchStats @Inject constructor( suspend operator fun invoke( selectedSite: SiteModel ) = when { - networkStatus.isConnected() -> fetchStatsFromStore(selectedSite) + connectionStatus.isStoreConnected() -> fetchStatsFromStore(selectedSite) phoneRepository.isPhoneConnectionAvailable() -> fetchStatsFromPhone(selectedSite) else -> flowOf(Error) }.distinctUntilChanged() diff --git a/WooCommerce-Wear/src/test/java/com/woocommerce/android/wear/ui/orders/details/FetchOrderProductsTest.kt b/WooCommerce-Wear/src/test/java/com/woocommerce/android/wear/ui/orders/details/FetchOrderProductsTest.kt index 9e26fc1b4841..2196e5a427ec 100644 --- a/WooCommerce-Wear/src/test/java/com/woocommerce/android/wear/ui/orders/details/FetchOrderProductsTest.kt +++ b/WooCommerce-Wear/src/test/java/com/woocommerce/android/wear/ui/orders/details/FetchOrderProductsTest.kt @@ -2,7 +2,7 @@ package com.woocommerce.android.wear.ui.orders.details import com.woocommerce.android.BaseUnitTest import com.woocommerce.android.wear.phone.PhoneConnectionRepository -import com.woocommerce.android.wear.system.NetworkStatus +import com.woocommerce.android.wear.system.ConnectionStatus import com.woocommerce.android.wear.ui.orders.OrdersRepository import com.woocommerce.android.wear.ui.orders.details.FetchOrderProducts.OrderProductsRequest import com.woocommerce.android.wear.ui.orders.details.FetchOrderProducts.OrderProductsRequest.Finished @@ -27,14 +27,14 @@ class FetchOrderProductsTest : BaseUnitTest() { private val phoneRepository: PhoneConnectionRepository = mock() private val ordersRepository: OrdersRepository = mock() private val selectedSite: SiteModel = mock() - private val networkStatus: NetworkStatus = mock() + private val connectionStatus: ConnectionStatus = mock() private lateinit var sut: FetchOrderProducts @Before fun setup() { - whenever(networkStatus.isConnected()).thenReturn(false) - sut = FetchOrderProducts(phoneRepository, ordersRepository, networkStatus) + whenever(connectionStatus.isStoreConnected()).thenReturn(false) + sut = FetchOrderProducts(phoneRepository, ordersRepository, connectionStatus) } @Test diff --git a/WooCommerce-Wear/src/test/java/com/woocommerce/android/wear/ui/orders/list/FetchOrdersTest.kt b/WooCommerce-Wear/src/test/java/com/woocommerce/android/wear/ui/orders/list/FetchOrdersTest.kt index 30cce3ab2a90..7d8d7ea0aed7 100644 --- a/WooCommerce-Wear/src/test/java/com/woocommerce/android/wear/ui/orders/list/FetchOrdersTest.kt +++ b/WooCommerce-Wear/src/test/java/com/woocommerce/android/wear/ui/orders/list/FetchOrdersTest.kt @@ -3,7 +3,7 @@ package com.woocommerce.android.wear.ui.orders.list import com.woocommerce.android.BaseUnitTest import com.woocommerce.android.wear.extensions.toWearOrder import com.woocommerce.android.wear.phone.PhoneConnectionRepository -import com.woocommerce.android.wear.system.NetworkStatus +import com.woocommerce.android.wear.system.ConnectionStatus import com.woocommerce.android.wear.ui.orders.OrdersRepository import com.woocommerce.android.wear.ui.orders.list.FetchOrders.OrdersRequest import com.woocommerce.android.wear.ui.orders.list.FetchOrders.OrdersRequest.Error @@ -29,7 +29,7 @@ class FetchOrdersTest : BaseUnitTest() { private val phoneRepository: PhoneConnectionRepository = mock() private val ordersRepository: OrdersRepository = mock() - private val networkStatus: NetworkStatus = mock() + private val connectionStatus: ConnectionStatus = mock() private val selectedSite: SiteModel = mock() @Test @@ -37,7 +37,7 @@ class FetchOrdersTest : BaseUnitTest() { val fetchedOrders = mockedOrders() val expectedOrders = fetchedOrders.map { it.toWearOrder() } whenever(ordersRepository.fetchOrders(selectedSite)).thenReturn(Success(fetchedOrders)) - whenever(networkStatus.isConnected()).thenReturn(true) + whenever(connectionStatus.isStoreConnected()).thenReturn(true) val events = mutableListOf() createSut() @@ -53,7 +53,7 @@ class FetchOrdersTest : BaseUnitTest() { @Test fun `returns Waiting when no orders and not timeout`() = testBlocking { whenever(ordersRepository.fetchOrders(selectedSite)).thenReturn(Success(emptyList())) - whenever(networkStatus.isConnected()).thenReturn(true) + whenever(connectionStatus.isStoreConnected()).thenReturn(true) val events = mutableListOf() createSut() @@ -69,7 +69,7 @@ class FetchOrdersTest : BaseUnitTest() { @Test fun `returns Error when no orders and timeout`() = testBlocking { whenever(ordersRepository.fetchOrders(selectedSite)).thenReturn(Success(emptyList())) - whenever(networkStatus.isConnected()).thenReturn(true) + whenever(connectionStatus.isStoreConnected()).thenReturn(true) val events = mutableListOf() createSut() @@ -86,7 +86,7 @@ class FetchOrdersTest : BaseUnitTest() { fun `returns orders from phone when no network connection`() = testBlocking { val expectedOrders = listOf(mock()) whenever(phoneRepository.isPhoneConnectionAvailable()).thenReturn(true) - whenever(networkStatus.isConnected()).thenReturn(false) + whenever(connectionStatus.isStoreConnected()).thenReturn(false) whenever(ordersRepository.observeOrdersDataChanges(selectedSite)) .thenReturn(flowOf(expectedOrders)) val events = mutableListOf() @@ -106,7 +106,7 @@ class FetchOrdersTest : BaseUnitTest() { val fetchedOrders = mockedOrders() val expectedOrders = fetchedOrders.map { it.toWearOrder() } whenever(phoneRepository.isPhoneConnectionAvailable()).thenReturn(false) - whenever(networkStatus.isConnected()).thenReturn(false) + whenever(connectionStatus.isStoreConnected()).thenReturn(false) whenever(ordersRepository.getStoredOrders(selectedSite)).thenReturn(fetchedOrders) val events = mutableListOf() @@ -120,7 +120,7 @@ class FetchOrdersTest : BaseUnitTest() { assertThat(events).containsExactly(Finished(expectedOrders)) } - private fun createSut() = FetchOrders(phoneRepository, ordersRepository, networkStatus, mock()) + private fun createSut() = FetchOrders(phoneRepository, ordersRepository, connectionStatus, mock()) private fun mockedOrders() = listOf( OrderEntity( diff --git a/WooCommerce-Wear/src/test/java/com/woocommerce/android/wear/ui/stats/datasource/FetchStatsTest.kt b/WooCommerce-Wear/src/test/java/com/woocommerce/android/wear/ui/stats/datasource/FetchStatsTest.kt index 35fe808dcf6e..4f7b30f2ec66 100644 --- a/WooCommerce-Wear/src/test/java/com/woocommerce/android/wear/ui/stats/datasource/FetchStatsTest.kt +++ b/WooCommerce-Wear/src/test/java/com/woocommerce/android/wear/ui/stats/datasource/FetchStatsTest.kt @@ -3,7 +3,7 @@ package com.woocommerce.android.wear.ui.stats.datasource import com.woocommerce.android.BaseUnitTest import com.woocommerce.android.wear.analytics.AnalyticsTracker import com.woocommerce.android.wear.phone.PhoneConnectionRepository -import com.woocommerce.android.wear.system.NetworkStatus +import com.woocommerce.android.wear.system.ConnectionStatus import com.woocommerce.android.wear.ui.stats.datasource.FetchStats.StoreStatsRequest import com.woocommerce.android.wear.ui.stats.datasource.FetchStats.StoreStatsRequest.Finished import com.woocommerce.android.wear.ui.stats.datasource.FetchStats.StoreStatsRequest.Waiting @@ -31,7 +31,7 @@ class FetchStatsTest : BaseUnitTest() { private val statsRepository: StatsRepository = mock() private val phoneRepository: PhoneConnectionRepository = mock() private val wooCommerceStore: WooCommerceStore = mock() - private val networkStatus: NetworkStatus = mock() + private val connectionStatus: ConnectionStatus = mock() private val analyticsTracker: AnalyticsTracker = mock() private val selectedSite: SiteModel = mock() @@ -50,7 +50,7 @@ class FetchStatsTest : BaseUnitTest() { fun `returns Waiting when no stats and not timeout`() = testBlocking { whenever(statsRepository.fetchRevenueStats(selectedSite)).thenReturn(Result.failure(Throwable())) whenever(statsRepository.fetchVisitorStats(selectedSite)).thenReturn(Result.failure(Throwable())) - whenever(networkStatus.isConnected()).thenReturn(true) + whenever(connectionStatus.isStoreConnected()).thenReturn(true) val event = createSut() .invoke(selectedSite) @@ -63,7 +63,7 @@ class FetchStatsTest : BaseUnitTest() { fun `returns Error when no stats and timeout`() = testBlocking { whenever(statsRepository.fetchRevenueStats(selectedSite)).thenReturn(Result.failure(Throwable())) whenever(statsRepository.fetchVisitorStats(selectedSite)).thenReturn(Result.failure(Throwable())) - whenever(networkStatus.isConnected()).thenReturn(true) + whenever(connectionStatus.isStoreConnected()).thenReturn(true) val event = createSut() .invoke(selectedSite) @@ -77,7 +77,7 @@ class FetchStatsTest : BaseUnitTest() { fun `returns stats from phone when no network connection`() = testBlocking { val expectedData = StoreStatsData(StoreStatsData.RevenueData("100.0", 5), 1) whenever(phoneRepository.isPhoneConnectionAvailable()).thenReturn(true) - whenever(networkStatus.isConnected()).thenReturn(false) + whenever(connectionStatus.isStoreConnected()).thenReturn(false) whenever(statsRepository.observeStatsDataChanges(selectedSite)).thenReturn(flowOf(expectedData)) val events = mutableListOf() @@ -95,7 +95,7 @@ class FetchStatsTest : BaseUnitTest() { @Test fun `returns Error when no network and phone connection`() = testBlocking { whenever(phoneRepository.isPhoneConnectionAvailable()).thenReturn(false) - whenever(networkStatus.isConnected()).thenReturn(false) + whenever(connectionStatus.isStoreConnected()).thenReturn(false) val events = mutableListOf() createSut() @@ -108,7 +108,7 @@ class FetchStatsTest : BaseUnitTest() { } private fun createSut() = - FetchStats(statsRepository, phoneRepository, wooCommerceStore, networkStatus, analyticsTracker) + FetchStats(statsRepository, phoneRepository, wooCommerceStore, connectionStatus, analyticsTracker) private suspend fun generateStatsDataWithExpectedMocks(): StoreStatsData { val expectedData = StoreStatsData(StoreStatsData.RevenueData("100.0", 5), 1) @@ -121,7 +121,7 @@ class FetchStatsTest : BaseUnitTest() { } whenever(statsRepository.fetchRevenueStats(selectedSite)).thenReturn(Result.success(revenueResponse)) whenever(statsRepository.fetchVisitorStats(selectedSite)).thenReturn(Result.success(1)) - whenever(networkStatus.isConnected()).thenReturn(true) + whenever(connectionStatus.isStoreConnected()).thenReturn(true) whenever(wooCommerceStore.formatCurrencyForDisplay(100.0, selectedSite, null, true)).thenReturn("100.0") return expectedData } From e429e3edd7ceaae11701f483356b2eeca84ae4db Mon Sep 17 00:00:00 2001 From: ThomazFB Date: Tue, 23 Jul 2024 23:20:29 -0300 Subject: [PATCH 3/5] Fix ConnectionStatus Dagger module --- .../com/woocommerce/android/wear/di/AppConfigModule.kt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/di/AppConfigModule.kt b/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/di/AppConfigModule.kt index 1e17f9da57c2..d58697d79c41 100644 --- a/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/di/AppConfigModule.kt +++ b/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/di/AppConfigModule.kt @@ -2,7 +2,8 @@ package com.woocommerce.android.wear.di import android.content.Context import com.woocommerce.android.BuildConfig -import com.woocommerce.android.wear.system.NetworkStatus +import com.woocommerce.android.wear.system.ConnectionStatus +import com.woocommerce.android.wear.ui.login.LoginRepository import dagger.Module import dagger.Provides import dagger.hilt.InstallIn @@ -27,7 +28,10 @@ class AppConfigModule { @Provides @Singleton - fun provideNetworkStatus(appContext: Context) = NetworkStatus(appContext) + fun provideConnectionStatus( + appContext: Context, + loginRepository: LoginRepository + ) = ConnectionStatus(appContext, loginRepository) @Provides fun provideDefaultLocale(): Locale = Locale.getDefault() From b8a478655fdea4319c7a8af109857ecf064139b0 Mon Sep 17 00:00:00 2001 From: ThomazFB Date: Tue, 23 Jul 2024 23:36:57 -0300 Subject: [PATCH 4/5] Update LoginRepository site availability rule --- .../com/woocommerce/android/wear/ui/login/LoginRepository.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/ui/login/LoginRepository.kt b/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/ui/login/LoginRepository.kt index 39542f3748c7..787e6d0d30a9 100644 --- a/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/ui/login/LoginRepository.kt +++ b/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/ui/login/LoginRepository.kt @@ -33,7 +33,7 @@ class LoginRepository @Inject constructor( private val siteFlow: MutableStateFlow = MutableStateFlow(null) val selectedSiteFlow: StateFlow = siteFlow val selectedSite get() = selectedSiteFlow.value - val isSiteAvailable = siteFlow.map { it != null && it.siteId > 0 } + val isSiteAvailable = siteFlow.map { it != null } val isWPCOMSite get() = siteFlow.value ?.let { it.origin == SiteModel.ORIGIN_WPCOM_REST } From 4908bf1e2d3c8ac6672981a2d6a2774f2e83aaba Mon Sep 17 00:00:00 2001 From: ThomazFB Date: Tue, 23 Jul 2024 23:42:32 -0300 Subject: [PATCH 5/5] Improve scenarios handling for when the token should be stored --- .../android/wear/ui/login/LoginRepository.kt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/ui/login/LoginRepository.kt b/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/ui/login/LoginRepository.kt index 787e6d0d30a9..a5e86b296442 100644 --- a/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/ui/login/LoginRepository.kt +++ b/WooCommerce-Wear/src/main/java/com/woocommerce/android/wear/ui/login/LoginRepository.kt @@ -53,11 +53,7 @@ class LoginRepository @Inject constructor( ?.let { gson.fromJson(it, SiteModel::class.java) } ?: return - if (site.origin == SiteModel.ORIGIN_XMLRPC || site.origin == SiteModel.ORIGIN_WPAPI) { - loginDataStore.edit { prefs -> - prefs[stringPreferencesKey(CURRENT_SITE_KEY)] = siteJSON - } - } else { + if (site.origin == SiteModel.ORIGIN_WPCOM_REST) { coroutineScope.async { wooCommerceStore.fetchSiteGeneralSettings(site) }.await() @@ -68,6 +64,10 @@ class LoginRepository @Inject constructor( prefs[stringPreferencesKey(generateTokenKey(site.siteId))] = token } } + } else { + loginDataStore.edit { prefs -> + prefs[stringPreferencesKey(CURRENT_SITE_KEY)] = siteJSON + } } }