mirror of
https://github.com/yattee/yattee.git
synced 2024-11-10 08:18:19 +00:00
44 lines
944 B
Swift
44 lines
944 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
|
|
}
|
|
|
|
guard let current else {
|
|
return
|
|
}
|
|
|
|
let from = favorites.firstIndex(of: current)
|
|
let to = favorites.firstIndex(of: item)
|
|
|
|
guard let from, let to else {
|
|
return
|
|
}
|
|
|
|
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
|
|
}
|
|
}
|