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")