|
1 | 1 | package io.github.jan.supabase.common.ui.utils |
2 | 2 |
|
| 3 | +import androidx.compose.foundation.ExperimentalFoundationApi |
| 4 | +import androidx.compose.foundation.draganddrop.dragAndDropTarget |
3 | 5 | import androidx.compose.runtime.MutableState |
4 | | -import androidx.compose.ui.DragData |
5 | 6 | import androidx.compose.ui.ExperimentalComposeUiApi |
6 | 7 | import androidx.compose.ui.Modifier |
7 | 8 | import androidx.compose.ui.composed |
8 | | -import androidx.compose.ui.onExternalDrag |
| 9 | +import androidx.compose.ui.draganddrop.DragAndDropEvent |
| 10 | +import androidx.compose.ui.draganddrop.DragAndDropTarget |
| 11 | +import androidx.compose.ui.draganddrop.DragData |
| 12 | +import androidx.compose.ui.draganddrop.dragData |
9 | 13 |
|
10 | | -@OptIn(ExperimentalComposeUiApi::class) |
| 14 | +@OptIn(ExperimentalComposeUiApi::class, ExperimentalFoundationApi::class) |
11 | 15 | actual fun Modifier.applyDragging(isDragging: MutableState<Boolean>, onSuccess: (List<String>) -> Unit): Modifier { |
12 | 16 | return composed { |
13 | | - onExternalDrag( |
14 | | - onDragStart = { |
15 | | - isDragging.value = true |
| 17 | + dragAndDropTarget( |
| 18 | + shouldStartDragAndDrop = { |
| 19 | + it.dragData() is DragData.FilesList |
16 | 20 | }, |
17 | | - onDragExit = { |
18 | | - isDragging.value = false |
19 | | - }, |
20 | | - onDrop = { |
21 | | - isDragging.value = false |
22 | | - if(it.dragData is DragData.FilesList) { |
23 | | - onSuccess((it.dragData as DragData.FilesList).readFiles()) |
| 21 | + target = object : DragAndDropTarget { |
| 22 | + override fun onDrop(event: DragAndDropEvent): Boolean { |
| 23 | + isDragging.value = false |
| 24 | + val dragData = event.dragData() as DragData.FilesList |
| 25 | + onSuccess(dragData.readFiles()) |
| 26 | + return true; |
24 | 27 | } |
25 | 28 | } |
26 | 29 | ) |
|
0 commit comments