From 6e13b162144cfeed69d0d37f050098d2b16ebf6c Mon Sep 17 00:00:00 2001 From: Justin Bassett Date: Fri, 11 Sep 2020 15:39:30 -0400 Subject: [PATCH] Architecture Simplification (#917) * Common compiling.... So I guess I have that going for me... * It's very broken... * App builds and tests pass.... * Remove other now extra files. --- app/build.gradle.kts | 1 - .../android/launch/LaunchPresenterImpl.kt | 30 ++--- .../android/notifications/MessagingService.kt | 54 ++++---- .../NotificationActionReceiver.kt | 4 +- .../MobileAppIntegrationPresenterImpl.kt | 6 +- .../android/sensors/ActivitySensorManager.kt | 4 +- .../android/sensors/LocationSensorManager.kt | 6 +- .../companion/android/PresenterComponent.kt | 3 - .../companion/android/PresenterModule.kt | 14 -- .../database/sensor/SensorWithAttributes.kt | 2 +- .../android/launch/LaunchPresenterBase.kt | 10 +- .../companion/android/nfc/NfcEditFragment.kt | 4 +- .../android/nfc/TagReaderActivity.kt | 4 +- .../AuthenticationPresenterImpl.kt | 4 +- .../discovery/DiscoveryPresenterImpl.kt | 4 +- .../MobileAppIntegrationPresenterBase.kt | 6 +- .../manual/ManualSetupPresenterImpl.kt | 6 +- .../android/sensors/SensorDetailFragment.kt | 1 - .../android/sensors/SensorReceiver.kt | 8 +- .../companion/android/sensors/SensorWorker.kt | 4 +- .../sensors/SensorsSettingsFragment.kt | 4 +- .../android/settings/SettingsFragment.kt | 18 --- .../android/settings/SettingsPresenter.kt | 2 - .../android/settings/SettingsPresenterImpl.kt | 28 ++-- .../settings/shortcuts/ShortcutsFragment.kt | 126 ------------------ .../settings/shortcuts/ShortcutsPresenter.kt | 7 - .../shortcuts/ShortcutsPresenterImpl.kt | 28 ---- .../shortcuts/ShortcutsRecyclerViewAdapter.kt | 44 ------ .../settings/shortcuts/ShortcutsView.kt | 3 - .../companion/android/themes/ThemesManager.kt | 4 +- .../android/webview/WebViewActivity.kt | 30 ----- .../android/webview/WebViewPresenter.kt | 4 - .../android/webview/WebViewPresenterImpl.kt | 27 +--- .../companion/android/widgets/ButtonWidget.kt | 4 +- .../widgets/ButtonWidgetConfigureActivity.kt | 8 +- .../companion/android/widgets/StaticWidget.kt | 4 +- .../widgets/StaticWidgetConfigureActivity.kt | 6 +- .../widgets/WidgetDynamicFieldAdapter.kt | 4 +- .../widgets/template/TemplateWidget.kt | 6 +- .../TemplateWidgetConfigureActivity.kt | 6 +- .../android/launch/LaunchPresenterImpl.kt | 18 ++- .../MobileAppIntegrationPresenterImpl.kt | 4 +- .../android/launch/LaunchPresenterImplSpec.kt | 10 +- .../AuthenticationPresenterImplSpec.kt | 4 +- .../MobileAppIntegrationPresenterImplSpec.kt | 6 +- .../manual/ManualSetupPresenterImplSpec.kt | 6 +- .../webview/WebViewPresenterImplSpec.kt | 20 +-- build.gradle.kts | 1 - common/build.gradle.kts | 13 +- .../android/common/LocalStorageImpl.kt | 2 +- .../android/common/dagger/AppComponent.kt | 18 +-- .../android/common/dagger/DataComponent.kt | 8 +- .../android/common/dagger/DataModule.kt | 26 ++-- .../android/common/dagger/DomainComponent.kt | 19 --- .../android/common/dagger/DomainModule.kt | 28 ---- .../android/common/dagger/DomainScope.kt | 7 - .../companion/android/common/dagger/Graph.kt | 21 +-- .../common}/data/HomeAssistantRetrofit.kt | 4 +- .../android/common}/data/LocalStorage.kt | 2 +- .../common/data}/MalformedHttpUrlException.kt | 2 +- .../AuthenticationRepository.kt | 2 +- .../authentication/AuthorizationException.kt | 3 + .../data/authentication/SessionState.kt | 6 + .../impl}/AuthenticationRepositoryImpl.kt | 16 +-- .../impl}/AuthenticationService.kt | 3 +- .../data/authentication/impl}/Session.kt | 6 +- .../authentication/impl/entities}/Token.kt | 2 +- .../data}/integration/DeviceRegistration.kt | 2 +- .../common/data}/integration/Entity.kt | 2 +- .../data/integration/IntegrationException.kt | 3 + .../integration/IntegrationRepository.kt | 2 +- .../android/common/data}/integration/Panel.kt | 2 +- .../data}/integration/SensorRegistration.kt | 2 +- .../common/data}/integration/Service.kt | 2 +- .../common/data}/integration/ServiceData.kt | 2 +- .../common/data}/integration/ServiceFields.kt | 2 +- .../data}/integration/UpdateLocation.kt | 2 +- .../data}/integration/ZoneAttributes.kt | 2 +- .../impl}/IntegrationRepositoryImpl.kt | 43 +++--- .../integration/impl}/IntegrationService.kt | 20 +-- .../impl}/entities/DiscoveryInfoResponse.kt | 2 +- .../impl/entities/DomainResponse.kt | 8 ++ .../impl}/entities/EntityResponse.kt | 2 +- .../impl}/entities/FireEventRequest.kt | 2 +- .../impl}/entities/GetConfigResponse.kt | 2 +- .../impl}/entities/IntegrationRequest.kt | 2 +- .../impl}/entities/RegisterDeviceRequest.kt | 2 +- .../impl}/entities/RegisterDeviceResponse.kt | 2 +- .../impl}/entities/SensorRequest.kt | 2 +- .../impl}/entities/ServiceCallRequest.kt | 2 +- .../integration/impl}/entities/Template.kt | 2 +- .../impl}/entities/UpdateLocationRequest.kt | 2 +- .../common/data}/themes/ThemesRepository.kt | 2 +- .../data/themes/ThemesRepositoryImpl.kt | 5 +- .../android/common/data}/url/UrlRepository.kt | 2 +- .../common}/data/url/UrlRepositoryImpl.kt | 9 +- .../android/common/data/wifi/WifiHelper.kt | 5 + .../common/{ => data}/wifi/WifiHelperImpl.kt | 6 +- .../common}/data/HomeAssistantMockService.kt | 6 +- .../impl}/AuthenticationRepositoryImplSpec.kt | 18 +-- .../impl}/AuthenticationServiceSpec.kt | 5 +- .../data/authentication/impl}/SessionSpec.kt | 7 +- .../impl}/IntegrationRepositoryImplSpec.kt | 27 ++-- .../impl}/IntegrationServiceSpec.kt | 14 +- .../common}/data/url/UrlRepositoryImplSpec.kt | 8 +- .../authentication/authorization_code.json | 0 .../authentication/refresh_token.json | 0 .../authentication/refresh_token_error.json | 0 .../src/test/resources/integration/empty.json | 0 .../test/resources/integration/register.json | 0 data/build.gradle.kts | 39 ------ .../authentication/AuthorizationException.kt | 3 - .../data/integration/IntegrationException.kt | 3 - .../integration/entities/DomainResponse.kt | 8 -- .../companion/android/data/wifi/WifiHelper.kt | 5 - domain/build.gradle.kts | 27 ---- .../authentication/AuthenticationUseCase.kt | 21 --- .../AuthenticationUseCaseImpl.kt | 41 ------ .../domain/authentication/SessionState.kt | 6 - .../domain/integration/IntegrationUseCase.kt | 54 -------- .../integration/IntegrationUseCaseImpl.kt | 114 ---------------- .../android/domain/themes/ThemesUseCase.kt | 8 -- .../domain/themes/ThemesUseCaseImpl.kt | 15 --- .../android/domain/url/UrlUseCase.kt | 18 --- .../android/domain/url/UrlUseCaseImpl.kt | 36 ----- .../AuthenticationUseCaseImplSpec.kt | 76 ----------- .../integration/IntegrationUseCaseImplSpec.kt | 116 ---------------- .../android/domain/url/UrlUseCaseImplSpec.kt | 105 --------------- settings.gradle.kts | 2 +- 129 files changed, 342 insertions(+), 1380 deletions(-) delete mode 100644 app/src/main/java/io/homeassistant/companion/android/settings/shortcuts/ShortcutsFragment.kt delete mode 100644 app/src/main/java/io/homeassistant/companion/android/settings/shortcuts/ShortcutsPresenter.kt delete mode 100644 app/src/main/java/io/homeassistant/companion/android/settings/shortcuts/ShortcutsPresenterImpl.kt delete mode 100644 app/src/main/java/io/homeassistant/companion/android/settings/shortcuts/ShortcutsRecyclerViewAdapter.kt delete mode 100644 app/src/main/java/io/homeassistant/companion/android/settings/shortcuts/ShortcutsView.kt delete mode 100644 common/src/main/java/io/homeassistant/companion/android/common/dagger/DomainComponent.kt delete mode 100644 common/src/main/java/io/homeassistant/companion/android/common/dagger/DomainModule.kt delete mode 100644 common/src/main/java/io/homeassistant/companion/android/common/dagger/DomainScope.kt rename {data/src/main/java/io/homeassistant/companion/android => common/src/main/java/io/homeassistant/companion/android/common}/data/HomeAssistantRetrofit.kt (94%) rename {data/src/main/java/io/homeassistant/companion/android => common/src/main/java/io/homeassistant/companion/android/common}/data/LocalStorage.kt (91%) rename {domain/src/main/java/io/homeassistant/companion/android/domain => common/src/main/java/io/homeassistant/companion/android/common/data}/MalformedHttpUrlException.kt (76%) rename {domain/src/main/java/io/homeassistant/companion/android/domain => common/src/main/java/io/homeassistant/companion/android/common/data}/authentication/AuthenticationRepository.kt (87%) create mode 100644 common/src/main/java/io/homeassistant/companion/android/common/data/authentication/AuthorizationException.kt create mode 100644 common/src/main/java/io/homeassistant/companion/android/common/data/authentication/SessionState.kt rename {data/src/main/java/io/homeassistant/companion/android/data/authentication => common/src/main/java/io/homeassistant/companion/android/common/data/authentication/impl}/AuthenticationRepositoryImpl.kt (89%) rename {data/src/main/java/io/homeassistant/companion/android/data/authentication => common/src/main/java/io/homeassistant/companion/android/common/data/authentication/impl}/AuthenticationService.kt (86%) rename {data/src/main/java/io/homeassistant/companion/android/data/authentication => common/src/main/java/io/homeassistant/companion/android/common/data/authentication/impl}/Session.kt (53%) rename {data/src/main/java/io/homeassistant/companion/android/data/authentication => common/src/main/java/io/homeassistant/companion/android/common/data/authentication/impl/entities}/Token.kt (79%) rename {domain/src/main/java/io/homeassistant/companion/android/domain => common/src/main/java/io/homeassistant/companion/android/common/data}/integration/DeviceRegistration.kt (67%) rename {domain/src/main/java/io/homeassistant/companion/android/domain => common/src/main/java/io/homeassistant/companion/android/common/data}/integration/Entity.kt (76%) create mode 100644 common/src/main/java/io/homeassistant/companion/android/common/data/integration/IntegrationException.kt rename {domain/src/main/java/io/homeassistant/companion/android/domain => common/src/main/java/io/homeassistant/companion/android/common/data}/integration/IntegrationRepository.kt (95%) rename {domain/src/main/java/io/homeassistant/companion/android/domain => common/src/main/java/io/homeassistant/companion/android/common/data}/integration/Panel.kt (74%) rename {domain/src/main/java/io/homeassistant/companion/android/domain => common/src/main/java/io/homeassistant/companion/android/common/data}/integration/SensorRegistration.kt (79%) rename {domain/src/main/java/io/homeassistant/companion/android/domain => common/src/main/java/io/homeassistant/companion/android/common/data}/integration/Service.kt (61%) rename {domain/src/main/java/io/homeassistant/companion/android/domain => common/src/main/java/io/homeassistant/companion/android/common/data}/integration/ServiceData.kt (59%) rename {domain/src/main/java/io/homeassistant/companion/android/domain => common/src/main/java/io/homeassistant/companion/android/common/data}/integration/ServiceFields.kt (62%) rename {domain/src/main/java/io/homeassistant/companion/android/domain => common/src/main/java/io/homeassistant/companion/android/common/data}/integration/UpdateLocation.kt (75%) rename {domain/src/main/java/io/homeassistant/companion/android/domain => common/src/main/java/io/homeassistant/companion/android/common/data}/integration/ZoneAttributes.kt (73%) rename {data/src/main/java/io/homeassistant/companion/android/data/integration => common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl}/IntegrationRepositoryImpl.kt (89%) rename {data/src/main/java/io/homeassistant/companion/android/data/integration => common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl}/IntegrationService.kt (64%) rename {data/src/main/java/io/homeassistant/companion/android/data/integration => common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl}/entities/DiscoveryInfoResponse.kt (65%) create mode 100644 common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/DomainResponse.kt rename {data/src/main/java/io/homeassistant/companion/android/data/integration => common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl}/entities/EntityResponse.kt (73%) rename {data/src/main/java/io/homeassistant/companion/android/data/integration => common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl}/entities/FireEventRequest.kt (53%) rename {data/src/main/java/io/homeassistant/companion/android/data/integration => common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl}/entities/GetConfigResponse.kt (78%) rename {data/src/main/java/io/homeassistant/companion/android/data/integration => common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl}/entities/IntegrationRequest.kt (68%) rename {data/src/main/java/io/homeassistant/companion/android/data/integration => common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl}/entities/RegisterDeviceRequest.kt (85%) rename {data/src/main/java/io/homeassistant/companion/android/data/integration => common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl}/entities/RegisterDeviceResponse.kt (64%) rename {data/src/main/java/io/homeassistant/companion/android/data/integration => common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl}/entities/SensorRequest.kt (81%) rename {data/src/main/java/io/homeassistant/companion/android/data/integration => common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl}/entities/ServiceCallRequest.kt (60%) rename {data/src/main/java/io/homeassistant/companion/android/data/integration => common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl}/entities/Template.kt (52%) rename {data/src/main/java/io/homeassistant/companion/android/data/integration => common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl}/entities/UpdateLocationRequest.kt (72%) rename {domain/src/main/java/io/homeassistant/companion/android/domain => common/src/main/java/io/homeassistant/companion/android/common/data}/themes/ThemesRepository.kt (65%) rename {data/src/main/java/io/homeassistant/companion/android => common/src/main/java/io/homeassistant/companion/android/common}/data/themes/ThemesRepositoryImpl.kt (72%) rename {domain/src/main/java/io/homeassistant/companion/android/domain => common/src/main/java/io/homeassistant/companion/android/common/data}/url/UrlRepository.kt (87%) rename {data/src/main/java/io/homeassistant/companion/android => common/src/main/java/io/homeassistant/companion/android/common}/data/url/UrlRepositoryImpl.kt (91%) create mode 100644 common/src/main/java/io/homeassistant/companion/android/common/data/wifi/WifiHelper.kt rename common/src/main/java/io/homeassistant/companion/android/common/{ => data}/wifi/WifiHelperImpl.kt (55%) rename {data/src/test/java/io/homeassistant/companion/android => common/src/test/java/io/homeassistant/companion/android/common}/data/HomeAssistantMockService.kt (89%) rename {data/src/test/java/io/homeassistant/companion/android/data/authentication => common/src/test/java/io/homeassistant/companion/android/common/data/authentication/impl}/AuthenticationRepositoryImplSpec.kt (95%) rename {data/src/test/java/io/homeassistant/companion/android/data/authentication => common/src/test/java/io/homeassistant/companion/android/common/data/authentication/impl}/AuthenticationServiceSpec.kt (95%) rename {data/src/test/java/io/homeassistant/companion/android/data/authentication => common/src/test/java/io/homeassistant/companion/android/common/data/authentication/impl}/SessionSpec.kt (67%) rename {data/src/test/java/io/homeassistant/companion/android/data/integration => common/src/test/java/io/homeassistant/companion/android/common/data/integration/impl}/IntegrationRepositoryImplSpec.kt (96%) rename {data/src/test/java/io/homeassistant/companion/android/data/integration => common/src/test/java/io/homeassistant/companion/android/common/data/integration/impl}/IntegrationServiceSpec.kt (87%) rename {data/src/test/java/io/homeassistant/companion/android => common/src/test/java/io/homeassistant/companion/android/common}/data/url/UrlRepositoryImplSpec.kt (95%) rename {data => common}/src/test/resources/authentication/authorization_code.json (100%) rename {data => common}/src/test/resources/authentication/refresh_token.json (100%) rename {data => common}/src/test/resources/authentication/refresh_token_error.json (100%) rename {data => common}/src/test/resources/integration/empty.json (100%) rename {data => common}/src/test/resources/integration/register.json (100%) delete mode 100644 data/build.gradle.kts delete mode 100644 data/src/main/java/io/homeassistant/companion/android/data/authentication/AuthorizationException.kt delete mode 100644 data/src/main/java/io/homeassistant/companion/android/data/integration/IntegrationException.kt delete mode 100644 data/src/main/java/io/homeassistant/companion/android/data/integration/entities/DomainResponse.kt delete mode 100644 data/src/main/java/io/homeassistant/companion/android/data/wifi/WifiHelper.kt delete mode 100644 domain/build.gradle.kts delete mode 100644 domain/src/main/java/io/homeassistant/companion/android/domain/authentication/AuthenticationUseCase.kt delete mode 100644 domain/src/main/java/io/homeassistant/companion/android/domain/authentication/AuthenticationUseCaseImpl.kt delete mode 100644 domain/src/main/java/io/homeassistant/companion/android/domain/authentication/SessionState.kt delete mode 100644 domain/src/main/java/io/homeassistant/companion/android/domain/integration/IntegrationUseCase.kt delete mode 100644 domain/src/main/java/io/homeassistant/companion/android/domain/integration/IntegrationUseCaseImpl.kt delete mode 100644 domain/src/main/java/io/homeassistant/companion/android/domain/themes/ThemesUseCase.kt delete mode 100644 domain/src/main/java/io/homeassistant/companion/android/domain/themes/ThemesUseCaseImpl.kt delete mode 100644 domain/src/main/java/io/homeassistant/companion/android/domain/url/UrlUseCase.kt delete mode 100644 domain/src/main/java/io/homeassistant/companion/android/domain/url/UrlUseCaseImpl.kt delete mode 100644 domain/src/test/java/io/homeassistant/companion/android/domain/authentication/AuthenticationUseCaseImplSpec.kt delete mode 100644 domain/src/test/java/io/homeassistant/companion/android/domain/integration/IntegrationUseCaseImplSpec.kt delete mode 100644 domain/src/test/java/io/homeassistant/companion/android/domain/url/UrlUseCaseImplSpec.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index cf606dd83..18440dbb0 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -115,7 +115,6 @@ play { dependencies { implementation(project(":common")) - implementation(project(":domain")) implementation(Config.Dependency.Misc.blurView) implementation(Config.Dependency.Misc.iconDialog) diff --git a/app/src/full/java/io/homeassistant/companion/android/launch/LaunchPresenterImpl.kt b/app/src/full/java/io/homeassistant/companion/android/launch/LaunchPresenterImpl.kt index 7d424ce7e..7d5503cdb 100644 --- a/app/src/full/java/io/homeassistant/companion/android/launch/LaunchPresenterImpl.kt +++ b/app/src/full/java/io/homeassistant/companion/android/launch/LaunchPresenterImpl.kt @@ -1,35 +1,33 @@ package io.homeassistant.companion.android.launch -import android.os.Build import android.util.Log import com.google.firebase.iid.FirebaseInstanceId import io.homeassistant.companion.android.BuildConfig -import io.homeassistant.companion.android.domain.authentication.AuthenticationUseCase -import io.homeassistant.companion.android.domain.integration.IntegrationUseCase -import java.lang.Exception +import io.homeassistant.companion.android.common.data.authentication.AuthenticationRepository +import io.homeassistant.companion.android.common.data.integration.DeviceRegistration +import io.homeassistant.companion.android.common.data.integration.IntegrationRepository import javax.inject.Inject import kotlinx.coroutines.launch import kotlinx.coroutines.tasks.await class LaunchPresenterImpl @Inject constructor( view: LaunchView, - authenticationUseCase: AuthenticationUseCase, - integrationUseCase: IntegrationUseCase + authenticationUseCase: AuthenticationRepository, + integrationUseCase: IntegrationRepository ) : LaunchPresenterBase(view, authenticationUseCase, integrationUseCase) { override fun resyncRegistration() { - mainScope.launch { - try { - integrationUseCase.updateRegistration( + mainScope.launch { + try { + integrationUseCase.updateRegistration( + DeviceRegistration( "${BuildConfig.VERSION_NAME} (${BuildConfig.VERSION_CODE})", null, - Build.MANUFACTURER ?: "UNKNOWN", - Build.MODEL ?: "UNKNOWN", - Build.VERSION.SDK_INT.toString(), - pushToken = FirebaseInstanceId.getInstance().instanceId.await().token + FirebaseInstanceId.getInstance().instanceId.await().token ) - } catch (e: Exception) { - Log.e(TAG, "Issue updating Registration", e) - } + ) + } catch (e: Exception) { + Log.e(TAG, "Issue updating Registration", e) } + } } } diff --git a/app/src/full/java/io/homeassistant/companion/android/notifications/MessagingService.kt b/app/src/full/java/io/homeassistant/companion/android/notifications/MessagingService.kt index 274725194..b0b2e8860 100644 --- a/app/src/full/java/io/homeassistant/companion/android/notifications/MessagingService.kt +++ b/app/src/full/java/io/homeassistant/companion/android/notifications/MessagingService.kt @@ -21,10 +21,11 @@ import com.google.firebase.messaging.RemoteMessage import com.vdurmont.emoji.EmojiParser import io.homeassistant.companion.android.R import io.homeassistant.companion.android.common.dagger.GraphComponentAccessor -import io.homeassistant.companion.android.domain.authentication.AuthenticationUseCase -import io.homeassistant.companion.android.domain.authentication.SessionState -import io.homeassistant.companion.android.domain.integration.IntegrationUseCase -import io.homeassistant.companion.android.domain.url.UrlUseCase +import io.homeassistant.companion.android.common.data.authentication.AuthenticationRepository +import io.homeassistant.companion.android.common.data.authentication.SessionState +import io.homeassistant.companion.android.common.data.integration.DeviceRegistration +import io.homeassistant.companion.android.common.data.integration.IntegrationRepository +import io.homeassistant.companion.android.common.data.url.UrlRepository import io.homeassistant.companion.android.sensors.LocationSensorManager import io.homeassistant.companion.android.util.UrlHandler import io.homeassistant.companion.android.util.cancel @@ -61,13 +62,13 @@ class MessagingService : FirebaseMessagingService() { } @Inject - lateinit var integrationUseCase: IntegrationUseCase + lateinit var integrationUseCase: IntegrationRepository @Inject - lateinit var urlUseCase: UrlUseCase + lateinit var urlUseCase: UrlRepository @Inject - lateinit var authenticationUseCase: AuthenticationUseCase + lateinit var authenticationUseCase: AuthenticationRepository private val mainScope: CoroutineScope = CoroutineScope(Dispatchers.Main + Job()) @@ -274,8 +275,9 @@ class MessagingService : FirebaseMessagingService() { .setSmallIcon(R.drawable.ic_stat_ic_notification) .setStyle( NotificationCompat.BigTextStyle() - .setSummaryText(prepareText(group.substring(GROUP_PREFIX.length)) - ) + .setSummaryText( + prepareText(group.substring(GROUP_PREFIX.length)) + ) ) .setGroup(group) .setGroupSummary(true) @@ -468,23 +470,25 @@ class MessagingService : FirebaseMessagingService() { } } - private suspend fun getImageBitmap(url: URL?, requiresAuth: Boolean = false): Bitmap? = withContext( - Dispatchers.IO) { - if (url == null) - return@withContext null + private suspend fun getImageBitmap(url: URL?, requiresAuth: Boolean = false): Bitmap? = + withContext( + Dispatchers.IO + ) { + if (url == null) + return@withContext null - var image: Bitmap? = null - try { - val uc = url.openConnection() - if (requiresAuth) { - uc.setRequestProperty("Authorization", authenticationUseCase.buildBearerToken()) + var image: Bitmap? = null + try { + val uc = url.openConnection() + if (requiresAuth) { + uc.setRequestProperty("Authorization", authenticationUseCase.buildBearerToken()) + } + image = BitmapFactory.decodeStream(uc.getInputStream()) + } catch (e: Exception) { + Log.e(TAG, "Couldn't download image for notification", e) } - image = BitmapFactory.decodeStream(uc.getInputStream()) - } catch (e: Exception) { - Log.e(TAG, "Couldn't download image for notification", e) + return@withContext image } - return@withContext image - } private fun handleActions( builder: NotificationCompat.Builder, @@ -623,7 +627,9 @@ class MessagingService : FirebaseMessagingService() { } try { integrationUseCase.updateRegistration( - pushToken = token + DeviceRegistration( + pushToken = token + ) ) } catch (e: Exception) { // TODO: Store for update later diff --git a/app/src/full/java/io/homeassistant/companion/android/notifications/NotificationActionReceiver.kt b/app/src/full/java/io/homeassistant/companion/android/notifications/NotificationActionReceiver.kt index d5e8f548f..85d4668fc 100644 --- a/app/src/full/java/io/homeassistant/companion/android/notifications/NotificationActionReceiver.kt +++ b/app/src/full/java/io/homeassistant/companion/android/notifications/NotificationActionReceiver.kt @@ -9,7 +9,7 @@ import android.widget.Toast import androidx.core.app.NotificationManagerCompat import io.homeassistant.companion.android.R import io.homeassistant.companion.android.common.dagger.GraphComponentAccessor -import io.homeassistant.companion.android.domain.integration.IntegrationUseCase +import io.homeassistant.companion.android.common.data.integration.IntegrationRepository import io.homeassistant.companion.android.util.NotificationActionContentHandler import io.homeassistant.companion.android.util.cancel import javax.inject.Inject @@ -32,7 +32,7 @@ class NotificationActionReceiver : BroadcastReceiver() { private val ioScope: CoroutineScope = CoroutineScope(Dispatchers.IO + Job()) @Inject - lateinit var integrationUseCase: IntegrationUseCase + lateinit var integrationUseCase: IntegrationRepository override fun onReceive(context: Context, intent: Intent) { DaggerServiceComponent.builder() diff --git a/app/src/full/java/io/homeassistant/companion/android/onboarding/integration/MobileAppIntegrationPresenterImpl.kt b/app/src/full/java/io/homeassistant/companion/android/onboarding/integration/MobileAppIntegrationPresenterImpl.kt index 957bddad4..5ef7fe775 100644 --- a/app/src/full/java/io/homeassistant/companion/android/onboarding/integration/MobileAppIntegrationPresenterImpl.kt +++ b/app/src/full/java/io/homeassistant/companion/android/onboarding/integration/MobileAppIntegrationPresenterImpl.kt @@ -2,14 +2,14 @@ package io.homeassistant.companion.android.onboarding.integration import android.util.Log import com.google.firebase.iid.FirebaseInstanceId -import io.homeassistant.companion.android.domain.integration.DeviceRegistration -import io.homeassistant.companion.android.domain.integration.IntegrationUseCase +import io.homeassistant.companion.android.common.data.integration.DeviceRegistration +import io.homeassistant.companion.android.common.data.integration.IntegrationRepository import javax.inject.Inject import kotlinx.coroutines.tasks.await class MobileAppIntegrationPresenterImpl @Inject constructor( view: MobileAppIntegrationView, - integrationUseCase: IntegrationUseCase + integrationUseCase: IntegrationRepository ) : MobileAppIntegrationPresenterBase( view, integrationUseCase ) { diff --git a/app/src/full/java/io/homeassistant/companion/android/sensors/ActivitySensorManager.kt b/app/src/full/java/io/homeassistant/companion/android/sensors/ActivitySensorManager.kt index fe5c7aa87..8e7e0ce3a 100644 --- a/app/src/full/java/io/homeassistant/companion/android/sensors/ActivitySensorManager.kt +++ b/app/src/full/java/io/homeassistant/companion/android/sensors/ActivitySensorManager.kt @@ -12,7 +12,7 @@ import com.google.android.gms.location.ActivityRecognitionResult import com.google.android.gms.location.DetectedActivity import io.homeassistant.companion.android.R import io.homeassistant.companion.android.common.dagger.GraphComponentAccessor -import io.homeassistant.companion.android.domain.integration.IntegrationUseCase +import io.homeassistant.companion.android.common.data.integration.IntegrationRepository import javax.inject.Inject class ActivitySensorManager : BroadcastReceiver(), SensorManager { @@ -33,7 +33,7 @@ class ActivitySensorManager : BroadcastReceiver(), SensorManager { } @Inject - lateinit var integrationUseCase: IntegrationUseCase + lateinit var integrationUseCase: IntegrationRepository override fun onReceive(context: Context, intent: Intent) { ensureInjected(context) diff --git a/app/src/full/java/io/homeassistant/companion/android/sensors/LocationSensorManager.kt b/app/src/full/java/io/homeassistant/companion/android/sensors/LocationSensorManager.kt index 46577d588..21e360210 100644 --- a/app/src/full/java/io/homeassistant/companion/android/sensors/LocationSensorManager.kt +++ b/app/src/full/java/io/homeassistant/companion/android/sensors/LocationSensorManager.kt @@ -19,10 +19,10 @@ import com.google.android.gms.location.LocationResult import com.google.android.gms.location.LocationServices import io.homeassistant.companion.android.R import io.homeassistant.companion.android.common.dagger.GraphComponentAccessor +import io.homeassistant.companion.android.common.data.integration.IntegrationRepository +import io.homeassistant.companion.android.common.data.integration.UpdateLocation import io.homeassistant.companion.android.database.AppDatabase import io.homeassistant.companion.android.database.sensor.Attribute -import io.homeassistant.companion.android.domain.integration.IntegrationUseCase -import io.homeassistant.companion.android.domain.integration.UpdateLocation import javax.inject.Inject import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -65,7 +65,7 @@ class LocationSensorManager : BroadcastReceiver(), SensorManager { } @Inject - lateinit var integrationUseCase: IntegrationUseCase + lateinit var integrationUseCase: IntegrationRepository private val ioScope: CoroutineScope = CoroutineScope(Dispatchers.IO) diff --git a/app/src/main/java/io/homeassistant/companion/android/PresenterComponent.kt b/app/src/main/java/io/homeassistant/companion/android/PresenterComponent.kt index 379e53785..eb2aefade 100644 --- a/app/src/main/java/io/homeassistant/companion/android/PresenterComponent.kt +++ b/app/src/main/java/io/homeassistant/companion/android/PresenterComponent.kt @@ -10,7 +10,6 @@ import io.homeassistant.companion.android.onboarding.manual.ManualSetupFragment import io.homeassistant.companion.android.sensors.SensorsSettingsFragment import io.homeassistant.companion.android.settings.SettingsActivity import io.homeassistant.companion.android.settings.SettingsFragment -import io.homeassistant.companion.android.settings.shortcuts.ShortcutsFragment import io.homeassistant.companion.android.settings.ssid.SsidDialogFragment import io.homeassistant.companion.android.webview.WebViewActivity @@ -31,8 +30,6 @@ interface PresenterComponent { fun inject(fragment: SettingsFragment) - fun inject(fragment: ShortcutsFragment) - fun inject(activity: WebViewActivity) fun inject(dialog: SsidDialogFragment) diff --git a/app/src/main/java/io/homeassistant/companion/android/PresenterModule.kt b/app/src/main/java/io/homeassistant/companion/android/PresenterModule.kt index ce1ae6b14..555f89256 100644 --- a/app/src/main/java/io/homeassistant/companion/android/PresenterModule.kt +++ b/app/src/main/java/io/homeassistant/companion/android/PresenterModule.kt @@ -21,9 +21,6 @@ import io.homeassistant.companion.android.onboarding.manual.ManualSetupView import io.homeassistant.companion.android.settings.SettingsPresenter import io.homeassistant.companion.android.settings.SettingsPresenterImpl import io.homeassistant.companion.android.settings.SettingsView -import io.homeassistant.companion.android.settings.shortcuts.ShortcutsPresenter -import io.homeassistant.companion.android.settings.shortcuts.ShortcutsPresenterImpl -import io.homeassistant.companion.android.settings.shortcuts.ShortcutsView import io.homeassistant.companion.android.webview.WebView import io.homeassistant.companion.android.webview.WebViewPresenter import io.homeassistant.companion.android.webview.WebViewPresenterImpl @@ -37,7 +34,6 @@ class PresenterModule { private lateinit var manualSetupView: ManualSetupView private lateinit var mobileAppIntegrationView: MobileAppIntegrationView private lateinit var settingsView: SettingsView - private lateinit var shortcutsView: ShortcutsView private lateinit var webView: WebView constructor(launchView: LaunchView) { @@ -64,10 +60,6 @@ class PresenterModule { this.settingsView = settingsView } - constructor(shortcutsView: ShortcutsView) { - this.shortcutsView = shortcutsView - } - constructor(webView: WebView) { this.webView = webView } @@ -90,9 +82,6 @@ class PresenterModule { @Provides fun provideSettingsView() = settingsView - @Provides - fun provideShortcutsView() = shortcutsView - @Provides fun provideWebView() = webView @@ -117,9 +106,6 @@ class PresenterModule { @Binds fun bindSettingsPresenter(presenter: SettingsPresenterImpl): SettingsPresenter - @Binds - fun bindShortcutsPresenter(presenter: ShortcutsPresenterImpl): ShortcutsPresenter - @Binds fun bindWebViewPresenterImpl(presenter: WebViewPresenterImpl): WebViewPresenter } diff --git a/app/src/main/java/io/homeassistant/companion/android/database/sensor/SensorWithAttributes.kt b/app/src/main/java/io/homeassistant/companion/android/database/sensor/SensorWithAttributes.kt index 44371b290..1b15456c0 100644 --- a/app/src/main/java/io/homeassistant/companion/android/database/sensor/SensorWithAttributes.kt +++ b/app/src/main/java/io/homeassistant/companion/android/database/sensor/SensorWithAttributes.kt @@ -2,7 +2,7 @@ package io.homeassistant.companion.android.database.sensor import androidx.room.Embedded import androidx.room.Relation -import io.homeassistant.companion.android.domain.integration.SensorRegistration +import io.homeassistant.companion.android.common.data.integration.SensorRegistration data class SensorWithAttributes( @Embedded diff --git a/app/src/main/java/io/homeassistant/companion/android/launch/LaunchPresenterBase.kt b/app/src/main/java/io/homeassistant/companion/android/launch/LaunchPresenterBase.kt index 90d145fee..960e6bb6d 100644 --- a/app/src/main/java/io/homeassistant/companion/android/launch/LaunchPresenterBase.kt +++ b/app/src/main/java/io/homeassistant/companion/android/launch/LaunchPresenterBase.kt @@ -1,8 +1,8 @@ package io.homeassistant.companion.android.launch -import io.homeassistant.companion.android.domain.authentication.AuthenticationUseCase -import io.homeassistant.companion.android.domain.authentication.SessionState -import io.homeassistant.companion.android.domain.integration.IntegrationUseCase +import io.homeassistant.companion.android.common.data.authentication.AuthenticationRepository +import io.homeassistant.companion.android.common.data.authentication.SessionState +import io.homeassistant.companion.android.common.data.integration.IntegrationRepository import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -11,8 +11,8 @@ import kotlinx.coroutines.launch abstract class LaunchPresenterBase( private val view: LaunchView, - private val authenticationUseCase: AuthenticationUseCase, - internal val integrationUseCase: IntegrationUseCase + private val authenticationUseCase: AuthenticationRepository, + internal val integrationUseCase: IntegrationRepository ) : LaunchPresenter { companion object { diff --git a/app/src/main/java/io/homeassistant/companion/android/nfc/NfcEditFragment.kt b/app/src/main/java/io/homeassistant/companion/android/nfc/NfcEditFragment.kt index cd1ab3590..daabd1006 100644 --- a/app/src/main/java/io/homeassistant/companion/android/nfc/NfcEditFragment.kt +++ b/app/src/main/java/io/homeassistant/companion/android/nfc/NfcEditFragment.kt @@ -15,7 +15,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import io.homeassistant.companion.android.R import io.homeassistant.companion.android.common.dagger.GraphComponentAccessor -import io.homeassistant.companion.android.domain.integration.IntegrationUseCase +import io.homeassistant.companion.android.common.data.integration.IntegrationRepository import javax.inject.Inject import kotlinx.android.synthetic.main.fragment_nfc_edit.* import kotlinx.coroutines.CoroutineScope @@ -36,7 +36,7 @@ class NfcEditFragment : Fragment() { private lateinit var viewModel: NfcViewModel @Inject - lateinit var integrationUseCase: IntegrationUseCase + lateinit var integrationUseCase: IntegrationRepository override fun onCreateView( inflater: LayoutInflater, diff --git a/app/src/main/java/io/homeassistant/companion/android/nfc/TagReaderActivity.kt b/app/src/main/java/io/homeassistant/companion/android/nfc/TagReaderActivity.kt index 3b597b9b5..a24e648bd 100644 --- a/app/src/main/java/io/homeassistant/companion/android/nfc/TagReaderActivity.kt +++ b/app/src/main/java/io/homeassistant/companion/android/nfc/TagReaderActivity.kt @@ -9,7 +9,7 @@ import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import io.homeassistant.companion.android.R import io.homeassistant.companion.android.common.dagger.GraphComponentAccessor -import io.homeassistant.companion.android.domain.integration.IntegrationUseCase +import io.homeassistant.companion.android.common.data.integration.IntegrationRepository import io.homeassistant.companion.android.util.UrlHandler import javax.inject.Inject import kotlinx.coroutines.CoroutineScope @@ -25,7 +25,7 @@ class TagReaderActivity : AppCompatActivity() { private val mainScope: CoroutineScope = CoroutineScope(Dispatchers.Main + Job()) @Inject - lateinit var integrationUseCase: IntegrationUseCase + lateinit var integrationUseCase: IntegrationRepository override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/app/src/main/java/io/homeassistant/companion/android/onboarding/authentication/AuthenticationPresenterImpl.kt b/app/src/main/java/io/homeassistant/companion/android/onboarding/authentication/AuthenticationPresenterImpl.kt index 4f80b17e9..068020447 100644 --- a/app/src/main/java/io/homeassistant/companion/android/onboarding/authentication/AuthenticationPresenterImpl.kt +++ b/app/src/main/java/io/homeassistant/companion/android/onboarding/authentication/AuthenticationPresenterImpl.kt @@ -3,7 +3,7 @@ package io.homeassistant.companion.android.onboarding.authentication import android.net.Uri import android.util.Log import io.homeassistant.companion.android.R -import io.homeassistant.companion.android.domain.authentication.AuthenticationUseCase +import io.homeassistant.companion.android.common.data.authentication.AuthenticationRepository import javax.inject.Inject import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -13,7 +13,7 @@ import kotlinx.coroutines.launch class AuthenticationPresenterImpl @Inject constructor( private val view: AuthenticationView, - private val authenticationUseCase: AuthenticationUseCase + private val authenticationUseCase: AuthenticationRepository ) : AuthenticationPresenter { companion object { diff --git a/app/src/main/java/io/homeassistant/companion/android/onboarding/discovery/DiscoveryPresenterImpl.kt b/app/src/main/java/io/homeassistant/companion/android/onboarding/discovery/DiscoveryPresenterImpl.kt index a211cf6e8..3e3364d77 100644 --- a/app/src/main/java/io/homeassistant/companion/android/onboarding/discovery/DiscoveryPresenterImpl.kt +++ b/app/src/main/java/io/homeassistant/companion/android/onboarding/discovery/DiscoveryPresenterImpl.kt @@ -1,6 +1,6 @@ package io.homeassistant.companion.android.onboarding.discovery -import io.homeassistant.companion.android.domain.url.UrlUseCase +import io.homeassistant.companion.android.common.data.url.UrlRepository import java.net.URL import javax.inject.Inject import kotlinx.coroutines.CoroutineScope @@ -11,7 +11,7 @@ import kotlinx.coroutines.launch class DiscoveryPresenterImpl @Inject constructor( val view: DiscoveryView, - val urlUseCase: UrlUseCase + val urlUseCase: UrlRepository ) : DiscoveryPresenter { private val mainScope: CoroutineScope = CoroutineScope(Dispatchers.Main + Job()) diff --git a/app/src/main/java/io/homeassistant/companion/android/onboarding/integration/MobileAppIntegrationPresenterBase.kt b/app/src/main/java/io/homeassistant/companion/android/onboarding/integration/MobileAppIntegrationPresenterBase.kt index 878662a26..7e6dbf0e8 100644 --- a/app/src/main/java/io/homeassistant/companion/android/onboarding/integration/MobileAppIntegrationPresenterBase.kt +++ b/app/src/main/java/io/homeassistant/companion/android/onboarding/integration/MobileAppIntegrationPresenterBase.kt @@ -3,8 +3,8 @@ package io.homeassistant.companion.android.onboarding.integration import android.os.Build import android.util.Log import io.homeassistant.companion.android.BuildConfig -import io.homeassistant.companion.android.domain.integration.DeviceRegistration -import io.homeassistant.companion.android.domain.integration.IntegrationUseCase +import io.homeassistant.companion.android.common.data.integration.DeviceRegistration +import io.homeassistant.companion.android.common.data.integration.IntegrationRepository import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -13,7 +13,7 @@ import kotlinx.coroutines.launch open class MobileAppIntegrationPresenterBase constructor( private val view: MobileAppIntegrationView, - private val integrationUseCase: IntegrationUseCase + private val integrationUseCase: IntegrationRepository ) : MobileAppIntegrationPresenter { companion object { diff --git a/app/src/main/java/io/homeassistant/companion/android/onboarding/manual/ManualSetupPresenterImpl.kt b/app/src/main/java/io/homeassistant/companion/android/onboarding/manual/ManualSetupPresenterImpl.kt index 81c487481..75f6cab49 100644 --- a/app/src/main/java/io/homeassistant/companion/android/onboarding/manual/ManualSetupPresenterImpl.kt +++ b/app/src/main/java/io/homeassistant/companion/android/onboarding/manual/ManualSetupPresenterImpl.kt @@ -1,8 +1,8 @@ package io.homeassistant.companion.android.onboarding.manual import android.util.Log -import io.homeassistant.companion.android.domain.MalformedHttpUrlException -import io.homeassistant.companion.android.domain.url.UrlUseCase +import io.homeassistant.companion.android.common.data.MalformedHttpUrlException +import io.homeassistant.companion.android.common.data.url.UrlRepository import javax.inject.Inject import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -12,7 +12,7 @@ import kotlinx.coroutines.launch class ManualSetupPresenterImpl @Inject constructor( private val view: ManualSetupView, - private val urlUseCase: UrlUseCase + private val urlUseCase: UrlRepository ) : ManualSetupPresenter { companion object { diff --git a/app/src/main/java/io/homeassistant/companion/android/sensors/SensorDetailFragment.kt b/app/src/main/java/io/homeassistant/companion/android/sensors/SensorDetailFragment.kt index 9d90386e2..ba022ae1f 100644 --- a/app/src/main/java/io/homeassistant/companion/android/sensors/SensorDetailFragment.kt +++ b/app/src/main/java/io/homeassistant/companion/android/sensors/SensorDetailFragment.kt @@ -3,7 +3,6 @@ package io.homeassistant.companion.android.sensors import android.content.pm.PackageManager import android.os.Bundle import android.os.Handler -import androidx.core.os.postDelayed import androidx.preference.Preference import androidx.preference.PreferenceCategory import androidx.preference.PreferenceFragmentCompat diff --git a/app/src/main/java/io/homeassistant/companion/android/sensors/SensorReceiver.kt b/app/src/main/java/io/homeassistant/companion/android/sensors/SensorReceiver.kt index 5317e6081..b89494d48 100644 --- a/app/src/main/java/io/homeassistant/companion/android/sensors/SensorReceiver.kt +++ b/app/src/main/java/io/homeassistant/companion/android/sensors/SensorReceiver.kt @@ -6,9 +6,9 @@ import android.content.Context import android.content.Intent import android.util.Log import io.homeassistant.companion.android.common.dagger.GraphComponentAccessor +import io.homeassistant.companion.android.common.data.integration.IntegrationRepository +import io.homeassistant.companion.android.common.data.integration.SensorRegistration import io.homeassistant.companion.android.database.AppDatabase -import io.homeassistant.companion.android.domain.integration.IntegrationUseCase -import io.homeassistant.companion.android.domain.integration.SensorRegistration import javax.inject.Inject import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -47,7 +47,7 @@ class SensorReceiver : BroadcastReceiver() { private val ioScope: CoroutineScope = CoroutineScope(Dispatchers.IO + Job()) @Inject - lateinit var integrationUseCase: IntegrationUseCase + lateinit var integrationUseCase: IntegrationRepository private val chargingActions = listOf( Intent.ACTION_BATTERY_LOW, @@ -104,7 +104,7 @@ class SensorReceiver : BroadcastReceiver() { suspend fun updateSensors( context: Context, - integrationUseCase: IntegrationUseCase + integrationUseCase: IntegrationRepository ) { val sensorDao = AppDatabase.getInstance(context).sensorDao() val enabledRegistrations = mutableListOf>() diff --git a/app/src/main/java/io/homeassistant/companion/android/sensors/SensorWorker.kt b/app/src/main/java/io/homeassistant/companion/android/sensors/SensorWorker.kt index fd32231be..13483e9db 100644 --- a/app/src/main/java/io/homeassistant/companion/android/sensors/SensorWorker.kt +++ b/app/src/main/java/io/homeassistant/companion/android/sensors/SensorWorker.kt @@ -17,7 +17,7 @@ import androidx.work.WorkManager import androidx.work.WorkerParameters import io.homeassistant.companion.android.R import io.homeassistant.companion.android.common.dagger.GraphComponentAccessor -import io.homeassistant.companion.android.domain.integration.IntegrationUseCase +import io.homeassistant.companion.android.common.data.integration.IntegrationRepository import java.util.concurrent.TimeUnit import javax.inject.Inject import kotlinx.coroutines.Dispatchers @@ -48,7 +48,7 @@ class SensorWorker( } @Inject - lateinit var integrationUseCase: IntegrationUseCase + lateinit var integrationUseCase: IntegrationRepository private val notificationManager = appContext.getSystemService(NOTIFICATION_SERVICE) as NotificationManager diff --git a/app/src/main/java/io/homeassistant/companion/android/sensors/SensorsSettingsFragment.kt b/app/src/main/java/io/homeassistant/companion/android/sensors/SensorsSettingsFragment.kt index ffc11825e..17f9fbb61 100644 --- a/app/src/main/java/io/homeassistant/companion/android/sensors/SensorsSettingsFragment.kt +++ b/app/src/main/java/io/homeassistant/companion/android/sensors/SensorsSettingsFragment.kt @@ -7,14 +7,14 @@ import androidx.preference.PreferenceCategory import androidx.preference.PreferenceFragmentCompat import io.homeassistant.companion.android.R import io.homeassistant.companion.android.common.dagger.GraphComponentAccessor +import io.homeassistant.companion.android.common.data.integration.IntegrationRepository import io.homeassistant.companion.android.database.AppDatabase -import io.homeassistant.companion.android.domain.integration.IntegrationUseCase import javax.inject.Inject class SensorsSettingsFragment : PreferenceFragmentCompat() { @Inject - lateinit var integrationUseCase: IntegrationUseCase + lateinit var integrationUseCase: IntegrationRepository private val handler = Handler() private val refresh = object : Runnable { diff --git a/app/src/main/java/io/homeassistant/companion/android/settings/SettingsFragment.kt b/app/src/main/java/io/homeassistant/companion/android/settings/SettingsFragment.kt index bc6a950ef..2c6b1a9f1 100644 --- a/app/src/main/java/io/homeassistant/companion/android/settings/SettingsFragment.kt +++ b/app/src/main/java/io/homeassistant/companion/android/settings/SettingsFragment.kt @@ -21,7 +21,6 @@ import io.homeassistant.companion.android.authenticator.Authenticator import io.homeassistant.companion.android.common.dagger.GraphComponentAccessor import io.homeassistant.companion.android.nfc.NfcSetupActivity import io.homeassistant.companion.android.sensors.SensorsSettingsFragment -import io.homeassistant.companion.android.settings.shortcuts.ShortcutsFragment import io.homeassistant.companion.android.settings.ssid.SsidDialogFragment import io.homeassistant.companion.android.settings.ssid.SsidPreference import javax.inject.Inject @@ -88,15 +87,6 @@ class SettingsFragment : PreferenceFragmentCompat(), SettingsView { isValid } - val onClickShortcuts = Preference.OnPreferenceClickListener { - parentFragmentManager - .beginTransaction() - .replace(R.id.content, ShortcutsFragment.newInstance()) - .addToBackStack(getString(R.string.shortcuts)) - .commit() - true - } - findPreference("nfc_tags")?.let { it.isVisible = presenter.nfcEnabled() it.onPreferenceClickListener = Preference.OnPreferenceClickListener { @@ -120,14 +110,6 @@ class SettingsFragment : PreferenceFragmentCompat(), SettingsView { findPreference("app_lock")?.onPreferenceChangeListener = onChangeBiometricValidator - val shortcuts = findPreference("shortcuts") - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && presenter.getPanels().isNotEmpty()) { - shortcuts?.onPreferenceClickListener = - onClickShortcuts - } else { - shortcuts?.isVisible = false - } - findPreference("sensors")?.setOnPreferenceClickListener { parentFragmentManager .beginTransaction() diff --git a/app/src/main/java/io/homeassistant/companion/android/settings/SettingsPresenter.kt b/app/src/main/java/io/homeassistant/companion/android/settings/SettingsPresenter.kt index dd23c5c05..0c659d7ab 100644 --- a/app/src/main/java/io/homeassistant/companion/android/settings/SettingsPresenter.kt +++ b/app/src/main/java/io/homeassistant/companion/android/settings/SettingsPresenter.kt @@ -1,14 +1,12 @@ package io.homeassistant.companion.android.settings import androidx.preference.PreferenceDataStore -import io.homeassistant.companion.android.domain.integration.Panel interface SettingsPresenter { fun getPreferenceDataStore(): PreferenceDataStore fun onCreate() fun onFinish() fun nfcEnabled(): Boolean - fun getPanels(): Array fun isLockEnabled(): Boolean fun sessionTimeOut(): Int diff --git a/app/src/main/java/io/homeassistant/companion/android/settings/SettingsPresenterImpl.kt b/app/src/main/java/io/homeassistant/companion/android/settings/SettingsPresenterImpl.kt index 7caf802d0..fdb15848b 100644 --- a/app/src/main/java/io/homeassistant/companion/android/settings/SettingsPresenterImpl.kt +++ b/app/src/main/java/io/homeassistant/companion/android/settings/SettingsPresenterImpl.kt @@ -2,10 +2,10 @@ package io.homeassistant.companion.android.settings import android.util.Log import androidx.preference.PreferenceDataStore -import io.homeassistant.companion.android.domain.authentication.AuthenticationUseCase -import io.homeassistant.companion.android.domain.integration.IntegrationUseCase -import io.homeassistant.companion.android.domain.integration.Panel -import io.homeassistant.companion.android.domain.url.UrlUseCase +import io.homeassistant.companion.android.common.data.authentication.AuthenticationRepository +import io.homeassistant.companion.android.common.data.integration.DeviceRegistration +import io.homeassistant.companion.android.common.data.integration.IntegrationRepository +import io.homeassistant.companion.android.common.data.url.UrlRepository import io.homeassistant.companion.android.themes.ThemesManager import javax.inject.Inject import kotlinx.coroutines.CoroutineScope @@ -17,9 +17,9 @@ import kotlinx.coroutines.runBlocking class SettingsPresenterImpl @Inject constructor( private val settingsView: SettingsView, - private val urlUseCase: UrlUseCase, - private val integrationUseCase: IntegrationUseCase, - private val authenticationUseCase: AuthenticationUseCase, + private val urlUseCase: UrlRepository, + private val integrationUseCase: IntegrationRepository, + private val authenticationUseCase: AuthenticationRepository, private val themesManager: ThemesManager ) : SettingsPresenter, PreferenceDataStore() { @@ -76,7 +76,7 @@ class SettingsPresenterImpl @Inject constructor( } "registration_name" -> { try { - integrationUseCase.updateRegistration(deviceName = value!!) + integrationUseCase.updateRegistration(DeviceRegistration(deviceName = value!!)) } catch (e: Exception) { Log.e(TAG, "Issue updating registration with new device name", e) } @@ -149,18 +149,6 @@ class SettingsPresenterImpl @Inject constructor( } } - override fun getPanels(): Array { - return runBlocking { - var panels = arrayOf() - try { - panels = integrationUseCase.getPanels() - } catch (e: Exception) { - Log.e(TAG, "Issue getting panels.", e) - } - panels - } - } - override fun isLockEnabled(): Boolean { return runBlocking { authenticationUseCase.isLockEnabled() diff --git a/app/src/main/java/io/homeassistant/companion/android/settings/shortcuts/ShortcutsFragment.kt b/app/src/main/java/io/homeassistant/companion/android/settings/shortcuts/ShortcutsFragment.kt deleted file mode 100644 index caf6b0b78..000000000 --- a/app/src/main/java/io/homeassistant/companion/android/settings/shortcuts/ShortcutsFragment.kt +++ /dev/null @@ -1,126 +0,0 @@ -package io.homeassistant.companion.android.settings.shortcuts - -import android.app.PendingIntent -import android.content.Intent -import android.content.pm.ShortcutInfo -import android.content.pm.ShortcutManager -import android.graphics.drawable.Icon -import android.os.Build -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.annotation.RequiresApi -import androidx.fragment.app.Fragment -import androidx.recyclerview.widget.RecyclerView -import io.homeassistant.companion.android.DaggerPresenterComponent -import io.homeassistant.companion.android.PresenterModule -import io.homeassistant.companion.android.R -import io.homeassistant.companion.android.common.dagger.GraphComponentAccessor -import io.homeassistant.companion.android.domain.integration.Panel -import io.homeassistant.companion.android.webview.WebViewActivity -import javax.inject.Inject - -@RequiresApi(Build.VERSION_CODES.O) -class ShortcutsFragment : Fragment(), ShortcutsView { - - companion object { - fun newInstance(): ShortcutsFragment { - return ShortcutsFragment() - } - } - - @Inject - lateinit var presenter: ShortcutsPresenter - - private lateinit var recyclerViewAdapter: ShortcutsRecyclerViewAdapter - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - DaggerPresenterComponent - .builder() - .appComponent((activity?.application as GraphComponentAccessor).appComponent) - .presenterModule(PresenterModule(this)) - .build() - .inject(this) - } - - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - val panels = presenter.getPanels().filter { panel -> - !panel.title.isNullOrEmpty() && panel.title !== "lovelace" && panel.title !== "profile" - }.sortedBy { panel -> panel.title }.map { panel -> - panel.title_localized = when (panel.title) { - "calendar" -> requireContext().getString(R.string.calendar) - "config" -> requireContext().getString(R.string.config) - "developer_tools" -> requireContext().getString(R.string.developer_tools) - "history" -> requireContext().getString(R.string.history) - "logbook" -> requireContext().getString(R.string.logbook) - "mailbox" -> requireContext().getString(R.string.mailbox) - "map" -> requireContext().getString(R.string.map) - "profile" -> requireContext().getString(R.string.profile) - "shopping_list" -> requireContext().getString(R.string.shopping_list) - "states" -> requireContext().getString(R.string.states) - else -> panel.title - } - panel - } - - recyclerViewAdapter = - ShortcutsRecyclerViewAdapter(panels.toList(), requireContext()) { onCreateShortcut(it) } - - return inflater.inflate(R.layout.fragment_shortcuts, container, false).apply { - findViewById(R.id.recycler_view_shortcuts)?.apply { - adapter = recyclerViewAdapter - } - } - } - - private fun onCreateShortcut(panel: Panel) { - val shortcutManager = - requireContext().getSystemService(ShortcutManager::class.java) - if (shortcutManager!!.isRequestPinShortcutSupported) { - val pinShortcutInfo = - ShortcutInfo.Builder( - context, - panel.title - ) - .setShortLabel(panel.title_localized!!) - .setLongLabel(panel.title_localized!!) - .setIcon( - Icon.createWithResource( - context, - R.drawable.app_icon - ) - ) - .setIntent( - WebViewActivity.newInstance( - requireContext(), - panel.url_path - ).apply { - this.action = Intent.ACTION_VIEW - } - ) - .build() - val pinnedShortcutCallbackIntent = - shortcutManager.createShortcutResultIntent( - pinShortcutInfo - ) - val successCallback = - PendingIntent.getBroadcast( - context, - 0, - pinnedShortcutCallbackIntent, - 0 - ) - shortcutManager.requestPinShortcut( - pinShortcutInfo, - successCallback.intentSender - ) - } - } -} diff --git a/app/src/main/java/io/homeassistant/companion/android/settings/shortcuts/ShortcutsPresenter.kt b/app/src/main/java/io/homeassistant/companion/android/settings/shortcuts/ShortcutsPresenter.kt deleted file mode 100644 index eab047404..000000000 --- a/app/src/main/java/io/homeassistant/companion/android/settings/shortcuts/ShortcutsPresenter.kt +++ /dev/null @@ -1,7 +0,0 @@ -package io.homeassistant.companion.android.settings.shortcuts - -import io.homeassistant.companion.android.domain.integration.Panel - -interface ShortcutsPresenter { - fun getPanels(): Array -} diff --git a/app/src/main/java/io/homeassistant/companion/android/settings/shortcuts/ShortcutsPresenterImpl.kt b/app/src/main/java/io/homeassistant/companion/android/settings/shortcuts/ShortcutsPresenterImpl.kt deleted file mode 100644 index 1b52de46e..000000000 --- a/app/src/main/java/io/homeassistant/companion/android/settings/shortcuts/ShortcutsPresenterImpl.kt +++ /dev/null @@ -1,28 +0,0 @@ -package io.homeassistant.companion.android.settings.shortcuts - -import android.util.Log -import io.homeassistant.companion.android.domain.integration.IntegrationUseCase -import io.homeassistant.companion.android.domain.integration.Panel -import javax.inject.Inject -import kotlinx.coroutines.runBlocking - -class ShortcutsPresenterImpl @Inject constructor( - private val integrationUseCase: IntegrationUseCase -) : ShortcutsPresenter { - - companion object { - private const val TAG = "ShortcutsPresenter" - } - - override fun getPanels(): Array { - return runBlocking { - var panels = arrayOf() - try { - panels = integrationUseCase.getPanels() - } catch (e: Exception) { - Log.e(TAG, "Issue getting panels.", e) - } - panels - } - } -} diff --git a/app/src/main/java/io/homeassistant/companion/android/settings/shortcuts/ShortcutsRecyclerViewAdapter.kt b/app/src/main/java/io/homeassistant/companion/android/settings/shortcuts/ShortcutsRecyclerViewAdapter.kt deleted file mode 100644 index 7c2f55f92..000000000 --- a/app/src/main/java/io/homeassistant/companion/android/settings/shortcuts/ShortcutsRecyclerViewAdapter.kt +++ /dev/null @@ -1,44 +0,0 @@ -package io.homeassistant.companion.android.settings.shortcuts - -import android.content.Context -import android.view.LayoutInflater -import android.view.ViewGroup -import androidx.recyclerview.widget.RecyclerView -import io.homeassistant.companion.android.databinding.ItemShortcutBinding -import io.homeassistant.companion.android.domain.integration.Panel - -class ShortcutsRecyclerViewAdapter( - private val panels: List, - val context: Context, - private val onCreateShortcut: (Panel) -> Unit -) : - RecyclerView.Adapter() { - - override fun getItemCount(): Int { - return panels.size - } - - override fun onCreateViewHolder( - parent: ViewGroup, - viewType: Int - ): ShortcutBindingViewHolder { - val binding = - ItemShortcutBinding.inflate(LayoutInflater.from(parent.context), parent, false) - return ShortcutBindingViewHolder(binding) { onCreateShortcut(panels[it]) } - } - - override fun onBindViewHolder(holder: ShortcutBindingViewHolder, position: Int) { - val panel = panels[position] - val binding = ItemShortcutBinding.bind(holder.itemView) - binding.panelText.text = panel.title_localized - } - - class ShortcutBindingViewHolder( - binding: ItemShortcutBinding, - private val clickListener: (Int) -> Unit - ) : RecyclerView.ViewHolder(binding.root) { - init { - binding.actionAdd.setOnClickListener { clickListener(adapterPosition) } - } - } -} diff --git a/app/src/main/java/io/homeassistant/companion/android/settings/shortcuts/ShortcutsView.kt b/app/src/main/java/io/homeassistant/companion/android/settings/shortcuts/ShortcutsView.kt deleted file mode 100644 index 05df776fb..000000000 --- a/app/src/main/java/io/homeassistant/companion/android/settings/shortcuts/ShortcutsView.kt +++ /dev/null @@ -1,3 +0,0 @@ -package io.homeassistant.companion.android.settings.shortcuts - -interface ShortcutsView diff --git a/app/src/main/java/io/homeassistant/companion/android/themes/ThemesManager.kt b/app/src/main/java/io/homeassistant/companion/android/themes/ThemesManager.kt index b97c31892..5f249521a 100644 --- a/app/src/main/java/io/homeassistant/companion/android/themes/ThemesManager.kt +++ b/app/src/main/java/io/homeassistant/companion/android/themes/ThemesManager.kt @@ -7,12 +7,12 @@ import android.webkit.WebSettings import androidx.appcompat.app.AppCompatDelegate import androidx.webkit.WebSettingsCompat import androidx.webkit.WebViewFeature -import io.homeassistant.companion.android.domain.themes.ThemesUseCase +import io.homeassistant.companion.android.common.data.themes.ThemesRepository import javax.inject.Inject import kotlinx.coroutines.runBlocking class ThemesManager @Inject constructor( - private val themesUseCase: ThemesUseCase + private val themesUseCase: ThemesRepository ) { fun getCurrentTheme(): String { diff --git a/app/src/main/java/io/homeassistant/companion/android/webview/WebViewActivity.kt b/app/src/main/java/io/homeassistant/companion/android/webview/WebViewActivity.kt index f0318c052..3f40c8674 100644 --- a/app/src/main/java/io/homeassistant/companion/android/webview/WebViewActivity.kt +++ b/app/src/main/java/io/homeassistant/companion/android/webview/WebViewActivity.kt @@ -5,12 +5,9 @@ import android.app.PictureInPictureParams import android.content.Context import android.content.Intent import android.content.pm.PackageManager -import android.content.pm.ShortcutInfo -import android.content.pm.ShortcutManager import android.content.res.Configuration import android.graphics.Color import android.graphics.Rect -import android.graphics.drawable.Icon import android.net.Uri import android.net.http.SslError import android.os.Build @@ -344,7 +341,6 @@ class WebViewActivity : AppCompatActivity(), io.homeassistant.companion.android. .getString("event") == "connected" if (isConnected) { alertDialog?.cancel() - setupPanelShortcuts() } } "config/get" -> { @@ -843,30 +839,4 @@ class WebViewActivity : AppCompatActivity(), io.homeassistant.companion.android. } }, CONNECTION_DELAY) } - - private fun setupPanelShortcuts() { - if (Build.VERSION.SDK_INT >= 25) { - val panels = presenter.getPanels() - - val shortcutManager = getSystemService(ShortcutManager::class.java) - shortcutManager!!.dynamicShortcuts = panels - .filter { panel -> !panel.title.isNullOrEmpty() && panel.component_name.contains("lovelace") } - .take(5) - .map { panel -> - ShortcutInfo.Builder( - this, - panel.component_name - ) - .setShortLabel(panel.title!!) - .setLongLabel(panel.title!!) - .setIcon(Icon.createWithResource(this, R.drawable.app_icon)) - .setIntent( - newInstance(this, panel.url_path).apply { - this.action = Intent.ACTION_VIEW - } - ) - .build() - } - } - } } diff --git a/app/src/main/java/io/homeassistant/companion/android/webview/WebViewPresenter.kt b/app/src/main/java/io/homeassistant/companion/android/webview/WebViewPresenter.kt index eefbaffed..0c72ca76b 100644 --- a/app/src/main/java/io/homeassistant/companion/android/webview/WebViewPresenter.kt +++ b/app/src/main/java/io/homeassistant/companion/android/webview/WebViewPresenter.kt @@ -1,7 +1,5 @@ package io.homeassistant.companion.android.webview -import io.homeassistant.companion.android.domain.integration.Panel - interface WebViewPresenter { fun onViewReady(path: String?) @@ -10,8 +8,6 @@ interface WebViewPresenter { fun onRevokeExternalAuth(callback: String) - fun getPanels(): Array - fun clearKnownUrls() fun isFullScreen(): Boolean diff --git a/app/src/main/java/io/homeassistant/companion/android/webview/WebViewPresenterImpl.kt b/app/src/main/java/io/homeassistant/companion/android/webview/WebViewPresenterImpl.kt index 7f040fc36..787f4582f 100644 --- a/app/src/main/java/io/homeassistant/companion/android/webview/WebViewPresenterImpl.kt +++ b/app/src/main/java/io/homeassistant/companion/android/webview/WebViewPresenterImpl.kt @@ -3,11 +3,10 @@ package io.homeassistant.companion.android.webview import android.graphics.Color import android.net.Uri import android.util.Log -import io.homeassistant.companion.android.domain.authentication.AuthenticationUseCase -import io.homeassistant.companion.android.domain.authentication.SessionState -import io.homeassistant.companion.android.domain.integration.IntegrationUseCase -import io.homeassistant.companion.android.domain.integration.Panel -import io.homeassistant.companion.android.domain.url.UrlUseCase +import io.homeassistant.companion.android.common.data.authentication.AuthenticationRepository +import io.homeassistant.companion.android.common.data.authentication.SessionState +import io.homeassistant.companion.android.common.data.integration.IntegrationRepository +import io.homeassistant.companion.android.common.data.url.UrlRepository import io.homeassistant.companion.android.util.UrlHandler import java.net.URL import java.util.regex.Matcher @@ -22,9 +21,9 @@ import kotlinx.coroutines.runBlocking class WebViewPresenterImpl @Inject constructor( private val view: WebView, - private val urlUseCase: UrlUseCase, - private val authenticationUseCase: AuthenticationUseCase, - private val integrationUseCase: IntegrationUseCase + private val urlUseCase: UrlRepository, + private val authenticationUseCase: AuthenticationRepository, + private val integrationUseCase: IntegrationRepository ) : WebViewPresenter { companion object { @@ -105,18 +104,6 @@ class WebViewPresenterImpl @Inject constructor( } } - override fun getPanels(): Array { - return runBlocking { - var panels = arrayOf() - try { - panels = integrationUseCase.getPanels() - } catch (e: Exception) { - Log.e(TAG, "Issue getting panels.", e) - } - panels - } - } - override fun clearKnownUrls() { mainScope.launch { urlUseCase.saveUrl("", true) diff --git a/app/src/main/java/io/homeassistant/companion/android/widgets/ButtonWidget.kt b/app/src/main/java/io/homeassistant/companion/android/widgets/ButtonWidget.kt index efe5c0f02..a6f524008 100644 --- a/app/src/main/java/io/homeassistant/companion/android/widgets/ButtonWidget.kt +++ b/app/src/main/java/io/homeassistant/companion/android/widgets/ButtonWidget.kt @@ -19,10 +19,10 @@ import com.maltaisn.icondialog.pack.IconPackLoader import com.maltaisn.iconpack.mdi.createMaterialDesignIconPack import io.homeassistant.companion.android.R import io.homeassistant.companion.android.common.dagger.GraphComponentAccessor +import io.homeassistant.companion.android.common.data.integration.IntegrationRepository import io.homeassistant.companion.android.database.AppDatabase import io.homeassistant.companion.android.database.widget.ButtonWidgetDao import io.homeassistant.companion.android.database.widget.ButtonWidgetEntity -import io.homeassistant.companion.android.domain.integration.IntegrationUseCase import java.util.regex.Pattern import javax.inject.Inject import kotlinx.coroutines.CoroutineScope @@ -46,7 +46,7 @@ class ButtonWidget : AppWidgetProvider() { } @Inject - lateinit var integrationUseCase: IntegrationUseCase + lateinit var integrationUseCase: IntegrationRepository lateinit var buttonWidgetDao: ButtonWidgetDao diff --git a/app/src/main/java/io/homeassistant/companion/android/widgets/ButtonWidgetConfigureActivity.kt b/app/src/main/java/io/homeassistant/companion/android/widgets/ButtonWidgetConfigureActivity.kt index 52fb30543..d4cc80d73 100644 --- a/app/src/main/java/io/homeassistant/companion/android/widgets/ButtonWidgetConfigureActivity.kt +++ b/app/src/main/java/io/homeassistant/companion/android/widgets/ButtonWidgetConfigureActivity.kt @@ -27,9 +27,9 @@ import com.maltaisn.icondialog.pack.IconPackLoader import com.maltaisn.iconpack.mdi.createMaterialDesignIconPack import io.homeassistant.companion.android.R import io.homeassistant.companion.android.common.dagger.GraphComponentAccessor -import io.homeassistant.companion.android.domain.integration.Entity -import io.homeassistant.companion.android.domain.integration.IntegrationUseCase -import io.homeassistant.companion.android.domain.integration.Service +import io.homeassistant.companion.android.common.data.integration.Entity +import io.homeassistant.companion.android.common.data.integration.IntegrationRepository +import io.homeassistant.companion.android.common.data.integration.Service import javax.inject.Inject import kotlinx.android.synthetic.main.widget_button_configure.* import kotlinx.coroutines.CoroutineScope @@ -45,7 +45,7 @@ class ButtonWidgetConfigureActivity : AppCompatActivity(), IconDialog.Callback { } @Inject - lateinit var integrationUseCase: IntegrationUseCase + lateinit var integrationUseCase: IntegrationRepository private val ioScope: CoroutineScope = CoroutineScope(Dispatchers.IO) diff --git a/app/src/main/java/io/homeassistant/companion/android/widgets/StaticWidget.kt b/app/src/main/java/io/homeassistant/companion/android/widgets/StaticWidget.kt index 9c18a9dd2..20985612c 100644 --- a/app/src/main/java/io/homeassistant/companion/android/widgets/StaticWidget.kt +++ b/app/src/main/java/io/homeassistant/companion/android/widgets/StaticWidget.kt @@ -11,10 +11,10 @@ import android.util.TypedValue import android.widget.RemoteViews import io.homeassistant.companion.android.R import io.homeassistant.companion.android.common.dagger.GraphComponentAccessor +import io.homeassistant.companion.android.common.data.integration.IntegrationRepository import io.homeassistant.companion.android.database.AppDatabase import io.homeassistant.companion.android.database.widget.StaticWidgetDao import io.homeassistant.companion.android.database.widget.StaticWidgetEntity -import io.homeassistant.companion.android.domain.integration.IntegrationUseCase import javax.inject.Inject import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -39,7 +39,7 @@ class StaticWidget : AppWidgetProvider() { } @Inject - lateinit var integrationUseCase: IntegrationUseCase + lateinit var integrationUseCase: IntegrationRepository private lateinit var staticWidgetDao: StaticWidgetDao diff --git a/app/src/main/java/io/homeassistant/companion/android/widgets/StaticWidgetConfigureActivity.kt b/app/src/main/java/io/homeassistant/companion/android/widgets/StaticWidgetConfigureActivity.kt index c55433bf5..7e218836f 100644 --- a/app/src/main/java/io/homeassistant/companion/android/widgets/StaticWidgetConfigureActivity.kt +++ b/app/src/main/java/io/homeassistant/companion/android/widgets/StaticWidgetConfigureActivity.kt @@ -16,8 +16,8 @@ import android.widget.MultiAutoCompleteTextView.CommaTokenizer import android.widget.Toast import io.homeassistant.companion.android.R import io.homeassistant.companion.android.common.dagger.GraphComponentAccessor -import io.homeassistant.companion.android.domain.integration.Entity -import io.homeassistant.companion.android.domain.integration.IntegrationUseCase +import io.homeassistant.companion.android.common.data.integration.Entity +import io.homeassistant.companion.android.common.data.integration.IntegrationRepository import javax.inject.Inject import kotlinx.android.synthetic.main.widget_static_configure.* import kotlinx.coroutines.CoroutineScope @@ -31,7 +31,7 @@ class StaticWidgetConfigureActivity : Activity() { private val TAG: String = "StaticWidgetConfigAct" @Inject - lateinit var integrationUseCase: IntegrationUseCase + lateinit var integrationUseCase: IntegrationRepository private var entities = LinkedHashMap>() diff --git a/app/src/main/java/io/homeassistant/companion/android/widgets/WidgetDynamicFieldAdapter.kt b/app/src/main/java/io/homeassistant/companion/android/widgets/WidgetDynamicFieldAdapter.kt index 10dff361a..eb89bb378 100644 --- a/app/src/main/java/io/homeassistant/companion/android/widgets/WidgetDynamicFieldAdapter.kt +++ b/app/src/main/java/io/homeassistant/companion/android/widgets/WidgetDynamicFieldAdapter.kt @@ -8,8 +8,8 @@ import android.view.ViewGroup import android.widget.AutoCompleteTextView import android.widget.MultiAutoCompleteTextView.CommaTokenizer import androidx.recyclerview.widget.RecyclerView -import io.homeassistant.companion.android.domain.integration.Entity -import io.homeassistant.companion.android.domain.integration.Service +import io.homeassistant.companion.android.common.data.integration.Entity +import io.homeassistant.companion.android.common.data.integration.Service import java.lang.Exception import kotlinx.android.synthetic.main.widget_button_configure_dynamic_field.view.* diff --git a/app/src/main/java/io/homeassistant/companion/android/widgets/template/TemplateWidget.kt b/app/src/main/java/io/homeassistant/companion/android/widgets/template/TemplateWidget.kt index 244ae5ce3..0d956e274 100644 --- a/app/src/main/java/io/homeassistant/companion/android/widgets/template/TemplateWidget.kt +++ b/app/src/main/java/io/homeassistant/companion/android/widgets/template/TemplateWidget.kt @@ -10,10 +10,10 @@ import android.util.Log import android.widget.RemoteViews import io.homeassistant.companion.android.R import io.homeassistant.companion.android.common.dagger.GraphComponentAccessor +import io.homeassistant.companion.android.common.data.integration.IntegrationRepository import io.homeassistant.companion.android.database.AppDatabase import io.homeassistant.companion.android.database.widget.TemplateWidgetDao import io.homeassistant.companion.android.database.widget.TemplateWidgetEntity -import io.homeassistant.companion.android.domain.integration.IntegrationUseCase import io.homeassistant.companion.android.widgets.DaggerProviderComponent import javax.inject.Inject import kotlinx.coroutines.CoroutineScope @@ -33,7 +33,7 @@ class TemplateWidget : AppWidgetProvider() { } @Inject - lateinit var integrationUseCase: IntegrationUseCase + lateinit var integrationUseCase: IntegrationRepository private lateinit var templateWidgetDao: TemplateWidgetDao @@ -118,7 +118,7 @@ class TemplateWidget : AppWidgetProvider() { if (widget != null) { var renderedTemplate = "Loading" try { - renderedTemplate = integrationUseCase.renderTemplate(widget.template) + renderedTemplate = integrationUseCase.renderTemplate(widget.template, mapOf()) } catch (e: Exception) { Log.e(TAG, "Unable to render template: ${widget.template}", e) } diff --git a/app/src/main/java/io/homeassistant/companion/android/widgets/template/TemplateWidgetConfigureActivity.kt b/app/src/main/java/io/homeassistant/companion/android/widgets/template/TemplateWidgetConfigureActivity.kt index b009e44f6..34a12e277 100644 --- a/app/src/main/java/io/homeassistant/companion/android/widgets/template/TemplateWidgetConfigureActivity.kt +++ b/app/src/main/java/io/homeassistant/companion/android/widgets/template/TemplateWidgetConfigureActivity.kt @@ -8,7 +8,7 @@ import androidx.appcompat.app.AppCompatActivity import androidx.core.widget.doAfterTextChanged import io.homeassistant.companion.android.R import io.homeassistant.companion.android.common.dagger.GraphComponentAccessor -import io.homeassistant.companion.android.domain.integration.IntegrationUseCase +import io.homeassistant.companion.android.common.data.integration.IntegrationRepository import io.homeassistant.companion.android.widgets.DaggerProviderComponent import javax.inject.Inject import kotlinx.android.synthetic.main.widget_template_configure.* @@ -24,7 +24,7 @@ class TemplateWidgetConfigureActivity : AppCompatActivity() { } @Inject - lateinit var integrationUseCase: IntegrationUseCase + lateinit var integrationUseCase: IntegrationRepository private val ioScope: CoroutineScope = CoroutineScope(Dispatchers.IO) @@ -70,7 +70,7 @@ class TemplateWidgetConfigureActivity : AppCompatActivity() { var templateText: String? var enabled: Boolean try { - templateText = integrationUseCase.renderTemplate(editableText.toString()) + templateText = integrationUseCase.renderTemplate(editableText.toString(), mapOf()) enabled = true } catch (e: Exception) { templateText = "Error in template" diff --git a/app/src/minimal/java/io/homeassistant/companion/android/launch/LaunchPresenterImpl.kt b/app/src/minimal/java/io/homeassistant/companion/android/launch/LaunchPresenterImpl.kt index 416676542..691553b38 100644 --- a/app/src/minimal/java/io/homeassistant/companion/android/launch/LaunchPresenterImpl.kt +++ b/app/src/minimal/java/io/homeassistant/companion/android/launch/LaunchPresenterImpl.kt @@ -1,27 +1,25 @@ package io.homeassistant.companion.android.launch -import android.os.Build import android.util.Log import io.homeassistant.companion.android.BuildConfig -import io.homeassistant.companion.android.domain.authentication.AuthenticationUseCase -import io.homeassistant.companion.android.domain.integration.IntegrationUseCase +import io.homeassistant.companion.android.common.data.authentication.AuthenticationRepository +import io.homeassistant.companion.android.common.data.integration.DeviceRegistration +import io.homeassistant.companion.android.common.data.integration.IntegrationRepository import javax.inject.Inject import kotlinx.coroutines.launch class LaunchPresenterImpl @Inject constructor( view: LaunchView, - authenticationUseCase: AuthenticationUseCase, - integrationUseCase: IntegrationUseCase + authenticationUseCase: AuthenticationRepository, + integrationUseCase: IntegrationRepository ) : LaunchPresenterBase(view, authenticationUseCase, integrationUseCase) { override fun resyncRegistration() { mainScope.launch { try { integrationUseCase.updateRegistration( - "${BuildConfig.VERSION_NAME} (${BuildConfig.VERSION_CODE})", - null, - Build.MANUFACTURER ?: "UNKNOWN", - Build.MODEL ?: "UNKNOWN", - Build.VERSION.SDK_INT.toString() + DeviceRegistration( + "${BuildConfig.VERSION_NAME} (${BuildConfig.VERSION_CODE})" + ) ) } catch (e: Exception) { Log.e(TAG, "Issue updating Registration", e) diff --git a/app/src/minimal/java/io/homeassistant/companion/android/onboarding/integration/MobileAppIntegrationPresenterImpl.kt b/app/src/minimal/java/io/homeassistant/companion/android/onboarding/integration/MobileAppIntegrationPresenterImpl.kt index 650b0b4e1..5d04d0023 100644 --- a/app/src/minimal/java/io/homeassistant/companion/android/onboarding/integration/MobileAppIntegrationPresenterImpl.kt +++ b/app/src/minimal/java/io/homeassistant/companion/android/onboarding/integration/MobileAppIntegrationPresenterImpl.kt @@ -1,9 +1,9 @@ package io.homeassistant.companion.android.onboarding.integration -import io.homeassistant.companion.android.domain.integration.IntegrationUseCase +import io.homeassistant.companion.android.common.data.integration.IntegrationRepository import javax.inject.Inject class MobileAppIntegrationPresenterImpl @Inject constructor( view: MobileAppIntegrationView, - integrationUseCase: IntegrationUseCase + integrationUseCase: IntegrationRepository ) : MobileAppIntegrationPresenterBase(view, integrationUseCase) diff --git a/app/src/test/java/io/homeassistant/companion/android/launch/LaunchPresenterImplSpec.kt b/app/src/test/java/io/homeassistant/companion/android/launch/LaunchPresenterImplSpec.kt index e23fe44ca..01af30cfe 100644 --- a/app/src/test/java/io/homeassistant/companion/android/launch/LaunchPresenterImplSpec.kt +++ b/app/src/test/java/io/homeassistant/companion/android/launch/LaunchPresenterImplSpec.kt @@ -1,8 +1,8 @@ package io.homeassistant.companion.android.launch -import io.homeassistant.companion.android.domain.authentication.AuthenticationUseCase -import io.homeassistant.companion.android.domain.authentication.SessionState -import io.homeassistant.companion.android.domain.integration.IntegrationUseCase +import io.homeassistant.companion.android.common.data.authentication.AuthenticationRepository +import io.homeassistant.companion.android.common.data.authentication.SessionState +import io.homeassistant.companion.android.common.data.integration.IntegrationRepository import io.mockk.coEvery import io.mockk.mockk import io.mockk.verify @@ -23,8 +23,8 @@ object LaunchPresenterImplSpec : Spek({ } describe("launch presenter") { - val authenticationUseCase by memoized { mockk() } - val integrationUseCase by memoized { mockk() } + val authenticationUseCase by memoized { mockk() } + val integrationUseCase by memoized { mockk() } val view by memoized { mockk(relaxUnitFun = true) } val presenter by memoized { LaunchPresenterImpl(view, authenticationUseCase, integrationUseCase) } diff --git a/app/src/test/java/io/homeassistant/companion/android/onboarding/authentication/AuthenticationPresenterImplSpec.kt b/app/src/test/java/io/homeassistant/companion/android/onboarding/authentication/AuthenticationPresenterImplSpec.kt index 5704c0af8..a8def5144 100644 --- a/app/src/test/java/io/homeassistant/companion/android/onboarding/authentication/AuthenticationPresenterImplSpec.kt +++ b/app/src/test/java/io/homeassistant/companion/android/onboarding/authentication/AuthenticationPresenterImplSpec.kt @@ -1,7 +1,7 @@ package io.homeassistant.companion.android.onboarding.authentication import android.net.Uri -import io.homeassistant.companion.android.domain.authentication.AuthenticationUseCase +import io.homeassistant.companion.android.common.data.authentication.AuthenticationRepository import io.mockk.Called import io.mockk.coEvery import io.mockk.coVerify @@ -28,7 +28,7 @@ object AuthenticationPresenterImplSpec : Spek({ } describe("authentication presenter") { - val authenticationUseCase by memoized { mockk(relaxUnitFun = true) } + val authenticationUseCase by memoized { mockk(relaxUnitFun = true) } val view by memoized { mockk(relaxUnitFun = true) } val presenter by memoized { AuthenticationPresenterImpl(view, authenticationUseCase) } diff --git a/app/src/test/java/io/homeassistant/companion/android/onboarding/integration/MobileAppIntegrationPresenterImplSpec.kt b/app/src/test/java/io/homeassistant/companion/android/onboarding/integration/MobileAppIntegrationPresenterImplSpec.kt index 5e2d7cf75..f4102bcec 100644 --- a/app/src/test/java/io/homeassistant/companion/android/onboarding/integration/MobileAppIntegrationPresenterImplSpec.kt +++ b/app/src/test/java/io/homeassistant/companion/android/onboarding/integration/MobileAppIntegrationPresenterImplSpec.kt @@ -2,8 +2,8 @@ package io.homeassistant.companion.android.onboarding.integration import android.os.Build import io.homeassistant.companion.android.BuildConfig -import io.homeassistant.companion.android.domain.integration.DeviceRegistration -import io.homeassistant.companion.android.domain.integration.IntegrationUseCase +import io.homeassistant.companion.android.common.data.integration.DeviceRegistration +import io.homeassistant.companion.android.common.data.integration.IntegrationRepository import io.mockk.coEvery import io.mockk.coVerify import io.mockk.coVerifyAll @@ -27,7 +27,7 @@ object MobileAppIntegrationPresenterImplSpec : Spek({ } describe("presenter") { - val integrationUseCase by memoized { mockk(relaxUnitFun = true) } + val integrationUseCase by memoized { mockk(relaxUnitFun = true) } val view by memoized { mockk(relaxUnitFun = true) } val presenter by memoized { MobileAppIntegrationPresenterBase(view, integrationUseCase) } diff --git a/app/src/test/java/io/homeassistant/companion/android/onboarding/manual/ManualSetupPresenterImplSpec.kt b/app/src/test/java/io/homeassistant/companion/android/onboarding/manual/ManualSetupPresenterImplSpec.kt index 283027221..ea46f8258 100644 --- a/app/src/test/java/io/homeassistant/companion/android/onboarding/manual/ManualSetupPresenterImplSpec.kt +++ b/app/src/test/java/io/homeassistant/companion/android/onboarding/manual/ManualSetupPresenterImplSpec.kt @@ -1,7 +1,7 @@ package io.homeassistant.companion.android.onboarding.manual -import io.homeassistant.companion.android.domain.MalformedHttpUrlException -import io.homeassistant.companion.android.domain.url.UrlUseCase +import io.homeassistant.companion.android.common.data.MalformedHttpUrlException +import io.homeassistant.companion.android.common.data.url.UrlRepository import io.mockk.coEvery import io.mockk.coVerifyAll import io.mockk.just @@ -25,7 +25,7 @@ object ManualSetupPresenterImplSpec : Spek({ } describe("presenter") { - val urlUseCase by memoized { mockk(relaxUnitFun = true) } + val urlUseCase by memoized { mockk(relaxUnitFun = true) } val view by memoized { mockk(relaxUnitFun = true) } val presenter by memoized { ManualSetupPresenterImpl(view, urlUseCase) } diff --git a/app/src/test/java/io/homeassistant/companion/android/webview/WebViewPresenterImplSpec.kt b/app/src/test/java/io/homeassistant/companion/android/webview/WebViewPresenterImplSpec.kt index d1e0afb73..14e67a6ff 100644 --- a/app/src/test/java/io/homeassistant/companion/android/webview/WebViewPresenterImplSpec.kt +++ b/app/src/test/java/io/homeassistant/companion/android/webview/WebViewPresenterImplSpec.kt @@ -1,10 +1,10 @@ package io.homeassistant.companion.android.webview import android.net.Uri -import io.homeassistant.companion.android.domain.authentication.AuthenticationUseCase -import io.homeassistant.companion.android.domain.integration.IntegrationUseCase -import io.homeassistant.companion.android.domain.themes.ThemesUseCase -import io.homeassistant.companion.android.domain.url.UrlUseCase +import io.homeassistant.companion.android.common.data.authentication.AuthenticationRepository +import io.homeassistant.companion.android.common.data.integration.IntegrationRepository +import io.homeassistant.companion.android.common.data.themes.ThemesRepository +import io.homeassistant.companion.android.common.data.url.UrlRepository import io.mockk.coEvery import io.mockk.every import io.mockk.just @@ -31,10 +31,10 @@ object WebViewPresenterImplSpec : Spek({ } describe("presenter") { - val urlUseCase by memoized { mockk(relaxUnitFun = true) } - val authenticationUseCase by memoized { mockk(relaxUnitFun = true) } - val integrationUseCase by memoized { mockk(relaxUnitFun = true) } - val themesUseCase by memoized { mockk(relaxUnitFun = true) } + val urlUseCase by memoized { mockk(relaxUnitFun = true) } + val authenticationUseCase by memoized { mockk(relaxUnitFun = true) } + val integrationUseCase by memoized { mockk(relaxUnitFun = true) } + val themesUseCase by memoized { mockk(relaxUnitFun = true) } val view by memoized { mockk(relaxUnitFun = true) } val presenter by memoized { WebViewPresenterImpl(view, urlUseCase, authenticationUseCase, integrationUseCase) } @@ -58,7 +58,7 @@ object WebViewPresenterImplSpec : Spek({ describe("on get external auth on success") { beforeEachTest { - coEvery { authenticationUseCase.retrieveExternalAuthentication() } returns "{\"access_token\":\"ABCDEFGH\",\"expires_in\":1800}" + coEvery { authenticationUseCase.retrieveExternalAuthentication(false) } returns "{\"access_token\":\"ABCDEFGH\",\"expires_in\":1800}" presenter.onGetExternalAuth("externalAuthSetToken", false) } @@ -69,7 +69,7 @@ object WebViewPresenterImplSpec : Spek({ describe("on get external auth on error") { beforeEachTest { - coEvery { authenticationUseCase.retrieveExternalAuthentication() } throws Exception() + coEvery { authenticationUseCase.retrieveExternalAuthentication(false) } throws Exception() presenter.onGetExternalAuth("externalAuthSetToken", false) } diff --git a/build.gradle.kts b/build.gradle.kts index 963bf01a6..923a253ef 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -23,7 +23,6 @@ allprojects { repositories { google() jcenter() - maven(url = Config.Repository.lokalize) } apply(plugin = "org.jlleitschuh.gradle.ktlint") diff --git a/common/build.gradle.kts b/common/build.gradle.kts index 19bed79b0..f90a914c5 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -13,9 +13,6 @@ android { } dependencies { - implementation(project(":domain")) - implementation(project(":data")) - implementation(Config.Dependency.Kotlin.core) implementation(Config.Dependency.Kotlin.coroutines) @@ -23,4 +20,14 @@ dependencies { kapt(Config.Dependency.Google.daggerCompiler) implementation(Config.Dependency.Square.retrofit) + implementation(Config.Dependency.Square.retrofitJacksonConverter) + implementation(Config.Dependency.Square.okhttp) + implementation(Config.Dependency.Square.okhttpInterceptor) + implementation(Config.Dependency.Misc.jackson) + + testImplementation(Config.Dependency.Square.okhttpMockServer) + testImplementation(Config.Dependency.Testing.spek2Jvm) + testRuntimeOnly(Config.Dependency.Testing.spek2JUnit) + testImplementation(Config.Dependency.Testing.assertJ) + testImplementation(Config.Dependency.Testing.mockk) } diff --git a/common/src/main/java/io/homeassistant/companion/android/common/LocalStorageImpl.kt b/common/src/main/java/io/homeassistant/companion/android/common/LocalStorageImpl.kt index 55cf4cb74..e02ad8535 100644 --- a/common/src/main/java/io/homeassistant/companion/android/common/LocalStorageImpl.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/LocalStorageImpl.kt @@ -1,7 +1,7 @@ package io.homeassistant.companion.android.common import android.content.SharedPreferences -import io.homeassistant.companion.android.data.LocalStorage +import io.homeassistant.companion.android.common.data.LocalStorage class LocalStorageImpl(private val sharedPreferences: SharedPreferences) : LocalStorage { diff --git a/common/src/main/java/io/homeassistant/companion/android/common/dagger/AppComponent.kt b/common/src/main/java/io/homeassistant/companion/android/common/dagger/AppComponent.kt index 098d9e43e..c2fc2ce30 100644 --- a/common/src/main/java/io/homeassistant/companion/android/common/dagger/AppComponent.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/dagger/AppComponent.kt @@ -1,19 +1,19 @@ package io.homeassistant.companion.android.common.dagger import dagger.Component -import io.homeassistant.companion.android.domain.authentication.AuthenticationUseCase -import io.homeassistant.companion.android.domain.integration.IntegrationUseCase -import io.homeassistant.companion.android.domain.themes.ThemesUseCase -import io.homeassistant.companion.android.domain.url.UrlUseCase +import io.homeassistant.companion.android.common.data.authentication.AuthenticationRepository +import io.homeassistant.companion.android.common.data.integration.IntegrationRepository +import io.homeassistant.companion.android.common.data.themes.ThemesRepository +import io.homeassistant.companion.android.common.data.url.UrlRepository -@Component(dependencies = [DomainComponent::class]) +@Component(modules = [DataModule::class]) interface AppComponent { - fun urlUseCase(): UrlUseCase + fun urlUseCase(): UrlRepository - fun authenticationUseCase(): AuthenticationUseCase + fun authenticationUseCase(): AuthenticationRepository - fun integrationUseCase(): IntegrationUseCase + fun integrationUseCase(): IntegrationRepository - fun themesUseCase(): ThemesUseCase + fun themesUseCase(): ThemesRepository } diff --git a/common/src/main/java/io/homeassistant/companion/android/common/dagger/DataComponent.kt b/common/src/main/java/io/homeassistant/companion/android/common/dagger/DataComponent.kt index 5068c26d1..1e449f7da 100644 --- a/common/src/main/java/io/homeassistant/companion/android/common/dagger/DataComponent.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/dagger/DataComponent.kt @@ -1,10 +1,10 @@ package io.homeassistant.companion.android.common.dagger import dagger.Component -import io.homeassistant.companion.android.domain.authentication.AuthenticationRepository -import io.homeassistant.companion.android.domain.integration.IntegrationRepository -import io.homeassistant.companion.android.domain.themes.ThemesRepository -import io.homeassistant.companion.android.domain.url.UrlRepository +import io.homeassistant.companion.android.common.data.authentication.AuthenticationRepository +import io.homeassistant.companion.android.common.data.integration.IntegrationRepository +import io.homeassistant.companion.android.common.data.themes.ThemesRepository +import io.homeassistant.companion.android.common.data.url.UrlRepository @Component(modules = [DataModule::class]) interface DataComponent { diff --git a/common/src/main/java/io/homeassistant/companion/android/common/dagger/DataModule.kt b/common/src/main/java/io/homeassistant/companion/android/common/dagger/DataModule.kt index adf0c4f14..3ec5ef43c 100644 --- a/common/src/main/java/io/homeassistant/companion/android/common/dagger/DataModule.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/dagger/DataModule.kt @@ -4,19 +4,19 @@ import android.os.Build import dagger.Binds import dagger.Module import dagger.Provides -import io.homeassistant.companion.android.data.HomeAssistantRetrofit -import io.homeassistant.companion.android.data.LocalStorage -import io.homeassistant.companion.android.data.authentication.AuthenticationRepositoryImpl -import io.homeassistant.companion.android.data.authentication.AuthenticationService -import io.homeassistant.companion.android.data.integration.IntegrationRepositoryImpl -import io.homeassistant.companion.android.data.integration.IntegrationService -import io.homeassistant.companion.android.data.themes.ThemesRepositoryImpl -import io.homeassistant.companion.android.data.url.UrlRepositoryImpl -import io.homeassistant.companion.android.data.wifi.WifiHelper -import io.homeassistant.companion.android.domain.authentication.AuthenticationRepository -import io.homeassistant.companion.android.domain.integration.IntegrationRepository -import io.homeassistant.companion.android.domain.themes.ThemesRepository -import io.homeassistant.companion.android.domain.url.UrlRepository +import io.homeassistant.companion.android.common.data.HomeAssistantRetrofit +import io.homeassistant.companion.android.common.data.LocalStorage +import io.homeassistant.companion.android.common.data.authentication.AuthenticationRepository +import io.homeassistant.companion.android.common.data.authentication.impl.AuthenticationRepositoryImpl +import io.homeassistant.companion.android.common.data.authentication.impl.AuthenticationService +import io.homeassistant.companion.android.common.data.integration.IntegrationRepository +import io.homeassistant.companion.android.common.data.integration.impl.IntegrationRepositoryImpl +import io.homeassistant.companion.android.common.data.integration.impl.IntegrationService +import io.homeassistant.companion.android.common.data.themes.ThemesRepository +import io.homeassistant.companion.android.common.data.themes.ThemesRepositoryImpl +import io.homeassistant.companion.android.common.data.url.UrlRepository +import io.homeassistant.companion.android.common.data.url.UrlRepositoryImpl +import io.homeassistant.companion.android.common.data.wifi.WifiHelper import javax.inject.Named @Module(includes = [DataModule.Declaration::class]) diff --git a/common/src/main/java/io/homeassistant/companion/android/common/dagger/DomainComponent.kt b/common/src/main/java/io/homeassistant/companion/android/common/dagger/DomainComponent.kt deleted file mode 100644 index dd3812e50..000000000 --- a/common/src/main/java/io/homeassistant/companion/android/common/dagger/DomainComponent.kt +++ /dev/null @@ -1,19 +0,0 @@ -package io.homeassistant.companion.android.common.dagger - -import dagger.Component -import io.homeassistant.companion.android.domain.authentication.AuthenticationUseCase -import io.homeassistant.companion.android.domain.integration.IntegrationUseCase -import io.homeassistant.companion.android.domain.themes.ThemesUseCase -import io.homeassistant.companion.android.domain.url.UrlUseCase - -@Component(dependencies = [DataComponent::class], modules = [DomainModule::class]) -interface DomainComponent { - - fun urlUseCase(): UrlUseCase - - fun authenticationUseCase(): AuthenticationUseCase - - fun integrationUseCase(): IntegrationUseCase - - fun themesUseCase(): ThemesUseCase -} diff --git a/common/src/main/java/io/homeassistant/companion/android/common/dagger/DomainModule.kt b/common/src/main/java/io/homeassistant/companion/android/common/dagger/DomainModule.kt deleted file mode 100644 index 951f861ad..000000000 --- a/common/src/main/java/io/homeassistant/companion/android/common/dagger/DomainModule.kt +++ /dev/null @@ -1,28 +0,0 @@ -package io.homeassistant.companion.android.common.dagger - -import dagger.Binds -import dagger.Module -import io.homeassistant.companion.android.domain.authentication.AuthenticationUseCase -import io.homeassistant.companion.android.domain.authentication.AuthenticationUseCaseImpl -import io.homeassistant.companion.android.domain.integration.IntegrationUseCase -import io.homeassistant.companion.android.domain.integration.IntegrationUseCaseImpl -import io.homeassistant.companion.android.domain.themes.ThemesUseCase -import io.homeassistant.companion.android.domain.themes.ThemesUseCaseImpl -import io.homeassistant.companion.android.domain.url.UrlUseCase -import io.homeassistant.companion.android.domain.url.UrlUseCaseImpl - -@Module -interface DomainModule { - - @Binds - fun bindUrlUseCase(useCaseImpl: UrlUseCaseImpl): UrlUseCase - - @Binds - fun bindAuthenticationUseCase(useCaseImpl: AuthenticationUseCaseImpl): AuthenticationUseCase - - @Binds - fun bindIntegrationUseCase(useCaseImpl: IntegrationUseCaseImpl): IntegrationUseCase - - @Binds - fun bindThemesUseCase(useCaseImpl: ThemesUseCaseImpl): ThemesUseCase -} diff --git a/common/src/main/java/io/homeassistant/companion/android/common/dagger/DomainScope.kt b/common/src/main/java/io/homeassistant/companion/android/common/dagger/DomainScope.kt deleted file mode 100644 index 05eef5a1e..000000000 --- a/common/src/main/java/io/homeassistant/companion/android/common/dagger/DomainScope.kt +++ /dev/null @@ -1,7 +0,0 @@ -package io.homeassistant.companion.android.common.dagger - -import javax.inject.Scope - -@Scope -@Retention(AnnotationRetention.RUNTIME) -annotation class DomainScope diff --git a/common/src/main/java/io/homeassistant/companion/android/common/dagger/Graph.kt b/common/src/main/java/io/homeassistant/companion/android/common/dagger/Graph.kt index b4e366af9..d2a88fcc2 100644 --- a/common/src/main/java/io/homeassistant/companion/android/common/dagger/Graph.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/dagger/Graph.kt @@ -6,7 +6,7 @@ import android.content.Context import android.net.wifi.WifiManager import android.provider.Settings import io.homeassistant.companion.android.common.LocalStorageImpl -import io.homeassistant.companion.android.common.wifi.WifiHelperImpl +import io.homeassistant.companion.android.common.data.wifi.WifiHelperImpl class Graph( private val application: Application, @@ -14,8 +14,6 @@ class Graph( ) { lateinit var appComponent: AppComponent - private lateinit var dataComponent: DataComponent - private lateinit var domainComponent: DomainComponent init { buildComponent() @@ -23,8 +21,7 @@ class Graph( @SuppressLint("HardwareIds") private fun buildComponent() { - dataComponent = DaggerDataComponent - .builder() + appComponent = DaggerAppComponent.builder() .dataModule( DataModule( LocalStorageImpl( @@ -52,18 +49,12 @@ class Graph( ) ), WifiHelperImpl(application.getSystemService(Context.WIFI_SERVICE) as WifiManager), - Settings.Secure.getString(application.contentResolver, Settings.Secure.ANDROID_ID) + Settings.Secure.getString( + application.contentResolver, + Settings.Secure.ANDROID_ID + ) ) ) .build() - - domainComponent = DaggerDomainComponent - .builder() - .dataComponent(dataComponent) - .build() - - appComponent = DaggerAppComponent.builder() - .domainComponent(domainComponent) - .build() } } diff --git a/data/src/main/java/io/homeassistant/companion/android/data/HomeAssistantRetrofit.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/HomeAssistantRetrofit.kt similarity index 94% rename from data/src/main/java/io/homeassistant/companion/android/data/HomeAssistantRetrofit.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/HomeAssistantRetrofit.kt index 17e21b1e3..52d14a469 100644 --- a/data/src/main/java/io/homeassistant/companion/android/data/HomeAssistantRetrofit.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/HomeAssistantRetrofit.kt @@ -1,10 +1,10 @@ -package io.homeassistant.companion.android.data +package io.homeassistant.companion.android.common.data import com.fasterxml.jackson.databind.DeserializationFeature import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.PropertyNamingStrategy import com.fasterxml.jackson.module.kotlin.registerKotlinModule -import io.homeassistant.companion.android.domain.url.UrlRepository +import io.homeassistant.companion.android.common.data.url.UrlRepository import java.util.concurrent.TimeUnit import javax.inject.Inject import kotlinx.coroutines.runBlocking diff --git a/data/src/main/java/io/homeassistant/companion/android/data/LocalStorage.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/LocalStorage.kt similarity index 91% rename from data/src/main/java/io/homeassistant/companion/android/data/LocalStorage.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/LocalStorage.kt index 26ed2a20b..dfbe2e524 100644 --- a/data/src/main/java/io/homeassistant/companion/android/data/LocalStorage.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/LocalStorage.kt @@ -1,4 +1,4 @@ -package io.homeassistant.companion.android.data +package io.homeassistant.companion.android.common.data interface LocalStorage { diff --git a/domain/src/main/java/io/homeassistant/companion/android/domain/MalformedHttpUrlException.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/MalformedHttpUrlException.kt similarity index 76% rename from domain/src/main/java/io/homeassistant/companion/android/domain/MalformedHttpUrlException.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/MalformedHttpUrlException.kt index 7ae990944..cb47526bf 100644 --- a/domain/src/main/java/io/homeassistant/companion/android/domain/MalformedHttpUrlException.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/MalformedHttpUrlException.kt @@ -1,4 +1,4 @@ -package io.homeassistant.companion.android.domain +package io.homeassistant.companion.android.common.data import java.net.MalformedURLException diff --git a/domain/src/main/java/io/homeassistant/companion/android/domain/authentication/AuthenticationRepository.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/authentication/AuthenticationRepository.kt similarity index 87% rename from domain/src/main/java/io/homeassistant/companion/android/domain/authentication/AuthenticationRepository.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/authentication/AuthenticationRepository.kt index 292d17ce9..b52243184 100644 --- a/domain/src/main/java/io/homeassistant/companion/android/domain/authentication/AuthenticationRepository.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/authentication/AuthenticationRepository.kt @@ -1,4 +1,4 @@ -package io.homeassistant.companion.android.domain.authentication +package io.homeassistant.companion.android.common.data.authentication import java.net.URL diff --git a/common/src/main/java/io/homeassistant/companion/android/common/data/authentication/AuthorizationException.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/authentication/AuthorizationException.kt new file mode 100644 index 000000000..497965b18 --- /dev/null +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/authentication/AuthorizationException.kt @@ -0,0 +1,3 @@ +package io.homeassistant.companion.android.common.data.authentication + +class AuthorizationException : Exception() diff --git a/common/src/main/java/io/homeassistant/companion/android/common/data/authentication/SessionState.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/authentication/SessionState.kt new file mode 100644 index 000000000..48e8cabec --- /dev/null +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/authentication/SessionState.kt @@ -0,0 +1,6 @@ +package io.homeassistant.companion.android.common.data.authentication + +enum class SessionState { + ANONYMOUS, + CONNECTED, +} diff --git a/data/src/main/java/io/homeassistant/companion/android/data/authentication/AuthenticationRepositoryImpl.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/authentication/impl/AuthenticationRepositoryImpl.kt similarity index 89% rename from data/src/main/java/io/homeassistant/companion/android/data/authentication/AuthenticationRepositoryImpl.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/authentication/impl/AuthenticationRepositoryImpl.kt index cf6ba3e4d..096bc19ac 100644 --- a/data/src/main/java/io/homeassistant/companion/android/data/authentication/AuthenticationRepositoryImpl.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/authentication/impl/AuthenticationRepositoryImpl.kt @@ -1,15 +1,15 @@ -package io.homeassistant.companion.android.data.authentication +package io.homeassistant.companion.android.common.data.authentication.impl import com.fasterxml.jackson.databind.ObjectMapper -import io.homeassistant.companion.android.data.LocalStorage -import io.homeassistant.companion.android.domain.authentication.AuthenticationRepository -import io.homeassistant.companion.android.domain.authentication.SessionState -import io.homeassistant.companion.android.domain.url.UrlRepository +import io.homeassistant.companion.android.common.data.LocalStorage +import io.homeassistant.companion.android.common.data.authentication.AuthenticationRepository +import io.homeassistant.companion.android.common.data.authentication.AuthorizationException +import io.homeassistant.companion.android.common.data.authentication.SessionState +import io.homeassistant.companion.android.common.data.url.UrlRepository import java.net.URL import javax.inject.Inject import javax.inject.Named import okhttp3.HttpUrl.Companion.toHttpUrlOrNull -import org.threeten.bp.Instant class AuthenticationRepositoryImpl @Inject constructor( private val authenticationService: AuthenticationService, @@ -35,7 +35,7 @@ class AuthenticationRepositoryImpl @Inject constructor( saveSession( Session( it.accessToken, - Instant.now().epochSecond + it.expiresIn, + System.currentTimeMillis() / 1000 + it.expiresIn, it.refreshToken!!, it.tokenType ) @@ -116,7 +116,7 @@ class AuthenticationRepositoryImpl @Inject constructor( val refreshedToken = it.body() ?: throw AuthorizationException() val refreshSession = Session( refreshedToken.accessToken, - Instant.now().epochSecond + refreshedToken.expiresIn, + System.currentTimeMillis() / 1000 + refreshedToken.expiresIn, session.refreshToken, refreshedToken.tokenType ) diff --git a/data/src/main/java/io/homeassistant/companion/android/data/authentication/AuthenticationService.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/authentication/impl/AuthenticationService.kt similarity index 86% rename from data/src/main/java/io/homeassistant/companion/android/data/authentication/AuthenticationService.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/authentication/impl/AuthenticationService.kt index 64c5971d2..9c306db2c 100644 --- a/data/src/main/java/io/homeassistant/companion/android/data/authentication/AuthenticationService.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/authentication/impl/AuthenticationService.kt @@ -1,5 +1,6 @@ -package io.homeassistant.companion.android.data.authentication +package io.homeassistant.companion.android.common.data.authentication.impl +import io.homeassistant.companion.android.common.data.authentication.impl.entities.Token import retrofit2.Response import retrofit2.http.Field import retrofit2.http.FormUrlEncoded diff --git a/data/src/main/java/io/homeassistant/companion/android/data/authentication/Session.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/authentication/impl/Session.kt similarity index 53% rename from data/src/main/java/io/homeassistant/companion/android/data/authentication/Session.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/authentication/impl/Session.kt index 075708faf..911daca7e 100644 --- a/data/src/main/java/io/homeassistant/companion/android/data/authentication/Session.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/authentication/impl/Session.kt @@ -1,6 +1,4 @@ -package io.homeassistant.companion.android.data.authentication - -import org.threeten.bp.Instant +package io.homeassistant.companion.android.common.data.authentication.impl data class Session( val accessToken: String, @@ -11,5 +9,5 @@ data class Session( fun isExpired() = expiresIn() < 0 - fun expiresIn() = expiresTimestamp - Instant.now().epochSecond + fun expiresIn() = expiresTimestamp - System.currentTimeMillis() / 1000 } diff --git a/data/src/main/java/io/homeassistant/companion/android/data/authentication/Token.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/authentication/impl/entities/Token.kt similarity index 79% rename from data/src/main/java/io/homeassistant/companion/android/data/authentication/Token.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/authentication/impl/entities/Token.kt index e366538f7..da8d3f199 100644 --- a/data/src/main/java/io/homeassistant/companion/android/data/authentication/Token.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/authentication/impl/entities/Token.kt @@ -1,4 +1,4 @@ -package io.homeassistant.companion.android.data.authentication +package io.homeassistant.companion.android.common.data.authentication.impl.entities import com.fasterxml.jackson.annotation.JsonProperty diff --git a/domain/src/main/java/io/homeassistant/companion/android/domain/integration/DeviceRegistration.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/DeviceRegistration.kt similarity index 67% rename from domain/src/main/java/io/homeassistant/companion/android/domain/integration/DeviceRegistration.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/integration/DeviceRegistration.kt index c3077f87c..6ba5d9658 100644 --- a/domain/src/main/java/io/homeassistant/companion/android/domain/integration/DeviceRegistration.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/DeviceRegistration.kt @@ -1,4 +1,4 @@ -package io.homeassistant.companion.android.domain.integration +package io.homeassistant.companion.android.common.data.integration data class DeviceRegistration( val appVersion: String? = null, diff --git a/domain/src/main/java/io/homeassistant/companion/android/domain/integration/Entity.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/Entity.kt similarity index 76% rename from domain/src/main/java/io/homeassistant/companion/android/domain/integration/Entity.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/integration/Entity.kt index fadc1bd07..ac42acf44 100644 --- a/domain/src/main/java/io/homeassistant/companion/android/domain/integration/Entity.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/Entity.kt @@ -1,4 +1,4 @@ -package io.homeassistant.companion.android.domain.integration +package io.homeassistant.companion.android.common.data.integration import java.util.Calendar diff --git a/common/src/main/java/io/homeassistant/companion/android/common/data/integration/IntegrationException.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/IntegrationException.kt new file mode 100644 index 000000000..194518979 --- /dev/null +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/IntegrationException.kt @@ -0,0 +1,3 @@ +package io.homeassistant.companion.android.common.data.integration + +class IntegrationException : Exception() diff --git a/domain/src/main/java/io/homeassistant/companion/android/domain/integration/IntegrationRepository.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/IntegrationRepository.kt similarity index 95% rename from domain/src/main/java/io/homeassistant/companion/android/domain/integration/IntegrationRepository.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/integration/IntegrationRepository.kt index 3b563e289..9f7c46741 100644 --- a/domain/src/main/java/io/homeassistant/companion/android/domain/integration/IntegrationRepository.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/IntegrationRepository.kt @@ -1,4 +1,4 @@ -package io.homeassistant.companion.android.domain.integration +package io.homeassistant.companion.android.common.data.integration interface IntegrationRepository { diff --git a/domain/src/main/java/io/homeassistant/companion/android/domain/integration/Panel.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/Panel.kt similarity index 74% rename from domain/src/main/java/io/homeassistant/companion/android/domain/integration/Panel.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/integration/Panel.kt index 1d6ac9308..586f38375 100644 --- a/domain/src/main/java/io/homeassistant/companion/android/domain/integration/Panel.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/Panel.kt @@ -1,4 +1,4 @@ -package io.homeassistant.companion.android.domain.integration +package io.homeassistant.companion.android.common.data.integration data class Panel( val component_name: String, diff --git a/domain/src/main/java/io/homeassistant/companion/android/domain/integration/SensorRegistration.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/SensorRegistration.kt similarity index 79% rename from domain/src/main/java/io/homeassistant/companion/android/domain/integration/SensorRegistration.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/integration/SensorRegistration.kt index e6a069656..33e25e10e 100644 --- a/domain/src/main/java/io/homeassistant/companion/android/domain/integration/SensorRegistration.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/SensorRegistration.kt @@ -1,4 +1,4 @@ -package io.homeassistant.companion.android.domain.integration +package io.homeassistant.companion.android.common.data.integration data class SensorRegistration( val uniqueId: String, diff --git a/domain/src/main/java/io/homeassistant/companion/android/domain/integration/Service.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/Service.kt similarity index 61% rename from domain/src/main/java/io/homeassistant/companion/android/domain/integration/Service.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/integration/Service.kt index 19b420092..35c1f9f0c 100644 --- a/domain/src/main/java/io/homeassistant/companion/android/domain/integration/Service.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/Service.kt @@ -1,4 +1,4 @@ -package io.homeassistant.companion.android.domain.integration +package io.homeassistant.companion.android.common.data.integration data class Service( val domain: String, diff --git a/domain/src/main/java/io/homeassistant/companion/android/domain/integration/ServiceData.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/ServiceData.kt similarity index 59% rename from domain/src/main/java/io/homeassistant/companion/android/domain/integration/ServiceData.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/integration/ServiceData.kt index 3809a4aa8..6d30286a0 100644 --- a/domain/src/main/java/io/homeassistant/companion/android/domain/integration/ServiceData.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/ServiceData.kt @@ -1,4 +1,4 @@ -package io.homeassistant.companion.android.domain.integration +package io.homeassistant.companion.android.common.data.integration data class ServiceData( val description: String, diff --git a/domain/src/main/java/io/homeassistant/companion/android/domain/integration/ServiceFields.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/ServiceFields.kt similarity index 62% rename from domain/src/main/java/io/homeassistant/companion/android/domain/integration/ServiceFields.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/integration/ServiceFields.kt index e274616c7..de0fc09d1 100644 --- a/domain/src/main/java/io/homeassistant/companion/android/domain/integration/ServiceFields.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/ServiceFields.kt @@ -1,4 +1,4 @@ -package io.homeassistant.companion.android.domain.integration +package io.homeassistant.companion.android.common.data.integration data class ServiceFields( val description: String, diff --git a/domain/src/main/java/io/homeassistant/companion/android/domain/integration/UpdateLocation.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/UpdateLocation.kt similarity index 75% rename from domain/src/main/java/io/homeassistant/companion/android/domain/integration/UpdateLocation.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/integration/UpdateLocation.kt index 834dde58d..94adf8614 100644 --- a/domain/src/main/java/io/homeassistant/companion/android/domain/integration/UpdateLocation.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/UpdateLocation.kt @@ -1,4 +1,4 @@ -package io.homeassistant.companion.android.domain.integration +package io.homeassistant.companion.android.common.data.integration data class UpdateLocation( val locationName: String, diff --git a/domain/src/main/java/io/homeassistant/companion/android/domain/integration/ZoneAttributes.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/ZoneAttributes.kt similarity index 73% rename from domain/src/main/java/io/homeassistant/companion/android/domain/integration/ZoneAttributes.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/integration/ZoneAttributes.kt index 5587cdcea..ae5cb6a07 100644 --- a/domain/src/main/java/io/homeassistant/companion/android/domain/integration/ZoneAttributes.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/ZoneAttributes.kt @@ -1,4 +1,4 @@ -package io.homeassistant.companion.android.domain.integration +package io.homeassistant.companion.android.common.data.integration data class ZoneAttributes( val hidden: Boolean, diff --git a/data/src/main/java/io/homeassistant/companion/android/data/integration/IntegrationRepositoryImpl.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/IntegrationRepositoryImpl.kt similarity index 89% rename from data/src/main/java/io/homeassistant/companion/android/data/integration/IntegrationRepositoryImpl.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/IntegrationRepositoryImpl.kt index e8f540fdc..adbf2d0f4 100644 --- a/data/src/main/java/io/homeassistant/companion/android/data/integration/IntegrationRepositoryImpl.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/IntegrationRepositoryImpl.kt @@ -1,25 +1,26 @@ -package io.homeassistant.companion.android.data.integration +package io.homeassistant.companion.android.common.data.integration.impl -import io.homeassistant.companion.android.data.LocalStorage -import io.homeassistant.companion.android.data.integration.entities.EntityResponse -import io.homeassistant.companion.android.data.integration.entities.FireEventRequest -import io.homeassistant.companion.android.data.integration.entities.GetConfigResponse -import io.homeassistant.companion.android.data.integration.entities.IntegrationRequest -import io.homeassistant.companion.android.data.integration.entities.RegisterDeviceRequest -import io.homeassistant.companion.android.data.integration.entities.SensorRequest -import io.homeassistant.companion.android.data.integration.entities.ServiceCallRequest -import io.homeassistant.companion.android.data.integration.entities.Template -import io.homeassistant.companion.android.data.integration.entities.UpdateLocationRequest -import io.homeassistant.companion.android.domain.authentication.AuthenticationRepository -import io.homeassistant.companion.android.domain.integration.DeviceRegistration -import io.homeassistant.companion.android.domain.integration.Entity -import io.homeassistant.companion.android.domain.integration.IntegrationRepository -import io.homeassistant.companion.android.domain.integration.Panel -import io.homeassistant.companion.android.domain.integration.SensorRegistration -import io.homeassistant.companion.android.domain.integration.Service -import io.homeassistant.companion.android.domain.integration.UpdateLocation -import io.homeassistant.companion.android.domain.integration.ZoneAttributes -import io.homeassistant.companion.android.domain.url.UrlRepository +import io.homeassistant.companion.android.common.data.LocalStorage +import io.homeassistant.companion.android.common.data.authentication.AuthenticationRepository +import io.homeassistant.companion.android.common.data.integration.DeviceRegistration +import io.homeassistant.companion.android.common.data.integration.Entity +import io.homeassistant.companion.android.common.data.integration.IntegrationException +import io.homeassistant.companion.android.common.data.integration.IntegrationRepository +import io.homeassistant.companion.android.common.data.integration.Panel +import io.homeassistant.companion.android.common.data.integration.SensorRegistration +import io.homeassistant.companion.android.common.data.integration.Service +import io.homeassistant.companion.android.common.data.integration.UpdateLocation +import io.homeassistant.companion.android.common.data.integration.ZoneAttributes +import io.homeassistant.companion.android.common.data.integration.impl.entities.EntityResponse +import io.homeassistant.companion.android.common.data.integration.impl.entities.FireEventRequest +import io.homeassistant.companion.android.common.data.integration.impl.entities.GetConfigResponse +import io.homeassistant.companion.android.common.data.integration.impl.entities.IntegrationRequest +import io.homeassistant.companion.android.common.data.integration.impl.entities.RegisterDeviceRequest +import io.homeassistant.companion.android.common.data.integration.impl.entities.SensorRequest +import io.homeassistant.companion.android.common.data.integration.impl.entities.ServiceCallRequest +import io.homeassistant.companion.android.common.data.integration.impl.entities.Template +import io.homeassistant.companion.android.common.data.integration.impl.entities.UpdateLocationRequest +import io.homeassistant.companion.android.common.data.url.UrlRepository import javax.inject.Inject import javax.inject.Named import okhttp3.HttpUrl.Companion.toHttpUrlOrNull diff --git a/data/src/main/java/io/homeassistant/companion/android/data/integration/IntegrationService.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/IntegrationService.kt similarity index 64% rename from data/src/main/java/io/homeassistant/companion/android/data/integration/IntegrationService.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/IntegrationService.kt index 7c1b99804..9255d491c 100644 --- a/data/src/main/java/io/homeassistant/companion/android/data/integration/IntegrationService.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/IntegrationService.kt @@ -1,14 +1,14 @@ -package io.homeassistant.companion.android.data.integration +package io.homeassistant.companion.android.common.data.integration.impl -import io.homeassistant.companion.android.data.integration.entities.DiscoveryInfoResponse -import io.homeassistant.companion.android.data.integration.entities.DomainResponse -import io.homeassistant.companion.android.data.integration.entities.EntityResponse -import io.homeassistant.companion.android.data.integration.entities.GetConfigResponse -import io.homeassistant.companion.android.data.integration.entities.IntegrationRequest -import io.homeassistant.companion.android.data.integration.entities.RegisterDeviceRequest -import io.homeassistant.companion.android.data.integration.entities.RegisterDeviceResponse -import io.homeassistant.companion.android.domain.integration.Panel -import io.homeassistant.companion.android.domain.integration.ZoneAttributes +import io.homeassistant.companion.android.common.data.integration.Panel +import io.homeassistant.companion.android.common.data.integration.ZoneAttributes +import io.homeassistant.companion.android.common.data.integration.impl.entities.DiscoveryInfoResponse +import io.homeassistant.companion.android.common.data.integration.impl.entities.DomainResponse +import io.homeassistant.companion.android.common.data.integration.impl.entities.EntityResponse +import io.homeassistant.companion.android.common.data.integration.impl.entities.GetConfigResponse +import io.homeassistant.companion.android.common.data.integration.impl.entities.IntegrationRequest +import io.homeassistant.companion.android.common.data.integration.impl.entities.RegisterDeviceRequest +import io.homeassistant.companion.android.common.data.integration.impl.entities.RegisterDeviceResponse import okhttp3.HttpUrl import okhttp3.ResponseBody import retrofit2.Response diff --git a/data/src/main/java/io/homeassistant/companion/android/data/integration/entities/DiscoveryInfoResponse.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/DiscoveryInfoResponse.kt similarity index 65% rename from data/src/main/java/io/homeassistant/companion/android/data/integration/entities/DiscoveryInfoResponse.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/DiscoveryInfoResponse.kt index 0bd393f56..08da51ed8 100644 --- a/data/src/main/java/io/homeassistant/companion/android/data/integration/entities/DiscoveryInfoResponse.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/DiscoveryInfoResponse.kt @@ -1,4 +1,4 @@ -package io.homeassistant.companion.android.data.integration.entities +package io.homeassistant.companion.android.common.data.integration.impl.entities data class DiscoveryInfoResponse( val baseUrl: String, diff --git a/common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/DomainResponse.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/DomainResponse.kt new file mode 100644 index 000000000..705c9bcde --- /dev/null +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/DomainResponse.kt @@ -0,0 +1,8 @@ +package io.homeassistant.companion.android.common.data.integration.impl.entities + +import io.homeassistant.companion.android.common.data.integration.ServiceData + +data class DomainResponse( + val domain: String, + val services: Map +) diff --git a/data/src/main/java/io/homeassistant/companion/android/data/integration/entities/EntityResponse.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/EntityResponse.kt similarity index 73% rename from data/src/main/java/io/homeassistant/companion/android/data/integration/entities/EntityResponse.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/EntityResponse.kt index 59dc57ea1..ecba26a5c 100644 --- a/data/src/main/java/io/homeassistant/companion/android/data/integration/entities/EntityResponse.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/EntityResponse.kt @@ -1,4 +1,4 @@ -package io.homeassistant.companion.android.data.integration.entities +package io.homeassistant.companion.android.common.data.integration.impl.entities import java.util.Calendar diff --git a/data/src/main/java/io/homeassistant/companion/android/data/integration/entities/FireEventRequest.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/FireEventRequest.kt similarity index 53% rename from data/src/main/java/io/homeassistant/companion/android/data/integration/entities/FireEventRequest.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/FireEventRequest.kt index 467609095..c91aea7ca 100644 --- a/data/src/main/java/io/homeassistant/companion/android/data/integration/entities/FireEventRequest.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/FireEventRequest.kt @@ -1,4 +1,4 @@ -package io.homeassistant.companion.android.data.integration.entities +package io.homeassistant.companion.android.common.data.integration.impl.entities data class FireEventRequest( val eventType: String, diff --git a/data/src/main/java/io/homeassistant/companion/android/data/integration/entities/GetConfigResponse.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/GetConfigResponse.kt similarity index 78% rename from data/src/main/java/io/homeassistant/companion/android/data/integration/entities/GetConfigResponse.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/GetConfigResponse.kt index f8507eccb..af47ad6c6 100644 --- a/data/src/main/java/io/homeassistant/companion/android/data/integration/entities/GetConfigResponse.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/GetConfigResponse.kt @@ -1,4 +1,4 @@ -package io.homeassistant.companion.android.data.integration.entities +package io.homeassistant.companion.android.common.data.integration.impl.entities data class GetConfigResponse( val latitude: Double, diff --git a/data/src/main/java/io/homeassistant/companion/android/data/integration/entities/IntegrationRequest.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/IntegrationRequest.kt similarity index 68% rename from data/src/main/java/io/homeassistant/companion/android/data/integration/entities/IntegrationRequest.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/IntegrationRequest.kt index c5a071069..4eea86c4a 100644 --- a/data/src/main/java/io/homeassistant/companion/android/data/integration/entities/IntegrationRequest.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/IntegrationRequest.kt @@ -1,4 +1,4 @@ -package io.homeassistant.companion.android.data.integration.entities +package io.homeassistant.companion.android.common.data.integration.impl.entities import com.fasterxml.jackson.annotation.JsonInclude diff --git a/data/src/main/java/io/homeassistant/companion/android/data/integration/entities/RegisterDeviceRequest.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/RegisterDeviceRequest.kt similarity index 85% rename from data/src/main/java/io/homeassistant/companion/android/data/integration/entities/RegisterDeviceRequest.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/RegisterDeviceRequest.kt index 4c4490fa7..a1ad8f1fa 100644 --- a/data/src/main/java/io/homeassistant/companion/android/data/integration/entities/RegisterDeviceRequest.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/RegisterDeviceRequest.kt @@ -1,4 +1,4 @@ -package io.homeassistant.companion.android.data.integration.entities +package io.homeassistant.companion.android.common.data.integration.impl.entities import com.fasterxml.jackson.annotation.JsonInclude diff --git a/data/src/main/java/io/homeassistant/companion/android/data/integration/entities/RegisterDeviceResponse.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/RegisterDeviceResponse.kt similarity index 64% rename from data/src/main/java/io/homeassistant/companion/android/data/integration/entities/RegisterDeviceResponse.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/RegisterDeviceResponse.kt index 8d4f206ea..d47cf987d 100644 --- a/data/src/main/java/io/homeassistant/companion/android/data/integration/entities/RegisterDeviceResponse.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/RegisterDeviceResponse.kt @@ -1,4 +1,4 @@ -package io.homeassistant.companion.android.data.integration.entities +package io.homeassistant.companion.android.common.data.integration.impl.entities data class RegisterDeviceResponse( var cloudhookUrl: String?, diff --git a/data/src/main/java/io/homeassistant/companion/android/data/integration/entities/SensorRequest.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/SensorRequest.kt similarity index 81% rename from data/src/main/java/io/homeassistant/companion/android/data/integration/entities/SensorRequest.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/SensorRequest.kt index 1ac23cf64..31034b4b6 100644 --- a/data/src/main/java/io/homeassistant/companion/android/data/integration/entities/SensorRequest.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/SensorRequest.kt @@ -1,4 +1,4 @@ -package io.homeassistant.companion.android.data.integration.entities +package io.homeassistant.companion.android.common.data.integration.impl.entities import com.fasterxml.jackson.annotation.JsonInclude diff --git a/data/src/main/java/io/homeassistant/companion/android/data/integration/entities/ServiceCallRequest.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/ServiceCallRequest.kt similarity index 60% rename from data/src/main/java/io/homeassistant/companion/android/data/integration/entities/ServiceCallRequest.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/ServiceCallRequest.kt index 49d30924b..b63445625 100644 --- a/data/src/main/java/io/homeassistant/companion/android/data/integration/entities/ServiceCallRequest.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/ServiceCallRequest.kt @@ -1,4 +1,4 @@ -package io.homeassistant.companion.android.data.integration.entities +package io.homeassistant.companion.android.common.data.integration.impl.entities data class ServiceCallRequest( val domain: String, diff --git a/data/src/main/java/io/homeassistant/companion/android/data/integration/entities/Template.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/Template.kt similarity index 52% rename from data/src/main/java/io/homeassistant/companion/android/data/integration/entities/Template.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/Template.kt index 782e5afef..d151e2c1c 100644 --- a/data/src/main/java/io/homeassistant/companion/android/data/integration/entities/Template.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/Template.kt @@ -1,4 +1,4 @@ -package io.homeassistant.companion.android.data.integration.entities +package io.homeassistant.companion.android.common.data.integration.impl.entities data class Template( val template: String, diff --git a/data/src/main/java/io/homeassistant/companion/android/data/integration/entities/UpdateLocationRequest.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/UpdateLocationRequest.kt similarity index 72% rename from data/src/main/java/io/homeassistant/companion/android/data/integration/entities/UpdateLocationRequest.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/UpdateLocationRequest.kt index 9a41373c6..491a20dae 100644 --- a/data/src/main/java/io/homeassistant/companion/android/data/integration/entities/UpdateLocationRequest.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/impl/entities/UpdateLocationRequest.kt @@ -1,4 +1,4 @@ -package io.homeassistant.companion.android.data.integration.entities +package io.homeassistant.companion.android.common.data.integration.impl.entities data class UpdateLocationRequest( val locationName: String, diff --git a/domain/src/main/java/io/homeassistant/companion/android/domain/themes/ThemesRepository.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/themes/ThemesRepository.kt similarity index 65% rename from domain/src/main/java/io/homeassistant/companion/android/domain/themes/ThemesRepository.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/themes/ThemesRepository.kt index 9b0c41fa7..1a92e190d 100644 --- a/domain/src/main/java/io/homeassistant/companion/android/domain/themes/ThemesRepository.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/themes/ThemesRepository.kt @@ -1,4 +1,4 @@ -package io.homeassistant.companion.android.domain.themes +package io.homeassistant.companion.android.common.data.themes interface ThemesRepository { suspend fun getCurrentTheme(): String? diff --git a/data/src/main/java/io/homeassistant/companion/android/data/themes/ThemesRepositoryImpl.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/themes/ThemesRepositoryImpl.kt similarity index 72% rename from data/src/main/java/io/homeassistant/companion/android/data/themes/ThemesRepositoryImpl.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/themes/ThemesRepositoryImpl.kt index e2f43e277..5d7b1926e 100644 --- a/data/src/main/java/io/homeassistant/companion/android/data/themes/ThemesRepositoryImpl.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/themes/ThemesRepositoryImpl.kt @@ -1,7 +1,6 @@ -package io.homeassistant.companion.android.data.themes +package io.homeassistant.companion.android.common.data.themes -import io.homeassistant.companion.android.data.LocalStorage -import io.homeassistant.companion.android.domain.themes.ThemesRepository +import io.homeassistant.companion.android.common.data.LocalStorage import javax.inject.Inject import javax.inject.Named diff --git a/domain/src/main/java/io/homeassistant/companion/android/domain/url/UrlRepository.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/url/UrlRepository.kt similarity index 87% rename from domain/src/main/java/io/homeassistant/companion/android/domain/url/UrlRepository.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/url/UrlRepository.kt index 020269ba8..00d9065c6 100644 --- a/domain/src/main/java/io/homeassistant/companion/android/domain/url/UrlRepository.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/url/UrlRepository.kt @@ -1,4 +1,4 @@ -package io.homeassistant.companion.android.domain.url +package io.homeassistant.companion.android.common.data.url import java.net.URL diff --git a/data/src/main/java/io/homeassistant/companion/android/data/url/UrlRepositoryImpl.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/url/UrlRepositoryImpl.kt similarity index 91% rename from data/src/main/java/io/homeassistant/companion/android/data/url/UrlRepositoryImpl.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/url/UrlRepositoryImpl.kt index 8cb43410b..e795b0fd3 100644 --- a/data/src/main/java/io/homeassistant/companion/android/data/url/UrlRepositoryImpl.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/url/UrlRepositoryImpl.kt @@ -1,9 +1,8 @@ -package io.homeassistant.companion.android.data.url +package io.homeassistant.companion.android.common.data.url -import io.homeassistant.companion.android.data.LocalStorage -import io.homeassistant.companion.android.data.wifi.WifiHelper -import io.homeassistant.companion.android.domain.MalformedHttpUrlException -import io.homeassistant.companion.android.domain.url.UrlRepository +import io.homeassistant.companion.android.common.data.LocalStorage +import io.homeassistant.companion.android.common.data.MalformedHttpUrlException +import io.homeassistant.companion.android.common.data.wifi.WifiHelper import java.net.URL import javax.inject.Inject import javax.inject.Named diff --git a/common/src/main/java/io/homeassistant/companion/android/common/data/wifi/WifiHelper.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/wifi/WifiHelper.kt new file mode 100644 index 000000000..48c5d4376 --- /dev/null +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/wifi/WifiHelper.kt @@ -0,0 +1,5 @@ +package io.homeassistant.companion.android.common.data.wifi + +interface WifiHelper { + fun getWifiSsid(): String +} diff --git a/common/src/main/java/io/homeassistant/companion/android/common/wifi/WifiHelperImpl.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/wifi/WifiHelperImpl.kt similarity index 55% rename from common/src/main/java/io/homeassistant/companion/android/common/wifi/WifiHelperImpl.kt rename to common/src/main/java/io/homeassistant/companion/android/common/data/wifi/WifiHelperImpl.kt index fd5d8244a..bece26a7a 100644 --- a/common/src/main/java/io/homeassistant/companion/android/common/wifi/WifiHelperImpl.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/wifi/WifiHelperImpl.kt @@ -1,9 +1,9 @@ -package io.homeassistant.companion.android.common.wifi +package io.homeassistant.companion.android.common.data.wifi import android.net.wifi.WifiManager -import io.homeassistant.companion.android.data.wifi.WifiHelper +import javax.inject.Inject -class WifiHelperImpl constructor( +class WifiHelperImpl @Inject constructor( private val wifiManager: WifiManager ) : WifiHelper { override fun getWifiSsid(): String { diff --git a/data/src/test/java/io/homeassistant/companion/android/data/HomeAssistantMockService.kt b/common/src/test/java/io/homeassistant/companion/android/common/data/HomeAssistantMockService.kt similarity index 89% rename from data/src/test/java/io/homeassistant/companion/android/data/HomeAssistantMockService.kt rename to common/src/test/java/io/homeassistant/companion/android/common/data/HomeAssistantMockService.kt index e3c58e136..26d3df9bc 100644 --- a/data/src/test/java/io/homeassistant/companion/android/data/HomeAssistantMockService.kt +++ b/common/src/test/java/io/homeassistant/companion/android/common/data/HomeAssistantMockService.kt @@ -1,6 +1,6 @@ -package io.homeassistant.companion.android.data +package io.homeassistant.companion.android.common.data -import io.homeassistant.companion.android.domain.url.UrlRepository +import io.homeassistant.companion.android.common.data.url.UrlRepository import java.io.IOException import java.net.URL import okhttp3.mockwebserver.MockResponse @@ -54,7 +54,7 @@ class HomeAssistantMockService(private val c: Class) { fun takeRequest() = mockServer.takeRequest() private fun getJsonFromFile(file: String): String { - val inputStreamResponse = this.javaClass.classLoader.getResourceAsStream(file)!! + val inputStreamResponse = this.javaClass.classLoader?.getResourceAsStream(file)!! val size: Int return try { size = inputStreamResponse.available() diff --git a/data/src/test/java/io/homeassistant/companion/android/data/authentication/AuthenticationRepositoryImplSpec.kt b/common/src/test/java/io/homeassistant/companion/android/common/data/authentication/impl/AuthenticationRepositoryImplSpec.kt similarity index 95% rename from data/src/test/java/io/homeassistant/companion/android/data/authentication/AuthenticationRepositoryImplSpec.kt rename to common/src/test/java/io/homeassistant/companion/android/common/data/authentication/impl/AuthenticationRepositoryImplSpec.kt index 4d2e4cda7..4956c8f8a 100644 --- a/data/src/test/java/io/homeassistant/companion/android/data/authentication/AuthenticationRepositoryImplSpec.kt +++ b/common/src/test/java/io/homeassistant/companion/android/common/data/authentication/impl/AuthenticationRepositoryImplSpec.kt @@ -1,15 +1,15 @@ -package io.homeassistant.companion.android.data.authentication +package io.homeassistant.companion.android.common.data.authentication.impl -import io.homeassistant.companion.android.data.LocalStorage -import io.homeassistant.companion.android.domain.authentication.SessionState -import io.homeassistant.companion.android.domain.url.UrlRepository +import io.homeassistant.companion.android.common.data.LocalStorage +import io.homeassistant.companion.android.common.data.authentication.AuthorizationException +import io.homeassistant.companion.android.common.data.authentication.SessionState +import io.homeassistant.companion.android.common.data.url.UrlRepository import io.mockk.Called import io.mockk.coEvery import io.mockk.coVerify import io.mockk.coVerifyAll import io.mockk.every import io.mockk.mockk -import io.mockk.mockkStatic import io.mockk.verify import java.net.URL import kotlinx.coroutines.runBlocking @@ -17,15 +17,9 @@ import org.assertj.core.api.Assertions.assertThat import org.assertj.core.api.Assertions.catchThrowable import org.spekframework.spek2.Spek import org.spekframework.spek2.style.specification.describe -import org.threeten.bp.Instant object AuthenticationRepositoryImplSpec : Spek({ - beforeEachTest { - mockkStatic(Instant::class) - every { Instant.now() } returns Instant.parse("2019-01-16T01:52:00.000Z") - } - describe("a repository") { val localStorage by memoized { mockk(relaxUnitFun = true) } val authenticationService by memoized { mockk(relaxUnitFun = true) } @@ -183,7 +177,7 @@ object AuthenticationRepositoryImplSpec : Spek({ beforeEachTest { coEvery { localStorage.getString("url") } returns "https://demo.home-assistant.io/" coEvery { localStorage.getString("access_token") } returns "ABCDEFGH" - coEvery { localStorage.getLong("expires_date") } returns Instant.now().epochSecond - 1800 + coEvery { localStorage.getLong("expires_date") } returns 1599276837 - 1800 coEvery { localStorage.getString("refresh_token") } returns "IJKLMNOPQRST" coEvery { localStorage.getString("token_type") } returns "Bearer" coEvery { diff --git a/data/src/test/java/io/homeassistant/companion/android/data/authentication/AuthenticationServiceSpec.kt b/common/src/test/java/io/homeassistant/companion/android/common/data/authentication/impl/AuthenticationServiceSpec.kt similarity index 95% rename from data/src/test/java/io/homeassistant/companion/android/data/authentication/AuthenticationServiceSpec.kt rename to common/src/test/java/io/homeassistant/companion/android/common/data/authentication/impl/AuthenticationServiceSpec.kt index 4d75f5df6..b042200e1 100644 --- a/data/src/test/java/io/homeassistant/companion/android/data/authentication/AuthenticationServiceSpec.kt +++ b/common/src/test/java/io/homeassistant/companion/android/common/data/authentication/impl/AuthenticationServiceSpec.kt @@ -1,6 +1,7 @@ -package io.homeassistant.companion.android.data.authentication +package io.homeassistant.companion.android.common.data.authentication.impl -import io.homeassistant.companion.android.data.HomeAssistantMockService +import io.homeassistant.companion.android.common.data.HomeAssistantMockService +import io.homeassistant.companion.android.common.data.authentication.impl.entities.Token import kotlinx.coroutines.runBlocking import okhttp3.mockwebserver.RecordedRequest import org.assertj.core.api.Assertions.assertThat diff --git a/data/src/test/java/io/homeassistant/companion/android/data/authentication/SessionSpec.kt b/common/src/test/java/io/homeassistant/companion/android/common/data/authentication/impl/SessionSpec.kt similarity index 67% rename from data/src/test/java/io/homeassistant/companion/android/data/authentication/SessionSpec.kt rename to common/src/test/java/io/homeassistant/companion/android/common/data/authentication/impl/SessionSpec.kt index 7a9d2fddb..1935afe4a 100644 --- a/data/src/test/java/io/homeassistant/companion/android/data/authentication/SessionSpec.kt +++ b/common/src/test/java/io/homeassistant/companion/android/common/data/authentication/impl/SessionSpec.kt @@ -1,14 +1,13 @@ -package io.homeassistant.companion.android.data.authentication +package io.homeassistant.companion.android.common.data.authentication.impl import org.assertj.core.api.Assertions.assertThat import org.spekframework.spek2.Spek import org.spekframework.spek2.style.specification.describe -import org.threeten.bp.Instant object SessionSpec : Spek({ describe("an expired session") { - val session by memoized { Session("", Instant.now().epochSecond - 1800, "", "") } + val session by memoized { Session("", System.currentTimeMillis() / 1000 - 1800, "", "") } it("should be expired") { assertThat(session.isExpired()).isTrue() @@ -16,7 +15,7 @@ object SessionSpec : Spek({ } describe("an valid session") { - val session by memoized { Session("", Instant.now().epochSecond + 1800, "", "") } + val session by memoized { Session("", System.currentTimeMillis() / 1000 + 1800, "", "") } it("should be valid") { assertThat(session.isExpired()).isFalse() diff --git a/data/src/test/java/io/homeassistant/companion/android/data/integration/IntegrationRepositoryImplSpec.kt b/common/src/test/java/io/homeassistant/companion/android/common/data/integration/impl/IntegrationRepositoryImplSpec.kt similarity index 96% rename from data/src/test/java/io/homeassistant/companion/android/data/integration/IntegrationRepositoryImplSpec.kt rename to common/src/test/java/io/homeassistant/companion/android/common/data/integration/impl/IntegrationRepositoryImplSpec.kt index ee1b2a32c..c8723ca70 100644 --- a/data/src/test/java/io/homeassistant/companion/android/data/integration/IntegrationRepositoryImplSpec.kt +++ b/common/src/test/java/io/homeassistant/companion/android/common/data/integration/impl/IntegrationRepositoryImplSpec.kt @@ -1,17 +1,18 @@ -package io.homeassistant.companion.android.data.integration +package io.homeassistant.companion.android.common.data.integration.impl -import io.homeassistant.companion.android.data.LocalStorage -import io.homeassistant.companion.android.data.integration.entities.EntityResponse -import io.homeassistant.companion.android.data.integration.entities.IntegrationRequest -import io.homeassistant.companion.android.data.integration.entities.RegisterDeviceRequest -import io.homeassistant.companion.android.data.integration.entities.ServiceCallRequest -import io.homeassistant.companion.android.data.integration.entities.UpdateLocationRequest -import io.homeassistant.companion.android.domain.authentication.AuthenticationRepository -import io.homeassistant.companion.android.domain.integration.DeviceRegistration -import io.homeassistant.companion.android.domain.integration.Entity -import io.homeassistant.companion.android.domain.integration.UpdateLocation -import io.homeassistant.companion.android.domain.integration.ZoneAttributes -import io.homeassistant.companion.android.domain.url.UrlRepository +import io.homeassistant.companion.android.common.data.LocalStorage +import io.homeassistant.companion.android.common.data.authentication.AuthenticationRepository +import io.homeassistant.companion.android.common.data.integration.DeviceRegistration +import io.homeassistant.companion.android.common.data.integration.Entity +import io.homeassistant.companion.android.common.data.integration.IntegrationException +import io.homeassistant.companion.android.common.data.integration.UpdateLocation +import io.homeassistant.companion.android.common.data.integration.ZoneAttributes +import io.homeassistant.companion.android.common.data.integration.impl.entities.EntityResponse +import io.homeassistant.companion.android.common.data.integration.impl.entities.IntegrationRequest +import io.homeassistant.companion.android.common.data.integration.impl.entities.RegisterDeviceRequest +import io.homeassistant.companion.android.common.data.integration.impl.entities.ServiceCallRequest +import io.homeassistant.companion.android.common.data.integration.impl.entities.UpdateLocationRequest +import io.homeassistant.companion.android.common.data.url.UrlRepository import io.mockk.coEvery import io.mockk.coVerify import io.mockk.coVerifyAll diff --git a/data/src/test/java/io/homeassistant/companion/android/data/integration/IntegrationServiceSpec.kt b/common/src/test/java/io/homeassistant/companion/android/common/data/integration/impl/IntegrationServiceSpec.kt similarity index 87% rename from data/src/test/java/io/homeassistant/companion/android/data/integration/IntegrationServiceSpec.kt rename to common/src/test/java/io/homeassistant/companion/android/common/data/integration/impl/IntegrationServiceSpec.kt index 726117b14..224e5be28 100644 --- a/data/src/test/java/io/homeassistant/companion/android/data/integration/IntegrationServiceSpec.kt +++ b/common/src/test/java/io/homeassistant/companion/android/common/data/integration/impl/IntegrationServiceSpec.kt @@ -1,11 +1,11 @@ -package io.homeassistant.companion.android.data.integration +package io.homeassistant.companion.android.common.data.integration.impl -import io.homeassistant.companion.android.data.HomeAssistantMockService -import io.homeassistant.companion.android.data.integration.entities.IntegrationRequest -import io.homeassistant.companion.android.data.integration.entities.RegisterDeviceRequest -import io.homeassistant.companion.android.data.integration.entities.RegisterDeviceResponse -import io.homeassistant.companion.android.data.integration.entities.ServiceCallRequest -import io.homeassistant.companion.android.data.integration.entities.UpdateLocationRequest +import io.homeassistant.companion.android.common.data.HomeAssistantMockService +import io.homeassistant.companion.android.common.data.integration.impl.entities.IntegrationRequest +import io.homeassistant.companion.android.common.data.integration.impl.entities.RegisterDeviceRequest +import io.homeassistant.companion.android.common.data.integration.impl.entities.RegisterDeviceResponse +import io.homeassistant.companion.android.common.data.integration.impl.entities.ServiceCallRequest +import io.homeassistant.companion.android.common.data.integration.impl.entities.UpdateLocationRequest import kotlinx.coroutines.runBlocking import okhttp3.ResponseBody import okhttp3.mockwebserver.RecordedRequest diff --git a/data/src/test/java/io/homeassistant/companion/android/data/url/UrlRepositoryImplSpec.kt b/common/src/test/java/io/homeassistant/companion/android/common/data/url/UrlRepositoryImplSpec.kt similarity index 95% rename from data/src/test/java/io/homeassistant/companion/android/data/url/UrlRepositoryImplSpec.kt rename to common/src/test/java/io/homeassistant/companion/android/common/data/url/UrlRepositoryImplSpec.kt index 17f0bb8f9..16aa76fb6 100644 --- a/data/src/test/java/io/homeassistant/companion/android/data/url/UrlRepositoryImplSpec.kt +++ b/common/src/test/java/io/homeassistant/companion/android/common/data/url/UrlRepositoryImplSpec.kt @@ -1,8 +1,8 @@ -package io.homeassistant.companion.android.data.url +package io.homeassistant.companion.android.common.data.url -import io.homeassistant.companion.android.data.LocalStorage -import io.homeassistant.companion.android.data.wifi.WifiHelper -import io.homeassistant.companion.android.domain.MalformedHttpUrlException +import io.homeassistant.companion.android.common.data.LocalStorage +import io.homeassistant.companion.android.common.data.MalformedHttpUrlException +import io.homeassistant.companion.android.common.data.wifi.WifiHelper import io.mockk.coEvery import io.mockk.coVerify import io.mockk.coVerifyAll diff --git a/data/src/test/resources/authentication/authorization_code.json b/common/src/test/resources/authentication/authorization_code.json similarity index 100% rename from data/src/test/resources/authentication/authorization_code.json rename to common/src/test/resources/authentication/authorization_code.json diff --git a/data/src/test/resources/authentication/refresh_token.json b/common/src/test/resources/authentication/refresh_token.json similarity index 100% rename from data/src/test/resources/authentication/refresh_token.json rename to common/src/test/resources/authentication/refresh_token.json diff --git a/data/src/test/resources/authentication/refresh_token_error.json b/common/src/test/resources/authentication/refresh_token_error.json similarity index 100% rename from data/src/test/resources/authentication/refresh_token_error.json rename to common/src/test/resources/authentication/refresh_token_error.json diff --git a/data/src/test/resources/integration/empty.json b/common/src/test/resources/integration/empty.json similarity index 100% rename from data/src/test/resources/integration/empty.json rename to common/src/test/resources/integration/empty.json diff --git a/data/src/test/resources/integration/register.json b/common/src/test/resources/integration/register.json similarity index 100% rename from data/src/test/resources/integration/register.json rename to common/src/test/resources/integration/register.json diff --git a/data/build.gradle.kts b/data/build.gradle.kts deleted file mode 100644 index 6b13e0255..000000000 --- a/data/build.gradle.kts +++ /dev/null @@ -1,39 +0,0 @@ -plugins { - id("java") - id("kotlin") -} - -java { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 -} - -tasks.withType { - useJUnitPlatform { - includeEngines("spek2") - } -} - -dependencies { - implementation(project(":domain")) - - implementation(Config.Dependency.Kotlin.core) - implementation(Config.Dependency.Kotlin.coroutines) - - implementation(Config.Dependency.Misc.javaxInject) - - implementation(Config.Dependency.Square.retrofit) - implementation(Config.Dependency.Square.retrofitJacksonConverter) - implementation(Config.Dependency.Square.okhttp) - implementation(Config.Dependency.Square.okhttpInterceptor) - implementation(Config.Dependency.Misc.jackson) - - implementation(Config.Dependency.Misc.threeTenBp) - - testImplementation(Config.Dependency.Square.okhttpMockServer) - - testImplementation(Config.Dependency.Testing.spek2Jvm) - testRuntimeOnly(Config.Dependency.Testing.spek2JUnit) - testImplementation(Config.Dependency.Testing.assertJ) - testImplementation(Config.Dependency.Testing.mockk) -} diff --git a/data/src/main/java/io/homeassistant/companion/android/data/authentication/AuthorizationException.kt b/data/src/main/java/io/homeassistant/companion/android/data/authentication/AuthorizationException.kt deleted file mode 100644 index 60f345bfb..000000000 --- a/data/src/main/java/io/homeassistant/companion/android/data/authentication/AuthorizationException.kt +++ /dev/null @@ -1,3 +0,0 @@ -package io.homeassistant.companion.android.data.authentication - -class AuthorizationException : Exception() diff --git a/data/src/main/java/io/homeassistant/companion/android/data/integration/IntegrationException.kt b/data/src/main/java/io/homeassistant/companion/android/data/integration/IntegrationException.kt deleted file mode 100644 index 07db76fbd..000000000 --- a/data/src/main/java/io/homeassistant/companion/android/data/integration/IntegrationException.kt +++ /dev/null @@ -1,3 +0,0 @@ -package io.homeassistant.companion.android.data.integration - -class IntegrationException : Exception() diff --git a/data/src/main/java/io/homeassistant/companion/android/data/integration/entities/DomainResponse.kt b/data/src/main/java/io/homeassistant/companion/android/data/integration/entities/DomainResponse.kt deleted file mode 100644 index d223ebae9..000000000 --- a/data/src/main/java/io/homeassistant/companion/android/data/integration/entities/DomainResponse.kt +++ /dev/null @@ -1,8 +0,0 @@ -package io.homeassistant.companion.android.data.integration.entities - -import io.homeassistant.companion.android.domain.integration.ServiceData - -data class DomainResponse( - val domain: String, - val services: Map -) diff --git a/data/src/main/java/io/homeassistant/companion/android/data/wifi/WifiHelper.kt b/data/src/main/java/io/homeassistant/companion/android/data/wifi/WifiHelper.kt deleted file mode 100644 index b895da88d..000000000 --- a/data/src/main/java/io/homeassistant/companion/android/data/wifi/WifiHelper.kt +++ /dev/null @@ -1,5 +0,0 @@ -package io.homeassistant.companion.android.data.wifi - -interface WifiHelper { - fun getWifiSsid(): String -} diff --git a/domain/build.gradle.kts b/domain/build.gradle.kts deleted file mode 100644 index 8ed3946c2..000000000 --- a/domain/build.gradle.kts +++ /dev/null @@ -1,27 +0,0 @@ -plugins { - id("java") - id("kotlin") -} - -java { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 -} - -tasks.withType { - useJUnitPlatform { - includeEngines("spek2") - } -} - -dependencies { - implementation(Config.Dependency.Kotlin.core) - implementation(Config.Dependency.Kotlin.coroutines) - - implementation(Config.Dependency.Misc.javaxInject) - - testImplementation(Config.Dependency.Testing.spek2Jvm) - testRuntimeOnly(Config.Dependency.Testing.spek2JUnit) - testImplementation(Config.Dependency.Testing.assertJ) - testImplementation(Config.Dependency.Testing.mockk) -} diff --git a/domain/src/main/java/io/homeassistant/companion/android/domain/authentication/AuthenticationUseCase.kt b/domain/src/main/java/io/homeassistant/companion/android/domain/authentication/AuthenticationUseCase.kt deleted file mode 100644 index 01b77ad81..000000000 --- a/domain/src/main/java/io/homeassistant/companion/android/domain/authentication/AuthenticationUseCase.kt +++ /dev/null @@ -1,21 +0,0 @@ -package io.homeassistant.companion.android.domain.authentication - -import java.net.URL - -interface AuthenticationUseCase { - - suspend fun registerAuthorizationCode(authorizationCode: String) - - suspend fun retrieveExternalAuthentication(forceRefresh: Boolean = false): String - - suspend fun revokeSession() - - suspend fun getSessionState(): SessionState - - suspend fun buildAuthenticationUrl(callbackUrl: String): URL - - suspend fun buildBearerToken(): String - - suspend fun setLockEnabled(enabled: Boolean) - suspend fun isLockEnabled(): Boolean -} diff --git a/domain/src/main/java/io/homeassistant/companion/android/domain/authentication/AuthenticationUseCaseImpl.kt b/domain/src/main/java/io/homeassistant/companion/android/domain/authentication/AuthenticationUseCaseImpl.kt deleted file mode 100644 index b2762e8ff..000000000 --- a/domain/src/main/java/io/homeassistant/companion/android/domain/authentication/AuthenticationUseCaseImpl.kt +++ /dev/null @@ -1,41 +0,0 @@ -package io.homeassistant.companion.android.domain.authentication - -import java.net.URL -import javax.inject.Inject - -class AuthenticationUseCaseImpl @Inject constructor( - private val authenticationRepository: AuthenticationRepository -) : AuthenticationUseCase { - - override suspend fun registerAuthorizationCode(authorizationCode: String) { - authenticationRepository.registerAuthorizationCode(authorizationCode) - } - - override suspend fun retrieveExternalAuthentication(forceRefresh: Boolean): String { - return authenticationRepository.retrieveExternalAuthentication(forceRefresh) - } - - override suspend fun revokeSession() { - authenticationRepository.revokeSession() - } - - override suspend fun getSessionState(): SessionState { - return authenticationRepository.getSessionState() - } - - override suspend fun buildAuthenticationUrl(callbackUrl: String): URL { - return authenticationRepository.buildAuthenticationUrl(callbackUrl) - } - - override suspend fun buildBearerToken(): String { - return authenticationRepository.buildBearerToken() - } - - override suspend fun setLockEnabled(enabled: Boolean) { - return authenticationRepository.setLockEnabled(enabled) - } - - override suspend fun isLockEnabled(): Boolean { - return authenticationRepository.isLockEnabled() - } -} diff --git a/domain/src/main/java/io/homeassistant/companion/android/domain/authentication/SessionState.kt b/domain/src/main/java/io/homeassistant/companion/android/domain/authentication/SessionState.kt deleted file mode 100644 index a9b8502fe..000000000 --- a/domain/src/main/java/io/homeassistant/companion/android/domain/authentication/SessionState.kt +++ /dev/null @@ -1,6 +0,0 @@ -package io.homeassistant.companion.android.domain.authentication - -enum class SessionState { - ANONYMOUS, - CONNECTED, -} diff --git a/domain/src/main/java/io/homeassistant/companion/android/domain/integration/IntegrationUseCase.kt b/domain/src/main/java/io/homeassistant/companion/android/domain/integration/IntegrationUseCase.kt deleted file mode 100644 index 14200a381..000000000 --- a/domain/src/main/java/io/homeassistant/companion/android/domain/integration/IntegrationUseCase.kt +++ /dev/null @@ -1,54 +0,0 @@ -package io.homeassistant.companion.android.domain.integration - -interface IntegrationUseCase { - - suspend fun registerDevice(deviceRegistration: DeviceRegistration) - suspend fun updateRegistration( - appVersion: String? = null, - deviceName: String? = null, - manufacturer: String? = null, - model: String? = null, - osVersion: String? = null, - pushUrl: String? = null, - pushToken: String? = null - ) - - suspend fun getRegistration(): DeviceRegistration - - suspend fun isRegistered(): Boolean - - suspend fun renderTemplate(template: String, variables: Map = mapOf()): String - - suspend fun updateLocation(updateLocation: UpdateLocation) - - suspend fun callService(domain: String, service: String, serviceData: HashMap) - - suspend fun fireEvent(eventType: String, eventData: Map) - - suspend fun scanTag(data: HashMap) - - suspend fun getZones(): Array> - - suspend fun setFullScreenEnabled(enabled: Boolean) - suspend fun isFullScreenEnabled(): Boolean - - suspend fun sessionTimeOut(value: Int) - suspend fun getSessionTimeOut(): Int - - suspend fun setSessionExpireMillis(value: Long) - suspend fun getSessionExpireMillis(): Long - - suspend fun getServices(): Array - - suspend fun getEntities(): Array> - - suspend fun getThemeColor(): String - - suspend fun getHomeAssistantVersion(): String - - suspend fun getPanels(): Array - - suspend fun registerSensor(sensorRegistration: SensorRegistration) - - suspend fun updateSensors(sensors: Array>): Boolean -} diff --git a/domain/src/main/java/io/homeassistant/companion/android/domain/integration/IntegrationUseCaseImpl.kt b/domain/src/main/java/io/homeassistant/companion/android/domain/integration/IntegrationUseCaseImpl.kt deleted file mode 100644 index 95ee509af..000000000 --- a/domain/src/main/java/io/homeassistant/companion/android/domain/integration/IntegrationUseCaseImpl.kt +++ /dev/null @@ -1,114 +0,0 @@ -package io.homeassistant.companion.android.domain.integration - -import javax.inject.Inject - -class IntegrationUseCaseImpl @Inject constructor( - private val integrationRepository: IntegrationRepository -) : IntegrationUseCase { - override suspend fun registerDevice(deviceRegistration: DeviceRegistration) { - integrationRepository.registerDevice(deviceRegistration) - } - - override suspend fun updateRegistration( - appVersion: String?, - deviceName: String?, - manufacturer: String?, - model: String?, - osVersion: String?, - pushUrl: String?, - pushToken: String? - ) { - - integrationRepository.updateRegistration( - DeviceRegistration( - appVersion, - deviceName, - pushToken - ) - ) - } - - override suspend fun getRegistration(): DeviceRegistration { - return integrationRepository.getRegistration() - } - - override suspend fun isRegistered(): Boolean { - return integrationRepository.isRegistered() - } - - override suspend fun renderTemplate(template: String, variables: Map): String { - return integrationRepository.renderTemplate(template, variables) - } - - override suspend fun updateLocation(updateLocation: UpdateLocation) { - return integrationRepository.updateLocation(updateLocation) - } - - override suspend fun callService(domain: String, service: String, serviceData: HashMap) { - return integrationRepository.callService(domain, service, serviceData) - } - - override suspend fun fireEvent(eventType: String, eventData: Map) { - return integrationRepository.fireEvent(eventType, eventData) - } - - override suspend fun scanTag(data: HashMap) { - return integrationRepository.scanTag(data) - } - - override suspend fun getZones(): Array> { - return integrationRepository.getZones() - } - - override suspend fun setFullScreenEnabled(enabled: Boolean) { - return integrationRepository.setFullScreenEnabled(enabled) - } - - override suspend fun isFullScreenEnabled(): Boolean { - return integrationRepository.isFullScreenEnabled() - } - - override suspend fun sessionTimeOut(value: Int) { - return integrationRepository.sessionTimeOut(value) - } - - override suspend fun getSessionTimeOut(): Int { - return integrationRepository.getSessionTimeOut() - } - - override suspend fun setSessionExpireMillis(value: Long) { - return integrationRepository.setSessionExpireMillis(value) - } - - override suspend fun getSessionExpireMillis(): Long { - return integrationRepository.getSessionExpireMillis() - } - - override suspend fun getServices(): Array { - return integrationRepository.getServices() - } - - override suspend fun getEntities(): Array> { - return integrationRepository.getEntities() - } - - override suspend fun getPanels(): Array { - return integrationRepository.getPanels() - } - - override suspend fun getThemeColor(): String { - return integrationRepository.getThemeColor() - } - - override suspend fun getHomeAssistantVersion(): String { - return integrationRepository.getHomeAssistantVersion() - } - - override suspend fun registerSensor(sensorRegistration: SensorRegistration) { - return integrationRepository.registerSensor(sensorRegistration) - } - - override suspend fun updateSensors(sensors: Array>): Boolean { - return integrationRepository.updateSensors(sensors) - } -} diff --git a/domain/src/main/java/io/homeassistant/companion/android/domain/themes/ThemesUseCase.kt b/domain/src/main/java/io/homeassistant/companion/android/domain/themes/ThemesUseCase.kt deleted file mode 100644 index 994451f22..000000000 --- a/domain/src/main/java/io/homeassistant/companion/android/domain/themes/ThemesUseCase.kt +++ /dev/null @@ -1,8 +0,0 @@ -package io.homeassistant.companion.android.domain.themes - -interface ThemesUseCase { - - suspend fun getCurrentTheme(): String? - - suspend fun saveTheme(theme: String?) -} diff --git a/domain/src/main/java/io/homeassistant/companion/android/domain/themes/ThemesUseCaseImpl.kt b/domain/src/main/java/io/homeassistant/companion/android/domain/themes/ThemesUseCaseImpl.kt deleted file mode 100644 index c8039a856..000000000 --- a/domain/src/main/java/io/homeassistant/companion/android/domain/themes/ThemesUseCaseImpl.kt +++ /dev/null @@ -1,15 +0,0 @@ -package io.homeassistant.companion.android.domain.themes - -import javax.inject.Inject - -class ThemesUseCaseImpl @Inject constructor( - private val themesRepository: ThemesRepository -) : ThemesUseCase { - override suspend fun getCurrentTheme(): String? { - return themesRepository.getCurrentTheme() - } - - override suspend fun saveTheme(theme: String?) { - theme?.let { themesRepository.saveTheme(it) } - } -} diff --git a/domain/src/main/java/io/homeassistant/companion/android/domain/url/UrlUseCase.kt b/domain/src/main/java/io/homeassistant/companion/android/domain/url/UrlUseCase.kt deleted file mode 100644 index a7a7186d6..000000000 --- a/domain/src/main/java/io/homeassistant/companion/android/domain/url/UrlUseCase.kt +++ /dev/null @@ -1,18 +0,0 @@ -package io.homeassistant.companion.android.domain.url - -import java.net.URL - -interface UrlUseCase { - - suspend fun getApiUrls(): Array - - suspend fun saveRegistrationUrls(cloudHookUrl: String, remoteUiUrl: String, webhookId: String) - - suspend fun getUrl(isInternal: Boolean? = null): URL? - - suspend fun saveUrl(url: String, isInternal: Boolean? = null) - - suspend fun getHomeWifiSsids(): Set - - suspend fun saveHomeWifiSsids(ssid: Set) -} diff --git a/domain/src/main/java/io/homeassistant/companion/android/domain/url/UrlUseCaseImpl.kt b/domain/src/main/java/io/homeassistant/companion/android/domain/url/UrlUseCaseImpl.kt deleted file mode 100644 index bbe9df448..000000000 --- a/domain/src/main/java/io/homeassistant/companion/android/domain/url/UrlUseCaseImpl.kt +++ /dev/null @@ -1,36 +0,0 @@ -package io.homeassistant.companion.android.domain.url - -import java.net.URL -import javax.inject.Inject - -class UrlUseCaseImpl @Inject constructor( - private val urlRepository: UrlRepository -) : UrlUseCase { - override suspend fun getApiUrls(): Array { - return urlRepository.getApiUrls() - } - - override suspend fun saveRegistrationUrls( - cloudHookUrl: String, - remoteUiUrl: String, - webhookId: String - ) { - urlRepository.saveRegistrationUrls(cloudHookUrl, remoteUiUrl, webhookId) - } - - override suspend fun getUrl(isInternal: Boolean?): URL? { - return urlRepository.getUrl(isInternal) - } - - override suspend fun saveUrl(url: String, isInternal: Boolean?) { - urlRepository.saveUrl(url, isInternal) - } - - override suspend fun getHomeWifiSsids(): Set { - return urlRepository.getHomeWifiSsids() - } - - override suspend fun saveHomeWifiSsids(ssid: Set) { - urlRepository.saveHomeWifiSsids(ssid) - } -} diff --git a/domain/src/test/java/io/homeassistant/companion/android/domain/authentication/AuthenticationUseCaseImplSpec.kt b/domain/src/test/java/io/homeassistant/companion/android/domain/authentication/AuthenticationUseCaseImplSpec.kt deleted file mode 100644 index 4477372a9..000000000 --- a/domain/src/test/java/io/homeassistant/companion/android/domain/authentication/AuthenticationUseCaseImplSpec.kt +++ /dev/null @@ -1,76 +0,0 @@ -package io.homeassistant.companion.android.domain.authentication - -import io.mockk.coEvery -import io.mockk.coVerify -import io.mockk.mockk -import java.net.URL -import kotlinx.coroutines.runBlocking -import org.assertj.core.api.Assertions.assertThat -import org.spekframework.spek2.Spek -import org.spekframework.spek2.style.specification.describe - -object AuthenticationUseCaseImplSpec : Spek({ - - describe("authentication use case") { - val authenticationRepository by memoized { mockk(relaxUnitFun = true) } - val useCase by memoized { AuthenticationUseCaseImpl(authenticationRepository) } - - describe("register authorization code") { - beforeEachTest { - runBlocking { useCase.registerAuthorizationCode("123456") } - } - - it("should call the repository") { - coVerify { authenticationRepository.registerAuthorizationCode("123456") } - } - } - - describe("retrieve external authentication") { - lateinit var externalAuth: String - beforeEachTest { - coEvery { authenticationRepository.retrieveExternalAuthentication(false) } returns "{\"access_token\":\"ABCDEFGH\",\"expires_in\":1800}" - externalAuth = runBlocking { useCase.retrieveExternalAuthentication() } - } - - it("should return the repository value") { - assertThat(externalAuth).isEqualTo("{\"access_token\":\"ABCDEFGH\",\"expires_in\":1800}") - } - } - - describe("revoke session") { - beforeEachTest { - runBlocking { useCase.revokeSession() } - } - - it("should call the repository") { - coVerify { authenticationRepository.revokeSession() } - } - } - - describe("session state") { - lateinit var sessionState: SessionState - beforeEachTest { - coEvery { authenticationRepository.getSessionState() } returns SessionState.CONNECTED - sessionState = runBlocking { useCase.getSessionState() } - } - - it("should return the given SessionState") { - assertThat(sessionState).isEqualTo(SessionState.CONNECTED) - } - } - - describe("build authentication url") { - lateinit var url: URL - beforeEachTest { - coEvery { - authenticationRepository.buildAuthenticationUrl("homeassistant://auth-callback") - } returns URL("https://demo.home-assistant.io/auth/authorize?response_type=code&client_id=https://home-assistant.io/android&redirect_uri=homeassistant://auth-callback") - url = runBlocking { useCase.buildAuthenticationUrl("homeassistant://auth-callback") } - } - - it("should return the given url") { - assertThat(url).isEqualTo(URL("https://demo.home-assistant.io/auth/authorize?response_type=code&client_id=https://home-assistant.io/android&redirect_uri=homeassistant://auth-callback")) - } - } - } -}) diff --git a/domain/src/test/java/io/homeassistant/companion/android/domain/integration/IntegrationUseCaseImplSpec.kt b/domain/src/test/java/io/homeassistant/companion/android/domain/integration/IntegrationUseCaseImplSpec.kt deleted file mode 100644 index 40de7fb1e..000000000 --- a/domain/src/test/java/io/homeassistant/companion/android/domain/integration/IntegrationUseCaseImplSpec.kt +++ /dev/null @@ -1,116 +0,0 @@ -package io.homeassistant.companion.android.domain.integration - -import io.mockk.Runs -import io.mockk.coEvery -import io.mockk.coVerify -import io.mockk.just -import io.mockk.mockk -import kotlinx.coroutines.runBlocking -import org.spekframework.spek2.Spek -import org.spekframework.spek2.style.specification.describe - -object IntegrationUseCaseImplSpec : Spek({ - describe("integration use case") { - - val integrationRepository by memoized { - mockk( - relaxed = true, - relaxUnitFun = true - ) - } - val useCase by memoized { IntegrationUseCaseImpl(integrationRepository) } - - describe("registerDevice") { - val deviceRegistration = mockk() - beforeEachTest { - coEvery { - integrationRepository.registerDevice(any()) - } just Runs - - runBlocking { - useCase.registerDevice(deviceRegistration) - } - } - - it("should call repository") { - coVerify { - integrationRepository.registerDevice(deviceRegistration) - } - } - } - - describe("updateRegistration") { - beforeEachTest { - coEvery { - integrationRepository.updateRegistration(any()) - } just Runs - - runBlocking { - useCase.updateRegistration("1", "2", "3", "4", "5", "6", "7") - } - } - - it("should call repository") { - coVerify { - integrationRepository.updateRegistration(DeviceRegistration( - "1", - "2", - "7" - )) - } - } - } - - describe("isRegistered") { - beforeEachTest { - runBlocking { useCase.isRegistered() } - } - - it("should call the repository") { - coVerify { integrationRepository.isRegistered() } - } - } - - describe("updateLocation") { - val location = mockk() - beforeEachTest { - runBlocking { useCase.updateLocation(location) } - } - - it("should call the repository") { - coVerify { integrationRepository.updateLocation(location) } - } - } - - describe("callService") { - val serviceData = mockk>() - beforeEachTest { - runBlocking { useCase.callService("domain", "service", serviceData) } - } - - it("should call the repository") { - coVerify { integrationRepository.callService("domain", "service", serviceData) } - } - } - - describe("getZones") { - beforeEachTest { - runBlocking { useCase.getZones() } - } - - it("should call the repository") { - coVerify { integrationRepository.getZones() } - } - } - - describe("getThemeColor") { - beforeEachTest { - runBlocking { useCase.getThemeColor() } - } - - it("should call the repository") { - coVerify { integrationRepository.getThemeColor() } - } - } - } -}) diff --git a/domain/src/test/java/io/homeassistant/companion/android/domain/url/UrlUseCaseImplSpec.kt b/domain/src/test/java/io/homeassistant/companion/android/domain/url/UrlUseCaseImplSpec.kt deleted file mode 100644 index 388f54893..000000000 --- a/domain/src/test/java/io/homeassistant/companion/android/domain/url/UrlUseCaseImplSpec.kt +++ /dev/null @@ -1,105 +0,0 @@ -package io.homeassistant.companion.android.domain.url - -import io.mockk.Runs -import io.mockk.coEvery -import io.mockk.coVerify -import io.mockk.just -import io.mockk.mockk -import kotlinx.coroutines.runBlocking -import org.spekframework.spek2.Spek -import org.spekframework.spek2.style.specification.describe - -object UrlUseCaseImplSpec : Spek({ - describe("integration use case") { - - val urlRepository by memoized { - mockk( - relaxed = true, - relaxUnitFun = true - ) - } - val useCase by memoized { UrlUseCaseImpl(urlRepository) } - - describe("getApiUrls") { - beforeEachTest { - runBlocking { - useCase.getApiUrls() - } - } - - it("should call repository") { - coVerify { - urlRepository.getApiUrls() - } - } - } - - describe("saveRegistrationUrls") { - beforeEachTest { - coEvery { - urlRepository.saveRegistrationUrls("1", "2", "3") - } just Runs - - runBlocking { - useCase.saveRegistrationUrls("1", "2", "3") - } - } - - it("should call repository") { - coVerify { - urlRepository.saveRegistrationUrls("1", "2", "3") - } - } - } - - describe("getUrl") { - beforeEachTest { - runBlocking { useCase.getUrl(true) } - } - - it("should call the repository") { - coVerify { urlRepository.getUrl(true) } - } - } - - describe("getUrl") { - beforeEachTest { - runBlocking { useCase.getUrl(false) } - } - - it("should call the repository") { - coVerify { urlRepository.getUrl(false) } - } - } - - describe("saveUrl") { - beforeEachTest { - runBlocking { useCase.saveUrl("1", true) } - } - - it("should call the repository") { - coVerify { urlRepository.saveUrl("1", true) } - } - } - - describe("getHomeWifiSsids") { - beforeEachTest { - runBlocking { useCase.getHomeWifiSsids() } - } - - it("should call the repository") { - coVerify { urlRepository.getHomeWifiSsids() } - } - } - - describe("saveHomeWifiSsid") { - beforeEachTest { - runBlocking { useCase.saveHomeWifiSsids(setOf("1", "2")) } - } - - it("should call the repository") { - coVerify { urlRepository.saveHomeWifiSsids(setOf("1", "2")) } - } - } - } -}) diff --git a/settings.gradle.kts b/settings.gradle.kts index bf624153d..6c3c1e697 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1 +1 @@ -include(":data", ":domain", ":common", ":app") +include(":common", ":app")