diff --git a/app/src/main/kotlin/dev/meloda/fast/presentation/MainActivity.kt b/app/src/main/kotlin/dev/meloda/fast/presentation/MainActivity.kt index c27d5c6b..49596ac6 100644 --- a/app/src/main/kotlin/dev/meloda/fast/presentation/MainActivity.kt +++ b/app/src/main/kotlin/dev/meloda/fast/presentation/MainActivity.kt @@ -1,6 +1,7 @@ package dev.meloda.fast.presentation import android.Manifest +import android.annotation.SuppressLint import android.app.NotificationChannel import android.app.NotificationManager import android.content.Context @@ -18,6 +19,7 @@ import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb @@ -51,6 +53,7 @@ import dev.meloda.fast.ui.R as UiR class MainActivity : AppCompatActivity() { + @SuppressLint("HardwareIds", "InlinedApi") @OptIn(ExperimentalPermissionsApi::class) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -155,15 +158,34 @@ class MainActivity : AppCompatActivity() { } } - val themeConfig = ThemeConfig( - darkMode = isNeedToEnableDarkMode(userSettings.darkMode.value), - dynamicColors = userSettings.enableDynamicColors.value, - selectedColorScheme = 0, - amoledDark = userSettings.enableAmoledDark.value, - enableBlur = userSettings.useBlur.value, - enableMultiline = userSettings.enableMultiline.value, - isDeviceCompact = isDeviceCompact - ) + val darkMode by userSettings.darkMode.collectAsStateWithLifecycle() + val dynamicColors by userSettings.enableDynamicColors.collectAsStateWithLifecycle() + val amoledDark by userSettings.enableAmoledDark.collectAsStateWithLifecycle() + val enableBlur by userSettings.useBlur.collectAsStateWithLifecycle() + val enableMultiline by userSettings.enableMultiline.collectAsStateWithLifecycle() + + val setDarkMode = isNeedToEnableDarkMode(darkMode = darkMode) + + val themeConfig by remember( + darkMode, + dynamicColors, + amoledDark, + enableBlur, + enableMultiline, + setDarkMode + ) { + mutableStateOf( + ThemeConfig( + darkMode = setDarkMode, + dynamicColors = dynamicColors, + selectedColorScheme = 0, + amoledDark = amoledDark, + enableBlur = enableBlur, + enableMultiline = enableMultiline, + isDeviceCompact = isDeviceCompact + ) + ) + } CompositionLocalProvider(LocalThemeConfig provides themeConfig) { AppTheme( diff --git a/app/src/main/kotlin/dev/meloda/fast/receiver/DownloadManagerReceiver.kt b/app/src/main/kotlin/dev/meloda/fast/receiver/DownloadManagerReceiver.kt deleted file mode 100644 index ae682080..00000000 --- a/app/src/main/kotlin/dev/meloda/fast/receiver/DownloadManagerReceiver.kt +++ /dev/null @@ -1,15 +0,0 @@ -package dev.meloda.fast.receiver - -import android.content.BroadcastReceiver -import android.content.Context -import android.content.Intent -import android.util.Log - -class DownloadManagerReceiver : BroadcastReceiver() { - - var onReceiveAction: (() -> Unit)? = null - - override fun onReceive(context: Context, intent: Intent) { - onReceiveAction?.invoke() - } -} diff --git a/core/common/src/main/AndroidManifest.xml b/core/common/src/main/AndroidManifest.xml deleted file mode 100644 index 8bdb7e14..00000000 --- a/core/common/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/core/common/src/main/kotlin/dev/meloda/fast/common/extensions/Extensions.kt b/core/common/src/main/kotlin/dev/meloda/fast/common/extensions/Extensions.kt index 87082ffe..a44ac114 100644 --- a/core/common/src/main/kotlin/dev/meloda/fast/common/extensions/Extensions.kt +++ b/core/common/src/main/kotlin/dev/meloda/fast/common/extensions/Extensions.kt @@ -8,11 +8,9 @@ import androidx.annotation.ChecksSdkIntAtLeast import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.delay import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asFlow import kotlinx.coroutines.flow.flow @@ -20,10 +18,6 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.onStart import kotlinx.coroutines.flow.update -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext -import kotlin.coroutines.CoroutineContext -import kotlin.coroutines.EmptyCoroutineContext import kotlin.time.Duration import kotlin.time.Duration.Companion.seconds @@ -98,26 +92,6 @@ fun createTimerFlow( } } -context(ViewModel) -fun MutableSharedFlow.emitOnMainScope(value: T) = emitOnScope(Dispatchers.Main) { value } - -context(ViewModel) -fun MutableSharedFlow.emitOnScope( - coroutineContext: CoroutineContext = EmptyCoroutineContext, - value: () -> T, -) { - viewModelScope.launch(coroutineContext) { - emit(value()) - } -} - -context(CoroutineScope) -suspend fun MutableSharedFlow.emitWithMain(value: T) { - withContext(Dispatchers.Main) { - emit(value) - } -} - context(ViewModel) fun MutableStateFlow.updateValue(newValue: T) = this.update { newValue } diff --git a/core/common/src/main/kotlin/dev/meloda/fast/common/util/AndroidUtils.kt b/core/common/src/main/kotlin/dev/meloda/fast/common/util/AndroidUtils.kt index e5849f8d..74fd128e 100644 --- a/core/common/src/main/kotlin/dev/meloda/fast/common/util/AndroidUtils.kt +++ b/core/common/src/main/kotlin/dev/meloda/fast/common/util/AndroidUtils.kt @@ -13,11 +13,6 @@ import androidx.core.content.FileProvider import java.io.File import java.io.FileOutputStream -private object BuildConfig { - const val DEBUG = true - const val APPLICATION_ID = "dev.meloda.fast" -} - object AndroidUtils { fun copyText( @@ -95,7 +90,7 @@ object AndroidUtils { action = if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { Settings.ACTION_SECURITY_SETTINGS } else { - data = Uri.parse("package:${BuildConfig.APPLICATION_ID}") + data = Uri.parse("package:dev.meloda.fast") Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES } }) @@ -113,7 +108,7 @@ object AndroidUtils { intent.putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true) intent.data = FileProvider.getUriForFile( context, - BuildConfig.APPLICATION_ID + providerPath, + "dev.meloda.fast$providerPath", fileToRead ) @@ -132,7 +127,7 @@ object AndroidUtils { } val file = existingFile.copyTo(copyToFile) - FileProvider.getUriForFile(context, "${BuildConfig.APPLICATION_ID}.provider", file) + FileProvider.getUriForFile(context, "dev.meloda.fast.provider", file) } catch (e: Exception) { e.printStackTrace() null @@ -150,7 +145,7 @@ object AndroidUtils { bitmap.compress(Bitmap.CompressFormat.PNG, 90, outputStream) outputStream.flush() outputStream.close() - FileProvider.getUriForFile(context, "${BuildConfig.APPLICATION_ID}.fileprovider", file) + FileProvider.getUriForFile(context, "dev.meloda.fast.fileprovider", file) } catch (e: Exception) { e.printStackTrace() null @@ -188,7 +183,6 @@ object AndroidUtils { } val chooserIntent = Intent.createChooser(intent, "Share $contentType") - context.startActivity(chooserIntent) } } diff --git a/core/data/src/main/kotlin/dev/meloda/fast/data/api/account/AccountUseCase.kt b/core/data/src/main/kotlin/dev/meloda/fast/data/api/account/AccountUseCase.kt index c6284e63..5712e1d3 100644 --- a/core/data/src/main/kotlin/dev/meloda/fast/data/api/account/AccountUseCase.kt +++ b/core/data/src/main/kotlin/dev/meloda/fast/data/api/account/AccountUseCase.kt @@ -8,9 +8,9 @@ interface AccountUseCase { suspend fun setOnline( voip: Boolean, accessToken: String - ): Flow> + ): Flow> suspend fun setOffline( accessToken: String - ): Flow> + ): Flow> } diff --git a/core/data/src/main/kotlin/dev/meloda/fast/data/api/account/AccountUseCaseImpl.kt b/core/data/src/main/kotlin/dev/meloda/fast/data/api/account/AccountUseCaseImpl.kt index 6af97538..6500c6e9 100644 --- a/core/data/src/main/kotlin/dev/meloda/fast/data/api/account/AccountUseCaseImpl.kt +++ b/core/data/src/main/kotlin/dev/meloda/fast/data/api/account/AccountUseCaseImpl.kt @@ -1,49 +1,30 @@ package dev.meloda.fast.data.api.account import dev.meloda.fast.data.State +import dev.meloda.fast.data.mapToState import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow -// TODO: 05/05/2024, Danil Nikolaev: implement class AccountUseCaseImpl( - private val accountRepository: dev.meloda.fast.data.api.account.AccountRepository -) : dev.meloda.fast.data.api.account.AccountUseCase { + private val repository: AccountRepository +) : AccountUseCase { override suspend fun setOnline( voip: Boolean, accessToken: String - ): Flow> = flow { -// emit(dev.meloda.fast.data.State.Loading) -// -// val newState = accountRepository.setOnline( -// params = AccountSetOnlineRequest( -// voip = voip, -// accessToken = accessToken -// ) -// ).fold( -// onSuccess = { response -> dev.meloda.fast.data.State.Success(response) }, -// onNetworkFailure = { dev.meloda.fast.data.State.Error.ConnectionError }, -// onUnknownFailure = { dev.meloda.fast.data.State.UNKNOWN_ERROR }, -// onHttpFailure = { result -> result.error.toStateApiError() }, -// onApiFailure = { result -> result.error.toStateApiError() } -// ) -// emit(newState) + ): Flow> = flow { + emit(State.Loading) + + val newState = repository.setOnline(voip = voip).mapToState() + emit(newState) } override suspend fun setOffline( accessToken: String - ): Flow> = flow { - emit(dev.meloda.fast.data.State.Loading) + ): Flow> = flow { + emit(State.Loading) -// val newState = accountRepository.setOffline( -// params = AccountSetOfflineRequest(accessToken = accessToken) -// ).fold( -// onSuccess = { response -> dev.meloda.fast.data.State.Success(response) }, -// onNetworkFailure = { dev.meloda.fast.data.State.Error.ConnectionError }, -// onUnknownFailure = { dev.meloda.fast.data.State.UNKNOWN_ERROR }, -// onHttpFailure = { result -> result.error.toStateApiError() }, -// onApiFailure = { result -> result.error.toStateApiError() } -// ) -// emit(newState) + val newState = repository.setOffline().mapToState() + emit(newState) } } diff --git a/core/database/src/main/AndroidManifest.xml b/core/database/src/main/AndroidManifest.xml deleted file mode 100644 index 8bdb7e14..00000000 --- a/core/database/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/core/datastore/src/main/AndroidManifest.xml b/core/datastore/src/main/AndroidManifest.xml deleted file mode 100644 index 8bdb7e14..00000000 --- a/core/datastore/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/core/model/src/main/AndroidManifest.xml b/core/model/src/main/AndroidManifest.xml deleted file mode 100644 index 8bdb7e14..00000000 --- a/core/model/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/core/model/src/main/kotlin/dev/meloda/fast/model/ApiEvent.kt b/core/model/src/main/kotlin/dev/meloda/fast/model/ApiEvent.kt index 286b47f5..2fce295e 100644 --- a/core/model/src/main/kotlin/dev/meloda/fast/model/ApiEvent.kt +++ b/core/model/src/main/kotlin/dev/meloda/fast/model/ApiEvent.kt @@ -1,4 +1,4 @@ -package dev.meloda.fast.model; +package dev.meloda.fast.model enum class ApiEvent(val value: Int) { MESSAGE_SET_FLAGS(2), diff --git a/core/model/src/main/kotlin/dev/meloda/fast/model/api/PeerType.kt b/core/model/src/main/kotlin/dev/meloda/fast/model/api/PeerType.kt index 4789e59b..07a7487d 100644 --- a/core/model/src/main/kotlin/dev/meloda/fast/model/api/PeerType.kt +++ b/core/model/src/main/kotlin/dev/meloda/fast/model/api/PeerType.kt @@ -1,4 +1,4 @@ -package dev.meloda.fast.model.api; +package dev.meloda.fast.model.api enum class PeerType(val value: String) { USER("user"), diff --git a/core/network/src/main/AndroidManifest.xml b/core/network/src/main/AndroidManifest.xml deleted file mode 100644 index 8bdb7e14..00000000 --- a/core/network/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/core/network/src/main/kotlin/dev/meloda/fast/network/ApiResponse.kt b/core/network/src/main/kotlin/dev/meloda/fast/network/ApiResponse.kt index d77f9e8d..486b005d 100644 --- a/core/network/src/main/kotlin/dev/meloda/fast/network/ApiResponse.kt +++ b/core/network/src/main/kotlin/dev/meloda/fast/network/ApiResponse.kt @@ -11,5 +11,4 @@ data class ApiResponse( val isSuccessful get() = error == null && response != null fun requireResponse(): T = requireNotNull(response) - fun requireError(): RestApiError = requireNotNull(error) } diff --git a/core/network/src/main/kotlin/dev/meloda/fast/network/ValidationType.kt b/core/network/src/main/kotlin/dev/meloda/fast/network/ValidationType.kt index d8b260b5..50a6c4a1 100644 --- a/core/network/src/main/kotlin/dev/meloda/fast/network/ValidationType.kt +++ b/core/network/src/main/kotlin/dev/meloda/fast/network/ValidationType.kt @@ -1,4 +1,4 @@ -package dev.meloda.fast.network; +package dev.meloda.fast.network enum class ValidationType(val value: String) { APP("2fa_app"), diff --git a/core/network/src/main/kotlin/dev/meloda/fast/network/VkOAuthErrorType.kt b/core/network/src/main/kotlin/dev/meloda/fast/network/VkOAuthErrorType.kt index ff90b9b3..488b38a5 100644 --- a/core/network/src/main/kotlin/dev/meloda/fast/network/VkOAuthErrorType.kt +++ b/core/network/src/main/kotlin/dev/meloda/fast/network/VkOAuthErrorType.kt @@ -1,4 +1,4 @@ -package dev.meloda.fast.network; +package dev.meloda.fast.network enum class VkOAuthErrorType(val value: String) { WRONG_OTP_FORMAT("otp_format_is_incorrect"), diff --git a/core/ui/src/main/AndroidManifest.xml b/core/ui/src/main/AndroidManifest.xml deleted file mode 100644 index 8bdb7e14..00000000 --- a/core/ui/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/feature/auth/captcha/src/main/AndroidManifest.xml b/feature/auth/captcha/src/main/AndroidManifest.xml deleted file mode 100644 index 8bdb7e14..00000000 --- a/feature/auth/captcha/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/feature/auth/login/src/androidTest/kotlin/com/meloda/fast/auth/login/LoginScreenTest.kt b/feature/auth/login/src/androidTest/kotlin/dev/meloda/fast/auth/login/LoginScreenTest.kt similarity index 84% rename from feature/auth/login/src/androidTest/kotlin/com/meloda/fast/auth/login/LoginScreenTest.kt rename to feature/auth/login/src/androidTest/kotlin/dev/meloda/fast/auth/login/LoginScreenTest.kt index 79363455..580181b2 100644 --- a/feature/auth/login/src/androidTest/kotlin/com/meloda/fast/auth/login/LoginScreenTest.kt +++ b/feature/auth/login/src/androidTest/kotlin/dev/meloda/fast/auth/login/LoginScreenTest.kt @@ -1,9 +1,9 @@ -package com.meloda.fast.auth.login +package dev.meloda.fast.auth.login import androidx.compose.ui.test.assertHasClickAction import androidx.compose.ui.test.junit4.createComposeRule import androidx.compose.ui.test.onNodeWithTag -import com.meloda.fast.auth.login.presentation.LoginScreen +import dev.meloda.fast.auth.login.presentation.LoginScreen import org.junit.Rule import org.junit.Test diff --git a/feature/auth/login/src/androidTest/kotlin/com/meloda/fast/auth/login/LogoScreenTest.kt b/feature/auth/login/src/androidTest/kotlin/dev/meloda/fast/auth/login/LogoScreenTest.kt similarity index 84% rename from feature/auth/login/src/androidTest/kotlin/com/meloda/fast/auth/login/LogoScreenTest.kt rename to feature/auth/login/src/androidTest/kotlin/dev/meloda/fast/auth/login/LogoScreenTest.kt index f0e3deb7..053293a7 100644 --- a/feature/auth/login/src/androidTest/kotlin/com/meloda/fast/auth/login/LogoScreenTest.kt +++ b/feature/auth/login/src/androidTest/kotlin/dev/meloda/fast/auth/login/LogoScreenTest.kt @@ -1,9 +1,9 @@ -package com.meloda.fast.auth.login +package dev.meloda.fast.auth.login import androidx.compose.ui.test.assertHasClickAction import androidx.compose.ui.test.junit4.createComposeRule import androidx.compose.ui.test.onNodeWithTag -import com.meloda.fast.auth.login.presentation.LogoScreen +import dev.meloda.fast.auth.login.presentation.LogoScreen import org.junit.Rule import org.junit.Test diff --git a/feature/auth/login/src/main/AndroidManifest.xml b/feature/auth/login/src/main/AndroidManifest.xml deleted file mode 100644 index 8bdb7e14..00000000 --- a/feature/auth/login/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/LoginViewModel.kt b/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/LoginViewModel.kt index a9fa32fd..d79892f3 100644 --- a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/LoginViewModel.kt +++ b/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/LoginViewModel.kt @@ -1,9 +1,8 @@ -package com.meloda.fast.auth.login +package dev.meloda.fast.auth.login import android.util.Log import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import dev.meloda.fast.auth.login.BuildConfig import dev.meloda.fast.common.LongPollController import dev.meloda.fast.common.UserConfig import dev.meloda.fast.common.VkConstants @@ -16,16 +15,15 @@ import dev.meloda.fast.data.api.users.UsersUseCase import dev.meloda.fast.data.db.AccountsRepository import dev.meloda.fast.data.processState import dev.meloda.fast.datastore.AppSettings -import dev.meloda.fast.datastore.UserSettings import dev.meloda.fast.model.database.AccountEntity import dev.meloda.fast.network.OAuthErrorDomain -import com.meloda.fast.auth.login.model.CaptchaArguments -import com.meloda.fast.auth.login.model.LoginError -import com.meloda.fast.auth.login.model.LoginScreenState -import com.meloda.fast.auth.login.model.LoginUserBannedArguments -import com.meloda.fast.auth.login.model.LoginValidationArguments -import com.meloda.fast.auth.login.model.LoginValidationResult -import com.meloda.fast.auth.login.validation.LoginValidator +import dev.meloda.fast.auth.login.model.CaptchaArguments +import dev.meloda.fast.auth.login.model.LoginError +import dev.meloda.fast.auth.login.model.LoginScreenState +import dev.meloda.fast.auth.login.model.LoginUserBannedArguments +import dev.meloda.fast.auth.login.model.LoginValidationArguments +import dev.meloda.fast.auth.login.model.LoginValidationResult +import dev.meloda.fast.auth.login.validation.LoginValidator import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay import kotlinx.coroutines.flow.MutableStateFlow @@ -72,7 +70,6 @@ class LoginViewModelImpl( private val usersUseCase: UsersUseCase, private val accountsRepository: AccountsRepository, private val loginValidator: LoginValidator, - private val userSettings: UserSettings, private val longPollController: LongPollController ) : ViewModel(), LoginViewModel { diff --git a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/OAuthUseCase.kt b/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/OAuthUseCase.kt index 692feb62..37d1b282 100644 --- a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/OAuthUseCase.kt +++ b/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/OAuthUseCase.kt @@ -1,7 +1,7 @@ -package com.meloda.fast.auth.login +package dev.meloda.fast.auth.login import dev.meloda.fast.data.State -import com.meloda.fast.auth.login.model.AuthInfo +import dev.meloda.fast.auth.login.model.AuthInfo import kotlinx.coroutines.flow.Flow interface OAuthUseCase { diff --git a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/OAuthUseCaseImpl.kt b/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/OAuthUseCaseImpl.kt index 1283f3a0..e9d984d1 100644 --- a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/OAuthUseCaseImpl.kt +++ b/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/OAuthUseCaseImpl.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.auth.login +package dev.meloda.fast.auth.login import dev.meloda.fast.data.State import dev.meloda.fast.data.api.oauth.OAuthRepository @@ -6,7 +6,7 @@ import dev.meloda.fast.network.OAuthErrorDomain import dev.meloda.fast.network.ValidationType import dev.meloda.fast.network.VkOAuthError import dev.meloda.fast.network.VkOAuthErrorType -import com.meloda.fast.auth.login.model.AuthInfo +import dev.meloda.fast.auth.login.model.AuthInfo import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow diff --git a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/di/LoginModule.kt b/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/di/LoginModule.kt index d92f6e23..e218dba1 100644 --- a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/di/LoginModule.kt +++ b/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/di/LoginModule.kt @@ -1,10 +1,10 @@ -package com.meloda.fast.auth.login.di +package dev.meloda.fast.auth.login.di -import com.meloda.fast.auth.login.LoginViewModel -import com.meloda.fast.auth.login.LoginViewModelImpl -import com.meloda.fast.auth.login.OAuthUseCase -import com.meloda.fast.auth.login.OAuthUseCaseImpl -import com.meloda.fast.auth.login.validation.LoginValidator +import dev.meloda.fast.auth.login.LoginViewModel +import dev.meloda.fast.auth.login.LoginViewModelImpl +import dev.meloda.fast.auth.login.OAuthUseCase +import dev.meloda.fast.auth.login.OAuthUseCaseImpl +import dev.meloda.fast.auth.login.validation.LoginValidator import org.koin.androidx.viewmodel.dsl.viewModelOf import org.koin.core.module.dsl.singleOf import org.koin.dsl.bind diff --git a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/AuthInfo.kt b/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/AuthInfo.kt index c4f93a97..f5503ecb 100644 --- a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/AuthInfo.kt +++ b/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/AuthInfo.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.auth.login.model +package dev.meloda.fast.auth.login.model data class AuthInfo( val userId: Int?, diff --git a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/CaptchaArguments.kt b/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/CaptchaArguments.kt index b83a7860..2737ed7d 100644 --- a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/CaptchaArguments.kt +++ b/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/CaptchaArguments.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.auth.login.model +package dev.meloda.fast.auth.login.model import android.os.Parcelable import kotlinx.parcelize.Parcelize diff --git a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginArguments.kt b/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginArguments.kt deleted file mode 100644 index a51eaa88..00000000 --- a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginArguments.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.meloda.fast.auth.login.model - -data class LoginArguments(val code: String) { - - companion object { - val EMPTY: LoginArguments = LoginArguments(code = "") - } -} diff --git a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginError.kt b/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginError.kt index 340914d9..d6b5fd78 100644 --- a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginError.kt +++ b/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginError.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.auth.login.model +package dev.meloda.fast.auth.login.model import androidx.compose.runtime.Immutable diff --git a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginScreenState.kt b/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginScreenState.kt index 2cc6cc8d..cdad4e06 100644 --- a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginScreenState.kt +++ b/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginScreenState.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.auth.login.model +package dev.meloda.fast.auth.login.model import androidx.compose.runtime.Immutable diff --git a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginUserBannedArguments.kt b/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginUserBannedArguments.kt index b8b986d8..7da19d46 100644 --- a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginUserBannedArguments.kt +++ b/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginUserBannedArguments.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.auth.login.model +package dev.meloda.fast.auth.login.model import android.os.Parcelable import kotlinx.parcelize.Parcelize diff --git a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginValidationArguments.kt b/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginValidationArguments.kt index f41cf592..f1ffdf78 100644 --- a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginValidationArguments.kt +++ b/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginValidationArguments.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.auth.login.model +package dev.meloda.fast.auth.login.model import android.os.Parcelable import kotlinx.parcelize.Parcelize diff --git a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginValidationResult.kt b/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginValidationResult.kt index 0466fb28..685b5b2a 100644 --- a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginValidationResult.kt +++ b/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginValidationResult.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.auth.login.model +package dev.meloda.fast.auth.login.model sealed class LoginValidationResult { diff --git a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/navigation/LoginNavigation.kt b/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/navigation/LoginNavigation.kt index 1c077e1d..ca06c374 100644 --- a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/navigation/LoginNavigation.kt +++ b/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/navigation/LoginNavigation.kt @@ -1,17 +1,17 @@ -package com.meloda.fast.auth.login.navigation +package dev.meloda.fast.auth.login.navigation import androidx.navigation.NavBackStackEntry import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.compose.composable import dev.meloda.fast.common.extensions.navigation.sharedViewModel -import com.meloda.fast.auth.login.LoginViewModel -import com.meloda.fast.auth.login.LoginViewModelImpl -import com.meloda.fast.auth.login.model.CaptchaArguments -import com.meloda.fast.auth.login.model.LoginValidationArguments -import com.meloda.fast.auth.login.model.LoginUserBannedArguments -import com.meloda.fast.auth.login.presentation.LoginRoute -import com.meloda.fast.auth.login.presentation.LogoRoute +import dev.meloda.fast.auth.login.LoginViewModel +import dev.meloda.fast.auth.login.LoginViewModelImpl +import dev.meloda.fast.auth.login.model.CaptchaArguments +import dev.meloda.fast.auth.login.model.LoginValidationArguments +import dev.meloda.fast.auth.login.model.LoginUserBannedArguments +import dev.meloda.fast.auth.login.presentation.LoginRoute +import dev.meloda.fast.auth.login.presentation.LogoRoute import kotlinx.serialization.Serializable @Serializable diff --git a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/presentation/LoginScreen.kt b/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/presentation/LoginScreen.kt index 465d9c07..cc6d86ef 100644 --- a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/presentation/LoginScreen.kt +++ b/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/presentation/LoginScreen.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.auth.login.presentation +package dev.meloda.fast.auth.login.presentation import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.fadeIn @@ -58,13 +58,13 @@ import dev.meloda.fast.ui.components.TextFieldErrorText import dev.meloda.fast.ui.theme.LocalThemeConfig import dev.meloda.fast.ui.util.handleEnterKey import dev.meloda.fast.ui.util.handleTabKey -import com.meloda.fast.auth.login.LoginViewModel -import com.meloda.fast.auth.login.LoginViewModelImpl -import com.meloda.fast.auth.login.model.CaptchaArguments -import com.meloda.fast.auth.login.model.LoginError -import com.meloda.fast.auth.login.model.LoginScreenState -import com.meloda.fast.auth.login.model.LoginUserBannedArguments -import com.meloda.fast.auth.login.model.LoginValidationArguments +import dev.meloda.fast.auth.login.LoginViewModel +import dev.meloda.fast.auth.login.LoginViewModelImpl +import dev.meloda.fast.auth.login.model.CaptchaArguments +import dev.meloda.fast.auth.login.model.LoginError +import dev.meloda.fast.auth.login.model.LoginScreenState +import dev.meloda.fast.auth.login.model.LoginUserBannedArguments +import dev.meloda.fast.auth.login.model.LoginValidationArguments import org.koin.androidx.compose.koinViewModel import dev.meloda.fast.ui.R as UiR diff --git a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/presentation/LogoScreen.kt b/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/presentation/LogoScreen.kt index 63ea9808..6901f335 100644 --- a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/presentation/LogoScreen.kt +++ b/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/presentation/LogoScreen.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.auth.login.presentation +package dev.meloda.fast.auth.login.presentation import androidx.compose.animation.core.animateDpAsState import androidx.compose.foundation.ExperimentalFoundationApi @@ -32,8 +32,8 @@ import androidx.compose.ui.unit.LayoutDirection import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import dev.meloda.fast.ui.theme.LocalThemeConfig -import com.meloda.fast.auth.login.LoginViewModel -import com.meloda.fast.auth.login.LoginViewModelImpl +import dev.meloda.fast.auth.login.LoginViewModel +import dev.meloda.fast.auth.login.LoginViewModelImpl import org.koin.androidx.compose.koinViewModel import dev.meloda.fast.ui.R as UiR diff --git a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/validation/LoginValidator.kt b/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/validation/LoginValidator.kt index 7cb6e264..b1c00f79 100644 --- a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/validation/LoginValidator.kt +++ b/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/validation/LoginValidator.kt @@ -1,8 +1,8 @@ -package com.meloda.fast.auth.login.validation +package dev.meloda.fast.auth.login.validation import dev.meloda.fast.common.extensions.addIf -import com.meloda.fast.auth.login.model.LoginScreenState -import com.meloda.fast.auth.login.model.LoginValidationResult +import dev.meloda.fast.auth.login.model.LoginScreenState +import dev.meloda.fast.auth.login.model.LoginValidationResult class LoginValidator { diff --git a/feature/auth/src/main/AndroidManifest.xml b/feature/auth/src/main/AndroidManifest.xml deleted file mode 100644 index 8bdb7e14..00000000 --- a/feature/auth/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/feature/auth/src/main/kotlin/dev/meloda/fast/auth/AuthGraph.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/AuthGraph.kt index c96bdb67..cfc4e43a 100644 --- a/feature/auth/src/main/kotlin/dev/meloda/fast/auth/AuthGraph.kt +++ b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/AuthGraph.kt @@ -13,9 +13,9 @@ import dev.meloda.fast.auth.validation.navigation.validationScreen import dev.meloda.fast.auth.userbanned.model.UserBannedArguments import dev.meloda.fast.auth.userbanned.navigation.navigateToUserBanned import dev.meloda.fast.auth.userbanned.navigation.userBannedRoute -import com.meloda.fast.auth.login.navigation.Logo -import com.meloda.fast.auth.login.navigation.loginScreen -import com.meloda.fast.auth.login.navigation.navigateToLogin +import dev.meloda.fast.auth.login.navigation.Logo +import dev.meloda.fast.auth.login.navigation.loginScreen +import dev.meloda.fast.auth.login.navigation.navigateToLogin import kotlinx.serialization.Serializable import java.net.URLEncoder diff --git a/feature/auth/src/main/kotlin/dev/meloda/fast/auth/AuthModule.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/AuthModule.kt index fb920ed1..92adc9c9 100644 --- a/feature/auth/src/main/kotlin/dev/meloda/fast/auth/AuthModule.kt +++ b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/AuthModule.kt @@ -2,7 +2,7 @@ package dev.meloda.fast.auth import dev.meloda.fast.auth.captcha.di.captchaModule import dev.meloda.fast.auth.validation.di.validationModule -import com.meloda.fast.auth.login.di.loginModule +import dev.meloda.fast.auth.login.di.loginModule import org.koin.dsl.module val authModule = module { diff --git a/feature/chatmaterials/src/main/AndroidManifest.xml b/feature/chatmaterials/src/main/AndroidManifest.xml deleted file mode 100644 index 8bdb7e14..00000000 --- a/feature/chatmaterials/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/feature/conversations/src/main/AndroidManifest.xml b/feature/conversations/src/main/AndroidManifest.xml deleted file mode 100644 index 8bdb7e14..00000000 --- a/feature/conversations/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/feature/friends/src/main/AndroidManifest.xml b/feature/friends/src/main/AndroidManifest.xml deleted file mode 100644 index 8bdb7e14..00000000 --- a/feature/friends/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/feature/friends/src/main/kotlin/dev/meloda/fast/friends/model/OnlineState.kt b/feature/friends/src/main/kotlin/dev/meloda/fast/friends/model/OnlineState.kt deleted file mode 100644 index 99ed01c3..00000000 --- a/feature/friends/src/main/kotlin/dev/meloda/fast/friends/model/OnlineState.kt +++ /dev/null @@ -1,5 +0,0 @@ -package dev.meloda.fast.friends.model - -enum class OnlineState { - OFFLINE, ONLINE, ONLINE_MOBILE -} diff --git a/feature/languagepicker/src/main/AndroidManifest.xml b/feature/languagepicker/src/main/AndroidManifest.xml deleted file mode 100644 index 8bdb7e14..00000000 --- a/feature/languagepicker/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/feature/messageshistory/src/main/AndroidManifest.xml b/feature/messageshistory/src/main/AndroidManifest.xml deleted file mode 100644 index 8bdb7e14..00000000 --- a/feature/messageshistory/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/feature/photoviewer/src/main/AndroidManifest.xml b/feature/photoviewer/src/main/AndroidManifest.xml deleted file mode 100644 index 8bdb7e14..00000000 --- a/feature/photoviewer/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/feature/photoviewer/src/main/kotlin/dev/meloda/fast/photoviewer/presentation/PhotoViewScreenContent.kt b/feature/photoviewer/src/main/kotlin/dev/meloda/fast/photoviewer/presentation/PhotoViewScreenContent.kt index 3454fb16..da8955d4 100644 --- a/feature/photoviewer/src/main/kotlin/dev/meloda/fast/photoviewer/presentation/PhotoViewScreenContent.kt +++ b/feature/photoviewer/src/main/kotlin/dev/meloda/fast/photoviewer/presentation/PhotoViewScreenContent.kt @@ -48,9 +48,6 @@ import dev.meloda.fast.common.model.UiImage import dev.meloda.fast.photoviewer.PhotoViewViewModel import dev.meloda.fast.photoviewer.model.PhotoViewState -@OptIn( - ExperimentalFoundationApi::class, -) @Composable fun PhotoViewScreenContent( onBackClick: () -> Unit, diff --git a/feature/profile/src/main/AndroidManifest.xml b/feature/profile/src/main/AndroidManifest.xml deleted file mode 100644 index 8bdb7e14..00000000 --- a/feature/profile/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/feature/settings/src/main/AndroidManifest.xml b/feature/settings/src/main/AndroidManifest.xml deleted file mode 100644 index 8bdb7e14..00000000 --- a/feature/settings/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/feature/settings/src/main/kotlin/dev/meloda/fast/settings/SettingsViewModel.kt b/feature/settings/src/main/kotlin/dev/meloda/fast/settings/SettingsViewModel.kt index b12f3737..45275873 100644 --- a/feature/settings/src/main/kotlin/dev/meloda/fast/settings/SettingsViewModel.kt +++ b/feature/settings/src/main/kotlin/dev/meloda/fast/settings/SettingsViewModel.kt @@ -104,10 +104,10 @@ class SettingsViewModelImpl( } SettingsKeys.KEY_DEBUG_HIDE_DEBUG_LIST -> { - val showDebugCategory = AppSettings.Debug.showDebugCategory - if (!showDebugCategory) return + if (!AppSettings.Debug.showDebugCategory) return - onSettingsItemChanged(key, false) + AppSettings.Debug.showDebugCategory = false + userSettings.onShowDebugCategoryChanged(false) createSettings() @@ -122,7 +122,8 @@ class SettingsViewModelImpl( SettingsKeys.KEY_ACTIVITY_SEND_ONLINE_STATUS -> { if (AppSettings.Debug.showDebugCategory) return - onSettingsItemChanged(key, true) + AppSettings.Debug.showDebugCategory = true + userSettings.onShowDebugCategoryChanged(true) createSettings() diff --git a/feature/settings/src/main/kotlin/dev/meloda/fast/settings/model/TitleProvider.kt b/feature/settings/src/main/kotlin/dev/meloda/fast/settings/model/TitleProvider.kt deleted file mode 100644 index 002de840..00000000 --- a/feature/settings/src/main/kotlin/dev/meloda/fast/settings/model/TitleProvider.kt +++ /dev/null @@ -1,7 +0,0 @@ -package dev.meloda.fast.settings.model - -import dev.meloda.fast.common.model.UiText - -fun interface TitleProvider> { - fun provideTitle(item: S): UiText? -}