test dependencies

Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
This commit is contained in:
sowjanyakch 2024-07-16 22:21:33 +02:00 committed by Marcel Hibbe
parent d3ff2e9ee9
commit 5d73b65a31
No known key found for this signature in database
GPG Key ID: C793F8B59F43CE7B
6 changed files with 90 additions and 21 deletions

View File

@ -333,6 +333,11 @@ dependencies {
implementation "com.google.dagger:hilt-android:$hilt_version" implementation "com.google.dagger:hilt-android:$hilt_version"
kapt "com.google.dagger:hilt-android-compiler:$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) { tasks.register('installGitHooks', Copy) {

View File

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

View File

@ -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
}

View File

@ -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
}
}

View File

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

View File

@ -5982,7 +5982,7 @@
<ignored-keys> <ignored-keys>
<ignored-key id="DB0597E3144342256BC81E3EC727D053C4481CF5" reason="PGP verification failed"/> <ignored-key id="DB0597E3144342256BC81E3EC727D053C4481CF5" reason="PGP verification failed"/>
</ignored-keys> </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> </artifact>
</component> </component>
<component group="org.xerial" name="sqlite-jdbc" version="3.41.2.2"> <component group="org.xerial" name="sqlite-jdbc" version="3.41.2.2">