yayan 1 rok pred
rodič
commit
ff8555389d

+ 20 - 3
app/src/main/java/io/nexilis/alpha/ui/components/Attachments.kt

@@ -36,6 +36,7 @@ import androidx.compose.runtime.Composable
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
+import androidx.compose.runtime.rememberCoroutineScope
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
@@ -55,6 +56,8 @@ import io.nexilis.service.core.Orange
 import io.nexilis.service.core.Purple
 import io.nexilis.service.core.createFile
 import io.nexilis.service.core.getMimeType
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.launch
 import kotlinx.parcelize.Parcelize
 import kotlinx.serialization.KSerializer
 import kotlinx.serialization.Serializable
@@ -73,11 +76,18 @@ fun Attachments(modifier: Modifier, onAttachment: (List<Uri>) -> Unit) {
     var isOpenMenu by remember {
         mutableStateOf(false)
     }
+    var isDismiss by remember {
+        mutableStateOf(false)
+    }
     val context = LocalContext.current
     var tempUri = Uri.EMPTY
+    val coroutine = rememberCoroutineScope()
     IconButton(onClick = {
+        if (isDismiss) {
+            return@IconButton
+        }
         keyboardController?.hide()
-        isOpenMenu = !isOpenMenu
+        isOpenMenu = true
     }
     ) {
         Icon(
@@ -87,7 +97,14 @@ fun Attachments(modifier: Modifier, onAttachment: (List<Uri>) -> Unit) {
         )
     }
     if (isOpenMenu) {
-        Popup(popupPositionProvider = positionProvider, onDismissRequest = { isOpenMenu = false }) {
+        Popup(popupPositionProvider = positionProvider, onDismissRequest = {
+            isDismiss = true
+            coroutine.launch {
+                delay(100)
+                isDismiss = false
+            }
+            isOpenMenu = false
+        }) {
             Box(modifier = modifier) {
                 Row(Modifier.align(Alignment.Center)) {
                     var mimeType = arrayOf(
@@ -342,7 +359,7 @@ val AttachmentItemListType = object : NavType<AttachmentItemList>(isNullableAllo
     }
 }
 
-fun AttachmentItemList.toArrayListUri() : ArrayList<Uri> {
+fun AttachmentItemList.toArrayListUri(): ArrayList<Uri> {
     val list = arrayListOf<Uri>()
     this.list.forEach {
         it?.let {