Как заменить зависимость модели представления отладочным вариантом в рукоятке Dagger и использовать ее в составлении Jet ⇐ Android
Как заменить зависимость модели представления отладочным вариантом в рукоятке Dagger и использовать ее в составлении Jet
У меня есть AuthViewModel, которая обрабатывает состояния, связанные с аутентификацией пользователя.
@HiltViewModel открытый класс AuthViewModel @Inject конструктор( частный репозиторий val: AuthRepository, stateHandle: Саведстатехандле ) : ViewModel() { забавный вход() { ... } весело подтверждениеЛогин() { ... } } и использовать его в своих составных объектах
@Composable весело LoginScreen (vm: AuthViewModel = hiltViewModel (LocalContext.current as ComponentActivity)) { состояние val от vm.loginUiState.collectAsStateWithLifecycle() val credential от vm.credential.collectAsStateWithLifecycle() LoginUi(состояние, учетные данные, виртуальная машина::логин) } Чтобы упростить тестирование для контроля качества, я реализовал автоматическое чтение OTP с нашего тестового сервера и реализовал то же самое в своем исходном коде Debug AuthViewModel, расширив его.
@HiltViewModel класс DebugAuthViewModel @Inject конструктор( частный репозиторий val: DebugAuthRepository, stateHandle: Саведстатехандле ) : AuthViewModel(repo,stateHandle) { переопределить забавный вход в систему (mobile: String, onSuccess: () -> Unit) { super.login(мобильный) { getOtp() } } личное развлечение getOtp() { // извлекаем otp из репозитория } } Теперь я хочу заменить AuthViewModel на DebugAuthViewModel для варианта отладочной сборки, чтобы не включать эту логику отладки в производственную сборку.
Как мне заменить это на рукоять, чтобы при чтении из компонуемого объекта я получал соответствующие модели представления на основе отклонений сборки?
Я попытался создать квалификатор, как показано ниже:
@Квалификатор @Retention(AnnotationRetention.BINARY) класс аннотации ViewModelQualifier (значение val: String = BuildConfig.BUILD_TYPE) И создали 2 модуля рукояти для варианта с досягаемостью
основной вариант:
@Module @InstallIn(SingletonComponent::класс) класс AuthModule { @Обеспечивает @ViewModelQualifier("выпуск") @ActivityScoped весело обеспечитьAuthViewModel (authViewModel: AuthViewModel): ViewModel { вернуть authViewModel } } И для отладочного варианта:
@Module @InstallIn(SingletonComponent::класс) объект DebugAuthModule { @ViewModelQualifier("отладка") @Обеспечивает весело обеспечитьDebugAuthViewModel (debugAuthViewModel: DebugAuthViewModel): ViewModel { вернуть debugAuthViewModel } } Теперь как мне указать hiltViewModel() или любому другому методу вернуть правильный экземпляр модели представления на основе этих квалификаторов?
У меня есть AuthViewModel, которая обрабатывает состояния, связанные с аутентификацией пользователя.
@HiltViewModel открытый класс AuthViewModel @Inject конструктор( частный репозиторий val: AuthRepository, stateHandle: Саведстатехандле ) : ViewModel() { забавный вход() { ... } весело подтверждениеЛогин() { ... } } и использовать его в своих составных объектах
@Composable весело LoginScreen (vm: AuthViewModel = hiltViewModel (LocalContext.current as ComponentActivity)) { состояние val от vm.loginUiState.collectAsStateWithLifecycle() val credential от vm.credential.collectAsStateWithLifecycle() LoginUi(состояние, учетные данные, виртуальная машина::логин) } Чтобы упростить тестирование для контроля качества, я реализовал автоматическое чтение OTP с нашего тестового сервера и реализовал то же самое в своем исходном коде Debug AuthViewModel, расширив его.
@HiltViewModel класс DebugAuthViewModel @Inject конструктор( частный репозиторий val: DebugAuthRepository, stateHandle: Саведстатехандле ) : AuthViewModel(repo,stateHandle) { переопределить забавный вход в систему (mobile: String, onSuccess: () -> Unit) { super.login(мобильный) { getOtp() } } личное развлечение getOtp() { // извлекаем otp из репозитория } } Теперь я хочу заменить AuthViewModel на DebugAuthViewModel для варианта отладочной сборки, чтобы не включать эту логику отладки в производственную сборку.
Как мне заменить это на рукоять, чтобы при чтении из компонуемого объекта я получал соответствующие модели представления на основе отклонений сборки?
Я попытался создать квалификатор, как показано ниже:
@Квалификатор @Retention(AnnotationRetention.BINARY) класс аннотации ViewModelQualifier (значение val: String = BuildConfig.BUILD_TYPE) И создали 2 модуля рукояти для варианта с досягаемостью
основной вариант:
@Module @InstallIn(SingletonComponent::класс) класс AuthModule { @Обеспечивает @ViewModelQualifier("выпуск") @ActivityScoped весело обеспечитьAuthViewModel (authViewModel: AuthViewModel): ViewModel { вернуть authViewModel } } И для отладочного варианта:
@Module @InstallIn(SingletonComponent::класс) объект DebugAuthModule { @ViewModelQualifier("отладка") @Обеспечивает весело обеспечитьDebugAuthViewModel (debugAuthViewModel: DebugAuthViewModel): ViewModel { вернуть debugAuthViewModel } } Теперь как мне указать hiltViewModel() или любому другому методу вернуть правильный экземпляр модели представления на основе этих квалификаторов?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение