mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-20 12:09:45 +01:00
test dependencies
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
This commit is contained in:
parent
d3ff2e9ee9
commit
5d73b65a31
@ -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) {
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
}
|
@ -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
|
||||||
|
}
|
||||||
|
}
|
@ -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
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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">
|
||||||
|
Loading…
Reference in New Issue
Block a user