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: .current, groupId: 1)) private var currentRibbon: [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 { VStack { HStack { //Print("meow navi reloaded back ribbon: \(backRibbon[0])") Print("rendering navi") Print("dog backRibbon: \(backRibbon)") BackArrow() .frame(width: CGFloat(30), height: CGFloat(30)) .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))) .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 { if backRibbon.count == 0 { return } var br = backRibbon[0] var sr = selectedRibbon[0] do { if paneConnector.hasMoved { // if true { let updatedRibbon = try await createUndoState(selectedRibbon: sr, appDatabase: appDatabase, paneConnector: paneConnector) goToRibbon(selectedRibbon: sr, destRibbon: sr, appDatabase: appDatabase, paneConnector: paneConnector, loading: false, bump: true) } else { try await appDatabase.undoRibbon(&sr) goToRibbon(selectedRibbon: sr, destRibbon: br, appDatabase: appDatabase, paneConnector: paneConnector, loading: false, bump: true) } // var sr = try await appDatabase.getSelectedRibbon() // print("meow first sr:\(sr)") // print("meow first selectedRibbon:\(selectedRibbon[0])") // try await appDatabase.dbWriter.write { db in // var ribs = RibbonRequest().fetchValue(db) // } // try await updateRibbon(selectedRibbon: selectedRibbon[0], // appDatabase: appDatabase, // paneConnector: paneConnector) // print("meow back from update in main") // sr = try await appDatabase.getSelectedRibbon() // print("meow second sr:\(sr)") // print("meow backribbon br:\(br)") // _ = try await appDatabase.undoRibbon(&sr[0]) // goToRibbon(selectedRibbon: sr[0], // destRibbon: br, // appDatabase: appDatabase, // paneConnector: paneConnector, // loading: false, // bump:false) } catch { print("back 2 error") print("Error info: \(error)") } } } ForwardArrow() .frame(width: CGFloat(30), height: CGFloat(30)) .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) } } }