[externa/jetpack-camera-app] Revert hilt workaround am: eefd002b39 am: c69ae1ef46

Original change: https://android-review.googlesource.com/c/platform/external/jetpack-camera-app/+/3132235

Change-Id: I76e9e3c2b98b285789baac4f975de51ede36ff41
Signed-off-by: Automerger Merge Worker <[email protected]>
diff --git a/feature/permissions/src/main/java/com/google/jetpackcamera/permissions/PermissionsScreen.kt b/feature/permissions/src/main/java/com/google/jetpackcamera/permissions/PermissionsScreen.kt
index 69edca8..af17e30 100644
--- a/feature/permissions/src/main/java/com/google/jetpackcamera/permissions/PermissionsScreen.kt
+++ b/feature/permissions/src/main/java/com/google/jetpackcamera/permissions/PermissionsScreen.kt
@@ -60,10 +60,12 @@
     onNavigateToPreview: () -> Unit,
     openAppSettings: () -> Unit,
     permissionStates: MultiplePermissionsState,
-    viewModel: PermissionsViewModel = hiltViewModel()
+    viewModel: PermissionsViewModel = hiltViewModel<
+        PermissionsViewModel,
+        PermissionsViewModel.Factory
+        > { factory -> factory.create(permissionStates) }
 ) {
     Log.d(TAG, "PermissionsScreen")
-    viewModel.init(permissionStates)
     val permissionsUiState: PermissionsUiState by viewModel.permissionsUiState.collectAsState()
     if (permissionsUiState is PermissionsUiState.PermissionsNeeded) {
         val permissionEnum =
diff --git a/feature/permissions/src/main/java/com/google/jetpackcamera/permissions/PermissionsViewModel.kt b/feature/permissions/src/main/java/com/google/jetpackcamera/permissions/PermissionsViewModel.kt
index 9426e55..047442f 100644
--- a/feature/permissions/src/main/java/com/google/jetpackcamera/permissions/PermissionsViewModel.kt
+++ b/feature/permissions/src/main/java/com/google/jetpackcamera/permissions/PermissionsViewModel.kt
@@ -29,24 +29,23 @@
 import kotlinx.coroutines.flow.StateFlow
 import kotlinx.coroutines.flow.asStateFlow
 import kotlinx.coroutines.flow.update
-import javax.inject.Inject
 
 /**
  * A [ViewModel] for [PermissionsScreen]]
  */
 @OptIn(ExperimentalPermissionsApi::class)
-@HiltViewModel
-class PermissionsViewModel @Inject constructor(
-//    @Assisted permissionStates: MultiplePermissionsState
+@HiltViewModel(assistedFactory = PermissionsViewModel.Factory::class)
+class PermissionsViewModel @AssistedInject constructor(
+    @Assisted permissionStates: MultiplePermissionsState
 ) : ViewModel() {
-//    @AssistedFactory
-//    interface Factory {
-//        fun create(runtimeArg: MultiplePermissionsState): PermissionsViewModel
-//    }
+    @AssistedFactory
+    interface Factory {
+        fun create(runtimeArg: MultiplePermissionsState): PermissionsViewModel
+    }
 
     private val permissionQueue = mutableListOf<PermissionEnum>()
 
-    fun init(permissionStates: MultiplePermissionsState) {
+    init {
         permissionQueue.addAll(getRequestablePermissions(permissionStates))
     }
 
diff --git a/feature/preview/src/main/java/com/google/jetpackcamera/feature/preview/PreviewScreen.kt b/feature/preview/src/main/java/com/google/jetpackcamera/feature/preview/PreviewScreen.kt
index bb005bc..90eb918 100644
--- a/feature/preview/src/main/java/com/google/jetpackcamera/feature/preview/PreviewScreen.kt
+++ b/feature/preview/src/main/java/com/google/jetpackcamera/feature/preview/PreviewScreen.kt
@@ -72,12 +72,11 @@
     previewMode: PreviewMode,
     modifier: Modifier = Modifier,
     onRequestWindowColorMode: (Int) -> Unit = {},
-    viewModel: PreviewViewModel = hiltViewModel()
+    viewModel: PreviewViewModel = hiltViewModel<PreviewViewModel, PreviewViewModel.Factory>
+        { factory -> factory.create(previewMode) }
 ) {
     Log.d(TAG, "PreviewScreen")
 
-    viewModel.init(previewMode)
-
     val previewUiState: PreviewUiState by viewModel.previewUiState.collectAsState()
 
     val screenFlashUiState: ScreenFlash.ScreenFlashUiState
diff --git a/feature/preview/src/main/java/com/google/jetpackcamera/feature/preview/PreviewViewModel.kt b/feature/preview/src/main/java/com/google/jetpackcamera/feature/preview/PreviewViewModel.kt
index 58c1a03..ca138a8 100644
--- a/feature/preview/src/main/java/com/google/jetpackcamera/feature/preview/PreviewViewModel.kt
+++ b/feature/preview/src/main/java/com/google/jetpackcamera/feature/preview/PreviewViewModel.kt
@@ -51,7 +51,6 @@
 import kotlinx.coroutines.flow.filterNotNull
 import kotlinx.coroutines.flow.update
 import kotlinx.coroutines.launch
-import javax.inject.Inject
 
 private const val TAG = "PreviewViewModel"
 private const val IMAGE_CAPTURE_TRACE = "JCA Image Capture"
@@ -59,14 +58,13 @@
 /**
  * [ViewModel] for [PreviewScreen].
  */
-@HiltViewModel
-class PreviewViewModel @Inject constructor(
-//    @Assisted previewMode: PreviewMode,
+@HiltViewModel(assistedFactory = PreviewViewModel.Factory::class)
+class PreviewViewModel @AssistedInject constructor(
+    @Assisted previewMode: PreviewMode,
     private val cameraUseCase: CameraUseCase,
     private val constraintsRepository: ConstraintsRepository
 
 ) : ViewModel() {
-    private var previewMode: PreviewMode? = null
     private val _previewUiState: MutableStateFlow<PreviewUiState> =
         MutableStateFlow(PreviewUiState.NotReady)
 
@@ -90,8 +88,7 @@
         cameraUseCase.initialize(previewMode is PreviewMode.ExternalImageCaptureMode)
     }
 
-    fun init(previewMode: PreviewMode) {
-        this.previewMode = previewMode
+    init {
         viewModelScope.launch {
             combine(
                 cameraUseCase.getCurrentSettings().filterNotNull(),
@@ -395,10 +392,10 @@
         }
     }
 
-//    @AssistedFactory
-//    interface Factory {
-//        fun create(previewMode: PreviewMode): PreviewViewModel
-//    }
+    @AssistedFactory
+    interface Factory {
+        fun create(previewMode: PreviewMode): PreviewViewModel
+    }
 
     sealed interface ImageCaptureEvent {
         data class ImageSaved(