diff --git a/app/src/main/java/com/anytypeio/anytype/app/DefaultInitialParamsProvider.kt b/app/src/main/java/com/anytypeio/anytype/app/DefaultInitialParamsProvider.kt new file mode 100644 index 0000000000..f52462f13d --- /dev/null +++ b/app/src/main/java/com/anytypeio/anytype/app/DefaultInitialParamsProvider.kt @@ -0,0 +1,35 @@ +package com.anytypeio.anytype.app + +import android.content.Context +import com.anytypeio.anytype.BuildConfig +import com.anytypeio.anytype.core_models.Command +import com.anytypeio.anytype.domain.platform.InitialParamsProvider + +class DefaultInitialParamsProvider(context: Context) : InitialParamsProvider { + + override val workDir = context.filesDir.absolutePath + override val defaultLogLevel = + "common.commonspace.headsync=INFO;core.block.editor.spaceview=INFO;*=WARN" + + override fun getVersion(): String { + return if (BuildConfig.DEBUG) + BuildConfig.VERSION_NAME + DEV_PREFIX + else { + return BuildConfig.VERSION_NAME + } + } + + override fun getPlatform(): String = PLATFORM_NAME + + companion object { + const val PLATFORM_NAME = "android" + const val DEV_PREFIX = "-dev" + } + + override fun toCommand() = Command.SetInitialParams( + version = getVersion(), + platform = getPlatform(), + workDir = workDir, + defaultLogLevel = defaultLogLevel + ) +} \ No newline at end of file diff --git a/app/src/main/java/com/anytypeio/anytype/app/DefaultMetricsProvider.kt b/app/src/main/java/com/anytypeio/anytype/app/DefaultMetricsProvider.kt deleted file mode 100644 index 6e31ce0660..0000000000 --- a/app/src/main/java/com/anytypeio/anytype/app/DefaultMetricsProvider.kt +++ /dev/null @@ -1,21 +0,0 @@ -package com.anytypeio.anytype.app - -import com.anytypeio.anytype.BuildConfig -import com.anytypeio.anytype.domain.platform.MetricsProvider - -class DefaultMetricsProvider : MetricsProvider { - override fun getVersion(): String { - return if (BuildConfig.DEBUG) - BuildConfig.VERSION_NAME + DEV_PREFIX - else { - return BuildConfig.VERSION_NAME - } - } - - override fun getPlatform(): String = PLATFORM_NAME - - companion object { - const val PLATFORM_NAME = "android" - const val DEV_PREFIX = "-dev" - } -} \ No newline at end of file diff --git a/app/src/main/java/com/anytypeio/anytype/di/feature/MainEntryDI.kt b/app/src/main/java/com/anytypeio/anytype/di/feature/MainEntryDI.kt index 06807a9585..d75a229418 100644 --- a/app/src/main/java/com/anytypeio/anytype/di/feature/MainEntryDI.kt +++ b/app/src/main/java/com/anytypeio/anytype/di/feature/MainEntryDI.kt @@ -15,7 +15,7 @@ import com.anytypeio.anytype.domain.config.UserSettingsRepository import com.anytypeio.anytype.domain.device.PathProvider import com.anytypeio.anytype.domain.misc.LocaleProvider import com.anytypeio.anytype.domain.notifications.SystemNotificationService -import com.anytypeio.anytype.domain.platform.MetricsProvider +import com.anytypeio.anytype.domain.platform.InitialParamsProvider import com.anytypeio.anytype.domain.subscriptions.GlobalSubscriptionManager import com.anytypeio.anytype.domain.theme.GetTheme import com.anytypeio.anytype.domain.wallpaper.ObserveWallpaper @@ -97,7 +97,7 @@ object MainEntryModule { authRepository: AuthRepository, pathProvider: PathProvider, configStorage: ConfigStorage, - metricsProvider: MetricsProvider, + initialParamsProvider: InitialParamsProvider, awaitAccountStartManager: AwaitAccountStartManager, spaceManager: SpaceManager, settingsRepository: UserSettingsRepository @@ -105,7 +105,7 @@ object MainEntryModule { repository = authRepository, pathProvider = pathProvider, configStorage = configStorage, - metricsProvider = metricsProvider, + initialParamsProvider = initialParamsProvider, awaitAccountStartManager = awaitAccountStartManager, spaceManager = spaceManager, settings = settingsRepository diff --git a/app/src/main/java/com/anytypeio/anytype/di/feature/SplashDi.kt b/app/src/main/java/com/anytypeio/anytype/di/feature/SplashDi.kt index 44a6a5dc3e..4cd12b3420 100644 --- a/app/src/main/java/com/anytypeio/anytype/di/feature/SplashDi.kt +++ b/app/src/main/java/com/anytypeio/anytype/di/feature/SplashDi.kt @@ -25,7 +25,7 @@ import com.anytypeio.anytype.domain.misc.UrlBuilder import com.anytypeio.anytype.domain.multiplayer.UserPermissionProvider import com.anytypeio.anytype.domain.page.CreateObject import com.anytypeio.anytype.domain.page.CreateObjectByTypeAndTemplate -import com.anytypeio.anytype.domain.platform.MetricsProvider +import com.anytypeio.anytype.domain.platform.InitialParamsProvider import com.anytypeio.anytype.domain.search.RelationsSubscriptionManager import com.anytypeio.anytype.domain.spaces.SpaceDeletedStatusWatcher import com.anytypeio.anytype.domain.subscriptions.GlobalSubscriptionManager @@ -77,7 +77,7 @@ object SplashModule { pathProvider: PathProvider, configStorage: ConfigStorage, spaceManager: SpaceManager, - metricsProvider: MetricsProvider, + initialParamsProvider: InitialParamsProvider, userSettings: UserSettingsRepository, awaitAccountStartManager: AwaitAccountStartManager ): LaunchAccount = LaunchAccount( @@ -85,7 +85,7 @@ object SplashModule { pathProvider = pathProvider, configStorage = configStorage, spaceManager = spaceManager, - metricsProvider = metricsProvider, + initialParamsProvider = initialParamsProvider, settings = userSettings, awaitAccountStartManager = awaitAccountStartManager ) @@ -193,7 +193,7 @@ interface SplashDependencies : ComponentDependencies { fun userSettingsRepository(): UserSettingsRepository fun dispatchers(): AppCoroutineDispatchers fun crashReporter(): CrashReporter - fun metricsProvider(): MetricsProvider + fun metricsProvider(): InitialParamsProvider fun spaceManager(): SpaceManager fun spaceStatusWatcher(): SpaceDeletedStatusWatcher fun localeProvider(): LocaleProvider diff --git a/app/src/main/java/com/anytypeio/anytype/di/feature/onboarding/login/OnboardingMnemonicLoginDI.kt b/app/src/main/java/com/anytypeio/anytype/di/feature/onboarding/login/OnboardingMnemonicLoginDI.kt index ed7715b2d1..982ce219cb 100644 --- a/app/src/main/java/com/anytypeio/anytype/di/feature/onboarding/login/OnboardingMnemonicLoginDI.kt +++ b/app/src/main/java/com/anytypeio/anytype/di/feature/onboarding/login/OnboardingMnemonicLoginDI.kt @@ -17,7 +17,7 @@ import com.anytypeio.anytype.domain.debugging.DebugGoroutines import com.anytypeio.anytype.domain.device.PathProvider import com.anytypeio.anytype.domain.misc.LocaleProvider import com.anytypeio.anytype.domain.multiplayer.UserPermissionProvider -import com.anytypeio.anytype.domain.platform.MetricsProvider +import com.anytypeio.anytype.domain.platform.InitialParamsProvider import com.anytypeio.anytype.domain.spaces.SpaceDeletedStatusWatcher import com.anytypeio.anytype.domain.subscriptions.GlobalSubscriptionManager import com.anytypeio.anytype.domain.workspace.SpaceManager @@ -87,7 +87,7 @@ interface OnboardingMnemonicLoginDependencies : ComponentDependencies { fun pathProvider(): PathProvider fun crashReporter(): CrashReporter fun configStorage(): ConfigStorage - fun metricsProvider(): MetricsProvider + fun metricsProvider(): InitialParamsProvider fun spaceStatusWatcher(): SpaceDeletedStatusWatcher fun localeProvider(): LocaleProvider fun awaitAccountStartManager(): AwaitAccountStartManager diff --git a/app/src/main/java/com/anytypeio/anytype/di/feature/onboarding/signup/OnboardingSoulCreationDI.kt b/app/src/main/java/com/anytypeio/anytype/di/feature/onboarding/signup/OnboardingSoulCreationDI.kt index 39824790be..15575ac2e0 100644 --- a/app/src/main/java/com/anytypeio/anytype/di/feature/onboarding/signup/OnboardingSoulCreationDI.kt +++ b/app/src/main/java/com/anytypeio/anytype/di/feature/onboarding/signup/OnboardingSoulCreationDI.kt @@ -16,7 +16,7 @@ import com.anytypeio.anytype.domain.device.PathProvider import com.anytypeio.anytype.domain.misc.LocaleProvider import com.anytypeio.anytype.domain.multiplayer.UserPermissionProvider import com.anytypeio.anytype.domain.`object`.ImportGetStartedUseCase -import com.anytypeio.anytype.domain.platform.MetricsProvider +import com.anytypeio.anytype.domain.platform.InitialParamsProvider import com.anytypeio.anytype.domain.search.RelationsSubscriptionManager import com.anytypeio.anytype.domain.spaces.SpaceDeletedStatusWatcher import com.anytypeio.anytype.domain.subscriptions.GlobalSubscriptionManager @@ -61,14 +61,14 @@ object OnboardingSoulCreationModule { fun provideCreateAccountUseCase( authRepository: AuthRepository, configStorage: ConfigStorage, - metricsProvider: MetricsProvider, + initialParamsProvider: InitialParamsProvider, awaitAccountStartManager: AwaitAccountStartManager, spaceManager: SpaceManager, dispatchers: AppCoroutineDispatchers ): CreateAccount = CreateAccount( repository = authRepository, configStorage = configStorage, - metricsProvider = metricsProvider, + initialParamsProvider = initialParamsProvider, dispatcher = dispatchers, awaitAccountStartManager = awaitAccountStartManager, spaceManager = spaceManager @@ -111,7 +111,7 @@ interface OnboardingSoulCreationDependencies : ComponentDependencies { fun userSettings(): UserSettingsRepository fun relationsSubscriptionManager(): RelationsSubscriptionManager fun pathProvider(): PathProvider - fun metricsProvider(): MetricsProvider + fun metricsProvider(): InitialParamsProvider fun crashReporter(): CrashReporter fun spaceManager(): SpaceManager fun spaceStatusWatcher(): SpaceDeletedStatusWatcher diff --git a/app/src/main/java/com/anytypeio/anytype/di/main/DataModule.kt b/app/src/main/java/com/anytypeio/anytype/di/main/DataModule.kt index 388d2debf2..19ab47deea 100644 --- a/app/src/main/java/com/anytypeio/anytype/di/main/DataModule.kt +++ b/app/src/main/java/com/anytypeio/anytype/di/main/DataModule.kt @@ -5,7 +5,7 @@ import android.content.SharedPreferences import androidx.security.crypto.EncryptedSharedPreferences import androidx.security.crypto.MasterKeys import com.anytypeio.anytype.app.DefaultAppActionManager -import com.anytypeio.anytype.app.DefaultMetricsProvider +import com.anytypeio.anytype.app.DefaultInitialParamsProvider import com.anytypeio.anytype.core_utils.tools.ThreadInfo import com.anytypeio.anytype.data.auth.repo.AuthCache import com.anytypeio.anytype.data.auth.repo.AuthCacheDataStore @@ -36,7 +36,7 @@ import com.anytypeio.anytype.domain.misc.AppActionManager import com.anytypeio.anytype.domain.`object`.ObjectTypesProvider import com.anytypeio.anytype.domain.objects.DefaultObjectStore import com.anytypeio.anytype.domain.objects.ObjectStore -import com.anytypeio.anytype.domain.platform.MetricsProvider +import com.anytypeio.anytype.domain.platform.InitialParamsProvider import com.anytypeio.anytype.domain.unsplash.UnsplashRepository import com.anytypeio.anytype.middleware.EventProxy import com.anytypeio.anytype.middleware.UnsplashMiddleware @@ -330,7 +330,8 @@ object DataModule { @JvmStatic @Provides @Singleton - fun provideMetricsProvider(): MetricsProvider = DefaultMetricsProvider() + fun provideMetricsProvider(context: Context): InitialParamsProvider = + DefaultInitialParamsProvider(context) @JvmStatic @Provides diff --git a/core-models/src/main/java/com/anytypeio/anytype/core_models/Command.kt b/core-models/src/main/java/com/anytypeio/anytype/core_models/Command.kt index 2aa6a8831e..14fb5e84de 100644 --- a/core-models/src/main/java/com/anytypeio/anytype/core_models/Command.kt +++ b/core-models/src/main/java/com/anytypeio/anytype/core_models/Command.kt @@ -25,6 +25,14 @@ sealed class Command { val preferYamuxTransport: Boolean? = null ) : Command() + data class SetInitialParams( + val version: String, + val platform: String, + val workDir: String, + val defaultLogLevel: String + ) : Command() + + class UploadFile( val space: SpaceId, val path: String, @@ -433,7 +441,14 @@ sealed class Command { val value: Any? = null ) - data class ReplaceFilter(val ctx: Id, val dv: Id, val view: Id, val id: Id, val filter: DVFilter) + data class ReplaceFilter( + val ctx: Id, + val dv: Id, + val view: Id, + val id: Id, + val filter: DVFilter + ) + data class RemoveFilter(val ctx: Id, val dv: Id, val view: Id, val ids: List) data class AddSort( @@ -493,10 +508,12 @@ sealed class Command { val name: String, val nameType: NameServiceNameType ) : Membership() + data class ResolveName( val name: String, val nameType: NameServiceNameType ) : Membership() + data class GetPaymentUrl( val tier: Int, val paymentMethod: MembershipPaymentMethod, @@ -537,8 +554,8 @@ sealed class Command { val dependencies: List ) { sealed class Source { - data class Relation(val key: Key): Source() - data class Block(val id: Id): Source() + data class Relation(val key: Key) : Source() + data class Block(val id: Id) : Source() } } } @@ -578,34 +595,39 @@ sealed class Command { data class AddMessage( val chat: Id, val message: Chat.Message - ): ChatCommand() + ) : ChatCommand() + data class DeleteMessage( val chat: Id, val msg: Id - ): ChatCommand() + ) : ChatCommand() + data class EditMessage( val chat: Id, val message: Chat.Message - ): ChatCommand() + ) : ChatCommand() + data class GetMessages( val chat: Id, val beforeMessageId: Id, val limit: Int - ): ChatCommand() + ) : ChatCommand() + data class SubscribeLastMessages( val chat: Id, val limit: Int - ): ChatCommand() { + ) : ChatCommand() { data class Response( val messages: List, val messageCountBefore: Int ) } + data class ToggleMessageReaction( val chat: Id, val msg: Id, val emoji: String - ): ChatCommand() + ) : ChatCommand() } /** diff --git a/data/src/main/java/com/anytypeio/anytype/data/auth/repo/AuthCacheDataStore.kt b/data/src/main/java/com/anytypeio/anytype/data/auth/repo/AuthCacheDataStore.kt index 7002c627c6..8c32ad6003 100644 --- a/data/src/main/java/com/anytypeio/anytype/data/auth/repo/AuthCacheDataStore.kt +++ b/data/src/main/java/com/anytypeio/anytype/data/auth/repo/AuthCacheDataStore.kt @@ -78,7 +78,7 @@ class AuthCacheDataStore(private val cache: AuthCache) : AuthDataStore { throw UnsupportedOperationException() } - override suspend fun setMetrics(platform: String, version: String) { + override suspend fun setInitialParams(command: Command.SetInitialParams) { throw UnsupportedOperationException() } diff --git a/data/src/main/java/com/anytypeio/anytype/data/auth/repo/AuthDataRepository.kt b/data/src/main/java/com/anytypeio/anytype/data/auth/repo/AuthDataRepository.kt index 602cef59ce..4413f568c9 100644 --- a/data/src/main/java/com/anytypeio/anytype/data/auth/repo/AuthDataRepository.kt +++ b/data/src/main/java/com/anytypeio/anytype/data/auth/repo/AuthDataRepository.kt @@ -18,11 +18,8 @@ class AuthDataRepository( private val debugConfig: DebugConfig ) : AuthRepository { - override suspend fun setMetrics(platform: String, version: String) { - factory.remote.setMetrics( - platform = platform, - version = version - ) + override suspend fun setInitialParams(command: Command.SetInitialParams) { + factory.remote.setInitialParams(command = command) } override suspend fun selectAccount( diff --git a/data/src/main/java/com/anytypeio/anytype/data/auth/repo/AuthDataStore.kt b/data/src/main/java/com/anytypeio/anytype/data/auth/repo/AuthDataStore.kt index e24b9a643a..4dfc81f1d1 100644 --- a/data/src/main/java/com/anytypeio/anytype/data/auth/repo/AuthDataStore.kt +++ b/data/src/main/java/com/anytypeio/anytype/data/auth/repo/AuthDataStore.kt @@ -38,7 +38,7 @@ interface AuthDataStore { suspend fun setCurrentAccount(id: String) suspend fun getVersion(): String - suspend fun setMetrics(platform: String, version: String) + suspend fun setInitialParams(command: Command.SetInitialParams) suspend fun getNetworkMode(): NetworkModeConfig suspend fun setNetworkMode(modeConfig: NetworkModeConfig) diff --git a/data/src/main/java/com/anytypeio/anytype/data/auth/repo/AuthRemote.kt b/data/src/main/java/com/anytypeio/anytype/data/auth/repo/AuthRemote.kt index 0bb38a885f..73797a1839 100644 --- a/data/src/main/java/com/anytypeio/anytype/data/auth/repo/AuthRemote.kt +++ b/data/src/main/java/com/anytypeio/anytype/data/auth/repo/AuthRemote.kt @@ -21,5 +21,5 @@ interface AuthRemote { suspend fun convertWallet(entropy: String): String suspend fun getVersion(): String - suspend fun setMetrics(platform: String, version: String) + suspend fun setInitialParams(command: Command.SetInitialParams) } \ No newline at end of file diff --git a/data/src/main/java/com/anytypeio/anytype/data/auth/repo/AuthRemoteDataStore.kt b/data/src/main/java/com/anytypeio/anytype/data/auth/repo/AuthRemoteDataStore.kt index 2049edc543..5874dc03d0 100644 --- a/data/src/main/java/com/anytypeio/anytype/data/auth/repo/AuthRemoteDataStore.kt +++ b/data/src/main/java/com/anytypeio/anytype/data/auth/repo/AuthRemoteDataStore.kt @@ -78,11 +78,8 @@ class AuthRemoteDataStore( override suspend fun getVersion(): String = authRemote.getVersion() - override suspend fun setMetrics(platform: String, version: String) { - authRemote.setMetrics( - platform = platform, - version = version - ) + override suspend fun setInitialParams(command: Command.SetInitialParams) { + authRemote.setInitialParams(command) } override suspend fun getNetworkMode(): NetworkModeConfig { diff --git a/domain/src/main/java/com/anytypeio/anytype/domain/auth/interactor/CreateAccount.kt b/domain/src/main/java/com/anytypeio/anytype/domain/auth/interactor/CreateAccount.kt index d9ede69b33..5a82376292 100644 --- a/domain/src/main/java/com/anytypeio/anytype/domain/auth/interactor/CreateAccount.kt +++ b/domain/src/main/java/com/anytypeio/anytype/domain/auth/interactor/CreateAccount.kt @@ -7,7 +7,7 @@ import com.anytypeio.anytype.domain.auth.repo.AuthRepository import com.anytypeio.anytype.domain.base.AppCoroutineDispatchers import com.anytypeio.anytype.domain.base.ResultInteractor import com.anytypeio.anytype.domain.config.ConfigStorage -import com.anytypeio.anytype.domain.platform.MetricsProvider +import com.anytypeio.anytype.domain.platform.InitialParamsProvider import com.anytypeio.anytype.domain.workspace.SpaceManager import javax.inject.Inject @@ -18,17 +18,14 @@ open class CreateAccount @Inject constructor( private val repository: AuthRepository, // TODO rename config storage private val configStorage: ConfigStorage, - private val metricsProvider: MetricsProvider, + private val initialParamsProvider: InitialParamsProvider, private val awaitAccountStartManager: AwaitAccountStartManager, private val spaceManager: SpaceManager, dispatcher: AppCoroutineDispatchers ) : ResultInteractor(dispatcher.io) { override suspend fun doWork(params: Params): Account { - repository.setMetrics( - version = metricsProvider.getVersion(), - platform = metricsProvider.getPlatform() - ) + repository.setInitialParams(initialParamsProvider.toCommand()) val networkMode = repository.getNetworkMode() diff --git a/domain/src/main/java/com/anytypeio/anytype/domain/auth/interactor/LaunchAccount.kt b/domain/src/main/java/com/anytypeio/anytype/domain/auth/interactor/LaunchAccount.kt index 9037106303..1c0266e0b0 100644 --- a/domain/src/main/java/com/anytypeio/anytype/domain/auth/interactor/LaunchAccount.kt +++ b/domain/src/main/java/com/anytypeio/anytype/domain/auth/interactor/LaunchAccount.kt @@ -8,7 +8,7 @@ import com.anytypeio.anytype.domain.base.BaseUseCase import com.anytypeio.anytype.domain.config.ConfigStorage import com.anytypeio.anytype.domain.config.UserSettingsRepository import com.anytypeio.anytype.domain.device.PathProvider -import com.anytypeio.anytype.domain.platform.MetricsProvider +import com.anytypeio.anytype.domain.platform.InitialParamsProvider import com.anytypeio.anytype.domain.workspace.SpaceManager import javax.inject.Inject import kotlin.coroutines.CoroutineContext @@ -22,17 +22,14 @@ class LaunchAccount @Inject constructor( private val pathProvider: PathProvider, private val configStorage: ConfigStorage, private val spaceManager: SpaceManager, - private val metricsProvider: MetricsProvider, + private val initialParamsProvider: InitialParamsProvider, private val settings: UserSettingsRepository, private val awaitAccountStartManager: AwaitAccountStartManager, context: CoroutineContext = Dispatchers.IO ) : BaseUseCase(context) { override suspend fun run(params: None) = safe { - repository.setMetrics( - version = metricsProvider.getVersion(), - platform = metricsProvider.getPlatform() - ) + repository.setInitialParams(initialParamsProvider.toCommand()) val networkMode = repository.getNetworkMode() diff --git a/domain/src/main/java/com/anytypeio/anytype/domain/auth/interactor/ResumeAccount.kt b/domain/src/main/java/com/anytypeio/anytype/domain/auth/interactor/ResumeAccount.kt index 4ece8d2754..918af74cc0 100644 --- a/domain/src/main/java/com/anytypeio/anytype/domain/auth/interactor/ResumeAccount.kt +++ b/domain/src/main/java/com/anytypeio/anytype/domain/auth/interactor/ResumeAccount.kt @@ -8,7 +8,7 @@ import com.anytypeio.anytype.domain.base.BaseUseCase import com.anytypeio.anytype.domain.config.ConfigStorage import com.anytypeio.anytype.domain.config.UserSettingsRepository import com.anytypeio.anytype.domain.device.PathProvider -import com.anytypeio.anytype.domain.platform.MetricsProvider +import com.anytypeio.anytype.domain.platform.InitialParamsProvider import com.anytypeio.anytype.domain.workspace.SpaceManager import javax.inject.Inject @@ -19,7 +19,7 @@ class ResumeAccount @Inject constructor( private val repository: AuthRepository, private val pathProvider: PathProvider, private val configStorage: ConfigStorage, - private val metricsProvider: MetricsProvider, + private val initialParamsProvider: InitialParamsProvider, private val awaitAccountStartManager: AwaitAccountStartManager, private val settings: UserSettingsRepository, private val spaceManager: SpaceManager @@ -28,10 +28,7 @@ class ResumeAccount @Inject constructor( override suspend fun run(params: None) = proceedWithResuming() private suspend fun proceedWithResuming() = safe { - repository.setMetrics( - version = metricsProvider.getVersion(), - platform = metricsProvider.getPlatform() - ) + repository.setInitialParams(initialParamsProvider.toCommand()) val mnemonic = repository.getMnemonic() if (mnemonic.isNullOrBlank()) throw IllegalStateException("Mnemonic is empty") repository.recoverWallet( diff --git a/domain/src/main/java/com/anytypeio/anytype/domain/auth/interactor/SelectAccount.kt b/domain/src/main/java/com/anytypeio/anytype/domain/auth/interactor/SelectAccount.kt index d1879dd312..6023f39bea 100644 --- a/domain/src/main/java/com/anytypeio/anytype/domain/auth/interactor/SelectAccount.kt +++ b/domain/src/main/java/com/anytypeio/anytype/domain/auth/interactor/SelectAccount.kt @@ -7,7 +7,7 @@ import com.anytypeio.anytype.domain.account.AwaitAccountStartManager import com.anytypeio.anytype.domain.auth.repo.AuthRepository import com.anytypeio.anytype.domain.base.BaseUseCase import com.anytypeio.anytype.domain.config.ConfigStorage -import com.anytypeio.anytype.domain.platform.MetricsProvider +import com.anytypeio.anytype.domain.platform.InitialParamsProvider import javax.inject.Inject /** @@ -16,15 +16,12 @@ import javax.inject.Inject class SelectAccount @Inject constructor( private val repository: AuthRepository, private val configStorage: ConfigStorage, - private val metricsProvider: MetricsProvider, + private val initialParamsProvider: InitialParamsProvider, private val awaitAccountStartManager: AwaitAccountStartManager ) : BaseUseCase() { override suspend fun run(params: Params) = safe { - repository.setMetrics( - version = metricsProvider.getVersion(), - platform = metricsProvider.getPlatform() - ) + repository.setInitialParams(initialParamsProvider.toCommand()) val networkMode = repository.getNetworkMode() diff --git a/domain/src/main/java/com/anytypeio/anytype/domain/auth/repo/AuthRepository.kt b/domain/src/main/java/com/anytypeio/anytype/domain/auth/repo/AuthRepository.kt index 7a2dc44b68..a18535619d 100644 --- a/domain/src/main/java/com/anytypeio/anytype/domain/auth/repo/AuthRepository.kt +++ b/domain/src/main/java/com/anytypeio/anytype/domain/auth/repo/AuthRepository.kt @@ -10,7 +10,7 @@ import kotlinx.coroutines.flow.Flow interface AuthRepository { - suspend fun setMetrics(platform: String, version: String) + suspend fun setInitialParams(command: Command.SetInitialParams) /** * Launches an account. diff --git a/domain/src/main/java/com/anytypeio/anytype/domain/platform/InitialParamsProvider.kt b/domain/src/main/java/com/anytypeio/anytype/domain/platform/InitialParamsProvider.kt new file mode 100644 index 0000000000..75c84f0149 --- /dev/null +++ b/domain/src/main/java/com/anytypeio/anytype/domain/platform/InitialParamsProvider.kt @@ -0,0 +1,11 @@ +package com.anytypeio.anytype.domain.platform + +import com.anytypeio.anytype.core_models.Command + +interface InitialParamsProvider { + fun getVersion(): String + fun getPlatform(): String + val workDir: String + val defaultLogLevel: String + fun toCommand(): Command.SetInitialParams +} \ No newline at end of file diff --git a/domain/src/main/java/com/anytypeio/anytype/domain/platform/MetricsProvider.kt b/domain/src/main/java/com/anytypeio/anytype/domain/platform/MetricsProvider.kt deleted file mode 100644 index 1a5bc8451c..0000000000 --- a/domain/src/main/java/com/anytypeio/anytype/domain/platform/MetricsProvider.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.anytypeio.anytype.domain.platform - -interface MetricsProvider { - fun getVersion(): String - fun getPlatform(): String -} \ No newline at end of file diff --git a/domain/src/test/java/com/anytypeio/anytype/domain/auth/CreateAccountTest.kt b/domain/src/test/java/com/anytypeio/anytype/domain/auth/CreateAccountTest.kt index fc42b938db..d51f1a0016 100644 --- a/domain/src/test/java/com/anytypeio/anytype/domain/auth/CreateAccountTest.kt +++ b/domain/src/test/java/com/anytypeio/anytype/domain/auth/CreateAccountTest.kt @@ -10,7 +10,7 @@ import com.anytypeio.anytype.domain.auth.repo.AuthRepository import com.anytypeio.anytype.domain.base.AppCoroutineDispatchers import com.anytypeio.anytype.domain.common.DefaultCoroutineTestRule import com.anytypeio.anytype.domain.config.ConfigStorage -import com.anytypeio.anytype.domain.platform.MetricsProvider +import com.anytypeio.anytype.domain.platform.InitialParamsProvider import com.anytypeio.anytype.domain.workspace.SpaceManager import com.anytypeio.anytype.test_utils.MockDataFactory import kotlinx.coroutines.ExperimentalCoroutinesApi @@ -40,7 +40,7 @@ class CreateAccountTest { lateinit var dispatchers: AppCoroutineDispatchers @Mock - lateinit var metricsProvider: MetricsProvider + lateinit var initialParamsProvider: InitialParamsProvider @Mock lateinit var awaitAccountStartManager: AwaitAccountStartManager @@ -63,7 +63,7 @@ class CreateAccountTest { createAccount = CreateAccount( repository = repo, configStorage = configStorage, - metricsProvider = metricsProvider, + initialParamsProvider = initialParamsProvider, dispatcher = dispatchers, awaitAccountStartManager = awaitAccountStartManager, spaceManager = spaceManager @@ -120,7 +120,7 @@ class CreateAccountTest { verify(repo, times(1)).createAccount(command) verify(repo, times(1)).saveAccount(setup.account) verify(repo, times(1)).setCurrentAccount(setup.account.id) - verify(repo, times(1)).setMetrics( + verify(repo, times(1)).setInitialParams( platform = platform, version = version ) @@ -131,7 +131,7 @@ class CreateAccountTest { } private fun stubMetricsProvider(version: String, platform: String) { - metricsProvider.stub { + initialParamsProvider.stub { onBlocking { getVersion() } doReturn version diff --git a/domain/src/test/java/com/anytypeio/anytype/domain/auth/ResumeAccountTest.kt b/domain/src/test/java/com/anytypeio/anytype/domain/auth/ResumeAccountTest.kt index f690d7c58d..f4de651ff8 100644 --- a/domain/src/test/java/com/anytypeio/anytype/domain/auth/ResumeAccountTest.kt +++ b/domain/src/test/java/com/anytypeio/anytype/domain/auth/ResumeAccountTest.kt @@ -8,7 +8,7 @@ import com.anytypeio.anytype.domain.auth.repo.AuthRepository import com.anytypeio.anytype.domain.config.ConfigStorage import com.anytypeio.anytype.domain.config.UserSettingsRepository import com.anytypeio.anytype.domain.device.PathProvider -import com.anytypeio.anytype.domain.platform.MetricsProvider +import com.anytypeio.anytype.domain.platform.InitialParamsProvider import com.anytypeio.anytype.domain.workspace.SpaceManager import kotlinx.coroutines.ExperimentalCoroutinesApi import org.junit.Before @@ -38,7 +38,7 @@ class ResumeAccountTest { lateinit var pathProvider: PathProvider @Mock - lateinit var metricsProvider: MetricsProvider + lateinit var initialParamsProvider: InitialParamsProvider @Mock lateinit var awaitAccountStartManager: AwaitAccountStartManager @@ -54,7 +54,7 @@ class ResumeAccountTest { repository = repo, configStorage = configStorage, pathProvider = pathProvider, - metricsProvider = metricsProvider, + initialParamsProvider = initialParamsProvider, awaitAccountStartManager = awaitAccountStartManager, spaceManager = spaceManager, settings = userSettingsRepository diff --git a/domain/src/test/java/com/anytypeio/anytype/domain/auth/StartAccountTest.kt b/domain/src/test/java/com/anytypeio/anytype/domain/auth/StartAccountTest.kt index 49d3d605ff..636e2e420b 100644 --- a/domain/src/test/java/com/anytypeio/anytype/domain/auth/StartAccountTest.kt +++ b/domain/src/test/java/com/anytypeio/anytype/domain/auth/StartAccountTest.kt @@ -13,7 +13,7 @@ import com.anytypeio.anytype.domain.auth.interactor.SelectAccount import com.anytypeio.anytype.domain.auth.repo.AuthRepository import com.anytypeio.anytype.domain.base.Either import com.anytypeio.anytype.domain.config.ConfigStorage -import com.anytypeio.anytype.domain.platform.MetricsProvider +import com.anytypeio.anytype.domain.platform.InitialParamsProvider import com.anytypeio.anytype.test_utils.MockDataFactory import kotlin.test.assertTrue import kotlinx.coroutines.ExperimentalCoroutinesApi @@ -42,7 +42,7 @@ class StartAccountTest { lateinit var configStorage: ConfigStorage @Mock - lateinit var metricsProvider: MetricsProvider + lateinit var initialParamsProvider: InitialParamsProvider @Mock lateinit var awaitAccountStartManager: AwaitAccountStartManager @@ -60,7 +60,7 @@ class StartAccountTest { selectAccount = SelectAccount( repository = repo, configStorage = configStorage, - metricsProvider = metricsProvider, + initialParamsProvider = initialParamsProvider, awaitAccountStartManager = awaitAccountStartManager ) } @@ -125,7 +125,7 @@ class StartAccountTest { verify(repo, times(1)).setCurrentAccount(account.id) - verify(repo, times(1)).setMetrics( + verify(repo, times(1)).setInitialParams( platform = platform, version = version ) @@ -360,7 +360,7 @@ class StartAccountTest { } private fun stubMetricsProvider(version: String, platform: String) { - metricsProvider.stub { + initialParamsProvider.stub { onBlocking { getVersion() } doReturn version diff --git a/middleware/src/main/java/com/anytypeio/anytype/middleware/auth/AuthMiddleware.kt b/middleware/src/main/java/com/anytypeio/anytype/middleware/auth/AuthMiddleware.kt index ef7131b864..cd59a24609 100644 --- a/middleware/src/main/java/com/anytypeio/anytype/middleware/auth/AuthMiddleware.kt +++ b/middleware/src/main/java/com/anytypeio/anytype/middleware/auth/AuthMiddleware.kt @@ -72,10 +72,7 @@ class AuthMiddleware( return middleware.versionGet().version } - override suspend fun setMetrics(platform: String, version: String) { - middleware.metricsSetParameters( - platform = platform, - version = version - ) + override suspend fun setInitialParams(command: Command.SetInitialParams) { + middleware.metricsSetParameters(command) } } \ No newline at end of file diff --git a/middleware/src/main/java/com/anytypeio/anytype/middleware/interactor/Middleware.kt b/middleware/src/main/java/com/anytypeio/anytype/middleware/interactor/Middleware.kt index 1f3226adac..8494d0341b 100644 --- a/middleware/src/main/java/com/anytypeio/anytype/middleware/interactor/Middleware.kt +++ b/middleware/src/main/java/com/anytypeio/anytype/middleware/interactor/Middleware.kt @@ -1581,15 +1581,16 @@ class Middleware @Inject constructor( @Throws(Exception::class) fun metricsSetParameters( - platform: String, - version: String + command: Command.SetInitialParams ) { val request = Rpc.Initial.SetParameters.Request( - platform = platform, - version = version + platform = command.platform, + version = command.version, + logLevel = command.defaultLogLevel, + workdir = command.workDir ) logRequestIfDebug(request) - val (response, time) = measureTimedValue { service.metricsSetParameters(request) } + val (response, time) = measureTimedValue { service.setInitialParams(request) } logResponseIfDebug(response, time) } diff --git a/middleware/src/main/java/com/anytypeio/anytype/middleware/service/MiddlewareService.kt b/middleware/src/main/java/com/anytypeio/anytype/middleware/service/MiddlewareService.kt index bd9f7f6b56..eda123801c 100644 --- a/middleware/src/main/java/com/anytypeio/anytype/middleware/service/MiddlewareService.kt +++ b/middleware/src/main/java/com/anytypeio/anytype/middleware/service/MiddlewareService.kt @@ -10,7 +10,7 @@ interface MiddlewareService { //region APP commands @Throws(Exception::class) - fun metricsSetParameters(request: Rpc.Initial.SetParameters.Request): Rpc.Initial.SetParameters.Response + fun setInitialParams(request: Rpc.Initial.SetParameters.Request): Rpc.Initial.SetParameters.Response @Throws(Exception::class) fun versionGet(request: Rpc.App.GetVersion.Request): Rpc.App.GetVersion.Response diff --git a/middleware/src/main/java/com/anytypeio/anytype/middleware/service/MiddlewareServiceImplementation.kt b/middleware/src/main/java/com/anytypeio/anytype/middleware/service/MiddlewareServiceImplementation.kt index 102dfcd4e0..30415f5e02 100644 --- a/middleware/src/main/java/com/anytypeio/anytype/middleware/service/MiddlewareServiceImplementation.kt +++ b/middleware/src/main/java/com/anytypeio/anytype/middleware/service/MiddlewareServiceImplementation.kt @@ -18,12 +18,6 @@ class MiddlewareServiceImplementation @Inject constructor( featureToggles: FeatureToggles ) : MiddlewareService { - init { - if (!featureToggles.isLogFromGoProcess) { - Service.setEnv("ANYTYPE_LOG_LEVEL", "*=fatal;anytype*=error") - } - } - override fun accountCreate(request: Rpc.Account.Create.Request): Rpc.Account.Create.Response { val encoded = Service.accountCreate(Rpc.Account.Create.Request.ADAPTER.encode(request)) val response = Rpc.Account.Create.Response.ADAPTER.decode(encoded) @@ -1156,8 +1150,9 @@ class MiddlewareServiceImplementation @Inject constructor( } } - override fun metricsSetParameters(request: Rpc.Initial.SetParameters.Request): Rpc.Initial.SetParameters.Response { - val encoded = Service.initialSetParameters(Rpc.Initial.SetParameters.Request.ADAPTER.encode(request)) + override fun setInitialParams(request: Rpc.Initial.SetParameters.Request): Rpc.Initial.SetParameters.Response { + val encoded = + Service.initialSetParameters(Rpc.Initial.SetParameters.Request.ADAPTER.encode(request)) val response = Rpc.Initial.SetParameters.Response.ADAPTER.decode(encoded) val error = response.error if (error != null && error.code != Rpc.Initial.SetParameters.Response.Error.Code.NULL) {