diff --git a/data/settings-datastore/.gitignore b/data/settings-datastore/.gitignore new file mode 100644 index 000000000..42afabfd2 --- /dev/null +++ b/data/settings-datastore/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/data/settings-datastore/build.gradle.kts b/data/settings-datastore/build.gradle.kts new file mode 100644 index 000000000..fad531bfc --- /dev/null +++ b/data/settings-datastore/build.gradle.kts @@ -0,0 +1,104 @@ +/* + * Copyright (C) 2026 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +plugins { + alias(libs.plugins.android.library) + alias(libs.plugins.kotlin.android) + alias(libs.plugins.google.protobuf) + alias(libs.plugins.kotlin.kapt) +} + +android { + namespace = "com.google.jetpackcamera.data.settingsdatastore" + compileSdk = 35 + + defaultConfig { + minSdk = 23 + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + consumerProguardFiles("consumer-rules.pro") + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } + kotlinOptions { + jvmTarget = "11" + } +} + +dependencies { + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.appcompat) + implementation(libs.material) + + // Hilt + implementation(libs.dagger.hilt.android) + kapt(libs.dagger.hilt.compiler) + + // proto datastore + implementation(libs.protobuf.kotlin.lite) + implementation(libs.androidx.datastore) + + // Access Model data + implementation(project(":core:common")) + implementation(project(":core:model")) + implementation(project(":data:settings")) + + // Testing + testImplementation(libs.junit) + testImplementation(libs.truth) + androidTestImplementation(libs.androidx.espresso.core) + androidTestImplementation(libs.androidx.junit) + androidTestImplementation(libs.truth) + androidTestImplementation(libs.kotlinx.coroutines.test) +} + +protobuf { + protoc { + artifact = "com.google.protobuf:protoc:3.21.12" + } + + generateProtoTasks { + all().forEach { task -> + task.builtins { + create("java") { + option("lite") + } + } + + task.builtins { + create("kotlin") { + option("lite") + } + } + } + } +} + +// Allow references to generated code +kapt { + correctErrorTypes = true +} diff --git a/data/settings-datastore/consumer-rules.pro b/data/settings-datastore/consumer-rules.pro new file mode 100644 index 000000000..e69de29bb diff --git a/data/settings-datastore/proguard-rules.pro b/data/settings-datastore/proguard-rules.pro new file mode 100644 index 000000000..481bb4348 --- /dev/null +++ b/data/settings-datastore/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/data/settings/src/androidTest/java/com/google/jetpackcamera/settings/DataStoreModuleTest.kt b/data/settings-datastore/src/androidTest/java/com/google/jetpackcamera/data/settings_datastore/DataStoreModuleTest.kt similarity index 100% rename from data/settings/src/androidTest/java/com/google/jetpackcamera/settings/DataStoreModuleTest.kt rename to data/settings-datastore/src/androidTest/java/com/google/jetpackcamera/data/settings_datastore/DataStoreModuleTest.kt diff --git a/data/settings/src/androidTest/java/com/google/jetpackcamera/settings/LocalSettingsRepositoryInstrumentedTest.kt b/data/settings-datastore/src/androidTest/java/com/google/jetpackcamera/data/settings_datastore/LocalSettingsRepositoryInstrumentedTest.kt similarity index 98% rename from data/settings/src/androidTest/java/com/google/jetpackcamera/settings/LocalSettingsRepositoryInstrumentedTest.kt rename to data/settings-datastore/src/androidTest/java/com/google/jetpackcamera/data/settings_datastore/LocalSettingsRepositoryInstrumentedTest.kt index fafb38dc3..65a6146eb 100644 --- a/data/settings/src/androidTest/java/com/google/jetpackcamera/settings/LocalSettingsRepositoryInstrumentedTest.kt +++ b/data/settings-datastore/src/androidTest/java/com/google/jetpackcamera/data/settings_datastore/LocalSettingsRepositoryInstrumentedTest.kt @@ -22,6 +22,7 @@ import androidx.datastore.dataStoreFile import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 import com.google.common.truth.Truth.assertThat +import com.google.jetpackcamera.data.settingsdatastore.LocalSettingsRepository import com.google.jetpackcamera.model.CaptureMode import com.google.jetpackcamera.model.DarkMode import com.google.jetpackcamera.model.DynamicRange diff --git a/data/settings-datastore/src/main/AndroidManifest.xml b/data/settings-datastore/src/main/AndroidManifest.xml new file mode 100644 index 000000000..8322d22ca --- /dev/null +++ b/data/settings-datastore/src/main/AndroidManifest.xml @@ -0,0 +1,19 @@ + + + + + \ No newline at end of file diff --git a/data/settings/src/main/java/com/google/jetpackcamera/settings/DataStoreModule.kt b/data/settings-datastore/src/main/java/com/google/jetpackcamera/data/settingsdatastore/DataStoreModule.kt similarity index 91% rename from data/settings/src/main/java/com/google/jetpackcamera/settings/DataStoreModule.kt rename to data/settings-datastore/src/main/java/com/google/jetpackcamera/data/settingsdatastore/DataStoreModule.kt index 7f8862455..806eecb3d 100644 --- a/data/settings/src/main/java/com/google/jetpackcamera/settings/DataStoreModule.kt +++ b/data/settings-datastore/src/main/java/com/google/jetpackcamera/data/settingsdatastore/DataStoreModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023 The Android Open Source Project + * Copyright (C) 2026 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,13 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.google.jetpackcamera.settings +package com.google.jetpackcamera.data.settingsdatastore import android.content.Context import androidx.datastore.core.DataStore import androidx.datastore.core.DataStoreFactory import androidx.datastore.core.handlers.ReplaceFileCorruptionHandler import androidx.datastore.dataStoreFile +import com.google.jetpackcamera.settings.JcaSettings import dagger.Module import dagger.Provides import dagger.hilt.InstallIn @@ -30,7 +31,6 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.SupervisorJob -// with hilt will ensure datastore instance access is unique per file @Module @InstallIn(SingletonComponent::class) object DataStoreModule { diff --git a/data/settings/src/main/java/com/google/jetpackcamera/settings/JcaSettingsSerializer.kt b/data/settings-datastore/src/main/java/com/google/jetpackcamera/data/settingsdatastore/JcaSettingsSerializer.kt similarity index 94% rename from data/settings/src/main/java/com/google/jetpackcamera/settings/JcaSettingsSerializer.kt rename to data/settings-datastore/src/main/java/com/google/jetpackcamera/data/settingsdatastore/JcaSettingsSerializer.kt index 81b6382d4..38fa5b92f 100644 --- a/data/settings/src/main/java/com/google/jetpackcamera/settings/JcaSettingsSerializer.kt +++ b/data/settings-datastore/src/main/java/com/google/jetpackcamera/data/settingsdatastore/JcaSettingsSerializer.kt @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023 The Android Open Source Project + * Copyright (C) 2026 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.google.jetpackcamera.settings +package com.google.jetpackcamera.data.settingsdatastore import androidx.datastore.core.CorruptionException import androidx.datastore.core.Serializer @@ -26,6 +26,7 @@ import com.google.jetpackcamera.model.proto.LensFacing import com.google.jetpackcamera.model.proto.StabilizationMode import com.google.jetpackcamera.model.proto.StreamConfig import com.google.jetpackcamera.model.proto.VideoQuality +import com.google.jetpackcamera.settings.JcaSettings import com.google.protobuf.InvalidProtocolBufferException import java.io.InputStream import java.io.OutputStream diff --git a/data/settings/src/main/java/com/google/jetpackcamera/settings/LocalSettingsRepository.kt b/data/settings-datastore/src/main/java/com/google/jetpackcamera/data/settingsdatastore/LocalSettingsRepository.kt similarity index 96% rename from data/settings/src/main/java/com/google/jetpackcamera/settings/LocalSettingsRepository.kt rename to data/settings-datastore/src/main/java/com/google/jetpackcamera/data/settingsdatastore/LocalSettingsRepository.kt index 7034f9eba..5e90a740b 100644 --- a/data/settings/src/main/java/com/google/jetpackcamera/settings/LocalSettingsRepository.kt +++ b/data/settings-datastore/src/main/java/com/google/jetpackcamera/data/settingsdatastore/LocalSettingsRepository.kt @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023 The Android Open Source Project + * Copyright (C) 2026 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.google.jetpackcamera.settings +package com.google.jetpackcamera.data.settingsdatastore import androidx.datastore.core.DataStore import com.google.jetpackcamera.core.common.DefaultCaptureModeOverride @@ -39,13 +39,14 @@ import com.google.jetpackcamera.model.proto.DarkMode as DarkModeProto import com.google.jetpackcamera.model.proto.FlashMode as FlashModeProto import com.google.jetpackcamera.model.proto.StabilizationMode as StabilizationModeProto import com.google.jetpackcamera.model.proto.StreamConfig as StreamConfigProto +import com.google.jetpackcamera.settings.JcaSettings +import com.google.jetpackcamera.settings.SettingsRepository import com.google.jetpackcamera.settings.model.CameraAppSettings import javax.inject.Inject import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.map - /** - * Implementation of [SettingsRepository] with locally stored settings. + * Implementation of [com.google.jetpackcamera.settings.SettingsRepository] with locally stored settings. */ class LocalSettingsRepository @Inject constructor( private val jcaSettings: DataStore, diff --git a/data/settings-datastore/src/main/java/com/google/jetpackcamera/data/settingsdatastore/SettingsModule.kt b/data/settings-datastore/src/main/java/com/google/jetpackcamera/data/settingsdatastore/SettingsModule.kt new file mode 100644 index 000000000..5eef413dc --- /dev/null +++ b/data/settings-datastore/src/main/java/com/google/jetpackcamera/data/settingsdatastore/SettingsModule.kt @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2026 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.jetpackcamera.data.settingsdatastore + +import com.google.jetpackcamera.settings.SettingsRepository +import dagger.Binds +import dagger.Module +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent + +/** + * Dagger [Module] for settings data layer. + */ +@Module +@InstallIn(SingletonComponent::class) +interface SettingsModule { + + @Binds + fun bindsSettingsRepository( + localSettingsRepository: LocalSettingsRepository + ): SettingsRepository +} diff --git a/data/settings/src/main/java/com/google/jetpackcamera/settings/test/FakeDataStoreModule.kt b/data/settings-datastore/src/main/java/com/google/jetpackcamera/data/settingsdatastore/test/FakeDataStoreModule.kt similarity index 95% rename from data/settings/src/main/java/com/google/jetpackcamera/settings/test/FakeDataStoreModule.kt rename to data/settings-datastore/src/main/java/com/google/jetpackcamera/data/settingsdatastore/test/FakeDataStoreModule.kt index 1b04f53c7..ca830363e 100644 --- a/data/settings/src/main/java/com/google/jetpackcamera/settings/test/FakeDataStoreModule.kt +++ b/data/settings-datastore/src/main/java/com/google/jetpackcamera/data/settingsdatastore/test/FakeDataStoreModule.kt @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.google.jetpackcamera.settings.test +package com.google.jetpackcamera.data.settingsdatastore.test import androidx.datastore.core.DataStore import androidx.datastore.core.DataStoreFactory diff --git a/data/settings/src/main/java/com/google/jetpackcamera/settings/test/FakeJcaSettingsSerializer.kt b/data/settings-datastore/src/main/java/com/google/jetpackcamera/data/settingsdatastore/test/FakeJcaSettingsSerializer.kt similarity index 93% rename from data/settings/src/main/java/com/google/jetpackcamera/settings/test/FakeJcaSettingsSerializer.kt rename to data/settings-datastore/src/main/java/com/google/jetpackcamera/data/settingsdatastore/test/FakeJcaSettingsSerializer.kt index 033f8ad62..6482de525 100644 --- a/data/settings/src/main/java/com/google/jetpackcamera/settings/test/FakeJcaSettingsSerializer.kt +++ b/data/settings-datastore/src/main/java/com/google/jetpackcamera/data/settingsdatastore/test/FakeJcaSettingsSerializer.kt @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023 The Android Open Source Project + * Copyright (C) 2026 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,10 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.google.jetpackcamera.settings.test +package com.google.jetpackcamera.data.settingsdatastore.test import androidx.datastore.core.CorruptionException import androidx.datastore.core.Serializer +import com.google.jetpackcamera.data.settingsdatastore.UNLIMITED_VIDEO_DURATION import com.google.jetpackcamera.model.proto.AspectRatio import com.google.jetpackcamera.model.proto.DarkMode import com.google.jetpackcamera.model.proto.DynamicRange @@ -27,7 +28,6 @@ import com.google.jetpackcamera.model.proto.StabilizationMode import com.google.jetpackcamera.model.proto.StreamConfig import com.google.jetpackcamera.model.proto.VideoQuality import com.google.jetpackcamera.settings.JcaSettings -import com.google.jetpackcamera.settings.UNLIMITED_VIDEO_DURATION import com.google.protobuf.InvalidProtocolBufferException import java.io.IOException import java.io.InputStream diff --git a/data/settings/src/main/proto/com/google/jetpackcamera/settings/jca_settings.proto b/data/settings-datastore/src/main/proto/com/google/jetpackcamera/settings/jca_settings.proto similarity index 100% rename from data/settings/src/main/proto/com/google/jetpackcamera/settings/jca_settings.proto rename to data/settings-datastore/src/main/proto/com/google/jetpackcamera/settings/jca_settings.proto diff --git a/data/settings/build.gradle.kts b/data/settings/build.gradle.kts index 8cb89eb9d..a37d23d7a 100644 --- a/data/settings/build.gradle.kts +++ b/data/settings/build.gradle.kts @@ -19,7 +19,6 @@ plugins { alias(libs.plugins.kotlin.android) alias(libs.plugins.kotlin.kapt) alias(libs.plugins.dagger.hilt.android) - alias(libs.plugins.google.protobuf) } android { @@ -76,46 +75,7 @@ dependencies { implementation(libs.dagger.hilt.android) kapt(libs.dagger.hilt.compiler) - // proto datastore - implementation(libs.androidx.datastore) - implementation(libs.protobuf.kotlin.lite) - - // Testing - testImplementation(libs.junit) - testImplementation(libs.truth) - androidTestImplementation(libs.androidx.espresso.core) - androidTestImplementation(libs.androidx.junit) - androidTestImplementation(libs.truth) - androidTestImplementation(libs.kotlinx.coroutines.test) - // Access Model data implementation(project(":core:model")) implementation(project(":core:common")) -} - -protobuf { - protoc { - artifact = "com.google.protobuf:protoc:3.21.12" - } - - generateProtoTasks { - all().forEach { task -> - task.builtins { - create("java") { - option("lite") - } - } - - task.builtins { - create("kotlin") { - option("lite") - } - } - } - } -} - -// Allow references to generated code -kapt { - correctErrorTypes = true -} +} \ No newline at end of file diff --git a/data/settings/src/main/java/com/google/jetpackcamera/settings/SettingsModule.kt b/data/settings/src/main/java/com/google/jetpackcamera/settings/ConstraintsModule.kt similarity index 87% rename from data/settings/src/main/java/com/google/jetpackcamera/settings/SettingsModule.kt rename to data/settings/src/main/java/com/google/jetpackcamera/settings/ConstraintsModule.kt index f523b5580..f6489a328 100644 --- a/data/settings/src/main/java/com/google/jetpackcamera/settings/SettingsModule.kt +++ b/data/settings/src/main/java/com/google/jetpackcamera/settings/ConstraintsModule.kt @@ -22,17 +22,11 @@ import dagger.hilt.components.SingletonComponent import javax.inject.Singleton /** - * Dagger [Module] for settings data layer. + * Dagger [Module] for constraints data layer. */ @Module @InstallIn(SingletonComponent::class) -interface SettingsModule { - - @Binds - fun bindsSettingsRepository( - localSettingsRepository: LocalSettingsRepository - ): SettingsRepository - +interface ConstraintsModule { @Binds @Singleton fun bindsSettableConstraintsRepository( diff --git a/data/settings/src/test/java/com/google/jetpackcamera/settings/ProtoConversionTest.kt b/data/settings/src/test/java/com/google/jetpackcamera/settings/ProtoConversionTest.kt deleted file mode 100644 index 5ce8f2643..000000000 --- a/data/settings/src/test/java/com/google/jetpackcamera/settings/ProtoConversionTest.kt +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (C) 2024 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.google.jetpackcamera.settings - -import com.google.common.truth.Truth.assertThat -import com.google.jetpackcamera.model.DynamicRange -import com.google.jetpackcamera.model.DynamicRange.Companion.toProto -import com.google.jetpackcamera.model.ImageOutputFormat -import com.google.jetpackcamera.model.ImageOutputFormat.Companion.toProto -import com.google.jetpackcamera.model.proto.DynamicRange as DynamicRangeProto -import com.google.jetpackcamera.model.proto.ImageOutputFormat as ImageOutputFormatProto -import org.junit.Test -import org.junit.runner.RunWith -import org.junit.runners.JUnit4 - -@RunWith(JUnit4::class) -class ProtoConversionTest { - @Test - fun dynamicRange_convertsToCorrectProto() { - val correctConversions = { dynamicRange: DynamicRange -> - when (dynamicRange) { - DynamicRange.SDR -> DynamicRangeProto.DYNAMIC_RANGE_SDR - DynamicRange.HLG10 -> DynamicRangeProto.DYNAMIC_RANGE_HLG10 - else -> TODO( - "Test does not yet contain correct conversion for dynamic range " + - "type: ${dynamicRange.name}" - ) - } - } - - enumValues().forEach { - assertThat(correctConversions(it)).isEqualTo(it.toProto()) - } - } - - @Test - fun dynamicRangeProto_convertsToCorrectDynamicRange() { - val correctConversions = { dynamicRangeProto: DynamicRangeProto -> - when (dynamicRangeProto) { - DynamicRangeProto.DYNAMIC_RANGE_SDR, - DynamicRangeProto.UNRECOGNIZED, - DynamicRangeProto.DYNAMIC_RANGE_UNSPECIFIED - -> DynamicRange.SDR - - DynamicRangeProto.DYNAMIC_RANGE_HLG10 -> DynamicRange.HLG10 - else -> TODO( - "Test does not yet contain correct conversion for dynamic range " + - "proto type: ${dynamicRangeProto.name}" - ) - } - } - - enumValues().forEach { - assertThat(correctConversions(it)).isEqualTo(DynamicRange.fromProto(it)) - } - } - - @Test - fun imageOutputFormat_convertsToCorrectProto() { - val correctConversions = { imageOutputFormat: ImageOutputFormat -> - when (imageOutputFormat) { - ImageOutputFormat.JPEG -> ImageOutputFormatProto.IMAGE_OUTPUT_FORMAT_JPEG - ImageOutputFormat.JPEG_ULTRA_HDR - -> ImageOutputFormatProto.IMAGE_OUTPUT_FORMAT_JPEG_ULTRA_HDR - else -> TODO( - "Test does not yet contain correct conversion for image output format " + - "type: ${imageOutputFormat.name}" - ) - } - } - - enumValues().forEach { - assertThat(correctConversions(it)).isEqualTo(it.toProto()) - } - } - - @Test - fun imageOutputFormatProto_convertsToCorrectImageOutputFormat() { - val correctConversions = { imageOutputFormatProto: ImageOutputFormatProto -> - when (imageOutputFormatProto) { - ImageOutputFormatProto.IMAGE_OUTPUT_FORMAT_JPEG, - ImageOutputFormatProto.UNRECOGNIZED - -> ImageOutputFormat.JPEG - ImageOutputFormatProto.IMAGE_OUTPUT_FORMAT_JPEG_ULTRA_HDR - -> ImageOutputFormat.JPEG_ULTRA_HDR - else -> TODO( - "Test does not yet contain correct conversion for image output format " + - "proto type: ${imageOutputFormatProto.name}" - ) - } - } - - enumValues().forEach { - assertThat(correctConversions(it)).isEqualTo(ImageOutputFormat.fromProto(it)) - } - } -} diff --git a/feature/preview/build.gradle.kts b/feature/preview/build.gradle.kts index 60239e42d..9ddbadc6a 100644 --- a/feature/preview/build.gradle.kts +++ b/feature/preview/build.gradle.kts @@ -140,6 +140,7 @@ dependencies { implementation(project(":core:common")) implementation(project(":data:media")) implementation(project(":data:settings")) + implementation(project(":data:settings-datastore")) implementation(project(":core:model")) testImplementation(project(":core:common")) implementation(project(":ui:components:capture")) diff --git a/feature/settings/build.gradle.kts b/feature/settings/build.gradle.kts index 2b2ea90d6..7cae2d917 100644 --- a/feature/settings/build.gradle.kts +++ b/feature/settings/build.gradle.kts @@ -121,6 +121,7 @@ dependencies { implementation(libs.protobuf.kotlin.lite) implementation(project(":data:settings")) + implementation(project(":data:settings-datastore")) implementation(project(":core:model")) } diff --git a/feature/settings/src/androidTest/java/com/google/jetpackcamera/settings/CameraAppSettingsViewModelTest.kt b/feature/settings/src/androidTest/java/com/google/jetpackcamera/settings/CameraAppSettingsViewModelTest.kt index 6d09cf21a..c8dc3040e 100644 --- a/feature/settings/src/androidTest/java/com/google/jetpackcamera/settings/CameraAppSettingsViewModelTest.kt +++ b/feature/settings/src/androidTest/java/com/google/jetpackcamera/settings/CameraAppSettingsViewModelTest.kt @@ -23,6 +23,8 @@ import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry import com.google.common.truth.Truth.assertThat +import com.google.jetpackcamera.data.settingsdatastore.JcaSettingsSerializer +import com.google.jetpackcamera.data.settingsdatastore.LocalSettingsRepository import com.google.jetpackcamera.model.CaptureMode import com.google.jetpackcamera.model.DarkMode import com.google.jetpackcamera.model.LensFacing diff --git a/settings.gradle.kts b/settings.gradle.kts index d20010988..c146957c0 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -56,3 +56,4 @@ include(":core:model") include(":ui:uistate:postcapture") include(":ui:uistateadapter:postcapture") include(":core:camera:postprocess") +include(":data:settings-datastore")