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