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..8051fa6b5
--- /dev/null
+++ b/data/settings-datastore/build.gradle.kts
@@ -0,0 +1,123 @@
+/*
+ * 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 = libs.versions.compileSdk.get().toInt()
+
+ defaultConfig {
+ minSdk = libs.versions.minSdk.get().toInt()
+ testOptions.targetSdk = libs.versions.targetSdk.get().toInt()
+ lint.targetSdk = libs.versions.targetSdk.get().toInt()
+
+ 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_17
+ targetCompatibility = JavaVersion.VERSION_17
+ }
+ kotlin {
+ jvmToolchain(17)
+ }
+
+ @Suppress("UnstableApiUsage")
+ testOptions {
+ managedDevices {
+ localDevices {
+ create("pixel2Api28") {
+ device = "Pixel 2"
+ apiLevel = 28
+ }
+ create("pixel8Api34") {
+ device = "Pixel 8"
+ apiLevel = 34
+ systemImageSource = "aosp_atd"
+ }
+ }
+ }
+ }
+}
+
+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/settingsdatastore/DataStoreModuleTest.kt
similarity index 83%
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/settingsdatastore/DataStoreModuleTest.kt
index a6093dc8d..749d7f895 100644
--- a/data/settings/src/androidTest/java/com/google/jetpackcamera/settings/DataStoreModuleTest.kt
+++ b/data/settings-datastore/src/androidTest/java/com/google/jetpackcamera/data/settingsdatastore/DataStoreModuleTest.kt
@@ -13,14 +13,16 @@
* 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 androidx.test.ext.junit.runners.AndroidJUnit4
import com.google.common.truth.Truth.assertThat
-import com.google.jetpackcamera.settings.test.FakeDataStoreModule
-import com.google.jetpackcamera.settings.test.FakeJcaSettingsSerializer
+import com.google.jetpackcamera.data.settingsdatastore.test.FakeDataStoreModule
+import com.google.jetpackcamera.data.settingsdatastore.test.FakeJcaSettingsSerializer
+import com.google.jetpackcamera.settings.JcaSettings
import java.io.File
+import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.test.advanceUntilIdle
import kotlinx.coroutines.test.runTest
@@ -31,7 +33,7 @@ import org.junit.rules.TemporaryFolder
import org.junit.runner.RunWith
@RunWith(AndroidJUnit4::class)
-@OptIn(kotlinx.coroutines.ExperimentalCoroutinesApi::class)
+@OptIn(ExperimentalCoroutinesApi::class)
class DataStoreModuleTest {
@get:Rule
val tempFolder = TemporaryFolder()
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/settingsdatastore/LocalSettingsRepositoryInstrumentedTest.kt
similarity index 97%
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/settingsdatastore/LocalSettingsRepositoryInstrumentedTest.kt
index fafb38dc3..f35fa1124 100644
--- a/data/settings/src/androidTest/java/com/google/jetpackcamera/settings/LocalSettingsRepositoryInstrumentedTest.kt
+++ b/data/settings-datastore/src/androidTest/java/com/google/jetpackcamera/data/settingsdatastore/LocalSettingsRepositoryInstrumentedTest.kt
@@ -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 android.content.Context
import androidx.datastore.core.DataStore
@@ -22,13 +22,14 @@ 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.DataStoreModule.provideDataStore
import com.google.jetpackcamera.model.CaptureMode
import com.google.jetpackcamera.model.DarkMode
import com.google.jetpackcamera.model.DynamicRange
import com.google.jetpackcamera.model.FlashMode
import com.google.jetpackcamera.model.ImageOutputFormat
import com.google.jetpackcamera.model.LensFacing
-import com.google.jetpackcamera.settings.DataStoreModule.provideDataStore
+import com.google.jetpackcamera.settings.JcaSettings
import com.google.jetpackcamera.settings.model.CameraAppSettings
import com.google.jetpackcamera.settings.model.DEFAULT_CAMERA_APP_SETTINGS
import java.io.File
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 f84a3248c..e47b1e9b2 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
@@ -27,6 +27,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 97%
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 e9f671991..939329bf8 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
@@ -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.CorruptionException
import androidx.datastore.core.Serializer
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/src/test/java/com/google/jetpackcamera/settings/ProtoConversionTest.kt b/data/settings-datastore/src/test/kotlin/ProtoConversionTest.kt
similarity index 99%
rename from data/settings/src/test/java/com/google/jetpackcamera/settings/ProtoConversionTest.kt
rename to data/settings-datastore/src/test/kotlin/ProtoConversionTest.kt
index 5ce8f2643..ac774b9f5 100644
--- a/data/settings/src/test/java/com/google/jetpackcamera/settings/ProtoConversionTest.kt
+++ b/data/settings-datastore/src/test/kotlin/ProtoConversionTest.kt
@@ -75,6 +75,7 @@ class ProtoConversionTest {
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}"
@@ -94,8 +95,10 @@ class ProtoConversionTest {
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}"
diff --git a/data/settings/build.gradle.kts b/data/settings/build.gradle.kts
index 8cb89eb9d..9534b3ae2 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 {
@@ -28,7 +27,6 @@ android {
defaultConfig {
minSdk = libs.versions.minSdk.get().toInt()
- testOptions.targetSdk = libs.versions.targetSdk.get().toInt()
lint.targetSdk = libs.versions.targetSdk.get().toInt()
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
@@ -50,23 +48,6 @@ android {
kotlin {
jvmToolchain(17)
}
-
- @Suppress("UnstableApiUsage")
- testOptions {
- managedDevices {
- localDevices {
- create("pixel2Api28") {
- device = "Pixel 2"
- apiLevel = 28
- }
- create("pixel8Api34") {
- device = "Pixel 8"
- apiLevel = 34
- systemImageSource = "aosp_atd"
- }
- }
- }
- }
}
dependencies {
@@ -76,45 +57,11 @@ 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
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/feature/preview/build.gradle.kts b/feature/preview/build.gradle.kts
index 0e63717c7..aa579f836 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 6c18183c7..d0a1f0af0 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -58,3 +58,4 @@ include(":ui:uistateadapter:postcapture")
include(":core:camera:postprocess")
include(":ui:controller")
include(":ui:controller:impl")
+include(":data:settings-datastore")