mirror of
https://github.com/anyproto/anytype-kotlin.git
synced 2025-06-08 05:47:05 +09:00
Tech | Fix | Delete flavors (#2243)
This commit is contained in:
parent
58da3badfe
commit
6206f68dea
32 changed files with 132 additions and 205 deletions
2
.github/workflows/check.yml
vendored
2
.github/workflows/check.yml
vendored
|
@ -18,7 +18,7 @@ jobs:
|
|||
amplitude_secret_debug: ${{ secrets.ANYTYPE_AMPLITUDE_DEBUG_SECRET }}
|
||||
run: ./middleware2.sh $token_secret $user_secret $amplitude_secret $amplitude_secret_debug
|
||||
- name: Compile android test sources
|
||||
run: ./gradlew compileExperimentalDebugAndroidTestSources
|
||||
run: ./gradlew compileDebugAndroidTestSources
|
||||
- name: Run unit tests
|
||||
run: ./gradlew testDebugUnitTest -Dpre-dex=false
|
||||
- name: Android test report
|
||||
|
|
|
@ -15,18 +15,18 @@ apikeyProperties.load(new FileInputStream(apikeyPropertiesFile))
|
|||
//keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
|
||||
|
||||
android {
|
||||
def config = rootProject.extensions.getByName("ext")
|
||||
def config = rootProject.ext
|
||||
|
||||
compileSdkVersion config["compile_sdk"]
|
||||
buildToolsVersion config["build_tools"]
|
||||
compileSdkVersion config.compile_sdk
|
||||
buildToolsVersion config.build_tools
|
||||
|
||||
defaultConfig {
|
||||
applicationId config["application_id"]
|
||||
minSdkVersion config["min_sdk"]
|
||||
targetSdkVersion config["target_sdk"]
|
||||
applicationId config.application_id
|
||||
minSdkVersion config.min_sdk
|
||||
targetSdkVersion config.target_sdk
|
||||
versionCode getBuildVersionCode()
|
||||
versionName getBuildVersionName()
|
||||
testInstrumentationRunner config["test_runner"]
|
||||
testInstrumentationRunner config.test_runner
|
||||
buildConfigField "boolean", "USE_NEW_WINDOW_INSET_API", "true"
|
||||
}
|
||||
packagingOptions {
|
||||
|
@ -72,35 +72,6 @@ android {
|
|||
}
|
||||
}
|
||||
|
||||
flavorDimensions 'default'
|
||||
productFlavors {
|
||||
stable {
|
||||
dimension 'default'
|
||||
}
|
||||
experimental{
|
||||
dimension 'default'
|
||||
}
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
stable {
|
||||
java {
|
||||
srcDirs 'src/stable/java'
|
||||
}
|
||||
res {
|
||||
srcDirs 'src/stable/res'
|
||||
}
|
||||
}
|
||||
experimental {
|
||||
java {
|
||||
srcDirs 'src/experimental/java'
|
||||
}
|
||||
res {
|
||||
srcDirs 'src/experimental/res'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_11
|
||||
targetCompatibility JavaVersion.VERSION_11
|
||||
|
@ -111,7 +82,7 @@ android {
|
|||
}
|
||||
|
||||
composeOptions {
|
||||
kotlinCompilerExtensionVersion config["compose_version"]
|
||||
kotlinCompilerExtensionVersion config.compose_version
|
||||
}
|
||||
|
||||
lint {
|
||||
|
|
|
@ -13,7 +13,7 @@ import com.anytypeio.anytype.domain.auth.interactor.StartAccount
|
|||
import com.anytypeio.anytype.domain.auth.repo.AuthRepository
|
||||
import com.anytypeio.anytype.domain.block.interactor.sets.StoreObjectTypes
|
||||
import com.anytypeio.anytype.domain.block.repo.BlockRepository
|
||||
import com.anytypeio.anytype.domain.config.FlavourConfigProvider
|
||||
import com.anytypeio.anytype.domain.config.FeaturesConfigProvider
|
||||
import com.anytypeio.anytype.domain.device.PathProvider
|
||||
import com.anytypeio.anytype.features.auth.fragments.TestSetupSelectedAccountFragment
|
||||
import com.anytypeio.anytype.mocking.MockDataFactory
|
||||
|
@ -57,7 +57,7 @@ class SetupSelectedAccountTest {
|
|||
lateinit var blockRepository: BlockRepository
|
||||
|
||||
@Mock
|
||||
lateinit var flavourConfigProvider: FlavourConfigProvider
|
||||
lateinit var featuresConfigProvider: FeaturesConfigProvider
|
||||
|
||||
@Mock
|
||||
lateinit var analytics: Analytics
|
||||
|
@ -72,7 +72,7 @@ class SetupSelectedAccountTest {
|
|||
MockitoAnnotations.openMocks(this)
|
||||
startAccount = StartAccount(
|
||||
repository = authRepository,
|
||||
flavourConfigProvider = flavourConfigProvider
|
||||
featuresConfigProvider = featuresConfigProvider
|
||||
)
|
||||
storeObjectTypes = StoreObjectTypes(
|
||||
repo = blockRepository,
|
||||
|
|
|
@ -9,7 +9,7 @@ import com.anytypeio.anytype.domain.auth.interactor.*
|
|||
import com.anytypeio.anytype.domain.auth.repo.AuthRepository
|
||||
import com.anytypeio.anytype.domain.block.interactor.sets.StoreObjectTypes
|
||||
import com.anytypeio.anytype.domain.block.repo.BlockRepository
|
||||
import com.anytypeio.anytype.domain.config.FlavourConfigProvider
|
||||
import com.anytypeio.anytype.domain.config.FeaturesConfigProvider
|
||||
import com.anytypeio.anytype.domain.device.PathProvider
|
||||
import com.anytypeio.anytype.presentation.auth.account.CreateAccountViewModelFactory
|
||||
import com.anytypeio.anytype.presentation.auth.account.SelectAccountViewModelFactory
|
||||
|
@ -261,11 +261,11 @@ object SetupSelectedAccountModule {
|
|||
@PerScreen
|
||||
fun provideSelectAccountUseCase(
|
||||
repository: AuthRepository,
|
||||
flavourConfigProvider: FlavourConfigProvider
|
||||
featuresConfigProvider: FeaturesConfigProvider
|
||||
): StartAccount {
|
||||
return StartAccount(
|
||||
repository = repository,
|
||||
flavourConfigProvider = flavourConfigProvider
|
||||
featuresConfigProvider = featuresConfigProvider
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ import com.anytypeio.anytype.domain.auth.repo.AuthRepository
|
|||
import com.anytypeio.anytype.domain.base.AppCoroutineDispatchers
|
||||
import com.anytypeio.anytype.domain.block.interactor.Move
|
||||
import com.anytypeio.anytype.domain.block.repo.BlockRepository
|
||||
import com.anytypeio.anytype.domain.config.FlavourConfigProvider
|
||||
import com.anytypeio.anytype.domain.config.FeaturesConfigProvider
|
||||
import com.anytypeio.anytype.domain.config.GetConfig
|
||||
import com.anytypeio.anytype.domain.config.GetDebugSettings
|
||||
import com.anytypeio.anytype.domain.config.InfrastructureRepository
|
||||
|
@ -74,7 +74,7 @@ object HomeDashboardModule {
|
|||
urlBuilder: UrlBuilder,
|
||||
setObjectListIsArchived: SetObjectListIsArchived,
|
||||
deleteObjects: DeleteObjects,
|
||||
flavourConfigProvider: FlavourConfigProvider,
|
||||
featuresConfigProvider: FeaturesConfigProvider,
|
||||
objectSearchSubscriptionContainer: ObjectSearchSubscriptionContainer,
|
||||
cancelSearchSubscription: CancelSearchSubscription,
|
||||
objectStore: ObjectStore,
|
||||
|
@ -95,7 +95,7 @@ object HomeDashboardModule {
|
|||
setObjectListIsArchived = setObjectListIsArchived,
|
||||
deleteObjects = deleteObjects,
|
||||
getDefaultEditorType = getDefaultEditorType,
|
||||
flavourConfigProvider = flavourConfigProvider,
|
||||
featuresConfigProvider = featuresConfigProvider,
|
||||
objectSearchSubscriptionContainer = objectSearchSubscriptionContainer,
|
||||
cancelSearchSubscription = cancelSearchSubscription,
|
||||
objectStore = objectStore,
|
||||
|
|
|
@ -8,7 +8,7 @@ import com.anytypeio.anytype.domain.auth.interactor.LaunchAccount
|
|||
import com.anytypeio.anytype.domain.auth.interactor.Logout
|
||||
import com.anytypeio.anytype.domain.auth.repo.AuthRepository
|
||||
import com.anytypeio.anytype.domain.base.AppCoroutineDispatchers
|
||||
import com.anytypeio.anytype.domain.config.FlavourConfigProvider
|
||||
import com.anytypeio.anytype.domain.config.FeaturesConfigProvider
|
||||
import com.anytypeio.anytype.domain.config.UserSettingsRepository
|
||||
import com.anytypeio.anytype.domain.device.PathProvider
|
||||
import com.anytypeio.anytype.domain.theme.GetTheme
|
||||
|
@ -64,11 +64,11 @@ object MainEntryModule {
|
|||
fun provideLaunchAccountUseCase(
|
||||
authRepository: AuthRepository,
|
||||
pathProvider: PathProvider,
|
||||
flavourConfigProvider: FlavourConfigProvider
|
||||
featuresConfigProvider: FeaturesConfigProvider
|
||||
): LaunchAccount = LaunchAccount(
|
||||
repository = authRepository,
|
||||
pathProvider = pathProvider,
|
||||
flavourConfigProvider = flavourConfigProvider
|
||||
featuresConfigProvider = featuresConfigProvider
|
||||
)
|
||||
|
||||
@JvmStatic
|
||||
|
|
|
@ -10,7 +10,7 @@ import com.anytypeio.anytype.domain.auth.interactor.LaunchWallet
|
|||
import com.anytypeio.anytype.domain.auth.repo.AuthRepository
|
||||
import com.anytypeio.anytype.domain.block.interactor.sets.StoreObjectTypes
|
||||
import com.anytypeio.anytype.domain.block.repo.BlockRepository
|
||||
import com.anytypeio.anytype.domain.config.FlavourConfigProvider
|
||||
import com.anytypeio.anytype.domain.config.FeaturesConfigProvider
|
||||
import com.anytypeio.anytype.domain.config.UserSettingsRepository
|
||||
import com.anytypeio.anytype.domain.device.PathProvider
|
||||
import com.anytypeio.anytype.domain.launch.GetDefaultEditorType
|
||||
|
@ -87,11 +87,11 @@ object SplashModule {
|
|||
fun provideLaunchAccountUseCase(
|
||||
authRepository: AuthRepository,
|
||||
pathProvider: PathProvider,
|
||||
flavourConfigProvider: FlavourConfigProvider
|
||||
featuresConfigProvider: FeaturesConfigProvider
|
||||
): LaunchAccount = LaunchAccount(
|
||||
repository = authRepository,
|
||||
pathProvider = pathProvider,
|
||||
flavourConfigProvider = flavourConfigProvider
|
||||
featuresConfigProvider = featuresConfigProvider
|
||||
)
|
||||
|
||||
@JvmStatic
|
||||
|
|
|
@ -4,9 +4,7 @@ import com.anytypeio.anytype.core_models.Config
|
|||
import com.anytypeio.anytype.data.auth.repo.config.Configuration
|
||||
import com.anytypeio.anytype.data.auth.repo.config.Configurator
|
||||
import com.anytypeio.anytype.data.auth.repo.config.GatewayProvider
|
||||
import com.anytypeio.anytype.domain.config.FlavourConfigProvider
|
||||
import com.anytypeio.anytype.domain.config.Gateway
|
||||
import com.anytypeio.anytype.domain.config.GetFlavourConfig
|
||||
import com.anytypeio.anytype.middleware.config.DefaultConfigurator
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
|
@ -33,11 +31,4 @@ object ConfigModule {
|
|||
fun provideConfigurator(): Configurator {
|
||||
return DefaultConfigurator()
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideGetFlavourConfig(
|
||||
flavourConfigProvider: FlavourConfigProvider
|
||||
): GetFlavourConfig = GetFlavourConfig(flavourConfigProvider)
|
||||
}
|
|
@ -4,11 +4,18 @@ import android.content.Context
|
|||
import android.content.SharedPreferences
|
||||
import androidx.security.crypto.EncryptedSharedPreferences
|
||||
import androidx.security.crypto.MasterKeys
|
||||
import com.anytypeio.anytype.BuildConfig
|
||||
import com.anytypeio.anytype.app.DefaultAppActionManager
|
||||
import com.anytypeio.anytype.data.auth.config.DefaultFlavourConfigProvider
|
||||
import com.anytypeio.anytype.data.auth.config.ExperimentalFlavourConfigProvider
|
||||
import com.anytypeio.anytype.data.auth.repo.*
|
||||
import com.anytypeio.anytype.data.auth.config.DefaultFeaturesConfigProvider
|
||||
import com.anytypeio.anytype.data.auth.repo.AuthCache
|
||||
import com.anytypeio.anytype.data.auth.repo.AuthCacheDataStore
|
||||
import com.anytypeio.anytype.data.auth.repo.AuthDataRepository
|
||||
import com.anytypeio.anytype.data.auth.repo.AuthDataStoreFactory
|
||||
import com.anytypeio.anytype.data.auth.repo.AuthRemote
|
||||
import com.anytypeio.anytype.data.auth.repo.AuthRemoteDataStore
|
||||
import com.anytypeio.anytype.data.auth.repo.DebugSettingsCache
|
||||
import com.anytypeio.anytype.data.auth.repo.InfrastructureDataRepository
|
||||
import com.anytypeio.anytype.data.auth.repo.UserSettingsCache
|
||||
import com.anytypeio.anytype.data.auth.repo.UserSettingsDataRepository
|
||||
import com.anytypeio.anytype.data.auth.repo.block.BlockDataRepository
|
||||
import com.anytypeio.anytype.data.auth.repo.block.BlockDataStoreFactory
|
||||
import com.anytypeio.anytype.data.auth.repo.block.BlockRemote
|
||||
|
@ -21,7 +28,7 @@ import com.anytypeio.anytype.device.DefaultPathProvider
|
|||
import com.anytypeio.anytype.domain.`object`.ObjectTypesProvider
|
||||
import com.anytypeio.anytype.domain.auth.repo.AuthRepository
|
||||
import com.anytypeio.anytype.domain.block.repo.BlockRepository
|
||||
import com.anytypeio.anytype.domain.config.FlavourConfigProvider
|
||||
import com.anytypeio.anytype.domain.config.FeaturesConfigProvider
|
||||
import com.anytypeio.anytype.domain.config.InfrastructureRepository
|
||||
import com.anytypeio.anytype.domain.config.UserSettingsRepository
|
||||
import com.anytypeio.anytype.domain.device.PathProvider
|
||||
|
@ -243,11 +250,8 @@ object DataModule {
|
|||
@JvmStatic
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideFlavourConfigProvider(): FlavourConfigProvider {
|
||||
return if (BuildConfig.FLAVOR == "experimental")
|
||||
ExperimentalFlavourConfigProvider()
|
||||
else
|
||||
DefaultFlavourConfigProvider()
|
||||
fun provideFeaturesConfigProvider(): FeaturesConfigProvider {
|
||||
return DefaultFeaturesConfigProvider()
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
|
@ -274,14 +278,14 @@ object DataModule {
|
|||
@JvmStatic
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideAppActionManager(context: Context) : AppActionManager = DefaultAppActionManager(
|
||||
fun provideAppActionManager(context: Context): AppActionManager = DefaultAppActionManager(
|
||||
context = context
|
||||
)
|
||||
|
||||
@JvmStatic
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideObjectStore() : ObjectStore = DefaultObjectStore()
|
||||
fun provideObjectStore(): ObjectStore = DefaultObjectStore()
|
||||
|
||||
//region Unsplash
|
||||
|
||||
|
@ -290,7 +294,7 @@ object DataModule {
|
|||
@Singleton
|
||||
fun provideUnsplashRepo(
|
||||
remote: UnsplashRemote
|
||||
) : UnsplashRepository = UnsplashDataRepository(
|
||||
): UnsplashRepository = UnsplashDataRepository(
|
||||
remote = remote
|
||||
)
|
||||
|
||||
|
@ -299,7 +303,7 @@ object DataModule {
|
|||
@Singleton
|
||||
fun provideUnsplashRemote(
|
||||
service: MiddlewareService
|
||||
) : UnsplashRemote = UnsplashMiddleware(
|
||||
): UnsplashRemote = UnsplashMiddleware(
|
||||
service = service
|
||||
)
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package com.anytypeio.anytype.core_models
|
||||
|
||||
data class FlavourConfig(
|
||||
data class FeaturesConfig(
|
||||
val enableDataView: Boolean? = null,
|
||||
val enableDebug: Boolean? = null,
|
||||
val enableChannelSwitch: Boolean? = null,
|
|
@ -0,0 +1,33 @@
|
|||
package com.anytypeio.anytype.data.auth.config
|
||||
|
||||
import com.anytypeio.anytype.core_models.FeaturesConfig
|
||||
import com.anytypeio.anytype.domain.config.FeaturesConfigProvider
|
||||
|
||||
/**
|
||||
* Features config provider for real-world application.
|
||||
*/
|
||||
class DefaultFeaturesConfigProvider : FeaturesConfigProvider {
|
||||
|
||||
private var config: FeaturesConfig = FeaturesConfig(
|
||||
enableDataView = false,
|
||||
enableDebug = false,
|
||||
enableChannelSwitch = false,
|
||||
enableSpaces = false
|
||||
)
|
||||
|
||||
override fun get(): FeaturesConfig = config
|
||||
|
||||
override fun set(
|
||||
enableDataView: Boolean,
|
||||
enableDebug: Boolean,
|
||||
enableChannelSwitch: Boolean,
|
||||
enableSpaces: Boolean
|
||||
) {
|
||||
config = FeaturesConfig(
|
||||
enableDataView = enableDataView,
|
||||
enableDebug = enableDebug,
|
||||
enableChannelSwitch = enableChannelSwitch,
|
||||
enableSpaces = enableSpaces
|
||||
)
|
||||
}
|
||||
}
|
|
@ -1,56 +0,0 @@
|
|||
package com.anytypeio.anytype.data.auth.config
|
||||
|
||||
import com.anytypeio.anytype.core_models.FlavourConfig
|
||||
import com.anytypeio.anytype.domain.config.FlavourConfigProvider
|
||||
|
||||
/**
|
||||
* Flavour-config provider for real-world application.
|
||||
*/
|
||||
class DefaultFlavourConfigProvider : FlavourConfigProvider {
|
||||
|
||||
private var config: FlavourConfig = FlavourConfig(
|
||||
enableDataView = false,
|
||||
enableDebug = false,
|
||||
enableChannelSwitch = false,
|
||||
enableSpaces = false
|
||||
)
|
||||
|
||||
override fun get(): FlavourConfig = config
|
||||
|
||||
override fun set(
|
||||
enableDataView: Boolean,
|
||||
enableDebug: Boolean,
|
||||
enableChannelSwitch: Boolean,
|
||||
enableSpaces: Boolean
|
||||
) {
|
||||
config = FlavourConfig(
|
||||
enableDataView = enableDataView,
|
||||
enableDebug = enableDebug,
|
||||
enableChannelSwitch = enableChannelSwitch,
|
||||
enableSpaces = enableSpaces
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Flavour-config provider mostly for development purposes.
|
||||
*/
|
||||
class ExperimentalFlavourConfigProvider : FlavourConfigProvider {
|
||||
|
||||
private var config: FlavourConfig = FlavourConfig(
|
||||
enableDataView = true,
|
||||
enableDebug = true,
|
||||
enableChannelSwitch = true
|
||||
)
|
||||
|
||||
override fun get(): FlavourConfig = config
|
||||
|
||||
override fun set(
|
||||
enableDataView: Boolean,
|
||||
enableDebug: Boolean,
|
||||
enableChannelSwitch: Boolean,
|
||||
enableSpaces: Boolean
|
||||
) {
|
||||
// Ignoring real config.
|
||||
}
|
||||
}
|
|
@ -1,11 +1,11 @@
|
|||
package com.anytypeio.anytype.data.auth.mapper
|
||||
|
||||
import com.anytypeio.anytype.data.auth.model.AccountEntity
|
||||
import com.anytypeio.anytype.data.auth.model.FlavourConfigEntity
|
||||
import com.anytypeio.anytype.data.auth.model.FeaturesConfigEntity
|
||||
import com.anytypeio.anytype.data.auth.model.WalletEntity
|
||||
import com.anytypeio.anytype.domain.auth.model.Account
|
||||
import com.anytypeio.anytype.domain.auth.model.Wallet
|
||||
import com.anytypeio.anytype.core_models.FlavourConfig
|
||||
import com.anytypeio.anytype.core_models.FeaturesConfig
|
||||
|
||||
fun AccountEntity.toDomain(): Account {
|
||||
return Account(
|
||||
|
@ -16,8 +16,8 @@ fun AccountEntity.toDomain(): Account {
|
|||
)
|
||||
}
|
||||
|
||||
fun FlavourConfigEntity.toDomain(): FlavourConfig {
|
||||
return FlavourConfig(
|
||||
fun FeaturesConfigEntity.toDomain(): FeaturesConfig {
|
||||
return FeaturesConfig(
|
||||
enableDataView = enableDataView,
|
||||
enableDebug = enableDebug,
|
||||
enableChannelSwitch = enableChannelSwitch,
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package com.anytypeio.anytype.data.auth.model
|
||||
|
||||
data class FlavourConfigEntity(
|
||||
data class FeaturesConfigEntity(
|
||||
val enableDataView: Boolean? = null,
|
||||
val enableDebug: Boolean? = null,
|
||||
val enableChannelSwitch: Boolean? = null,
|
|
@ -3,7 +3,7 @@ package com.anytypeio.anytype.data.auth.repo
|
|||
import com.anytypeio.anytype.core_models.AccountStatus
|
||||
import com.anytypeio.anytype.core_models.Id
|
||||
import com.anytypeio.anytype.data.auth.model.AccountEntity
|
||||
import com.anytypeio.anytype.data.auth.model.FlavourConfigEntity
|
||||
import com.anytypeio.anytype.data.auth.model.FeaturesConfigEntity
|
||||
import com.anytypeio.anytype.data.auth.model.WalletEntity
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
|
@ -12,7 +12,7 @@ class AuthCacheDataStore(private val cache: AuthCache) : AuthDataStore {
|
|||
override suspend fun startAccount(
|
||||
id: String,
|
||||
path: String
|
||||
): Triple<AccountEntity, FlavourConfigEntity, AccountStatus> {
|
||||
): Triple<AccountEntity, FeaturesConfigEntity, AccountStatus> {
|
||||
throw UnsupportedOperationException()
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package com.anytypeio.anytype.data.auth.repo
|
||||
|
||||
import com.anytypeio.anytype.core_models.AccountStatus
|
||||
import com.anytypeio.anytype.core_models.FlavourConfig
|
||||
import com.anytypeio.anytype.core_models.FeaturesConfig
|
||||
import com.anytypeio.anytype.core_models.Id
|
||||
import com.anytypeio.anytype.data.auth.mapper.toDomain
|
||||
import com.anytypeio.anytype.data.auth.mapper.toEntity
|
||||
|
@ -18,7 +18,7 @@ class AuthDataRepository(
|
|||
|
||||
override suspend fun startAccount(
|
||||
id: String, path: String
|
||||
): Triple<Account, FlavourConfig, AccountStatus> = factory.remote.startAccount(id, path).let { triple ->
|
||||
): Triple<Account, FeaturesConfig, AccountStatus> = factory.remote.startAccount(id, path).let { triple ->
|
||||
Triple(
|
||||
first = triple.first.toDomain(),
|
||||
second = triple.second.toDomain(),
|
||||
|
|
|
@ -3,13 +3,13 @@ package com.anytypeio.anytype.data.auth.repo
|
|||
import com.anytypeio.anytype.core_models.AccountStatus
|
||||
import com.anytypeio.anytype.core_models.Id
|
||||
import com.anytypeio.anytype.data.auth.model.AccountEntity
|
||||
import com.anytypeio.anytype.data.auth.model.FlavourConfigEntity
|
||||
import com.anytypeio.anytype.data.auth.model.FeaturesConfigEntity
|
||||
import com.anytypeio.anytype.data.auth.model.WalletEntity
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
interface AuthDataStore {
|
||||
|
||||
suspend fun startAccount(id: String, path: String): Triple<AccountEntity, FlavourConfigEntity, AccountStatus>
|
||||
suspend fun startAccount(id: String, path: String): Triple<AccountEntity, FeaturesConfigEntity, AccountStatus>
|
||||
|
||||
suspend fun createAccount(name: String, avatarPath: String?, invitationCode: String): AccountEntity
|
||||
|
||||
|
|
|
@ -2,12 +2,12 @@ package com.anytypeio.anytype.data.auth.repo
|
|||
|
||||
import com.anytypeio.anytype.core_models.AccountStatus
|
||||
import com.anytypeio.anytype.data.auth.model.AccountEntity
|
||||
import com.anytypeio.anytype.data.auth.model.FlavourConfigEntity
|
||||
import com.anytypeio.anytype.data.auth.model.FeaturesConfigEntity
|
||||
import com.anytypeio.anytype.data.auth.model.WalletEntity
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
interface AuthRemote {
|
||||
suspend fun startAccount(id: String, path: String): Triple<AccountEntity, FlavourConfigEntity, AccountStatus>
|
||||
suspend fun startAccount(id: String, path: String): Triple<AccountEntity, FeaturesConfigEntity, AccountStatus>
|
||||
suspend fun createAccount(name: String, avatarPath: String?, invitationCode: String): AccountEntity
|
||||
suspend fun deleteAccount() : AccountStatus
|
||||
suspend fun restoreAccount() : AccountStatus
|
||||
|
|
|
@ -2,7 +2,7 @@ package com.anytypeio.anytype.data
|
|||
|
||||
import com.anytypeio.anytype.core_models.AccountStatus
|
||||
import com.anytypeio.anytype.data.auth.model.AccountEntity
|
||||
import com.anytypeio.anytype.data.auth.model.FlavourConfigEntity
|
||||
import com.anytypeio.anytype.data.auth.model.FeaturesConfigEntity
|
||||
import com.anytypeio.anytype.data.auth.model.WalletEntity
|
||||
import com.anytypeio.anytype.data.auth.repo.*
|
||||
import com.anytypeio.anytype.data.auth.repo.config.Configurator
|
||||
|
@ -56,7 +56,7 @@ class AuthDataRepositoryTest {
|
|||
color = null
|
||||
)
|
||||
|
||||
val config = FlavourConfigEntity()
|
||||
val config = FeaturesConfigEntity()
|
||||
|
||||
authRemote.stub {
|
||||
onBlocking { startAccount(id = id, path = path) } doReturn Triple(
|
||||
|
|
|
@ -3,7 +3,7 @@ package com.anytypeio.anytype.domain.auth.interactor
|
|||
import com.anytypeio.anytype.domain.auth.repo.AuthRepository
|
||||
import com.anytypeio.anytype.domain.base.BaseUseCase
|
||||
import com.anytypeio.anytype.domain.base.Either
|
||||
import com.anytypeio.anytype.domain.config.FlavourConfigProvider
|
||||
import com.anytypeio.anytype.domain.config.FeaturesConfigProvider
|
||||
import com.anytypeio.anytype.domain.device.PathProvider
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlin.coroutines.CoroutineContext
|
||||
|
@ -15,7 +15,7 @@ class LaunchAccount(
|
|||
private val repository: AuthRepository,
|
||||
private val pathProvider: PathProvider,
|
||||
private val context: CoroutineContext = Dispatchers.IO,
|
||||
private val flavourConfigProvider: FlavourConfigProvider
|
||||
private val featuresConfigProvider: FeaturesConfigProvider
|
||||
) : BaseUseCase<String, BaseUseCase.None>(context) {
|
||||
|
||||
override suspend fun run(params: None) = try {
|
||||
|
@ -25,7 +25,7 @@ class LaunchAccount(
|
|||
).let { pair ->
|
||||
val (account, config, status) = pair
|
||||
repository.updateAccount(account)
|
||||
flavourConfigProvider.set(
|
||||
featuresConfigProvider.set(
|
||||
enableDataView = config.enableDataView ?: false,
|
||||
enableDebug = config.enableDebug ?: false,
|
||||
enableChannelSwitch = config.enableChannelSwitch ?: false,
|
||||
|
|
|
@ -4,14 +4,14 @@ import com.anytypeio.anytype.core_models.AccountStatus
|
|||
import com.anytypeio.anytype.core_models.Id
|
||||
import com.anytypeio.anytype.domain.auth.repo.AuthRepository
|
||||
import com.anytypeio.anytype.domain.base.BaseUseCase
|
||||
import com.anytypeio.anytype.domain.config.FlavourConfigProvider
|
||||
import com.anytypeio.anytype.domain.config.FeaturesConfigProvider
|
||||
|
||||
/**
|
||||
* Use case for selecting user account.
|
||||
*/
|
||||
class StartAccount(
|
||||
private val repository: AuthRepository,
|
||||
private val flavourConfigProvider: FlavourConfigProvider
|
||||
private val featuresConfigProvider: FeaturesConfigProvider
|
||||
) : BaseUseCase<Pair<Id, AccountStatus>, StartAccount.Params>() {
|
||||
|
||||
override suspend fun run(params: Params) = safe {
|
||||
|
@ -22,7 +22,7 @@ class StartAccount(
|
|||
with(repository) {
|
||||
saveAccount(account)
|
||||
setCurrentAccount(account.id)
|
||||
flavourConfigProvider.set(
|
||||
featuresConfigProvider.set(
|
||||
enableDataView = config.enableDataView ?: false,
|
||||
enableDebug = config.enableDebug ?: false,
|
||||
enableChannelSwitch = config.enableChannelSwitch ?: false,
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package com.anytypeio.anytype.domain.auth.repo
|
||||
|
||||
import com.anytypeio.anytype.core_models.AccountStatus
|
||||
import com.anytypeio.anytype.core_models.FlavourConfig
|
||||
import com.anytypeio.anytype.core_models.FeaturesConfig
|
||||
import com.anytypeio.anytype.core_models.Id
|
||||
import com.anytypeio.anytype.domain.auth.model.Account
|
||||
import com.anytypeio.anytype.domain.auth.model.Wallet
|
||||
|
@ -14,7 +14,7 @@ interface AuthRepository {
|
|||
* @param id user account id
|
||||
* @param path wallet repository path
|
||||
*/
|
||||
suspend fun startAccount(id: String, path: String): Triple<Account, FlavourConfig, AccountStatus>
|
||||
suspend fun startAccount(id: String, path: String): Triple<Account, FeaturesConfig, AccountStatus>
|
||||
|
||||
suspend fun createAccount(name: String, avatarPath: String?, invitationCode: String): Account
|
||||
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
package com.anytypeio.anytype.domain.config
|
||||
|
||||
import com.anytypeio.anytype.core_models.FlavourConfig
|
||||
import com.anytypeio.anytype.core_models.FeaturesConfig
|
||||
|
||||
interface FlavourConfigProvider {
|
||||
interface FeaturesConfigProvider {
|
||||
|
||||
fun get(): FlavourConfig
|
||||
fun get(): FeaturesConfig
|
||||
|
||||
fun set(
|
||||
enableDataView: Boolean,
|
|
@ -1,6 +0,0 @@
|
|||
package com.anytypeio.anytype.domain.config
|
||||
|
||||
// Use-case for getting flavor-specific config.
|
||||
class GetFlavourConfig(
|
||||
private val configProvider: FlavourConfigProvider
|
||||
) {}
|
|
@ -2,13 +2,13 @@ package com.anytypeio.anytype.domain.auth
|
|||
|
||||
import com.anytypeio.anytype.core_models.AccountStatus
|
||||
import com.anytypeio.anytype.core_models.CoroutineTestRule
|
||||
import com.anytypeio.anytype.core_models.FlavourConfig
|
||||
import com.anytypeio.anytype.core_models.FeaturesConfig
|
||||
import com.anytypeio.anytype.domain.auth.interactor.StartAccount
|
||||
import com.anytypeio.anytype.domain.auth.model.Account
|
||||
import com.anytypeio.anytype.domain.auth.repo.AuthRepository
|
||||
import com.anytypeio.anytype.domain.base.Either
|
||||
import com.anytypeio.anytype.domain.common.MockDataFactory
|
||||
import com.anytypeio.anytype.domain.config.FlavourConfigProvider
|
||||
import com.anytypeio.anytype.domain.config.FeaturesConfigProvider
|
||||
import com.nhaarman.mockitokotlin2.*
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import kotlinx.coroutines.runBlocking
|
||||
|
@ -29,14 +29,14 @@ class StartAccountTest {
|
|||
lateinit var repo: AuthRepository
|
||||
|
||||
@Mock
|
||||
lateinit var flavourConfigProvider: FlavourConfigProvider
|
||||
lateinit var featuresConfigProvider: FeaturesConfigProvider
|
||||
|
||||
lateinit var startAccount: StartAccount
|
||||
|
||||
@Before
|
||||
fun setup() {
|
||||
MockitoAnnotations.initMocks(this)
|
||||
startAccount = StartAccount(repo, flavourConfigProvider)
|
||||
startAccount = StartAccount(repo, featuresConfigProvider)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -57,7 +57,7 @@ class StartAccountTest {
|
|||
color = null
|
||||
)
|
||||
|
||||
val config = FlavourConfig(
|
||||
val config = FeaturesConfig(
|
||||
enableDataView = false,
|
||||
enableDebug = false,
|
||||
enableChannelSwitch = false
|
||||
|
@ -104,7 +104,7 @@ class StartAccountTest {
|
|||
color = null
|
||||
)
|
||||
|
||||
val config = FlavourConfig(
|
||||
val config = FeaturesConfig(
|
||||
enableDataView = false,
|
||||
enableDebug = false,
|
||||
enableChannelSwitch = false
|
||||
|
@ -142,7 +142,7 @@ class StartAccountTest {
|
|||
color = null
|
||||
)
|
||||
|
||||
val config = FlavourConfig(
|
||||
val config = FeaturesConfig(
|
||||
enableDataView = null,
|
||||
enableDebug = null,
|
||||
enableChannelSwitch = null
|
||||
|
@ -159,7 +159,7 @@ class StartAccountTest {
|
|||
|
||||
val result = startAccount.run(params)
|
||||
|
||||
verify(flavourConfigProvider, times(1)).set(
|
||||
verify(featuresConfigProvider, times(1)).set(
|
||||
enableDataView = false,
|
||||
enableDebug = false,
|
||||
enableChannelSwitch = false,
|
||||
|
@ -187,7 +187,7 @@ class StartAccountTest {
|
|||
color = null
|
||||
)
|
||||
|
||||
val config = FlavourConfig(
|
||||
val config = FeaturesConfig(
|
||||
enableDataView = true,
|
||||
enableDebug = false,
|
||||
enableChannelSwitch = true
|
||||
|
@ -204,7 +204,7 @@ class StartAccountTest {
|
|||
|
||||
val result = startAccount.run(params)
|
||||
|
||||
verify(flavourConfigProvider, times(1)).set(
|
||||
verify(featuresConfigProvider, times(1)).set(
|
||||
enableDataView = true,
|
||||
enableDebug = false,
|
||||
enableChannelSwitch = true,
|
||||
|
|
|
@ -2,7 +2,7 @@ package com.anytypeio.anytype.middleware.auth
|
|||
|
||||
import com.anytypeio.anytype.core_models.AccountStatus
|
||||
import com.anytypeio.anytype.data.auth.model.AccountEntity
|
||||
import com.anytypeio.anytype.data.auth.model.FlavourConfigEntity
|
||||
import com.anytypeio.anytype.data.auth.model.FeaturesConfigEntity
|
||||
import com.anytypeio.anytype.data.auth.model.WalletEntity
|
||||
import com.anytypeio.anytype.data.auth.repo.AuthRemote
|
||||
import com.anytypeio.anytype.middleware.EventProxy
|
||||
|
@ -23,20 +23,20 @@ class AuthMiddleware(
|
|||
override suspend fun startAccount(
|
||||
id: String,
|
||||
path: String
|
||||
): Triple<AccountEntity, FlavourConfigEntity, AccountStatus> {
|
||||
): Triple<AccountEntity, FeaturesConfigEntity, AccountStatus> {
|
||||
val response = middleware.selectAccount(id, path)
|
||||
val account = AccountEntity(
|
||||
id = response.id,
|
||||
name = response.name,
|
||||
color = response.avatar?.color
|
||||
)
|
||||
val flavourConfig = FlavourConfigEntity(
|
||||
val featuresConfig = FeaturesConfigEntity(
|
||||
enableDataView = response.enableDataView,
|
||||
enableDebug = response.enableDebug,
|
||||
enableChannelSwitch = response.enableChannelSwitch,
|
||||
enableSpaces = response.enableSpaces
|
||||
)
|
||||
return Triple(account, flavourConfig, response.accountStatus ?: AccountStatus.Unknown)
|
||||
return Triple(account, featuresConfig, response.accountStatus ?: AccountStatus.Unknown)
|
||||
}
|
||||
|
||||
override suspend fun createAccount(
|
||||
|
|
|
@ -26,7 +26,7 @@ import com.anytypeio.anytype.core_utils.ui.ViewState
|
|||
import com.anytypeio.anytype.core_utils.ui.ViewStateViewModel
|
||||
import com.anytypeio.anytype.domain.auth.interactor.GetProfile
|
||||
import com.anytypeio.anytype.domain.block.interactor.Move
|
||||
import com.anytypeio.anytype.domain.config.FlavourConfigProvider
|
||||
import com.anytypeio.anytype.domain.config.FeaturesConfigProvider
|
||||
import com.anytypeio.anytype.domain.config.GetConfig
|
||||
import com.anytypeio.anytype.domain.config.GetDebugSettings
|
||||
import com.anytypeio.anytype.domain.dashboard.interactor.CloseDashboard
|
||||
|
@ -86,7 +86,7 @@ class HomeDashboardViewModel(
|
|||
private val urlBuilder: UrlBuilder,
|
||||
private val setObjectListIsArchived: SetObjectListIsArchived,
|
||||
private val deleteObjects: DeleteObjects,
|
||||
private val flavourConfigProvider: FlavourConfigProvider,
|
||||
private val featuresConfigProvider: FeaturesConfigProvider,
|
||||
private val objectSearchSubscriptionContainer: ObjectSearchSubscriptionContainer,
|
||||
private val cancelSearchSubscription: CancelSearchSubscription,
|
||||
private val objectStore: ObjectStore,
|
||||
|
|
|
@ -5,7 +5,7 @@ import androidx.lifecycle.ViewModelProvider
|
|||
import com.anytypeio.anytype.analytics.base.Analytics
|
||||
import com.anytypeio.anytype.domain.auth.interactor.GetProfile
|
||||
import com.anytypeio.anytype.domain.block.interactor.Move
|
||||
import com.anytypeio.anytype.domain.config.FlavourConfigProvider
|
||||
import com.anytypeio.anytype.domain.config.FeaturesConfigProvider
|
||||
import com.anytypeio.anytype.domain.config.GetConfig
|
||||
import com.anytypeio.anytype.domain.config.GetDebugSettings
|
||||
import com.anytypeio.anytype.domain.dashboard.interactor.CloseDashboard
|
||||
|
@ -38,7 +38,7 @@ class HomeDashboardViewModelFactory(
|
|||
private val urlBuilder: UrlBuilder,
|
||||
private val setObjectListIsArchived: SetObjectListIsArchived,
|
||||
private val deleteObjects: DeleteObjects,
|
||||
private val flavourConfigProvider: FlavourConfigProvider,
|
||||
private val featuresConfigProvider: FeaturesConfigProvider,
|
||||
private val objectSearchSubscriptionContainer: ObjectSearchSubscriptionContainer,
|
||||
private val cancelSearchSubscription: CancelSearchSubscription,
|
||||
private val objectStore: ObjectStore,
|
||||
|
@ -63,7 +63,7 @@ class HomeDashboardViewModelFactory(
|
|||
getDefaultEditorType = getDefaultEditorType,
|
||||
deleteObjects = deleteObjects,
|
||||
setObjectListIsArchived = setObjectListIsArchived,
|
||||
flavourConfigProvider = flavourConfigProvider,
|
||||
featuresConfigProvider = featuresConfigProvider,
|
||||
objectSearchSubscriptionContainer = objectSearchSubscriptionContainer,
|
||||
cancelSearchSubscription = cancelSearchSubscription,
|
||||
objectStore = objectStore,
|
||||
|
|
|
@ -4,14 +4,14 @@ import MockDataFactory
|
|||
import androidx.arch.core.executor.testing.InstantTaskExecutorRule
|
||||
import com.anytypeio.anytype.analytics.base.Analytics
|
||||
import com.anytypeio.anytype.core_models.AccountStatus
|
||||
import com.anytypeio.anytype.core_models.FlavourConfig
|
||||
import com.anytypeio.anytype.core_models.FeaturesConfig
|
||||
import com.anytypeio.anytype.domain.`object`.ObjectTypesProvider
|
||||
import com.anytypeio.anytype.domain.auth.interactor.StartAccount
|
||||
import com.anytypeio.anytype.domain.auth.model.Account
|
||||
import com.anytypeio.anytype.domain.auth.repo.AuthRepository
|
||||
import com.anytypeio.anytype.domain.block.interactor.sets.StoreObjectTypes
|
||||
import com.anytypeio.anytype.domain.block.repo.BlockRepository
|
||||
import com.anytypeio.anytype.domain.config.FlavourConfigProvider
|
||||
import com.anytypeio.anytype.domain.config.FeaturesConfigProvider
|
||||
import com.anytypeio.anytype.domain.device.PathProvider
|
||||
import com.anytypeio.anytype.presentation.auth.account.SetupSelectedAccountViewModel
|
||||
import com.anytypeio.anytype.presentation.util.CoroutinesTestRule
|
||||
|
@ -47,7 +47,7 @@ class SetupSelectedAccountViewModelTest {
|
|||
lateinit var pathProvider: PathProvider
|
||||
|
||||
@Mock
|
||||
lateinit var flavourConfigProvider: FlavourConfigProvider
|
||||
lateinit var featuresConfigProvider: FeaturesConfigProvider
|
||||
|
||||
@Mock
|
||||
lateinit var objectTypesProvider: ObjectTypesProvider
|
||||
|
@ -61,7 +61,7 @@ class SetupSelectedAccountViewModelTest {
|
|||
MockitoAnnotations.openMocks(this)
|
||||
startAccount = StartAccount(
|
||||
repository = authRepo,
|
||||
flavourConfigProvider = flavourConfigProvider
|
||||
featuresConfigProvider = featuresConfigProvider
|
||||
)
|
||||
storeObjectTypes = StoreObjectTypes(
|
||||
repo = blockRepo,
|
||||
|
@ -127,7 +127,7 @@ class SetupSelectedAccountViewModelTest {
|
|||
avatar = null,
|
||||
color = null
|
||||
),
|
||||
FlavourConfig(),
|
||||
FeaturesConfig(),
|
||||
AccountStatus.Active
|
||||
)
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ import com.anytypeio.anytype.domain.base.Either
|
|||
import com.anytypeio.anytype.domain.block.interactor.Move
|
||||
import com.anytypeio.anytype.domain.block.repo.BlockRepository
|
||||
import com.anytypeio.anytype.domain.config.DebugSettings
|
||||
import com.anytypeio.anytype.domain.config.FlavourConfigProvider
|
||||
import com.anytypeio.anytype.domain.config.FeaturesConfigProvider
|
||||
import com.anytypeio.anytype.domain.config.Gateway
|
||||
import com.anytypeio.anytype.domain.config.GetConfig
|
||||
import com.anytypeio.anytype.domain.config.GetDebugSettings
|
||||
|
@ -95,7 +95,7 @@ open class DashboardTestSetup {
|
|||
lateinit var objectTypesProvider: ObjectTypesProvider
|
||||
|
||||
@Mock
|
||||
lateinit var flavourConfigProvider: FlavourConfigProvider
|
||||
lateinit var featuresConfigProvider: FeaturesConfigProvider
|
||||
|
||||
@Mock
|
||||
lateinit var getDefaultEditorType: GetDefaultEditorType
|
||||
|
@ -147,7 +147,7 @@ open class DashboardTestSetup {
|
|||
getDefaultEditorType = getDefaultEditorType,
|
||||
setObjectListIsArchived = setObjectListIsArchived,
|
||||
deleteObjects = deleteObjects,
|
||||
flavourConfigProvider = flavourConfigProvider,
|
||||
featuresConfigProvider = featuresConfigProvider,
|
||||
cancelSearchSubscription = cancelSearchSubscription,
|
||||
objectStore = objectStore,
|
||||
objectSearchSubscriptionContainer = ObjectSearchSubscriptionContainer(
|
||||
|
|
|
@ -14,7 +14,7 @@ import com.anytypeio.anytype.domain.auth.interactor.GetProfile
|
|||
import com.anytypeio.anytype.domain.base.Either
|
||||
import com.anytypeio.anytype.domain.block.interactor.Move
|
||||
import com.anytypeio.anytype.domain.config.DebugSettings
|
||||
import com.anytypeio.anytype.domain.config.FlavourConfigProvider
|
||||
import com.anytypeio.anytype.domain.config.FeaturesConfigProvider
|
||||
import com.anytypeio.anytype.domain.config.Gateway
|
||||
import com.anytypeio.anytype.domain.config.GetConfig
|
||||
import com.anytypeio.anytype.domain.config.GetDebugSettings
|
||||
|
@ -103,7 +103,7 @@ class HomeDashboardViewModelTest {
|
|||
lateinit var objectTypesProvider: ObjectTypesProvider
|
||||
|
||||
@Mock
|
||||
lateinit var flavourConfigProvider: FlavourConfigProvider
|
||||
lateinit var featuresConfigProvider: FeaturesConfigProvider
|
||||
|
||||
@Mock
|
||||
lateinit var getDefaultEditorType: GetDefaultEditorType
|
||||
|
@ -155,7 +155,7 @@ class HomeDashboardViewModelTest {
|
|||
setObjectListIsArchived = setObjectListIsArchived,
|
||||
urlBuilder = builder,
|
||||
getDefaultEditorType = getDefaultEditorType,
|
||||
flavourConfigProvider = flavourConfigProvider,
|
||||
featuresConfigProvider = featuresConfigProvider,
|
||||
cancelSearchSubscription = cancelSearchSubscription,
|
||||
objectStore = objectStore,
|
||||
objectSearchSubscriptionContainer = objectSearchSubscriptionContainer,
|
||||
|
|
|
@ -28,16 +28,6 @@ android {
|
|||
}
|
||||
}
|
||||
|
||||
flavorDimensions 'default'
|
||||
productFlavors {
|
||||
stable {
|
||||
dimension 'default'
|
||||
}
|
||||
experimental{
|
||||
dimension 'default'
|
||||
}
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_11
|
||||
targetCompatibility JavaVersion.VERSION_11
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue