Skip to content

Commit

Permalink
Merge pull request #349 from koimoee/patch-1
Browse files Browse the repository at this point in the history
feat(ProfileNetworkError): Removed Error Message from Card Instead Using SnackBar & Dialog
  • Loading branch information
dead8309 authored Dec 25, 2024
2 parents b92d1cb + 9d0824c commit 0f556d8
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 47 deletions.
6 changes: 3 additions & 3 deletions common/resources/src/main/res/values-kr/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@
<string name="stop_rpc_toast">모든 서비스가 중지되었습니다</string>
<string name="show_playback_state">재생 상태 표시</string>
<string name="copied_to_clipboard">클립보드에 복사됨</string>
<string name="application_id">Application ID</string>
<string name="custom_application_id">Custom Activity Application ID</string>
<string name="custom_application_id_desc">Overrides the default Discord Application ID</string>
<string name="application_id">애플리케이션 ID</string>
<string name="custom_application_id">사용자 지정 활동 애플리케이션 ID</string>
<string name="custom_application_id_desc">기본 디스코드 애플리케이션 ID를 재정의합니다.</string>
</resources>
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,16 @@
* * * permission of yzziK(Vaibhav)
* * *****************************************************************
*
*
*/

package com.my.kizzy.feature_profile.ui.component

import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
import androidx.compose.ui.platform.LocalContext
import androidx.compose.foundation.layout.*
import androidx.compose.runtime.*
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Row
Expand All @@ -25,6 +30,11 @@ import androidx.compose.material3.ElevatedCard
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.TextButton
import androidx.compose.material3.SnackbarHost
import androidx.compose.material3.SnackbarHostState
import androidx.compose.material3.SnackbarResult
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
Expand All @@ -40,60 +50,72 @@ import com.my.kizzy.resources.R

@Composable
fun ProfileNetworkError(
modifier: Modifier,
modifier: Modifier = Modifier,
error: String
) {
ElevatedCard(
modifier = modifier,
colors = CardDefaults.elevatedCardColors(
containerColor = Color(0xFFFFDB92)
)
) {
Box(
modifier = Modifier
.fillMaxWidth()
.drawWithCache {
onDrawBehind {
drawRect(
color = Color(0xFFFFBC41),
topLeft = Offset.Zero,
size = Size(15f, size.height),
)
var showDialog by remember { mutableStateOf(false) }
val snackbarHostState = remember { SnackbarHostState() }
val errorMessage = stringResource(R.string.user_profile_error)
val context = LocalContext.current

if (showDialog) {
AlertDialog(
onDismissRequest = { showDialog = false },
confirmButton = {
TextButton(onClick = { showDialog = false }) {
Text("OK")
}
},
dismissButton = {
TextButton(
onClick = {
copyToClipboard(context, error)
showDialog = false
}
) {
Text("Copy")
}
) {
Row(
modifier = Modifier
.fillMaxWidth()
.padding(10.dp),
horizontalArrangement = Arrangement.spacedBy(10.dp),
verticalAlignment = Alignment.CenterVertically
) {
Icon(
Icons.Outlined.Warning,
"networkError",
modifier = Modifier.size(32.dp),
tint = Color(0xFFCE8500)
)
Text(
text = stringResource(R.string.user_profile_error) + "\n$error",
style = MaterialTheme.typography.titleMedium.copy(
fontWeight = FontWeight.ExtraBold,
color = Color(0xFFCE8500)
)
)
},
text = {
Text(text = error)
}
)
}

LaunchedEffect(Unit) {
snackbarHostState.showSnackbar(
message = errorMessage,
actionLabel = "View Details"
).also { result ->
if (result == SnackbarResult.ActionPerformed) {
showDialog = true
}
}
}

Box(modifier = modifier.fillMaxSize()) {
SnackbarHost(
hostState = snackbarHostState,
modifier = Modifier
.align(Alignment.BottomCenter)
.padding(16.dp)
)
}
}

fun copyToClipboard(context: Context, text: String) {
val clipboardManager = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clipData = ClipData.newPlainText("Error Details", text)
clipboardManager.setPrimaryClip(clipData)
}

@Preview
@Composable
fun Preview_Profile_Network_Error_Card() {
fun Preview_Profile_Network_Error() {
ProfileNetworkError(
modifier = Modifier
.fillMaxWidth()
.padding(10.dp),
error = stringResource(R.string.user_profile_error)
.fillMaxSize()
.padding(16.dp),
error = "Unable to connect to the network."
)
}
}

0 comments on commit 0f556d8

Please sign in to comment.