|
|
@@ -1,53 +0,0 @@
|
|
|
-package com.grkj.data.di
|
|
|
-
|
|
|
-import com.grkj.data.check_data.ICheckDataMode
|
|
|
-import com.grkj.data.check_data.impl.ForceMultiLockMode
|
|
|
-import com.grkj.data.check_data.impl.ForceSharedLockMode
|
|
|
-import com.grkj.data.check_data.impl.MixedMode
|
|
|
-import com.grkj.data.data.MMKVConstants
|
|
|
-import com.grkj.data.enums.LockPointModeEnum
|
|
|
-import com.sik.sikcore.extension.getMMKVData
|
|
|
-import com.tencent.mmkv.MMKV
|
|
|
-import dagger.Module
|
|
|
-import dagger.Provides
|
|
|
-import dagger.hilt.InstallIn
|
|
|
-import dagger.hilt.components.SingletonComponent
|
|
|
-import javax.inject.Singleton
|
|
|
-
|
|
|
-// 1. 在 Module 中引入 MMKV 和枚举
|
|
|
-@Module
|
|
|
-@InstallIn(SingletonComponent::class)
|
|
|
-object CheckDataModeModule {
|
|
|
-
|
|
|
- // 2. 把三种实现类都注册给 Hilt
|
|
|
- // 这三行可省略,只要它们有 @Inject 构造、@Singleton,就能被 Hilt 识别。
|
|
|
- @Provides
|
|
|
- fun provideMixedMode(m: MixedMode): MixedMode = m
|
|
|
- @Provides
|
|
|
- fun provideForceSharedLockMode(s: ForceSharedLockMode): ForceSharedLockMode = s
|
|
|
- @Provides
|
|
|
- fun provideForceMultiLockMode(m: ForceMultiLockMode): ForceMultiLockMode = m
|
|
|
-
|
|
|
- // 3. 最关键:根据 MMKV 里储存的模式 type(0/1/2)选出枚举,并返回对应实现
|
|
|
- @Provides
|
|
|
- @Singleton
|
|
|
- fun provideCheckDataMode(
|
|
|
- mixed: MixedMode,
|
|
|
- shared: ForceSharedLockMode,
|
|
|
- multi: ForceMultiLockMode
|
|
|
- ): ICheckDataMode {
|
|
|
- // 从 MMKV 读出存储的类型(整数),例如 key="lock_mode_type"
|
|
|
- val savedType =
|
|
|
- MMKVConstants.UPDATE_LOCK_POINT_MODE.getMMKVData(LockPointModeEnum.MIXED_MODE.type)
|
|
|
-
|
|
|
- // 把整数映射成枚举
|
|
|
- val modeEnum = LockPointModeEnum.values().firstOrNull { it.type == savedType }
|
|
|
- ?: LockPointModeEnum.MIXED_MODE
|
|
|
-
|
|
|
- return when (modeEnum) {
|
|
|
- LockPointModeEnum.FORCE_SHARED_LOCK -> shared
|
|
|
- LockPointModeEnum.FORCE_MULTI_LOCK -> multi
|
|
|
- LockPointModeEnum.MIXED_MODE -> mixed
|
|
|
- }
|
|
|
- }
|
|
|
-}
|