浏览代码

test dependencies

Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
sowjanyakch 10 月之前
父节点
当前提交
5d73b65a31

+ 5 - 0
app/build.gradle

@@ -333,6 +333,11 @@ dependencies {
 
     implementation "com.google.dagger:hilt-android:$hilt_version"
     kapt "com.google.dagger:hilt-android-compiler:$hilt_version"
+
+    implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.8.3")
+    testImplementation("junit:junit:4.13.2")
+    androidTestImplementation(platform("androidx.compose:compose-bom:2024.06.00"))
+    androidTestImplementation("androidx.compose.ui:ui-test-junit4")
 }
 
 tasks.register('installGitHooks', Copy) {

+ 17 - 14
app/src/main/java/com/nextcloud/talk/contacts/ContactsActivityCompose.kt

@@ -52,6 +52,7 @@ import androidx.compose.runtime.getValue
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.ColorFilter
 import androidx.compose.ui.platform.LocalContext
 import androidx.compose.ui.res.painterResource
 import androidx.compose.ui.res.stringResource
@@ -61,13 +62,12 @@ import androidx.compose.ui.unit.sp
 import androidx.lifecycle.ViewModelProvider
 import autodagger.AutoInjector
 import coil.compose.AsyncImage
-import coil.request.ImageRequest
-import coil.transform.CircleCropTransformation
 import com.nextcloud.talk.R
 import com.nextcloud.talk.application.NextcloudTalkApplication
 import com.nextcloud.talk.chat.ChatActivity
 import com.nextcloud.talk.models.json.autocomplete.AutocompleteUser
 import com.nextcloud.talk.openconversations.ListOpenConversationsActivity
+import com.nextcloud.talk.ui.theme.ViewThemeUtils
 import com.nextcloud.talk.utils.bundle.BundleKeys
 import javax.inject.Inject
 
@@ -78,6 +78,9 @@ class ContactsActivityCompose : ComponentActivity() {
     lateinit var viewModelFactory: ViewModelProvider.Factory
     private lateinit var contactsViewModel: ContactsViewModel
 
+    @Inject
+    lateinit var viewThemeUtils: ViewThemeUtils
+
     @SuppressLint("UnrememberedMutableState")
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
@@ -85,7 +88,9 @@ class ContactsActivityCompose : ComponentActivity() {
         contactsViewModel = ViewModelProvider(this, viewModelFactory)[ContactsViewModel::class.java]
 
         setContent {
-            MaterialTheme {
+            MaterialTheme(
+                colorScheme = viewThemeUtils.getColorScheme(this)
+            ) {
                 val context = LocalContext.current
                 Scaffold(
                     topBar = {
@@ -205,15 +210,10 @@ fun ContactItemRow(contact: AutocompleteUser, contactsViewModel: ContactsViewMod
         verticalAlignment = Alignment.CenterVertically
     ) {
         val imageUri = contact.id?.let { contactsViewModel.getImageUri(it, true) }
-        val imageRequest = ImageRequest.Builder(context)
-            .data(imageUri)
-            .transformations(CircleCropTransformation())
-            .error(R.drawable.account_circle_96dp)
-            .placeholder(R.drawable.account_circle_96dp)
-            .build()
-
+        val errorPlaceholderImage: Int = R.drawable.account_circle_96dp
+        val loadedImage = loadImage(imageUri, context, errorPlaceholderImage)
         AsyncImage(
-            model = imageRequest,
+            model = loadedImage,
             contentDescription = stringResource(R.string.user_avatar),
             modifier = Modifier.size(width = 45.dp, height = 45.dp)
         )
@@ -288,7 +288,8 @@ fun ConversationCreationOptions(context: Context) {
                     .height(40.dp)
                     .padding(8.dp),
                 painter = painterResource(R.drawable.baseline_chat_bubble_outline_24),
-                contentDescription = stringResource(R.string.new_conversation_creation_icon)
+                contentDescription = stringResource(R.string.new_conversation_creation_icon),
+                colorFilter = ColorFilter.tint(MaterialTheme.colorScheme.onSurface)
             )
             Text(
                 modifier = Modifier
@@ -296,7 +297,8 @@ fun ConversationCreationOptions(context: Context) {
                     .wrapContentHeight(),
                 text = stringResource(R.string.nc_create_new_conversation),
                 maxLines = 1,
-                fontSize = 16.sp
+                fontSize = 16.sp,
+                color = MaterialTheme.colorScheme.onSurface
             )
         }
         Row(
@@ -314,7 +316,8 @@ fun ConversationCreationOptions(context: Context) {
                     .height(40.dp)
                     .padding(8.dp),
                 painter = painterResource(R.drawable.baseline_format_list_bulleted_24),
-                contentDescription = stringResource(R.string.join_open_conversations_icon)
+                contentDescription = stringResource(R.string.join_open_conversations_icon),
+                colorFilter = ColorFilter.tint(MaterialTheme.colorScheme.onSurface)
             )
             Text(
                 modifier = Modifier

+ 24 - 0
app/src/main/java/com/nextcloud/talk/contacts/ImageRequest.kt

@@ -0,0 +1,24 @@
+/*
+ * Nextcloud Talk - Android Client
+ *
+ * SPDX-FileCopyrightText: 2024 Sowjanya Kota <sowjanya.kch@email.com>
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
+package com.nextcloud.talk.contacts
+
+import android.content.Context
+import androidx.compose.runtime.Composable
+import coil.request.ImageRequest
+import coil.transform.CircleCropTransformation
+
+@Composable
+fun loadImage(imageUri: String?, context: Context, errorPlaceholderImage: Int): ImageRequest {
+    val imageRequest = ImageRequest.Builder(context)
+        .data(imageUri)
+        .transformations(CircleCropTransformation())
+        .error(errorPlaceholderImage)
+        .placeholder(errorPlaceholderImage)
+        .build()
+    return imageRequest
+}

+ 35 - 0
app/src/main/java/com/nextcloud/talk/contacts/MyApplication.kt

@@ -0,0 +1,35 @@
+/*
+ * Nextcloud Talk - Android Client
+ *
+ * SPDX-FileCopyrightText: 2024 Your Name <your@email.com>
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
+package com.nextcloud.talk.contacts
+
+import android.app.Application
+import coil.ImageLoader
+import coil.ImageLoaderFactory
+import coil.disk.DiskCache
+import coil.memory.MemoryCache
+import coil.util.DebugLogger
+
+class MyApplication : Application(), ImageLoaderFactory {
+    override fun newImageLoader(): ImageLoader {
+        val imageLoader = ImageLoader.Builder(this)
+            .memoryCache {
+                MemoryCache.Builder(this)
+                    .maxSizePercent(0.1)
+                    .build()
+            }
+            .diskCache {
+                DiskCache.Builder()
+                    .maxSizePercent(0.02)
+                    .directory(cacheDir)
+                    .build()
+            }
+            .logger(DebugLogger())
+            .build()
+        return imageLoader
+    }
+}

+ 8 - 6
app/src/main/java/com/nextcloud/talk/contacts/SearchComponent.kt

@@ -17,6 +17,7 @@ import androidx.compose.material.icons.automirrored.filled.ArrowBack
 import androidx.compose.material.icons.filled.Close
 import androidx.compose.material3.Icon
 import androidx.compose.material3.IconButton
+import androidx.compose.material3.MaterialTheme
 import androidx.compose.material3.Surface
 import androidx.compose.material3.Text
 import androidx.compose.material3.TextField
@@ -38,23 +39,24 @@ fun DisplaySearch(text: String, onTextChange: (String) -> Unit, contactsViewMode
         modifier = Modifier
             .fillMaxWidth()
             .height(60.dp)
-            .background(Color.White)
+
     ) {
         val keyboardController = LocalSoftwareKeyboardController.current
         TextField(
             modifier = Modifier
-                .fillMaxWidth(),
+                .fillMaxWidth()
+                .background(MaterialTheme.colorScheme.surface),
             value = text,
             onValueChange = { onTextChange(it) },
             placeholder = {
                 Text(
                     text = stringResource(R.string.nc_search),
-                    color = Color.DarkGray
+                    color = MaterialTheme.colorScheme.onSurfaceVariant
                 )
             },
 
             textStyle = TextStyle(
-                color = Color.Black,
+                color = MaterialTheme.colorScheme.onSurface,
                 fontSize = 16.sp
             ),
             singleLine = true,
@@ -68,7 +70,7 @@ fun DisplaySearch(text: String, onTextChange: (String) -> Unit, contactsViewMode
                     Icon(
                         imageVector = Icons.AutoMirrored.Default.ArrowBack,
                         contentDescription = stringResource(R.string.back_button),
-                        tint = Color.Black
+                        tint = MaterialTheme.colorScheme.onSurface
                     )
                 }
             },
@@ -83,7 +85,7 @@ fun DisplaySearch(text: String, onTextChange: (String) -> Unit, contactsViewMode
                         Icon(
                             imageVector = Icons.Default.Close,
                             contentDescription = stringResource(R.string.close_icon),
-                            tint = Color.Black
+                            tint = MaterialTheme.colorScheme.onSurface
                         )
                     }
                 }

+ 1 - 1
gradle/verification-metadata.xml

@@ -5982,7 +5982,7 @@
             <ignored-keys>
                <ignored-key id="DB0597E3144342256BC81E3EC727D053C4481CF5" reason="PGP verification failed"/>
             </ignored-keys>
-            <sha256 value="8359ad51e0476c8e0df7188a43f16d49733c4a428fb45e99794b783f01b97520" origin="Generated by Gradle" reason="PGP signature verification failed!"/>
+            <sha256 value="9a4f5e5674366c156c90391662f03ed7c5971d6aa63832df74a271da6ff82e96" origin="Generated by Gradle" reason="PGP signature verification failed!"/>
          </artifact>
       </component>
       <component group="org.xerial" name="sqlite-jdbc" version="3.41.2.2">