gloss-ios/NaviBar.swift

109 lines
4.8 KiB
Swift

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)
}
}
}