mirror of
				https://github.com/yattee/yattee.git
				synced 2025-11-03 22:22:02 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			44 lines
		
	
	
		
			966 B
		
	
	
	
		
			Swift
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			966 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 = current else {
 | 
						|
            return
 | 
						|
        }
 | 
						|
 | 
						|
        let from = favorites.firstIndex(of: current)
 | 
						|
        let to = favorites.firstIndex(of: item)
 | 
						|
 | 
						|
        guard let from = from, let to = 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
 | 
						|
    }
 | 
						|
}
 |