update package name (big one)

This commit is contained in:
2024-07-16 06:37:37 +03:00
parent ab27ef29b1
commit 4f9e49003b
378 changed files with 1395 additions and 1395 deletions
+2 -2
View File
@@ -17,7 +17,7 @@ plugins {
alias(libs.plugins.kotlin.serialization)
}
group = "com.meloda.app.fast.auth"
group = "dev.meloda.fast.auth"
androidComponents {
onVariants { variant ->
@@ -43,7 +43,7 @@ androidComponents {
}
android {
namespace = "com.meloda.app.fast.auth"
namespace = "dev.meloda.fast.auth"
compileSdk = Configs.compileSdk
defaultConfig {
+1 -1
View File
@@ -7,7 +7,7 @@ plugins {
}
android {
namespace = "com.meloda.app.fast.captcha"
namespace = "dev.meloda.fast.captcha"
compileSdk = Configs.compileSdk
defaultConfig {
@@ -1,12 +1,12 @@
package com.meloda.app.fast.auth.captcha
package dev.meloda.fast.auth.captcha
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import com.meloda.app.fast.auth.captcha.model.CaptchaScreenState
import com.meloda.app.fast.auth.captcha.navigation.Captcha
import com.meloda.app.fast.auth.captcha.validation.CaptchaValidator
import com.meloda.app.fast.common.extensions.setValue
import com.meloda.app.fast.common.extensions.updateValue
import dev.meloda.fast.auth.captcha.model.CaptchaScreenState
import dev.meloda.fast.auth.captcha.navigation.Captcha
import dev.meloda.fast.auth.captcha.validation.CaptchaValidator
import dev.meloda.fast.common.extensions.setValue
import dev.meloda.fast.common.extensions.updateValue
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.update
@@ -1,8 +1,8 @@
package com.meloda.app.fast.auth.captcha.di
package dev.meloda.fast.auth.captcha.di
import com.meloda.app.fast.auth.captcha.CaptchaViewModel
import com.meloda.app.fast.auth.captcha.CaptchaViewModelImpl
import com.meloda.app.fast.auth.captcha.validation.CaptchaValidator
import dev.meloda.fast.auth.captcha.CaptchaViewModel
import dev.meloda.fast.auth.captcha.CaptchaViewModelImpl
import dev.meloda.fast.auth.captcha.validation.CaptchaValidator
import org.koin.androidx.viewmodel.dsl.viewModelOf
import org.koin.core.module.dsl.singleOf
import org.koin.dsl.bind
@@ -1,4 +1,4 @@
package com.meloda.app.fast.auth.captcha.model
package dev.meloda.fast.auth.captcha.model
data class CaptchaScreenState(
val captchaImageUrl: String,
@@ -1,4 +1,4 @@
package com.meloda.app.fast.auth.captcha.model
package dev.meloda.fast.auth.captcha.model
sealed class CaptchaValidationResult {
data object Empty : CaptchaValidationResult()
@@ -1,11 +1,11 @@
package com.meloda.app.fast.auth.captcha.navigation
package dev.meloda.fast.auth.captcha.navigation
import androidx.lifecycle.SavedStateHandle
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.compose.composable
import androidx.navigation.toRoute
import com.meloda.app.fast.auth.captcha.presentation.CaptchaRoute
import dev.meloda.fast.auth.captcha.presentation.CaptchaRoute
import kotlinx.serialization.Serializable
@Serializable
@@ -1,4 +1,4 @@
package com.meloda.app.fast.auth.captcha.presentation
package dev.meloda.fast.auth.captcha.presentation
import androidx.activity.compose.BackHandler
import androidx.compose.animation.AnimatedVisibility
@@ -47,14 +47,14 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import coil.compose.AsyncImage
import com.meloda.app.fast.auth.captcha.CaptchaViewModel
import com.meloda.app.fast.auth.captcha.CaptchaViewModelImpl
import com.meloda.app.fast.auth.captcha.model.CaptchaScreenState
import com.meloda.app.fast.ui.components.ActionInvokeDismiss
import com.meloda.app.fast.ui.components.MaterialDialog
import com.meloda.app.fast.ui.components.TextFieldErrorText
import dev.meloda.fast.auth.captcha.CaptchaViewModel
import dev.meloda.fast.auth.captcha.CaptchaViewModelImpl
import dev.meloda.fast.auth.captcha.model.CaptchaScreenState
import dev.meloda.fast.ui.components.ActionInvokeDismiss
import dev.meloda.fast.ui.components.MaterialDialog
import dev.meloda.fast.ui.components.TextFieldErrorText
import org.koin.androidx.compose.koinViewModel
import com.meloda.app.fast.ui.R as UiR
import dev.meloda.fast.ui.R as UiR
@Composable
fun CaptchaRoute(
@@ -1,7 +1,7 @@
package com.meloda.app.fast.auth.captcha.validation
package dev.meloda.fast.auth.captcha.validation
import com.meloda.app.fast.auth.captcha.model.CaptchaScreenState
import com.meloda.app.fast.auth.captcha.model.CaptchaValidationResult
import dev.meloda.fast.auth.captcha.model.CaptchaScreenState
import dev.meloda.fast.auth.captcha.model.CaptchaValidationResult
class CaptchaValidator {
+1 -1
View File
@@ -40,7 +40,7 @@ androidComponents {
}
android {
namespace = "com.meloda.app.fast.auth.login"
namespace = "dev.meloda.fast.auth.login"
compileSdk = Configs.compileSdk
defaultConfig {
@@ -3,22 +3,22 @@ package com.meloda.fast.auth.login
import android.util.Log
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.meloda.app.fast.auth.login.BuildConfig
import com.meloda.app.fast.common.LongPollController
import com.meloda.app.fast.common.UserConfig
import com.meloda.app.fast.common.VkConstants
import com.meloda.app.fast.common.extensions.listenValue
import com.meloda.app.fast.common.extensions.setValue
import com.meloda.app.fast.common.extensions.updateValue
import com.meloda.app.fast.common.model.LongPollState
import com.meloda.app.fast.data.State
import com.meloda.app.fast.data.api.users.UsersUseCase
import com.meloda.app.fast.data.db.AccountsRepository
import com.meloda.app.fast.data.processState
import com.meloda.app.fast.datastore.AppSettings
import com.meloda.app.fast.datastore.UserSettings
import com.meloda.app.fast.model.database.AccountEntity
import com.meloda.app.fast.network.OAuthErrorDomain
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
import dev.meloda.fast.common.extensions.listenValue
import dev.meloda.fast.common.extensions.setValue
import dev.meloda.fast.common.extensions.updateValue
import dev.meloda.fast.common.model.LongPollState
import dev.meloda.fast.data.State
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
@@ -1,6 +1,6 @@
package com.meloda.fast.auth.login
import com.meloda.app.fast.data.State
import dev.meloda.fast.data.State
import com.meloda.fast.auth.login.model.AuthInfo
import kotlinx.coroutines.flow.Flow
@@ -1,11 +1,11 @@
package com.meloda.fast.auth.login
import com.meloda.app.fast.data.State
import com.meloda.app.fast.data.api.oauth.OAuthRepository
import com.meloda.app.fast.network.OAuthErrorDomain
import com.meloda.app.fast.network.ValidationType
import com.meloda.app.fast.network.VkOAuthError
import com.meloda.app.fast.network.VkOAuthErrorType
import dev.meloda.fast.data.State
import dev.meloda.fast.data.api.oauth.OAuthRepository
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 kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow
@@ -4,7 +4,7 @@ import androidx.navigation.NavBackStackEntry
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.compose.composable
import com.meloda.app.fast.common.extensions.navigation.sharedViewModel
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
@@ -50,14 +50,14 @@ import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.text.input.VisualTransformation
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.meloda.app.fast.ui.basic.autoFillRequestHandler
import com.meloda.app.fast.ui.basic.connectNode
import com.meloda.app.fast.ui.basic.defaultFocusChangeAutoFill
import com.meloda.app.fast.ui.components.MaterialDialog
import com.meloda.app.fast.ui.components.TextFieldErrorText
import com.meloda.app.fast.ui.theme.LocalThemeConfig
import com.meloda.app.fast.ui.util.handleEnterKey
import com.meloda.app.fast.ui.util.handleTabKey
import dev.meloda.fast.ui.basic.autoFillRequestHandler
import dev.meloda.fast.ui.basic.connectNode
import dev.meloda.fast.ui.basic.defaultFocusChangeAutoFill
import dev.meloda.fast.ui.components.MaterialDialog
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
@@ -66,7 +66,7 @@ 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 org.koin.androidx.compose.koinViewModel
import com.meloda.app.fast.ui.R as UiR
import dev.meloda.fast.ui.R as UiR
@Composable
fun LoginRoute(
@@ -31,11 +31,11 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.LayoutDirection
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.meloda.app.fast.ui.theme.LocalThemeConfig
import dev.meloda.fast.ui.theme.LocalThemeConfig
import com.meloda.fast.auth.login.LoginViewModel
import com.meloda.fast.auth.login.LoginViewModelImpl
import org.koin.androidx.compose.koinViewModel
import com.meloda.app.fast.ui.R as UiR
import dev.meloda.fast.ui.R as UiR
@Composable
fun LogoRoute(
@@ -1,6 +1,6 @@
package com.meloda.fast.auth.login.validation
import com.meloda.app.fast.common.extensions.addIf
import dev.meloda.fast.common.extensions.addIf
import com.meloda.fast.auth.login.model.LoginScreenState
import com.meloda.fast.auth.login.model.LoginValidationResult
@@ -1,19 +1,19 @@
package com.meloda.app.fast.auth
package dev.meloda.fast.auth
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.navigation
import com.meloda.app.fast.auth.captcha.navigation.captchaScreen
import com.meloda.app.fast.auth.captcha.navigation.navigateToCaptcha
import com.meloda.app.fast.auth.captcha.navigation.setCaptchaResult
import com.meloda.app.fast.auth.validation.model.ValidationArguments
import com.meloda.app.fast.auth.validation.navigation.navigateToValidation
import com.meloda.app.fast.auth.validation.navigation.setValidationResult
import com.meloda.app.fast.auth.validation.navigation.validationScreen
import com.meloda.app.fast.model.BaseError
import com.meloda.app.fast.userbanned.model.UserBannedArguments
import com.meloda.app.fast.userbanned.navigation.navigateToUserBanned
import com.meloda.app.fast.userbanned.navigation.userBannedRoute
import dev.meloda.fast.auth.captcha.navigation.captchaScreen
import dev.meloda.fast.auth.captcha.navigation.navigateToCaptcha
import dev.meloda.fast.auth.captcha.navigation.setCaptchaResult
import dev.meloda.fast.auth.validation.model.ValidationArguments
import dev.meloda.fast.auth.validation.navigation.navigateToValidation
import dev.meloda.fast.auth.validation.navigation.setValidationResult
import dev.meloda.fast.auth.validation.navigation.validationScreen
import dev.meloda.fast.model.BaseError
import dev.meloda.fast.userbanned.model.UserBannedArguments
import dev.meloda.fast.userbanned.navigation.navigateToUserBanned
import dev.meloda.fast.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
@@ -1,7 +1,7 @@
package com.meloda.app.fast.auth
package dev.meloda.fast.auth
import com.meloda.app.fast.auth.captcha.di.captchaModule
import com.meloda.app.fast.auth.validation.di.validationModule
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 org.koin.dsl.module
+2 -2
View File
@@ -7,10 +7,10 @@ plugins {
alias(libs.plugins.org.jetbrains.kotlin.plugin.parcelize)
}
group = "com.meloda.app.fast.userbanned"
group = "dev.meloda.fast.userbanned"
android {
namespace = "com.meloda.app.fast.userbanned"
namespace = "dev.meloda.fast.userbanned"
compileSdk = Configs.compileSdk
defaultConfig {
@@ -1,4 +1,4 @@
package com.meloda.app.fast.userbanned.model
package dev.meloda.fast.userbanned.model
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
@@ -1,4 +1,4 @@
package com.meloda.app.fast.userbanned.model
package dev.meloda.fast.userbanned.model
data class UserBannedScreenState(
val userName: String,
@@ -1,4 +1,4 @@
package com.meloda.app.fast.userbanned.navigation
package dev.meloda.fast.userbanned.navigation
import android.os.Bundle
import androidx.core.os.BundleCompat
@@ -7,8 +7,8 @@ import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavType
import androidx.navigation.compose.composable
import androidx.navigation.toRoute
import com.meloda.app.fast.userbanned.model.UserBannedArguments
import com.meloda.app.fast.userbanned.presentation.UserBannedRoute
import dev.meloda.fast.userbanned.model.UserBannedArguments
import dev.meloda.fast.userbanned.presentation.UserBannedRoute
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
@@ -1,4 +1,4 @@
package com.meloda.app.fast.userbanned.presentation
package dev.meloda.fast.userbanned.presentation
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
@@ -23,8 +23,8 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.withStyle
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.meloda.app.fast.userbanned.model.UserBannedScreenState
import com.meloda.app.fast.ui.R as UiR
import dev.meloda.fast.userbanned.model.UserBannedScreenState
import dev.meloda.fast.ui.R as UiR
@Preview
@Composable
+1 -1
View File
@@ -7,7 +7,7 @@ plugins {
}
android {
namespace = "com.meloda.app.fast.validation"
namespace = "dev.meloda.fast.validation"
compileSdk = Configs.compileSdk
defaultConfig {
@@ -1,7 +1,7 @@
package com.meloda.app.fast.auth.validation
package dev.meloda.fast.auth.validation
import com.meloda.app.fast.data.State
import com.meloda.app.fast.model.api.responses.ValidatePhoneResponse
import dev.meloda.fast.data.State
import dev.meloda.fast.model.api.responses.ValidatePhoneResponse
import kotlinx.coroutines.flow.Flow
interface AuthUseCase {
@@ -1,9 +1,9 @@
package com.meloda.app.fast.auth.validation
package dev.meloda.fast.auth.validation
import com.meloda.app.fast.data.State
import com.meloda.app.fast.data.api.auth.AuthRepository
import com.meloda.app.fast.data.mapToState
import com.meloda.app.fast.model.api.responses.ValidatePhoneResponse
import dev.meloda.fast.data.State
import dev.meloda.fast.data.api.auth.AuthRepository
import dev.meloda.fast.data.mapToState
import dev.meloda.fast.model.api.responses.ValidatePhoneResponse
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow
@@ -1,17 +1,17 @@
package com.meloda.app.fast.auth.validation
package dev.meloda.fast.auth.validation
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.meloda.app.fast.auth.validation.model.ValidationScreenState
import com.meloda.app.fast.auth.validation.model.ValidationType
import com.meloda.app.fast.auth.validation.navigation.Validation
import com.meloda.app.fast.auth.validation.validation.ValidationValidator
import com.meloda.app.fast.common.extensions.createTimerFlow
import com.meloda.app.fast.common.extensions.listenValue
import com.meloda.app.fast.common.extensions.setValue
import com.meloda.app.fast.common.extensions.updateValue
import com.meloda.app.fast.data.processState
import dev.meloda.fast.auth.validation.model.ValidationScreenState
import dev.meloda.fast.auth.validation.model.ValidationType
import dev.meloda.fast.auth.validation.navigation.Validation
import dev.meloda.fast.auth.validation.validation.ValidationValidator
import dev.meloda.fast.common.extensions.createTimerFlow
import dev.meloda.fast.common.extensions.listenValue
import dev.meloda.fast.common.extensions.setValue
import dev.meloda.fast.common.extensions.updateValue
import dev.meloda.fast.data.processState
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.MutableStateFlow
@@ -1,10 +1,10 @@
package com.meloda.app.fast.auth.validation.di
package dev.meloda.fast.auth.validation.di
import com.meloda.app.fast.auth.validation.AuthUseCase
import com.meloda.app.fast.auth.validation.AuthUseCaseImpl
import com.meloda.app.fast.auth.validation.ValidationViewModel
import com.meloda.app.fast.auth.validation.ValidationViewModelImpl
import com.meloda.app.fast.auth.validation.validation.ValidationValidator
import dev.meloda.fast.auth.validation.AuthUseCase
import dev.meloda.fast.auth.validation.AuthUseCaseImpl
import dev.meloda.fast.auth.validation.ValidationViewModel
import dev.meloda.fast.auth.validation.ValidationViewModelImpl
import dev.meloda.fast.auth.validation.validation.ValidationValidator
import org.koin.androidx.viewmodel.dsl.viewModelOf
import org.koin.core.module.dsl.singleOf
import org.koin.dsl.bind
@@ -1,4 +1,4 @@
package com.meloda.app.fast.auth.validation.model
package dev.meloda.fast.auth.validation.model
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
@@ -1,4 +1,4 @@
package com.meloda.app.fast.auth.validation.model
package dev.meloda.fast.auth.validation.model
data class ValidationScreenState(
val code: String?,
@@ -1,4 +1,4 @@
package com.meloda.app.fast.auth.validation.model
package dev.meloda.fast.auth.validation.model
enum class ValidationType(val value: String) {
SMS("sms"), APP("2fa_app");
@@ -1,4 +1,4 @@
package com.meloda.app.fast.auth.validation.model
package dev.meloda.fast.auth.validation.model
sealed class ValidationValidationResult {
data object Empty : ValidationValidationResult()
@@ -1,13 +1,13 @@
package com.meloda.app.fast.auth.validation.navigation
package dev.meloda.fast.auth.validation.navigation
import androidx.lifecycle.SavedStateHandle
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.compose.composable
import androidx.navigation.toRoute
import com.meloda.app.fast.auth.validation.model.ValidationArguments
import com.meloda.app.fast.auth.validation.presentation.ValidationRoute
import com.meloda.app.fast.common.extensions.customNavType
import dev.meloda.fast.auth.validation.model.ValidationArguments
import dev.meloda.fast.auth.validation.presentation.ValidationRoute
import dev.meloda.fast.common.extensions.customNavType
import kotlinx.serialization.Serializable
import kotlin.reflect.typeOf
@@ -1,4 +1,4 @@
package com.meloda.app.fast.auth.validation.presentation
package dev.meloda.fast.auth.validation.presentation
import androidx.activity.compose.BackHandler
import androidx.compose.animation.AnimatedVisibility
@@ -45,15 +45,15 @@ import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.meloda.app.fast.auth.validation.ValidationViewModel
import com.meloda.app.fast.auth.validation.ValidationViewModelImpl
import com.meloda.app.fast.auth.validation.model.ValidationScreenState
import com.meloda.app.fast.auth.validation.model.ValidationType
import com.meloda.app.fast.ui.components.ActionInvokeDismiss
import com.meloda.app.fast.ui.components.MaterialDialog
import com.meloda.app.fast.ui.components.TextFieldErrorText
import dev.meloda.fast.auth.validation.ValidationViewModel
import dev.meloda.fast.auth.validation.ValidationViewModelImpl
import dev.meloda.fast.auth.validation.model.ValidationScreenState
import dev.meloda.fast.auth.validation.model.ValidationType
import dev.meloda.fast.ui.components.ActionInvokeDismiss
import dev.meloda.fast.ui.components.MaterialDialog
import dev.meloda.fast.ui.components.TextFieldErrorText
import org.koin.androidx.compose.koinViewModel
import com.meloda.app.fast.ui.R as UiR
import dev.meloda.fast.ui.R as UiR
@Composable
fun ValidationRoute(
@@ -1,7 +1,7 @@
package com.meloda.app.fast.auth.validation.validation
package dev.meloda.fast.auth.validation.validation
import com.meloda.app.fast.auth.validation.model.ValidationScreenState
import com.meloda.app.fast.auth.validation.model.ValidationValidationResult
import dev.meloda.fast.auth.validation.model.ValidationScreenState
import dev.meloda.fast.auth.validation.model.ValidationValidationResult
class ValidationValidator {
+2 -2
View File
@@ -6,10 +6,10 @@ plugins {
alias(libs.plugins.org.jetbrains.kotlin.plugin.parcelize)
}
group = "com.meloda.app.fast.chatmaterials"
group = "dev.meloda.fast.chatmaterials"
android {
namespace = "com.meloda.app.fast.chatmaterials"
namespace = "dev.meloda.fast.chatmaterials"
compileSdk = Configs.compileSdk
defaultConfig {
@@ -1,16 +1,16 @@
package com.meloda.app.fast.chatmaterials
package dev.meloda.fast.chatmaterials
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import com.meloda.app.fast.chatmaterials.model.ChatMaterialsScreenState
import com.meloda.app.fast.chatmaterials.navigation.ChatMaterials
import com.meloda.app.fast.chatmaterials.util.asPresentation
import com.meloda.app.fast.common.extensions.listenValue
import com.meloda.app.fast.common.extensions.setValue
import com.meloda.app.fast.data.api.messages.MessagesUseCase
import com.meloda.app.fast.data.processState
import com.meloda.app.fast.model.BaseError
import com.meloda.app.fast.model.api.domain.VkAttachmentHistoryMessage
import dev.meloda.fast.chatmaterials.model.ChatMaterialsScreenState
import dev.meloda.fast.chatmaterials.navigation.ChatMaterials
import dev.meloda.fast.chatmaterials.util.asPresentation
import dev.meloda.fast.common.extensions.listenValue
import dev.meloda.fast.common.extensions.setValue
import dev.meloda.fast.data.api.messages.MessagesUseCase
import dev.meloda.fast.data.processState
import dev.meloda.fast.model.BaseError
import dev.meloda.fast.model.api.domain.VkAttachmentHistoryMessage
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.update
@@ -1,6 +1,6 @@
package com.meloda.app.fast.chatmaterials.di
package dev.meloda.fast.chatmaterials.di
import com.meloda.app.fast.chatmaterials.ChatMaterialsViewModelImpl
import dev.meloda.fast.chatmaterials.ChatMaterialsViewModelImpl
import org.koin.androidx.viewmodel.dsl.viewModelOf
import org.koin.dsl.module
@@ -1,4 +1,4 @@
package com.meloda.app.fast.chatmaterials.model
package dev.meloda.fast.chatmaterials.model
import androidx.compose.runtime.Immutable
@@ -1,4 +1,4 @@
package com.meloda.app.fast.chatmaterials.model
package dev.meloda.fast.chatmaterials.model
sealed class UiChatMaterial {
@@ -1,11 +1,11 @@
package com.meloda.app.fast.chatmaterials.navigation
package dev.meloda.fast.chatmaterials.navigation
import androidx.lifecycle.SavedStateHandle
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.compose.composable
import androidx.navigation.toRoute
import com.meloda.app.fast.chatmaterials.presentation.ChatMaterialsRoute
import dev.meloda.fast.chatmaterials.presentation.ChatMaterialsRoute
import kotlinx.serialization.Serializable
@Serializable
@@ -1,4 +1,4 @@
package com.meloda.app.fast.chatmaterials.presentation
package dev.meloda.fast.chatmaterials.presentation
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
@@ -11,7 +11,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.ContentScale
import coil.compose.AsyncImage
import com.meloda.app.fast.chatmaterials.model.UiChatMaterial
import dev.meloda.fast.chatmaterials.model.UiChatMaterial
@Composable
fun ChatMaterialItem(item: UiChatMaterial) {
@@ -1,4 +1,4 @@
package com.meloda.app.fast.chatmaterials.presentation
package dev.meloda.fast.chatmaterials.presentation
import android.annotation.SuppressLint
import android.util.Log
@@ -61,12 +61,12 @@ import androidx.compose.ui.unit.DpOffset
import androidx.compose.ui.unit.LayoutDirection
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.meloda.app.fast.chatmaterials.ChatMaterialsViewModel
import com.meloda.app.fast.chatmaterials.ChatMaterialsViewModelImpl
import com.meloda.app.fast.chatmaterials.model.ChatMaterialsScreenState
import com.meloda.app.fast.datastore.UserSettings
import com.meloda.app.fast.ui.R
import com.meloda.app.fast.ui.theme.LocalThemeConfig
import dev.meloda.fast.chatmaterials.ChatMaterialsViewModel
import dev.meloda.fast.chatmaterials.ChatMaterialsViewModelImpl
import dev.meloda.fast.chatmaterials.model.ChatMaterialsScreenState
import dev.meloda.fast.datastore.UserSettings
import dev.meloda.fast.ui.R
import dev.meloda.fast.ui.theme.LocalThemeConfig
import dev.chrisbanes.haze.HazeState
import dev.chrisbanes.haze.haze
import dev.chrisbanes.haze.hazeChild
@@ -1,13 +1,13 @@
package com.meloda.app.fast.chatmaterials.util
package dev.meloda.fast.chatmaterials.util
import com.meloda.app.fast.chatmaterials.model.UiChatMaterial
import com.meloda.app.fast.model.api.data.AttachmentType
import com.meloda.app.fast.model.api.domain.VkAttachmentHistoryMessage
import com.meloda.app.fast.model.api.domain.VkAudioDomain
import com.meloda.app.fast.model.api.domain.VkFileDomain
import com.meloda.app.fast.model.api.domain.VkLinkDomain
import com.meloda.app.fast.model.api.domain.VkPhotoDomain
import com.meloda.app.fast.model.api.domain.VkVideoDomain
import dev.meloda.fast.chatmaterials.model.UiChatMaterial
import dev.meloda.fast.model.api.data.AttachmentType
import dev.meloda.fast.model.api.domain.VkAttachmentHistoryMessage
import dev.meloda.fast.model.api.domain.VkAudioDomain
import dev.meloda.fast.model.api.domain.VkFileDomain
import dev.meloda.fast.model.api.domain.VkLinkDomain
import dev.meloda.fast.model.api.domain.VkPhotoDomain
import dev.meloda.fast.model.api.domain.VkVideoDomain
import java.text.SimpleDateFormat
import java.util.Locale
+2 -2
View File
@@ -6,10 +6,10 @@ plugins {
alias(libs.plugins.kotlin.serialization)
}
group = "com.meloda.app.fast.conversations"
group = "dev.meloda.fast.conversations"
android {
namespace = "com.meloda.app.fast.conversations"
namespace = "dev.meloda.fast.conversations"
compileSdk = Configs.compileSdk
defaultConfig {
@@ -1,31 +1,31 @@
package com.meloda.app.fast.conversations
package dev.meloda.fast.conversations
import android.content.res.Resources
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.conena.nanokt.collections.indexOfFirstOrNull
import com.meloda.app.fast.common.extensions.createTimerFlow
import com.meloda.app.fast.common.extensions.findWithIndex
import com.meloda.app.fast.common.extensions.listenValue
import com.meloda.app.fast.common.extensions.setValue
import com.meloda.app.fast.conversations.model.ConversationOption
import com.meloda.app.fast.conversations.model.ConversationsScreenState
import com.meloda.app.fast.conversations.model.ConversationsShowOptions
import com.meloda.app.fast.conversations.model.UiConversation
import com.meloda.app.fast.conversations.util.asPresentation
import com.meloda.app.fast.conversations.util.extractAvatar
import com.meloda.app.fast.data.LongPollUpdatesParser
import com.meloda.app.fast.data.State
import com.meloda.app.fast.data.api.conversations.ConversationsUseCase
import com.meloda.app.fast.data.api.messages.MessagesUseCase
import com.meloda.app.fast.data.processState
import com.meloda.app.fast.datastore.UserSettings
import com.meloda.app.fast.model.BaseError
import com.meloda.app.fast.model.InteractionType
import com.meloda.app.fast.model.LongPollEvent
import com.meloda.app.fast.model.api.domain.VkConversation
import com.meloda.app.fast.network.VkErrorCode
import com.meloda.app.fast.ui.util.ImmutableList
import dev.meloda.fast.common.extensions.createTimerFlow
import dev.meloda.fast.common.extensions.findWithIndex
import dev.meloda.fast.common.extensions.listenValue
import dev.meloda.fast.common.extensions.setValue
import dev.meloda.fast.conversations.model.ConversationOption
import dev.meloda.fast.conversations.model.ConversationsScreenState
import dev.meloda.fast.conversations.model.ConversationsShowOptions
import dev.meloda.fast.conversations.model.UiConversation
import dev.meloda.fast.conversations.util.asPresentation
import dev.meloda.fast.conversations.util.extractAvatar
import dev.meloda.fast.data.LongPollUpdatesParser
import dev.meloda.fast.data.State
import dev.meloda.fast.data.api.conversations.ConversationsUseCase
import dev.meloda.fast.data.api.messages.MessagesUseCase
import dev.meloda.fast.data.processState
import dev.meloda.fast.datastore.UserSettings
import dev.meloda.fast.model.BaseError
import dev.meloda.fast.model.InteractionType
import dev.meloda.fast.model.LongPollEvent
import dev.meloda.fast.model.api.domain.VkConversation
import dev.meloda.fast.network.VkErrorCode
import dev.meloda.fast.ui.util.ImmutableList
import kotlinx.coroutines.Job
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted
@@ -1,10 +1,10 @@
package com.meloda.app.fast.conversations.data
package dev.meloda.fast.conversations.data
import com.meloda.app.fast.data.State
import com.meloda.app.fast.data.api.conversations.ConversationsRepository
import com.meloda.app.fast.data.api.conversations.ConversationsUseCase
import com.meloda.app.fast.data.mapToState
import com.meloda.app.fast.model.api.domain.VkConversation
import dev.meloda.fast.data.State
import dev.meloda.fast.data.api.conversations.ConversationsRepository
import dev.meloda.fast.data.api.conversations.ConversationsUseCase
import dev.meloda.fast.data.mapToState
import dev.meloda.fast.model.api.domain.VkConversation
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow
@@ -21,8 +21,8 @@ class ConversationsUseCaseImpl(
// filter: String,
// extended: Boolean?,
// startMessageId: Int?
// ): Flow<com.meloda.app.fast.network.State<ConversationsResponseDomain>> = flow {
// emit(com.meloda.app.fast.network.State.Loading)
// ): Flow<dev.meloda.fast.network.State<ConversationsResponseDomain>> = flow {
// emit(dev.meloda.fast.network.State.Loading)
//
// val newState = conversationsRepository.getConversations(
// params = ConversationsGetRequest(
@@ -34,9 +34,9 @@ class ConversationsUseCaseImpl(
// startMessageId = startMessageId
// )
// ).fold(
// onSuccess = { response -> com.meloda.app.fast.network.State.Success(response.toDomain()) },
// onNetworkFailure = { com.meloda.app.fast.network.State.Error.ConnectionError },
// onUnknownFailure = { com.meloda.app.fast.network.State.UNKNOWN_ERROR },
// onSuccess = { response -> dev.meloda.fast.network.State.Success(response.toDomain()) },
// onNetworkFailure = { dev.meloda.fast.network.State.Error.ConnectionError },
// onUnknownFailure = { dev.meloda.fast.network.State.UNKNOWN_ERROR },
// onHttpFailure = { result -> result.error.toStateApiError() },
// onApiFailure = { result -> result.error.toStateApiError() }
// )
@@ -45,30 +45,30 @@ class ConversationsUseCaseImpl(
//
//
// override fun pin(peerId: Int): Flow<com.meloda.app.fast.network.State<Unit>> = flow {
// emit(com.meloda.app.fast.network.State.Loading)
// override fun pin(peerId: Int): Flow<dev.meloda.fast.network.State<Unit>> = flow {
// emit(dev.meloda.fast.network.State.Loading)
//
// val newState = conversationsRepository.pin(
// ConversationsPinRequest(peerId = peerId)
// ).fold(
// onSuccess = { com.meloda.app.fast.network.State.Success(Unit) },
// onNetworkFailure = { com.meloda.app.fast.network.State.Error.ConnectionError },
// onUnknownFailure = { com.meloda.app.fast.network.State.UNKNOWN_ERROR },
// onSuccess = { dev.meloda.fast.network.State.Success(Unit) },
// onNetworkFailure = { dev.meloda.fast.network.State.Error.ConnectionError },
// onUnknownFailure = { dev.meloda.fast.network.State.UNKNOWN_ERROR },
// onHttpFailure = { result -> result.error.toStateApiError() },
// onApiFailure = { result -> result.error.toStateApiError() }
// )
// emit(newState)
// }
//
// override fun unpin(peerId: Int): Flow<com.meloda.app.fast.network.State<Unit>> = flow {
// emit(com.meloda.app.fast.network.State.Loading)
// override fun unpin(peerId: Int): Flow<dev.meloda.fast.network.State<Unit>> = flow {
// emit(dev.meloda.fast.network.State.Loading)
//
// val newState = conversationsRepository.unpin(
// ConversationsUnpinRequest(peerId = peerId)
// ).fold(
// onSuccess = { com.meloda.app.fast.network.State.Success(Unit) },
// onNetworkFailure = { com.meloda.app.fast.network.State.Error.ConnectionError },
// onUnknownFailure = { com.meloda.app.fast.network.State.UNKNOWN_ERROR },
// onSuccess = { dev.meloda.fast.network.State.Success(Unit) },
// onNetworkFailure = { dev.meloda.fast.network.State.Error.ConnectionError },
// onUnknownFailure = { dev.meloda.fast.network.State.UNKNOWN_ERROR },
// onHttpFailure = { result -> result.error.toStateApiError() },
// onApiFailure = { result -> result.error.toStateApiError() }
// )
@@ -1,8 +1,8 @@
package com.meloda.app.fast.conversations.di
package dev.meloda.fast.conversations.di
import com.meloda.app.fast.conversations.ConversationsViewModelImpl
import com.meloda.app.fast.conversations.data.ConversationsUseCaseImpl
import com.meloda.app.fast.data.api.conversations.ConversationsUseCase
import dev.meloda.fast.conversations.ConversationsViewModelImpl
import dev.meloda.fast.conversations.data.ConversationsUseCaseImpl
import dev.meloda.fast.data.api.conversations.ConversationsUseCase
import org.koin.androidx.viewmodel.dsl.viewModelOf
import org.koin.core.module.dsl.singleOf
import org.koin.dsl.bind
@@ -1,4 +1,4 @@
package com.meloda.app.fast.conversations.model
package dev.meloda.fast.conversations.model
enum class ActionState {
PHANTOM, CALL_IN_PROGRESS, NONE;
@@ -1,8 +1,8 @@
package com.meloda.app.fast.conversations.model
package dev.meloda.fast.conversations.model
import com.meloda.app.fast.common.model.UiImage
import com.meloda.app.fast.common.model.UiText
import com.meloda.app.fast.ui.R as UiR
import dev.meloda.fast.common.model.UiImage
import dev.meloda.fast.common.model.UiText
import dev.meloda.fast.ui.R as UiR
sealed class ConversationOption(
val title: UiText,
@@ -1,4 +1,4 @@
package com.meloda.app.fast.conversations.model
package dev.meloda.fast.conversations.model
import androidx.compose.runtime.Immutable
@@ -1,4 +1,4 @@
package com.meloda.app.fast.conversations.model
package dev.meloda.fast.conversations.model
data class ConversationsShowOptions(
val showDeleteDialog: Int?,
@@ -1,11 +1,11 @@
package com.meloda.app.fast.conversations.model
package dev.meloda.fast.conversations.model
import androidx.compose.runtime.Immutable
import androidx.compose.ui.text.AnnotatedString
import com.meloda.app.fast.common.model.UiImage
import com.meloda.app.fast.model.api.PeerType
import com.meloda.app.fast.model.api.domain.VkMessage
import com.meloda.app.fast.ui.util.ImmutableList
import dev.meloda.fast.common.model.UiImage
import dev.meloda.fast.model.api.PeerType
import dev.meloda.fast.model.api.domain.VkMessage
import dev.meloda.fast.ui.util.ImmutableList
@Immutable
data class UiConversation(
@@ -1,13 +1,13 @@
package com.meloda.app.fast.conversations.navigation
package dev.meloda.fast.conversations.navigation
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.compose.composable
import com.meloda.app.fast.common.extensions.navigation.sharedViewModel
import com.meloda.app.fast.conversations.ConversationsViewModel
import com.meloda.app.fast.conversations.ConversationsViewModelImpl
import com.meloda.app.fast.conversations.presentation.ConversationsRoute
import com.meloda.app.fast.model.BaseError
import dev.meloda.fast.common.extensions.navigation.sharedViewModel
import dev.meloda.fast.conversations.ConversationsViewModel
import dev.meloda.fast.conversations.ConversationsViewModelImpl
import dev.meloda.fast.conversations.presentation.ConversationsRoute
import dev.meloda.fast.model.BaseError
import kotlinx.serialization.Serializable
@Serializable
@@ -1,4 +1,4 @@
package com.meloda.app.fast.conversations.presentation
package dev.meloda.fast.conversations.presentation
import android.graphics.drawable.ColorDrawable
import androidx.compose.animation.AnimatedVisibility
@@ -52,14 +52,14 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import coil.compose.AsyncImage
import com.meloda.app.fast.common.model.UiImage
import com.meloda.app.fast.conversations.model.ConversationOption
import com.meloda.app.fast.conversations.model.UiConversation
import com.meloda.app.fast.ui.basic.ContentAlpha
import com.meloda.app.fast.ui.basic.LocalContentAlpha
import com.meloda.app.fast.ui.components.DotsFlashing
import com.meloda.app.fast.ui.util.getString
import com.meloda.app.fast.ui.R as UiR
import dev.meloda.fast.common.model.UiImage
import dev.meloda.fast.conversations.model.ConversationOption
import dev.meloda.fast.conversations.model.UiConversation
import dev.meloda.fast.ui.basic.ContentAlpha
import dev.meloda.fast.ui.basic.LocalContentAlpha
import dev.meloda.fast.ui.components.DotsFlashing
import dev.meloda.fast.ui.util.getString
import dev.meloda.fast.ui.R as UiR
val BirthdayColor = Color(0xffb00b69)
@@ -1,4 +1,4 @@
package com.meloda.app.fast.conversations.presentation
package dev.meloda.fast.conversations.presentation
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
@@ -23,11 +23,11 @@ import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import com.meloda.app.fast.common.UserConfig
import com.meloda.app.fast.conversations.model.ConversationOption
import com.meloda.app.fast.conversations.model.ConversationsScreenState
import com.meloda.app.fast.conversations.model.UiConversation
import com.meloda.app.fast.ui.theme.LocalBottomPadding
import dev.meloda.fast.common.UserConfig
import dev.meloda.fast.conversations.model.ConversationOption
import dev.meloda.fast.conversations.model.ConversationsScreenState
import dev.meloda.fast.conversations.model.UiConversation
import dev.meloda.fast.ui.theme.LocalBottomPadding
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
@@ -1,4 +1,4 @@
package com.meloda.app.fast.conversations.presentation
package dev.meloda.fast.conversations.presentation
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.animateColorAsState
@@ -66,20 +66,20 @@ import androidx.core.view.HapticFeedbackConstantsCompat
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import coil.imageLoader
import coil.request.ImageRequest
import com.meloda.app.fast.conversations.ConversationsViewModel
import com.meloda.app.fast.conversations.ConversationsViewModelImpl
import com.meloda.app.fast.conversations.model.ConversationOption
import com.meloda.app.fast.conversations.model.ConversationsScreenState
import com.meloda.app.fast.conversations.model.UiConversation
import com.meloda.app.fast.datastore.UserSettings
import com.meloda.app.fast.model.BaseError
import com.meloda.app.fast.ui.components.ErrorView
import com.meloda.app.fast.ui.components.FullScreenLoader
import com.meloda.app.fast.ui.components.MaterialDialog
import com.meloda.app.fast.ui.theme.LocalBottomPadding
import com.meloda.app.fast.ui.theme.LocalHazeState
import com.meloda.app.fast.ui.theme.LocalThemeConfig
import com.meloda.app.fast.ui.util.isScrollingUp
import dev.meloda.fast.conversations.ConversationsViewModel
import dev.meloda.fast.conversations.ConversationsViewModelImpl
import dev.meloda.fast.conversations.model.ConversationOption
import dev.meloda.fast.conversations.model.ConversationsScreenState
import dev.meloda.fast.conversations.model.UiConversation
import dev.meloda.fast.datastore.UserSettings
import dev.meloda.fast.model.BaseError
import dev.meloda.fast.ui.components.ErrorView
import dev.meloda.fast.ui.components.FullScreenLoader
import dev.meloda.fast.ui.components.MaterialDialog
import dev.meloda.fast.ui.theme.LocalBottomPadding
import dev.meloda.fast.ui.theme.LocalHazeState
import dev.meloda.fast.ui.theme.LocalThemeConfig
import dev.meloda.fast.ui.util.isScrollingUp
import dev.chrisbanes.haze.haze
import dev.chrisbanes.haze.hazeChild
import dev.chrisbanes.haze.materials.ExperimentalHazeMaterialsApi
@@ -87,7 +87,7 @@ import dev.chrisbanes.haze.materials.HazeMaterials
import kotlinx.coroutines.launch
import org.koin.androidx.compose.koinViewModel
import org.koin.compose.koinInject
import com.meloda.app.fast.ui.R as UiR
import dev.meloda.fast.ui.R as UiR
@Composable
fun ConversationsRoute(
@@ -1,4 +1,4 @@
package com.meloda.app.fast.conversations.util
package dev.meloda.fast.conversations.util
import android.content.res.Resources
import androidx.compose.ui.graphics.Color
@@ -9,27 +9,27 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.withStyle
import com.conena.nanokt.jvm.util.dayOfMonth
import com.conena.nanokt.jvm.util.month
import com.meloda.app.fast.common.model.UiImage
import com.meloda.app.fast.common.model.UiText
import com.meloda.app.fast.common.UserConfig
import com.meloda.app.fast.common.extensions.orDots
import com.meloda.app.fast.common.model.parseString
import com.meloda.app.fast.common.util.TimeUtils
import com.meloda.app.fast.conversations.model.ActionState
import com.meloda.app.fast.conversations.model.UiConversation
import com.meloda.app.fast.data.VkMemoryCache
import com.meloda.app.fast.model.InteractionType
import com.meloda.app.fast.model.api.PeerType
import com.meloda.app.fast.model.api.data.AttachmentType
import com.meloda.app.fast.model.api.domain.VkAttachment
import com.meloda.app.fast.model.api.domain.VkConversation
import com.meloda.app.fast.model.api.domain.VkMessage
import com.meloda.app.fast.ui.util.ImmutableList
import dev.meloda.fast.common.model.UiImage
import dev.meloda.fast.common.model.UiText
import dev.meloda.fast.common.UserConfig
import dev.meloda.fast.common.extensions.orDots
import dev.meloda.fast.common.model.parseString
import dev.meloda.fast.common.util.TimeUtils
import dev.meloda.fast.conversations.model.ActionState
import dev.meloda.fast.conversations.model.UiConversation
import dev.meloda.fast.data.VkMemoryCache
import dev.meloda.fast.model.InteractionType
import dev.meloda.fast.model.api.PeerType
import dev.meloda.fast.model.api.data.AttachmentType
import dev.meloda.fast.model.api.domain.VkAttachment
import dev.meloda.fast.model.api.domain.VkConversation
import dev.meloda.fast.model.api.domain.VkMessage
import dev.meloda.fast.ui.util.ImmutableList
import java.util.Calendar
import java.util.Locale
import kotlin.math.ln
import kotlin.math.pow
import com.meloda.app.fast.ui.R as UiR
import dev.meloda.fast.ui.R as UiR
fun VkConversation.asPresentation(
resources: Resources,
+2 -2
View File
@@ -6,10 +6,10 @@ plugins {
alias(libs.plugins.kotlin.serialization)
}
group = "com.meloda.app.fast.friends"
group = "dev.meloda.fast.friends"
android {
namespace = "com.meloda.app.fast.friends"
namespace = "dev.meloda.fast.friends"
compileSdk = Configs.compileSdk
defaultConfig {
@@ -1,17 +1,17 @@
package com.meloda.app.fast.friends
package dev.meloda.fast.friends
import androidx.lifecycle.ViewModel
import com.meloda.app.fast.common.extensions.listenValue
import com.meloda.app.fast.common.extensions.setValue
import com.meloda.app.fast.data.State
import com.meloda.app.fast.data.api.friends.FriendsUseCase
import com.meloda.app.fast.data.processState
import com.meloda.app.fast.datastore.UserSettings
import com.meloda.app.fast.friends.model.FriendsScreenState
import com.meloda.app.fast.friends.util.asPresentation
import com.meloda.app.fast.model.BaseError
import com.meloda.app.fast.model.api.domain.VkUser
import com.meloda.app.fast.network.VkErrorCode
import dev.meloda.fast.common.extensions.listenValue
import dev.meloda.fast.common.extensions.setValue
import dev.meloda.fast.data.State
import dev.meloda.fast.data.api.friends.FriendsUseCase
import dev.meloda.fast.data.processState
import dev.meloda.fast.datastore.UserSettings
import dev.meloda.fast.friends.model.FriendsScreenState
import dev.meloda.fast.friends.util.asPresentation
import dev.meloda.fast.model.BaseError
import dev.meloda.fast.model.api.domain.VkUser
import dev.meloda.fast.network.VkErrorCode
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.update
@@ -1,8 +1,8 @@
package com.meloda.app.fast.friends.di
package dev.meloda.fast.friends.di
import com.meloda.app.fast.data.api.friends.FriendsUseCase
import com.meloda.app.fast.friends.FriendsViewModelImpl
import com.meloda.app.fast.friends.domain.FriendsUseCaseImpl
import dev.meloda.fast.data.api.friends.FriendsUseCase
import dev.meloda.fast.friends.FriendsViewModelImpl
import dev.meloda.fast.friends.domain.FriendsUseCaseImpl
import org.koin.androidx.viewmodel.dsl.viewModelOf
import org.koin.core.module.dsl.singleOf
import org.koin.dsl.bind
@@ -1,11 +1,11 @@
package com.meloda.app.fast.friends.domain
package dev.meloda.fast.friends.domain
import com.meloda.app.fast.data.State
import com.meloda.app.fast.data.api.friends.FriendsRepository
import com.meloda.app.fast.data.api.friends.FriendsUseCase
import com.meloda.app.fast.data.mapToState
import com.meloda.app.fast.model.FriendsInfo
import com.meloda.app.fast.model.api.domain.VkUser
import dev.meloda.fast.data.State
import dev.meloda.fast.data.api.friends.FriendsRepository
import dev.meloda.fast.data.api.friends.FriendsUseCase
import dev.meloda.fast.data.mapToState
import dev.meloda.fast.model.FriendsInfo
import dev.meloda.fast.model.api.domain.VkUser
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow
@@ -1,4 +1,4 @@
package com.meloda.app.fast.friends.model
package dev.meloda.fast.friends.model
import androidx.compose.runtime.Immutable
@@ -1,4 +1,4 @@
package com.meloda.app.fast.friends.model
package dev.meloda.fast.friends.model
enum class OnlineState {
OFFLINE, ONLINE, ONLINE_MOBILE
@@ -1,7 +1,7 @@
package com.meloda.app.fast.friends.model
package dev.meloda.fast.friends.model
import com.meloda.app.fast.common.model.UiImage
import com.meloda.app.fast.model.api.domain.OnlineStatus
import dev.meloda.fast.common.model.UiImage
import dev.meloda.fast.model.api.domain.OnlineStatus
data class UiFriend(
val userId: Int,
@@ -1,13 +1,13 @@
package com.meloda.app.fast.friends.navigation
package dev.meloda.fast.friends.navigation
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.compose.composable
import com.meloda.app.fast.common.extensions.navigation.sharedViewModel
import com.meloda.app.fast.friends.FriendsViewModel
import com.meloda.app.fast.friends.FriendsViewModelImpl
import com.meloda.app.fast.friends.presentation.FriendsRoute
import com.meloda.app.fast.model.BaseError
import dev.meloda.fast.common.extensions.navigation.sharedViewModel
import dev.meloda.fast.friends.FriendsViewModel
import dev.meloda.fast.friends.FriendsViewModelImpl
import dev.meloda.fast.friends.presentation.FriendsRoute
import dev.meloda.fast.model.BaseError
import kotlinx.serialization.Serializable
@Serializable
@@ -1,4 +1,4 @@
package com.meloda.app.fast.friends.presentation
package dev.meloda.fast.friends.presentation
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
@@ -23,8 +23,8 @@ import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import coil.compose.AsyncImage
import com.meloda.app.fast.ui.R
import com.meloda.app.fast.friends.model.UiFriend
import dev.meloda.fast.ui.R
import dev.meloda.fast.friends.model.UiFriend
@Composable
fun FriendItem(
@@ -1,4 +1,4 @@
package com.meloda.app.fast.friends.presentation
package dev.meloda.fast.friends.presentation
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
@@ -20,10 +20,10 @@ import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import com.meloda.app.fast.friends.model.FriendsScreenState
import com.meloda.app.fast.friends.model.UiFriend
import com.meloda.app.fast.ui.theme.LocalBottomPadding
import com.meloda.app.fast.ui.util.ImmutableList
import dev.meloda.fast.friends.model.FriendsScreenState
import dev.meloda.fast.friends.model.UiFriend
import dev.meloda.fast.ui.theme.LocalBottomPadding
import dev.meloda.fast.ui.util.ImmutableList
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
@@ -1,4 +1,4 @@
package com.meloda.app.fast.friends.presentation
package dev.meloda.fast.friends.presentation
import androidx.compose.animation.animateColorAsState
import androidx.compose.animation.core.FastOutLinearInEasing
@@ -49,25 +49,25 @@ import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import coil.imageLoader
import coil.request.ImageRequest
import com.meloda.app.fast.datastore.UserSettings
import com.meloda.app.fast.friends.FriendsViewModel
import com.meloda.app.fast.friends.FriendsViewModelImpl
import com.meloda.app.fast.friends.model.FriendsScreenState
import com.meloda.app.fast.model.BaseError
import com.meloda.app.fast.ui.components.ErrorView
import com.meloda.app.fast.ui.components.FullScreenLoader
import com.meloda.app.fast.ui.components.NoItemsView
import com.meloda.app.fast.ui.model.TabItem
import com.meloda.app.fast.ui.theme.LocalHazeState
import com.meloda.app.fast.ui.theme.LocalThemeConfig
import com.meloda.app.fast.ui.util.ImmutableList
import dev.meloda.fast.datastore.UserSettings
import dev.meloda.fast.friends.FriendsViewModel
import dev.meloda.fast.friends.FriendsViewModelImpl
import dev.meloda.fast.friends.model.FriendsScreenState
import dev.meloda.fast.model.BaseError
import dev.meloda.fast.ui.components.ErrorView
import dev.meloda.fast.ui.components.FullScreenLoader
import dev.meloda.fast.ui.components.NoItemsView
import dev.meloda.fast.ui.model.TabItem
import dev.meloda.fast.ui.theme.LocalHazeState
import dev.meloda.fast.ui.theme.LocalThemeConfig
import dev.meloda.fast.ui.util.ImmutableList
import dev.chrisbanes.haze.haze
import dev.chrisbanes.haze.hazeChild
import dev.chrisbanes.haze.materials.ExperimentalHazeMaterialsApi
import dev.chrisbanes.haze.materials.HazeMaterials
import org.koin.androidx.compose.koinViewModel
import org.koin.compose.koinInject
import com.meloda.app.fast.ui.R as UiR
import dev.meloda.fast.ui.R as UiR
@Composable
fun FriendsRoute(
@@ -1,9 +1,9 @@
package com.meloda.app.fast.friends.util
package dev.meloda.fast.friends.util
import com.meloda.app.fast.common.model.UiImage
import com.meloda.app.fast.data.VkMemoryCache
import com.meloda.app.fast.friends.model.UiFriend
import com.meloda.app.fast.model.api.domain.VkUser
import dev.meloda.fast.common.model.UiImage
import dev.meloda.fast.data.VkMemoryCache
import dev.meloda.fast.friends.model.UiFriend
import dev.meloda.fast.model.api.domain.VkUser
fun VkUser.asPresentation(
useContactNames: Boolean = false
+2 -2
View File
@@ -6,10 +6,10 @@ plugins {
alias(libs.plugins.kotlin.serialization)
}
group = "com.meloda.app.fast.languagepicker"
group = "dev.meloda.fast.languagepicker"
android {
namespace = "com.meloda.app.fast.languagepicker"
namespace = "dev.meloda.fast.languagepicker"
compileSdk = Configs.compileSdk
defaultConfig {
@@ -1,18 +1,18 @@
package com.meloda.app.fast.languagepicker
package dev.meloda.fast.languagepicker
import android.content.res.Resources
import androidx.appcompat.app.AppCompatDelegate
import androidx.core.os.LocaleListCompat
import androidx.lifecycle.ViewModel
import com.meloda.app.fast.common.model.UiText
import com.meloda.app.fast.common.extensions.setValue
import com.meloda.app.fast.common.model.parseString
import com.meloda.app.fast.languagepicker.model.LanguagePickerScreenState
import com.meloda.app.fast.languagepicker.model.SelectableLanguage
import dev.meloda.fast.common.model.UiText
import dev.meloda.fast.common.extensions.setValue
import dev.meloda.fast.common.model.parseString
import dev.meloda.fast.languagepicker.model.LanguagePickerScreenState
import dev.meloda.fast.languagepicker.model.SelectableLanguage
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import com.meloda.app.fast.ui.R as UiR
import dev.meloda.fast.ui.R as UiR
interface LanguagePickerViewModel {
val screenState: StateFlow<LanguagePickerScreenState>
@@ -1,6 +1,6 @@
package com.meloda.app.fast.languagepicker.di
package dev.meloda.fast.languagepicker.di
import com.meloda.app.fast.languagepicker.LanguagePickerViewModelImpl
import dev.meloda.fast.languagepicker.LanguagePickerViewModelImpl
import org.koin.androidx.viewmodel.dsl.viewModelOf
import org.koin.dsl.module
@@ -1,4 +1,4 @@
package com.meloda.app.fast.languagepicker.model
package dev.meloda.fast.languagepicker.model
import androidx.compose.runtime.Immutable
@@ -1,4 +1,4 @@
package com.meloda.app.fast.languagepicker.model
package dev.meloda.fast.languagepicker.model
data class SelectableLanguage(
val local: String,
@@ -1,9 +1,9 @@
package com.meloda.app.fast.languagepicker.navigation
package dev.meloda.fast.languagepicker.navigation
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.compose.composable
import com.meloda.app.fast.languagepicker.presentation.LanguagePickerRoute
import dev.meloda.fast.languagepicker.presentation.LanguagePickerRoute
import kotlinx.serialization.Serializable
@Serializable
@@ -1,4 +1,4 @@
package com.meloda.app.fast.languagepicker.presentation
package dev.meloda.fast.languagepicker.presentation
import android.content.Intent
import android.net.Uri
@@ -54,12 +54,12 @@ import androidx.compose.ui.unit.LayoutDirection
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.LifecycleResumeEffect
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.meloda.app.fast.languagepicker.LanguagePickerViewModel
import com.meloda.app.fast.languagepicker.LanguagePickerViewModelImpl
import com.meloda.app.fast.languagepicker.model.LanguagePickerScreenState
import com.meloda.app.fast.languagepicker.model.SelectableLanguage
import dev.meloda.fast.languagepicker.LanguagePickerViewModel
import dev.meloda.fast.languagepicker.LanguagePickerViewModelImpl
import dev.meloda.fast.languagepicker.model.LanguagePickerScreenState
import dev.meloda.fast.languagepicker.model.SelectableLanguage
import org.koin.androidx.compose.koinViewModel
import com.meloda.app.fast.ui.R as UiR
import dev.meloda.fast.ui.R as UiR
@Composable
fun LanguagePickerRoute(
+2 -2
View File
@@ -6,10 +6,10 @@ plugins {
alias(libs.plugins.org.jetbrains.kotlin.plugin.parcelize)
}
group = "com.meloda.app.fast.messageshistory"
group = "dev.meloda.fast.messageshistory"
android {
namespace = "com.meloda.app.fast.messageshistory"
namespace = "dev.meloda.fast.messageshistory"
compileSdk = Configs.compileSdk
defaultConfig {
@@ -1,4 +1,4 @@
package com.meloda.app.fast.messageshistory
package dev.meloda.fast.messageshistory
import android.content.SharedPreferences
import android.util.Log
@@ -9,30 +9,30 @@ import androidx.lifecycle.viewModelScope
import com.conena.nanokt.collections.indexOfFirstOrNull
import com.conena.nanokt.collections.indexOfOrNull
import com.conena.nanokt.text.isEmptyOrBlank
import com.meloda.app.fast.common.UserConfig
import com.meloda.app.fast.common.extensions.listenValue
import com.meloda.app.fast.common.extensions.setValue
import com.meloda.app.fast.common.extensions.updateValue
import com.meloda.app.fast.common.provider.ResourceProvider
import com.meloda.app.fast.data.LongPollUpdatesParser
import com.meloda.app.fast.data.VkMemoryCache
import com.meloda.app.fast.data.api.conversations.ConversationsUseCase
import com.meloda.app.fast.data.api.messages.MessagesUseCase
import com.meloda.app.fast.data.processState
import com.meloda.app.fast.datastore.AppSettings
import com.meloda.app.fast.datastore.SettingsKeys
import com.meloda.app.fast.datastore.UserSettings
import com.meloda.app.fast.messageshistory.model.ActionMode
import com.meloda.app.fast.messageshistory.model.MessagesHistoryScreenState
import com.meloda.app.fast.messageshistory.model.UiItem
import com.meloda.app.fast.messageshistory.navigation.MessagesHistory
import com.meloda.app.fast.messageshistory.util.asPresentation
import com.meloda.app.fast.messageshistory.util.extractAvatar
import com.meloda.app.fast.messageshistory.util.extractTitle
import com.meloda.app.fast.model.BaseError
import com.meloda.app.fast.model.LongPollEvent
import com.meloda.app.fast.model.api.domain.VkAttachment
import com.meloda.app.fast.model.api.domain.VkMessage
import dev.meloda.fast.common.UserConfig
import dev.meloda.fast.common.extensions.listenValue
import dev.meloda.fast.common.extensions.setValue
import dev.meloda.fast.common.extensions.updateValue
import dev.meloda.fast.common.provider.ResourceProvider
import dev.meloda.fast.data.LongPollUpdatesParser
import dev.meloda.fast.data.VkMemoryCache
import dev.meloda.fast.data.api.conversations.ConversationsUseCase
import dev.meloda.fast.data.api.messages.MessagesUseCase
import dev.meloda.fast.data.processState
import dev.meloda.fast.datastore.AppSettings
import dev.meloda.fast.datastore.SettingsKeys
import dev.meloda.fast.datastore.UserSettings
import dev.meloda.fast.messageshistory.model.ActionMode
import dev.meloda.fast.messageshistory.model.MessagesHistoryScreenState
import dev.meloda.fast.messageshistory.model.UiItem
import dev.meloda.fast.messageshistory.navigation.MessagesHistory
import dev.meloda.fast.messageshistory.util.asPresentation
import dev.meloda.fast.messageshistory.util.extractAvatar
import dev.meloda.fast.messageshistory.util.extractTitle
import dev.meloda.fast.model.BaseError
import dev.meloda.fast.model.LongPollEvent
import dev.meloda.fast.model.api.domain.VkAttachment
import dev.meloda.fast.model.api.domain.VkMessage
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
@@ -1,10 +1,10 @@
package com.meloda.app.fast.messageshistory.di
package dev.meloda.fast.messageshistory.di
import com.meloda.app.fast.data.api.messages.MessagesUseCase
import com.meloda.app.fast.messageshistory.MessagesHistoryViewModel
import com.meloda.app.fast.messageshistory.MessagesHistoryViewModelImpl
import com.meloda.app.fast.messageshistory.domain.MessagesUseCaseImpl
import com.meloda.app.fast.messageshistory.validation.MessagesHistoryValidator
import dev.meloda.fast.data.api.messages.MessagesUseCase
import dev.meloda.fast.messageshistory.MessagesHistoryViewModel
import dev.meloda.fast.messageshistory.MessagesHistoryViewModelImpl
import dev.meloda.fast.messageshistory.domain.MessagesUseCaseImpl
import dev.meloda.fast.messageshistory.validation.MessagesHistoryValidator
import org.koin.androidx.viewmodel.dsl.viewModelOf
import org.koin.core.module.dsl.singleOf
import org.koin.dsl.bind
@@ -1,13 +1,13 @@
package com.meloda.app.fast.messageshistory.domain
package dev.meloda.fast.messageshistory.domain
import com.meloda.app.fast.data.State
import com.meloda.app.fast.data.api.messages.MessagesHistoryInfo
import com.meloda.app.fast.data.api.messages.MessagesRepository
import com.meloda.app.fast.data.api.messages.MessagesUseCase
import com.meloda.app.fast.data.mapToState
import com.meloda.app.fast.model.api.domain.VkAttachment
import com.meloda.app.fast.model.api.domain.VkAttachmentHistoryMessage
import com.meloda.app.fast.model.api.domain.VkMessage
import dev.meloda.fast.data.State
import dev.meloda.fast.data.api.messages.MessagesHistoryInfo
import dev.meloda.fast.data.api.messages.MessagesRepository
import dev.meloda.fast.data.api.messages.MessagesUseCase
import dev.meloda.fast.data.mapToState
import dev.meloda.fast.model.api.domain.VkAttachment
import dev.meloda.fast.model.api.domain.VkAttachmentHistoryMessage
import dev.meloda.fast.model.api.domain.VkMessage
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow
@@ -1,4 +1,4 @@
package com.meloda.app.fast.messageshistory.model
package dev.meloda.fast.messageshistory.model
sealed class ActionMode {
@@ -1,4 +1,4 @@
package com.meloda.app.fast.messageshistory.model
package dev.meloda.fast.messageshistory.model
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
@@ -1,8 +1,8 @@
package com.meloda.app.fast.messageshistory.model
package dev.meloda.fast.messageshistory.model
import androidx.compose.runtime.Immutable
import com.meloda.app.fast.common.model.UiImage
import com.meloda.app.fast.model.api.domain.VkAttachment
import dev.meloda.fast.common.model.UiImage
import dev.meloda.fast.model.api.domain.VkAttachment
@Immutable
data class MessagesHistoryScreenState(
@@ -1,4 +1,4 @@
package com.meloda.app.fast.messageshistory.model
package dev.meloda.fast.messageshistory.model
sealed interface MessagesHistoryValidationResult {
@@ -1,7 +1,7 @@
package com.meloda.app.fast.messageshistory.model
package dev.meloda.fast.messageshistory.model
import androidx.compose.ui.text.AnnotatedString
import com.meloda.app.fast.common.model.UiImage
import dev.meloda.fast.common.model.UiImage
sealed class UiItem(
open val id: Int,
@@ -1,14 +1,14 @@
package com.meloda.app.fast.messageshistory.navigation
package dev.meloda.fast.messageshistory.navigation
import androidx.lifecycle.SavedStateHandle
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.compose.composable
import androidx.navigation.toRoute
import com.meloda.app.fast.common.extensions.customNavType
import com.meloda.app.fast.messageshistory.model.MessagesHistoryArguments
import com.meloda.app.fast.messageshistory.presentation.MessagesHistoryRoute
import com.meloda.app.fast.model.BaseError
import dev.meloda.fast.common.extensions.customNavType
import dev.meloda.fast.messageshistory.model.MessagesHistoryArguments
import dev.meloda.fast.messageshistory.presentation.MessagesHistoryRoute
import dev.meloda.fast.model.BaseError
import kotlinx.serialization.Serializable
import kotlin.reflect.typeOf
@@ -1,4 +1,4 @@
package com.meloda.app.fast.messageshistory.presentation
package dev.meloda.fast.messageshistory.presentation
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
@@ -16,7 +16,7 @@ import androidx.compose.ui.text.buildAnnotatedString
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.meloda.app.fast.messageshistory.model.UiItem
import dev.meloda.fast.messageshistory.model.UiItem
@Composable
fun ActionMessageItem(
@@ -1,4 +1,4 @@
package com.meloda.app.fast.messageshistory.presentation
package dev.meloda.fast.messageshistory.presentation
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.Image
@@ -25,7 +25,7 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import coil.compose.rememberAsyncImagePainter
import coil.imageLoader
import com.meloda.app.fast.messageshistory.model.UiItem
import dev.meloda.fast.messageshistory.model.UiItem
@Composable
fun IncomingMessageBubble(
@@ -1,4 +1,4 @@
package com.meloda.app.fast.messageshistory.presentation
package dev.meloda.fast.messageshistory.presentation
import androidx.compose.animation.animateContentSize
import androidx.compose.foundation.background
@@ -1,4 +1,4 @@
package com.meloda.app.fast.messageshistory.presentation
package dev.meloda.fast.messageshistory.presentation
import android.content.SharedPreferences
import androidx.compose.animation.animateContentSize
@@ -72,17 +72,17 @@ import androidx.compose.ui.unit.LayoutDirection
import androidx.compose.ui.unit.dp
import androidx.core.view.HapticFeedbackConstantsCompat
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.meloda.app.fast.datastore.SettingsKeys
import com.meloda.app.fast.datastore.UserSettings
import com.meloda.app.fast.messageshistory.MessagesHistoryViewModel
import com.meloda.app.fast.messageshistory.MessagesHistoryViewModelImpl
import com.meloda.app.fast.messageshistory.model.ActionMode
import com.meloda.app.fast.messageshistory.model.MessagesHistoryScreenState
import com.meloda.app.fast.messageshistory.util.firstMessage
import com.meloda.app.fast.messageshistory.util.indexOfMessageByCmId
import com.meloda.app.fast.model.BaseError
import com.meloda.app.fast.ui.theme.LocalThemeConfig
import com.meloda.app.fast.ui.util.ImmutableList
import dev.meloda.fast.datastore.SettingsKeys
import dev.meloda.fast.datastore.UserSettings
import dev.meloda.fast.messageshistory.MessagesHistoryViewModel
import dev.meloda.fast.messageshistory.MessagesHistoryViewModelImpl
import dev.meloda.fast.messageshistory.model.ActionMode
import dev.meloda.fast.messageshistory.model.MessagesHistoryScreenState
import dev.meloda.fast.messageshistory.util.firstMessage
import dev.meloda.fast.messageshistory.util.indexOfMessageByCmId
import dev.meloda.fast.model.BaseError
import dev.meloda.fast.ui.theme.LocalThemeConfig
import dev.meloda.fast.ui.util.ImmutableList
import dev.chrisbanes.haze.HazeState
import dev.chrisbanes.haze.hazeChild
import dev.chrisbanes.haze.materials.ExperimentalHazeMaterialsApi
@@ -90,7 +90,7 @@ import dev.chrisbanes.haze.materials.HazeMaterials
import kotlinx.coroutines.launch
import org.koin.androidx.compose.koinViewModel
import org.koin.compose.koinInject
import com.meloda.app.fast.ui.R as UiR
import dev.meloda.fast.ui.R as UiR
@Composable
fun MessagesHistoryRoute(
@@ -1,4 +1,4 @@
package com.meloda.app.fast.messageshistory.presentation
package dev.meloda.fast.messageshistory.presentation
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.layout.Column
@@ -17,9 +17,9 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import com.meloda.app.fast.messageshistory.model.UiItem
import com.meloda.app.fast.ui.theme.LocalThemeConfig
import com.meloda.app.fast.ui.util.ImmutableList
import dev.meloda.fast.messageshistory.model.UiItem
import dev.meloda.fast.ui.theme.LocalThemeConfig
import dev.meloda.fast.ui.util.ImmutableList
import dev.chrisbanes.haze.HazeState
import dev.chrisbanes.haze.haze
import dev.chrisbanes.haze.materials.ExperimentalHazeMaterialsApi
@@ -1,4 +1,4 @@
package com.meloda.app.fast.messageshistory.presentation
package dev.meloda.fast.messageshistory.presentation
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
@@ -13,8 +13,8 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import com.meloda.app.fast.common.extensions.orDots
import com.meloda.app.fast.messageshistory.model.UiItem
import dev.meloda.fast.common.extensions.orDots
import dev.meloda.fast.messageshistory.model.UiItem
@Composable
fun OutgoingMessageBubble(
@@ -1,6 +1,6 @@
package com.meloda.app.fast.messageshistory.util
package dev.meloda.fast.messageshistory.util
import com.meloda.app.fast.messageshistory.model.UiItem
import dev.meloda.fast.messageshistory.model.UiItem
fun List<UiItem>.firstMessage(): UiItem.Message = first() as UiItem.Message
@@ -1,25 +1,25 @@
package com.meloda.app.fast.messageshistory.util
package dev.meloda.fast.messageshistory.util
import android.content.res.Resources
import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.SpanStyle
import androidx.compose.ui.text.buildAnnotatedString
import androidx.compose.ui.text.font.FontWeight
import com.meloda.app.fast.common.UserConfig
import com.meloda.app.fast.common.extensions.orDots
import com.meloda.app.fast.common.model.UiImage
import com.meloda.app.fast.common.model.UiText
import com.meloda.app.fast.common.model.parseString
import com.meloda.app.fast.common.provider.ResourceProvider
import com.meloda.app.fast.data.VkMemoryCache
import com.meloda.app.fast.messageshistory.model.UiItem
import com.meloda.app.fast.model.api.PeerType
import com.meloda.app.fast.model.api.domain.VkConversation
import com.meloda.app.fast.model.api.domain.VkMessage
import com.meloda.app.fast.ui.R
import dev.meloda.fast.common.UserConfig
import dev.meloda.fast.common.extensions.orDots
import dev.meloda.fast.common.model.UiImage
import dev.meloda.fast.common.model.UiText
import dev.meloda.fast.common.model.parseString
import dev.meloda.fast.common.provider.ResourceProvider
import dev.meloda.fast.data.VkMemoryCache
import dev.meloda.fast.messageshistory.model.UiItem
import dev.meloda.fast.model.api.PeerType
import dev.meloda.fast.model.api.domain.VkConversation
import dev.meloda.fast.model.api.domain.VkMessage
import dev.meloda.fast.ui.R
import java.text.SimpleDateFormat
import java.util.Locale
import com.meloda.app.fast.ui.R as UiR
import dev.meloda.fast.ui.R as UiR
private fun isAccount(fromId: Int) = fromId == UserConfig.userId
@@ -1,8 +1,8 @@
package com.meloda.app.fast.messageshistory.validation
package dev.meloda.fast.messageshistory.validation
import com.meloda.app.fast.common.extensions.addIf
import com.meloda.app.fast.messageshistory.model.MessagesHistoryScreenState
import com.meloda.app.fast.messageshistory.model.MessagesHistoryValidationResult
import dev.meloda.fast.common.extensions.addIf
import dev.meloda.fast.messageshistory.model.MessagesHistoryScreenState
import dev.meloda.fast.messageshistory.model.MessagesHistoryValidationResult
class MessagesHistoryValidator {
+2 -2
View File
@@ -4,10 +4,10 @@ plugins {
alias(libs.plugins.kotlin.compose.compiler)
}
group = "com.meloda.app.fast.photoviewer"
group = "dev.meloda.fast.photoviewer"
android {
namespace = "com.meloda.app.fast.photoviewer"
namespace = "dev.meloda.fast.photoviewer"
compileSdk = Configs.compileSdk
defaultConfig {
@@ -1,9 +1,9 @@
package com.meloda.app.fast.photoviewer
package dev.meloda.fast.photoviewer
import androidx.lifecycle.ViewModel
import com.meloda.app.fast.common.extensions.setValue
import com.meloda.app.fast.photoviewer.model.PhotoViewArguments
import com.meloda.app.fast.photoviewer.model.PhotoViewState
import dev.meloda.fast.common.extensions.setValue
import dev.meloda.fast.photoviewer.model.PhotoViewArguments
import dev.meloda.fast.photoviewer.model.PhotoViewState
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
@@ -1,7 +1,7 @@
package com.meloda.app.fast.photoviewer.di
package dev.meloda.fast.photoviewer.di
import com.meloda.app.fast.photoviewer.PhotoViewViewModel
import com.meloda.app.fast.photoviewer.PhotoViewViewModelImpl
import dev.meloda.fast.photoviewer.PhotoViewViewModel
import dev.meloda.fast.photoviewer.PhotoViewViewModelImpl
import org.koin.androidx.viewmodel.dsl.viewModelOf
import org.koin.dsl.bind
import org.koin.dsl.module

Some files were not shown because too many files have changed in this diff Show More