import GRDB import GRDBQuery import Foundation import SwiftUI struct NaviBar: View { @ObservedObject var paneConnector: PaneConnector @Query(RibbonRequest(dir: .prev, groupId: 1)) private var backRibbon: [Ribbon] @Query(RibbonRequest(dir: .next, groupId: 1)) private var nextRibbon: [Ribbon] @Query(SelectedRibbonRequest()) private var selectedRibbon: [Ribbon] @Environment(\.appDatabase) private var appDatabase var body: some View { var iconSize = CGFloat(25) VStack { HStack(spacing: 30) { BackArrow() .frame(width: iconSize, height: iconSize) .background(Color(red: 0.1, green: 0.1, blue: 0.1)) .if(paneConnector.hasMoved) { $0.foregroundColor(Color.black) } .if(!paneConnector.hasMoved) { $0.foregroundColor(Color(UIColor(red: 0.30, green: 0.30, blue: 0.30, alpha: 0.4))) } .onTapGesture { Task { var br = backRibbon var sr = selectedRibbon do { if paneConnector.hasMoved { print("has moved") let updatedRibbon = try await createUndoState(selectedRibbon: sr[0], appDatabase: appDatabase, paneConnector: paneConnector) goToRibbon(selectedRibbon: sr[0], destRibbon: sr[0], appDatabase: appDatabase, paneConnector: paneConnector, loading: false) } else { if backRibbon.count == 0 { return } try await appDatabase.undoRibbon(&sr[0]) goToRibbon(selectedRibbon: sr[0], destRibbon: br[0], appDatabase: appDatabase, paneConnector: paneConnector, loading: false) } } catch { print("Back Arrow Error info: \(error)") } } } BookmarkIcon() .frame(width: iconSize, height: iconSize) .background(Color(red: 0.1, green: 0.1, blue: 0.1)) .foregroundColor(Color(UIColor(red: 0.30, green: 0.30, blue: 0.30, alpha: 0.4))) ForwardArrow() .frame(width: iconSize, height: iconSize) .background(Color(red: 0.1, green: 0.1, blue: 0.1)) .foregroundColor(Color(UIColor(red: 0.30, green: 0.30, blue: 0.30, alpha: 0.4))) .onTapGesture { if nextRibbon.count == 0 { return } Task { var sr = selectedRibbon[0] var nr = nextRibbon[0] try await appDatabase.redoRibbon(&sr) goToRibbon(selectedRibbon: sr, destRibbon: nr, appDatabase: appDatabase, paneConnector: paneConnector, loading: false) } } // Rectangle() // .fill(Color(red: 0.1, green: 0.1, blue: 0.1)) // .frame(width: iconSize, height: iconSize) // BackArrow() // .frame(width: iconSize, height: iconSize) // .background(Color(red: 0.1, green: 0.1, blue: 0.1)) // BookmarkIcon() // .frame(width: iconSize, height: iconSize) // .background(Color(red: 0.1, green: 0.1, blue: 0.1)) // .foregroundColor(Color(UIColor(red: 0.30, green: 0.30, blue: 0.30, alpha: 0.4))) // ForwardArrow() // .frame(width: iconSize, height: iconSize) // .background(Color(red: 0.1, green: 0.1, blue: 0.1)) // .foregroundColor(Color(UIColor(red: 0.30, green: 0.30, blue: 0.30, alpha: 0.4))) } .cornerRadius(5) } } }