mirror of
https://github.com/fromchat-messenger/app.git
synced 2026-09-22 19:15:05 +03:00
Fix errors
This commit is contained in:
+8
@@ -29,6 +29,7 @@
|
||||
<inspection_tool class="GlancePreviewNotSupportedInUnitTestFiles" enabled="true" level="ERROR" enabled_by_default="true">
|
||||
<option name="composableFile" value="true" />
|
||||
</inspection_tool>
|
||||
<inspection_tool class="LocalVariableName" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
|
||||
<inspection_tool class="NestedLambdaShadowedImplicitParameter" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
|
||||
<inspection_tool class="PreviewAnnotationInFunctionWithParameters" enabled="true" level="ERROR" enabled_by_default="true">
|
||||
<option name="composableFile" value="true" />
|
||||
@@ -58,7 +59,14 @@
|
||||
<option name="composableFile" value="true" />
|
||||
<option name="previewFile" value="true" />
|
||||
</inspection_tool>
|
||||
<inspection_tool class="PrivatePropertyName" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
|
||||
<inspection_tool class="PropertyName" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
|
||||
<inspection_tool class="SpellCheckingInspection" enabled="false" level="TYPO" enabled_by_default="false">
|
||||
<option name="processCode" value="true" />
|
||||
<option name="processLiterals" value="true" />
|
||||
<option name="processComments" value="true" />
|
||||
</inspection_tool>
|
||||
<inspection_tool class="UnnecessaryModuleDependencyInspection" enabled="false" level="WARNING" enabled_by_default="false" />
|
||||
<inspection_tool class="UnusedSymbol" enabled="true" level="WEAK WARNING" enabled_by_default="true" editorAttributes="INFO_ATTRIBUTES" />
|
||||
</profile>
|
||||
</component>
|
||||
Vendored
+1
-12
@@ -18,15 +18,4 @@
|
||||
|
||||
# If you keep the line number information, uncomment this to
|
||||
# hide the original source file name.
|
||||
#-renamesourcefileattribute SourceFile
|
||||
|
||||
# Keep Ktor classes
|
||||
-keep class io.ktor.** { *; }
|
||||
-keep class kotlinx.coroutines.** { *; }
|
||||
-dontwarn io.ktor.**
|
||||
|
||||
# Keep HttpTimeout plugin specifically
|
||||
-keep class io.ktor.client.plugins.HttpTimeout { *; }
|
||||
-keep class io.ktor.client.plugins.HttpTimeout$* { *; }
|
||||
-keep class io.ktor.client.plugins.HttpTimeout$Plugin { *; }
|
||||
-keep class io.ktor.client.plugins.HttpTimeout$Config { *; }
|
||||
#-renamesourcefileattribute SourceFile
|
||||
@@ -1,7 +1,7 @@
|
||||
<vector
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="1000dp"
|
||||
android:height="1000dp"
|
||||
android:width="200dp"
|
||||
android:height="200dp"
|
||||
android:viewportWidth="1000"
|
||||
android:viewportHeight="1000">
|
||||
<group
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="colorSurface">#141218</color>
|
||||
</resources>
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="purple_200">#FFBB86FC</color>
|
||||
<color name="purple_500">#FF6200EE</color>
|
||||
<color name="purple_700">#FF3700B3</color>
|
||||
<color name="teal_200">#FF03DAC5</color>
|
||||
<color name="teal_700">#FF018786</color>
|
||||
<color name="black">#FF000000</color>
|
||||
<color name="white">#FFFFFFFF</color>
|
||||
<color name="colorSurface">#FEF7FF</color>
|
||||
</resources>
|
||||
@@ -1,7 +1,5 @@
|
||||
package ru.fromchat.ui.chat
|
||||
|
||||
import androidx.compose.animation.core.animateFloatAsState
|
||||
import androidx.compose.animation.core.tween
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.size
|
||||
@@ -32,11 +30,6 @@ fun Avatar(
|
||||
modifier: Modifier = Modifier
|
||||
) {
|
||||
var imageLoadFailed by remember { mutableStateOf(false) }
|
||||
val alpha by animateFloatAsState(
|
||||
targetValue = if (imageLoadFailed) 0f else 1f,
|
||||
animationSpec = tween(300),
|
||||
label = "avatar_fade"
|
||||
)
|
||||
|
||||
val gradient = remember(displayName) { generateGradientFromName(displayName) }
|
||||
val initials = remember(displayName) { getInitials(displayName) }
|
||||
|
||||
@@ -2,7 +2,6 @@ package ru.fromchat.ui.chat
|
||||
|
||||
import androidx.compose.ui.graphics.Brush
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import kotlin.math.abs
|
||||
|
||||
/**
|
||||
|
||||
@@ -48,6 +48,7 @@ data class ContextMenuState(
|
||||
val position: IntOffset = IntOffset(0, 0)
|
||||
)
|
||||
|
||||
@Suppress("AssignedValueIsNeverRead")
|
||||
@Composable
|
||||
fun MessageContextMenu(
|
||||
state: ContextMenuState,
|
||||
|
||||
@@ -26,12 +26,11 @@ import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.draw.shadow
|
||||
import androidx.compose.ui.geometry.Offset
|
||||
import androidx.compose.ui.graphics.Brush
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.input.pointer.pointerInput
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.geometry.Offset
|
||||
import androidx.compose.ui.unit.IntOffset
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import kotlinx.datetime.TimeZone
|
||||
|
||||
@@ -20,7 +20,6 @@ import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.saveable.rememberSaveable
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Modifier
|
||||
@@ -31,14 +30,12 @@ import ru.fromchat.coming_soon
|
||||
import ru.fromchat.contacts
|
||||
import ru.fromchat.dms
|
||||
import ru.fromchat.settings
|
||||
import ru.fromchat.ui.LocalNavController
|
||||
import ru.fromchat.utils.exclude
|
||||
|
||||
@Suppress("AssignedValueIsNeverRead")
|
||||
@Composable
|
||||
fun MainScreen(onLogout: () -> Unit = {}) {
|
||||
var selectedTab by rememberSaveable { mutableStateOf("chats") }
|
||||
val navController = LocalNavController.current
|
||||
|
||||
Scaffold(
|
||||
bottomBar = {
|
||||
|
||||
@@ -56,7 +56,7 @@ inline fun HttpClientConfig<*>.defaultRequest(
|
||||
|
||||
/**
|
||||
* Installs [Logging] in a Ktor client config.
|
||||
* @param settings Lambda to configure the [Logging.Config].
|
||||
* @param settings Lambda to configure the [LoggingConfig].
|
||||
*/
|
||||
inline fun HttpClientConfig<*>.logging(
|
||||
crossinline settings: LoggingConfig.() -> Unit
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
[versions]
|
||||
agp = "8.13.1"
|
||||
agp = "8.13.2"
|
||||
androidx-activityCompose = "1.12.1"
|
||||
androidx-appcompat = "1.7.1"
|
||||
androidx-core-ktx = "1.17.0"
|
||||
androidx-lifecycle = "2.9.6"
|
||||
coilCompose = "3.3.0"
|
||||
compose-multiplatform = "1.9.3"
|
||||
#noinspection NewerVersionAvailable
|
||||
constraintlayout = "0.6.1-shaded"
|
||||
coreSplashscreen = "1.2.0"
|
||||
haze = "1.7.1"
|
||||
@@ -31,8 +32,6 @@ androidx-core-splashscreen = { module = "androidx.core:core-splashscreen", versi
|
||||
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "androidx-core-ktx" }
|
||||
androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "androidx-appcompat" }
|
||||
androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activityCompose" }
|
||||
androidx-lifecycle-viewmodel = { group = "org.jetbrains.androidx.lifecycle", name = "lifecycle-viewmodel", version.ref = "androidx-lifecycle" }
|
||||
androidx-lifecycle-runtime-compose = { group = "org.jetbrains.androidx.lifecycle", name = "lifecycle-runtime-compose", version.ref = "androidx-lifecycle" }
|
||||
coil-compose = { module = "io.coil-kt.coil3:coil-compose", version.ref = "coilCompose" }
|
||||
coil-network-ktor3 = { module = "io.coil-kt.coil3:coil-network-ktor3", version.ref = "coilCompose" }
|
||||
constraintlayout = { module = "tech.annexflow.compose:constraintlayout-compose-multiplatform", version.ref = "constraintlayout" }
|
||||
@@ -56,7 +55,6 @@ ktor-client-content-negotiation = { module = "io.ktor:ktor-client-content-negoti
|
||||
ktor-client-serialization-kotlinx-json = { module = "io.ktor:ktor-serialization-kotlinx-json", version.ref = "ktor" }
|
||||
ktor-client-websockets = { module = "io.ktor:ktor-client-websockets", version.ref = "ktor" }
|
||||
ktor-client-logging = { module = "io.ktor:ktor-client-logging", version.ref = "ktor" }
|
||||
ktor-client-android = { module = "io.ktor:ktor-client-android", version.ref = "ktor" }
|
||||
ktor-client-okhttp = { module = "io.ktor:ktor-client-okhttp", version.ref = "ktor" }
|
||||
ktor-client-darwin = { module = "io.ktor:ktor-client-darwin", version.ref = "ktor" }
|
||||
slf4j-android = { module = "org.slf4j:slf4j-android", version.ref = "slf4j" }
|
||||
|
||||
@@ -86,7 +86,6 @@ import javax.crypto.Cipher
|
||||
import javax.crypto.SecretKeyFactory
|
||||
import javax.crypto.spec.IvParameterSpec
|
||||
import javax.crypto.spec.PBEKeySpec
|
||||
import kotlin.collections.iterator
|
||||
import kotlin.random.Random
|
||||
import kotlin.random.nextInt
|
||||
import kotlin.reflect.KClass
|
||||
@@ -291,12 +290,13 @@ fun Activity.resolveAttr(@AttrRes id: Int): Int? {
|
||||
}
|
||||
}
|
||||
|
||||
@Suppress("UNUSED_PARAMETER", "unused", "MemberVisibilityCanBePrivate")
|
||||
@Suppress("unused", "MemberVisibilityCanBePrivate")
|
||||
class QuickAlertDialogBuilder(context: Context): MaterialAlertDialogBuilder(context) {
|
||||
fun title(title: CharSequence): QuickAlertDialogBuilder {
|
||||
setTitle(title)
|
||||
return this
|
||||
}
|
||||
|
||||
fun title(@StringRes titleRes: Int): QuickAlertDialogBuilder {
|
||||
setTitle(titleRes)
|
||||
return this
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.pr0gramm3r101.utils.settings
|
||||
|
||||
import android.content.Context
|
||||
import androidx.datastore.core.DataStore
|
||||
import androidx.datastore.preferences.core.Preferences
|
||||
import androidx.datastore.preferences.core.booleanPreferencesKey
|
||||
@@ -13,11 +12,11 @@ import androidx.datastore.preferences.core.stringSetPreferencesKey
|
||||
import kotlinx.coroutines.flow.first
|
||||
import kotlinx.coroutines.flow.map
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import com.pr0gramm3r101.utils.settings.DataStoreSingleton
|
||||
|
||||
class AndroidSettings(private val context: Context): Settings {
|
||||
class AndroidSettings(): Settings {
|
||||
private val dataStore: DataStore<Preferences>
|
||||
get() = DataStoreSingleton.dataStore
|
||||
|
||||
override fun putString(key: String, value: String) {
|
||||
runBlocking {
|
||||
dataStore.edit { preferences ->
|
||||
|
||||
@@ -9,7 +9,6 @@ import androidx.datastore.preferences.core.intPreferencesKey
|
||||
import androidx.datastore.preferences.core.longPreferencesKey
|
||||
import androidx.datastore.preferences.core.stringPreferencesKey
|
||||
import androidx.datastore.preferences.core.stringSetPreferencesKey
|
||||
import com.pr0gramm3r101.utils.settings.DataStoreSingleton
|
||||
import kotlinx.coroutines.flow.first
|
||||
import kotlinx.coroutines.flow.map
|
||||
|
||||
|
||||
+1
-3
@@ -1,5 +1,3 @@
|
||||
package com.pr0gramm3r101.utils.settings
|
||||
|
||||
import com.pr0gramm3r101.utils.UtilsLibrary
|
||||
|
||||
actual val settings: Settings get() = AndroidSettings(UtilsLibrary.context)
|
||||
actual val settings: Settings get() = AndroidSettings()
|
||||
@@ -26,6 +26,7 @@ import tech.annexflow.constraintlayout.compose.ConstraintLayoutBaseScope
|
||||
import tech.annexflow.constraintlayout.compose.HorizontalAnchorable
|
||||
import tech.annexflow.constraintlayout.compose.VerticalAnchorable
|
||||
|
||||
@Suppress("ComposableNaming")
|
||||
@Composable
|
||||
fun Typography(fontRes: FontResource) = Typography().let {
|
||||
val font = FontFamily(Font(fontRes))
|
||||
|
||||
@@ -19,7 +19,7 @@ object ServerConfigStorage {
|
||||
|
||||
suspend fun getServerUrl(): String? {
|
||||
val url = storage.getString(SERVER_URL_KEY)
|
||||
return if (url.isEmpty()) null else url
|
||||
return url.ifEmpty { null }
|
||||
}
|
||||
|
||||
suspend fun setServerUrl(url: String) {
|
||||
|
||||
@@ -2,8 +2,8 @@ package com.pr0gramm3r101.utils.settings
|
||||
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.withContext
|
||||
import platform.Foundation.NSUserDefaults
|
||||
import platform.Foundation.NSBundle
|
||||
import platform.Foundation.NSUserDefaults
|
||||
|
||||
class IosAsyncSettings : AsyncSettings {
|
||||
private val defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults
|
||||
@@ -23,8 +23,7 @@ class IosAsyncSettings : AsyncSettings {
|
||||
}
|
||||
|
||||
override suspend fun getInt(key: String, default: Int): Int = withContext(Dispatchers.Default) {
|
||||
val value = defaults.integerForKey(key)
|
||||
if (value != null) value.toInt() else default
|
||||
defaults.integerForKey(key).toInt()
|
||||
}
|
||||
|
||||
override suspend fun putLong(key: String, value: Long): Unit = withContext(Dispatchers.Default) {
|
||||
@@ -42,8 +41,7 @@ class IosAsyncSettings : AsyncSettings {
|
||||
}
|
||||
|
||||
override suspend fun getFloat(key: String, default: Float): Float = withContext(Dispatchers.Default) {
|
||||
val value = defaults.floatForKey(key)
|
||||
if (value != null) value.toFloat() else default
|
||||
defaults.floatForKey(key)
|
||||
}
|
||||
|
||||
override suspend fun putBoolean(key: String, value: Boolean): Unit = withContext(Dispatchers.Default) {
|
||||
|
||||
Reference in New Issue
Block a user