1
0
Fork 0
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:
Sergey Boishtyan 2022-05-09 18:36:28 +03:00 committed by GitHub
parent 58da3badfe
commit 6206f68dea
Signed by: github
GPG key ID: 4AEE18F83AFDEB23
32 changed files with 132 additions and 205 deletions

View file

@ -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

View file

@ -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 {

View file

@ -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,

View file

@ -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
)
}
}

View file

@ -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,

View file

@ -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

View file

@ -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

View file

@ -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)
}

View file

@ -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
)

View file

@ -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,

View file

@ -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
)
}
}

View file

@ -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.
}
}

View file

@ -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,

View file

@ -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,

View file

@ -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()
}

View file

@ -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(),

View file

@ -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

View file

@ -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

View file

@ -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(

View file

@ -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,

View file

@ -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,

View file

@ -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

View file

@ -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,

View file

@ -1,6 +0,0 @@
package com.anytypeio.anytype.domain.config
// Use-case for getting flavor-specific config.
class GetFlavourConfig(
private val configProvider: FlavourConfigProvider
) {}

View file

@ -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,

View file

@ -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(

View file

@ -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,

View file

@ -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,

View file

@ -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
)
}

View file

@ -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(

View file

@ -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,

View file

@ -28,16 +28,6 @@ android {
}
}
flavorDimensions 'default'
productFlavors {
stable {
dimension 'default'
}
experimental{
dimension 'default'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11