mirror of
https://github.com/yattee/yattee.git
synced 2024-11-10 00:08:21 +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
|
|
}
|
|
}
|