diff --git a/VisibilityTracker.swift b/VisibilityTracker.swift index 60d61cd..a7e928b 100644 --- a/VisibilityTracker.swift +++ b/VisibilityTracker.swift @@ -51,11 +51,28 @@ public class VisibilityTracker: ObservableObject { let isVisible = containerBounds.contains(topLeft) || containerBounds.contains(bottomRight) let wasVisible = visibleViews[id] != nil + print("report content bounds start") + print(id) + print(bounds.width) + print(bounds.height) + print(bounds.origin) + print(containerBounds) + print("report content bounds end") + visibleViews[id] = -1 * (bounds.origin.y - containerBounds.origin.y) - if (abs(visibleViews[id]! ) > 500) { + // if (abs(visibleViews[id]! ) > 500 || visibleViews[id]! < 0) { + if (((id.hashValue) != "1".hashValue && visibleViews[id]! < 0) || + + bounds.width == 0 || bounds.height == 0 + || bounds.origin.x == 0 || bounds.origin.y == 0 + || abs(visibleViews[id]! ) > 500 ) { visibleViews.removeValue(forKey: id) } + + // if (visibleViews[id]! > 0) { + // visibleViews.removeValue(forKey: id) + // } sortViews() action(id, .shown, self) @@ -75,7 +92,8 @@ public class VisibilityTracker: ObservableObject { } func sortViews() { - let sortedPairs = visibleViews.sorted(by: { $0.1 < $1.1 }) + let sortedPairs = visibleViews.sorted(by: { Int($0.1) < Int($1.1) }) + // let sortedPairs = visibleViews.sorted(by: { $0 < $1 }) sortedViewIDs = sortedPairs.map { $0.0 } } } diff --git a/gloss.xcodeproj/project.pbxproj b/gloss.xcodeproj/project.pbxproj index a807857..b9b31a5 100644 --- a/gloss.xcodeproj/project.pbxproj +++ b/gloss.xcodeproj/project.pbxproj @@ -443,7 +443,7 @@ INFOPLIST_KEY_UILaunchScreen_Generation = YES; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - IPHONEOS_DEPLOYMENT_TARGET = 16.2; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -479,7 +479,7 @@ INFOPLIST_KEY_UILaunchScreen_Generation = YES; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - IPHONEOS_DEPLOYMENT_TARGET = 16.2; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/gloss.xcodeproj/project.xcworkspace/xcuserdata/saint.xcuserdatad/UserInterfaceState.xcuserstate b/gloss.xcodeproj/project.xcworkspace/xcuserdata/saint.xcuserdatad/UserInterfaceState.xcuserstate index b6b332f..df7fb00 100644 Binary files a/gloss.xcodeproj/project.xcworkspace/xcuserdata/saint.xcuserdatad/UserInterfaceState.xcuserstate and b/gloss.xcodeproj/project.xcworkspace/xcuserdata/saint.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/gloss/ContentView.swift b/gloss/ContentView.swift index b2dd437..0e1969f 100644 --- a/gloss/ContentView.swift +++ b/gloss/ContentView.swift @@ -13,6 +13,11 @@ import os let logger = Logger(subsystem: Bundle.main.bundleIdentifier!, category: "network") +var currentId : String? +var currentOffset : CGFloat? + +var gTracker: VisibilityTracker? + // var curBook = "John" extension UserDefaults { @@ -66,24 +71,28 @@ struct SwitchButton : View { Print("SELECTED RIBBON", selectedRibbon) let userDefaults = UserDefaults.standard - var scrollOffsetToSave = userDefaults.object(forKey: "currentOffset") as? CGFloat - var scrollIdToSave = userDefaults.object(forKey: "currentId") as? String + // var scrollOffsetToSave = userDefaults.object(forKey: "currentOffset") as? CGFloat + // var scrollIdToSave = userDefaults.object(forKey: "currentId") as? String + + var scrollOffsetToSave = currentOffset + var scrollIdToSave = currentId Print("scrollOffsetToSave: ", scrollOffsetToSave) Print("scrollIdToSave: ", scrollIdToSave) var updatedRibbon = selectedRibbon - scrollId = "10" - scrollOffset = CGFloat(100) - refresh.toggle() + // scrollId = "10" + // scrollOffset = CGFloat(100) + // refresh.toggle() if (selectedRibbon.id != ribbon.id!) { Print("switching") - // scrollId = ribbon.scrollId - // scrollOffset = CGFloat(ribbon.scrollOffset) + scrollId = ribbon.scrollId + scrollOffset = CGFloat(ribbon.scrollOffset) + refresh.toggle() //scrollId = "10" //scrollOffset = CGFloat(100) @@ -152,13 +161,13 @@ func makeVerseView(seg: SegDenorm) -> some View { let verse = try! decoder.decode(Verse.self, from: item.data(using: .utf8)!) retView = retView + Text(String(verse.verse)) - .font(Font.custom("AveriaSerifLibre-Regular", size: 20)) + .font(Font.custom("AveriaSerifLibre-Regular", size: 6)) .baselineOffset(6.0) .foregroundColor(Color.white) retView = retView + Text(verse.body) .foregroundColor(Color.white) - .font(Font.custom("AveriaSerifLibre-Regular", size: 30)) + .font(Font.custom("AveriaSerifLibre-Regular", size: 15)) }) return retView } @@ -183,7 +192,7 @@ private struct SegRow: View { retView = retView + Text(String(verse.verse)) // Text(seg.body) // .contentShape(Rectangle()) - .font(Font.custom("AveriaSerifLibre-Regular", size: 20)) + .font(Font.custom("AveriaSerifLibre-Regular", size: 10)) .baselineOffset(6.0) .foregroundColor(Color.white) @@ -191,7 +200,7 @@ private struct SegRow: View { // .frame(maxWidth: .infinity, alignment: .leading) // .contentShape(Rectangle()) .foregroundColor(Color.white) - .font(Font.custom("AveriaSerifLibre-Regular", size: 30)) + .font(Font.custom("AveriaSerifLibre-Regular", size: 20)) // .listRowBackground(Color(red: 0.2, green: 0.8, blue: 0.2)) // .listRowInsets(EdgeInsets()) // .padding(EdgeInsets(top: 10, leading: 20, bottom: 40, trailing: 20)) @@ -231,8 +240,8 @@ struct ContentView: View { @State var scrollUpdate = false @State var initLoad = false - @State var currentId : String? - @State var currentOffset = CGFloat() + // @State var currentId : String? + // @State var currentOffset = CGFloat() // set this to scroll to area @State var scrollId : String? @@ -336,11 +345,14 @@ struct ContentView: View { } .onChange(of: refresh) { target in //if let target = target { + //gTracker!.visibleViews["123123"] = CGFloat(100) + Print("ON CHANGE", gTracker!.visibleViews) + Print("removing", gTracker!.visibleViews.removeAll()) proxy.scrollTo(scrollId! , anchor: .top) - DispatchQueue.main.async { - setScrollOffset = scrollOffset + setScrollOffset = CGFloat(scrollOffset!) refresh2.toggle() + } //} } @@ -408,33 +420,39 @@ struct ContentView: View { func handleVisibilityChanged(_ id: String, change: VisibilityChange, tracker: VisibilityTracker) { + // @Environment(\.appDatabase) var appDatabase switch change { case .shown: print("\(id) shown") case .hidden: print("\(id) hidden") } + print("VISIBILITY CHANGED STARTED") print(tracker.visibleViews) + gTracker = tracker + print(tracker.sortedViewIDs) + print("VISIBILITY CHANGED ENDED") // if (currentId != nil) { // currentOffset = tracker.visibleViews[currentId!]! // } - let visibleViews = Array(tracker.visibleViews.keys) - if (visibleViews.count == 0) { + let visibleViews2 = Array(tracker.visibleViews.keys) + if (visibleViews2.count == 0) { return } - let currentId = Array(tracker.visibleViews.keys)[0] + currentId = tracker.sortedViewIDs[0] if (currentId != nil) { // Access Shared Defaults Object - let userDefaults = UserDefaults.standard + // let userDefaults = UserDefaults.standard // Write/Set Value - Print(currentId) - Print(tracker.visibleViews[currentId]!) - userDefaults.set(currentId, forKey: "currentId") - userDefaults.set(tracker.visibleViews[currentId]!, forKey: "currentOffset") + Print(currentId!) + // Print(tracker.visibleViews[currentId?]!) + // userDefaults.set(currentId, forKey: "currentId") + // userDefaults.set(tracker.visibleViews[currentId]!, forKey: "currentOffset") + currentOffset = tracker.visibleViews[currentId!]! // userDefaults.set(tracker.visibleViews[currentId!]!, forKey: "currentOffset") // var updateScrollState = ScrollState(id: Int64(1), // scrollId: currentId!, @@ -451,6 +469,8 @@ struct ContentView: View { // } // } } + + // gTracker!.visibleViews.removeAll() }