mirror of
https://github.com/yattee/yattee.git
synced 2024-11-10 08:18:19 +00:00
36 lines
817 B
Swift
36 lines
817 B
Swift
|
import Foundation
|
||
|
import SwiftUI
|
||
|
|
||
|
struct DropFavorite: DropDelegate {
|
||
|
let item: FavoriteItem
|
||
|
@Binding var favorites: [FavoriteItem]
|
||
|
@Binding var current: FavoriteItem?
|
||
|
|
||
|
func dropEntered(info _: DropInfo) {
|
||
|
guard item != current else {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
let from = favorites.firstIndex(of: current!)!
|
||
|
let to = favorites.firstIndex(of: item)!
|
||
|
|
||
|
guard favorites[to].id != current!.id else {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
favorites.move(
|
||
|
fromOffsets: IndexSet(integer: from),
|
||
|
toOffset: to > from ? to + 1 : to
|
||
|
)
|
||
|
}
|
||
|
|
||
|
func dropUpdated(info _: DropInfo) -> DropProposal? {
|
||
|
DropProposal(operation: .move)
|
||
|
}
|
||
|
|
||
|
func performDrop(info _: DropInfo) -> Bool {
|
||
|
current = nil
|
||
|
return true
|
||
|
}
|
||
|
}
|