|
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