From bbab650305618c91eef70e2a810b16cf022f935b Mon Sep 17 00:00:00 2001 From: Matte23 Date: Thu, 3 Dec 2020 23:58:35 +0100 Subject: [PATCH] Fix ServerAPI not reading school preference from preferences on iOS --- ios/circolapp/circolapp.xcodeproj/project.pbxproj | 8 ++++---- ios/circolapp/circolapp/CircularViewModel.swift | 2 -- .../Model/{iOSDatabase.swift => iOSRepository.swift} | 8 +++++++- ios/circolapp/circolapp/Model/iOSServerApi.swift | 12 ++++++++++-- ios/circolapp/circolapp/View/CircularView.swift | 4 ++-- ios/circolapp/circolapp/View/ContentView.swift | 2 +- 6 files changed, 24 insertions(+), 12 deletions(-) rename ios/circolapp/circolapp/Model/{iOSDatabase.swift => iOSRepository.swift} (79%) diff --git a/ios/circolapp/circolapp.xcodeproj/project.pbxproj b/ios/circolapp/circolapp.xcodeproj/project.pbxproj index 2bb3e03..922bd56 100644 --- a/ios/circolapp/circolapp.xcodeproj/project.pbxproj +++ b/ios/circolapp/circolapp.xcodeproj/project.pbxproj @@ -11,7 +11,7 @@ 9547205B2573B688005AA401 /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 9547205A2573B688005AA401 /* Settings.bundle */; }; 954E68352574E3890034EBA8 /* iOSServerApi.swift in Sources */ = {isa = PBXBuildFile; fileRef = 954E68342574E3890034EBA8 /* iOSServerApi.swift */; }; 954E683D2574ED9E0034EBA8 /* UserDefaultsExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 954E683C2574ED9E0034EBA8 /* UserDefaultsExtensions.swift */; }; - 9553DB09257173ED006AE167 /* iOSDatabase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9553DB08257173ED006AE167 /* iOSDatabase.swift */; }; + 9553DB09257173ED006AE167 /* iOSRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9553DB08257173ED006AE167 /* iOSRepository.swift */; }; 95906F48257508660060F5D0 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 95906F47257506360060F5D0 /* Assets.xcassets */; }; 95906F4D257510370060F5D0 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 95906F4C257510370060F5D0 /* GoogleService-Info.plist */; }; 95BC3BF82572BCF900F24400 /* AttachmentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95BC3BF72572BCF900F24400 /* AttachmentView.swift */; }; @@ -46,7 +46,7 @@ 9547205A2573B688005AA401 /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Settings.bundle; sourceTree = ""; }; 954E68342574E3890034EBA8 /* iOSServerApi.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iOSServerApi.swift; sourceTree = ""; }; 954E683C2574ED9E0034EBA8 /* UserDefaultsExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDefaultsExtensions.swift; sourceTree = ""; }; - 9553DB08257173ED006AE167 /* iOSDatabase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iOSDatabase.swift; sourceTree = ""; }; + 9553DB08257173ED006AE167 /* iOSRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iOSRepository.swift; sourceTree = ""; }; 95906F47257506360060F5D0 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 95906F4C257510370060F5D0 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; 959B531E25764726009AD895 /* circolapp.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = circolapp.entitlements; sourceTree = ""; }; @@ -104,7 +104,7 @@ 95906F46257506050060F5D0 /* Model */ = { isa = PBXGroup; children = ( - 9553DB08257173ED006AE167 /* iOSDatabase.swift */, + 9553DB08257173ED006AE167 /* iOSRepository.swift */, 954E68342574E3890034EBA8 /* iOSServerApi.swift */, ); path = Model; @@ -271,7 +271,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 9553DB09257173ED006AE167 /* iOSDatabase.swift in Sources */, + 9553DB09257173ED006AE167 /* iOSRepository.swift in Sources */, 95CA31C0255C28C300AC095B /* CircularView.swift in Sources */, 952DEDDF2576F8DC001DF85D /* SceneDelegate.swift in Sources */, 95CA31B2255C1EDE00AC095B /* ContentView.swift in Sources */, diff --git a/ios/circolapp/circolapp/CircularViewModel.swift b/ios/circolapp/circolapp/CircularViewModel.swift index b77466a..b5d5678 100644 --- a/ios/circolapp/circolapp/CircularViewModel.swift +++ b/ios/circolapp/circolapp/CircularViewModel.swift @@ -41,8 +41,6 @@ class CircularViewModel: ObservableObject { if (self.circularWatcher != nil) { self.startObservingCirculars() } - - self.updateCirculars() }) } diff --git a/ios/circolapp/circolapp/Model/iOSDatabase.swift b/ios/circolapp/circolapp/Model/iOSRepository.swift similarity index 79% rename from ios/circolapp/circolapp/Model/iOSDatabase.swift rename to ios/circolapp/circolapp/Model/iOSRepository.swift index 5956e2a..4260a87 100644 --- a/ios/circolapp/circolapp/Model/iOSDatabase.swift +++ b/ios/circolapp/circolapp/Model/iOSRepository.swift @@ -19,9 +19,15 @@ import Foundation import Shared -class iOSDatabase { +class iOSRepository { static let database = DatabaseFactory().createDatabase(sqlDriver: DatabaseDriverFactory().createDriver()) + public static func getCircularDao() -> CircularDao { return CircularDao(database: database) } + + public static func getCircularRepository() -> CircularRepository { + let serverAPI = iOSServerApi.instance.serverAPI + return CircularRepository(circularDao: getCircularDao(), serverAPI: serverAPI) + } } diff --git a/ios/circolapp/circolapp/Model/iOSServerApi.swift b/ios/circolapp/circolapp/Model/iOSServerApi.swift index 89a3b79..8a82ff7 100644 --- a/ios/circolapp/circolapp/Model/iOSServerApi.swift +++ b/ios/circolapp/circolapp/Model/iOSServerApi.swift @@ -20,6 +20,8 @@ import Foundation import Shared class iOSServerApi { + static let instance = iOSServerApi() + private let key = "school" private let serverCompanion = ServerAPI.Companion() @@ -29,7 +31,7 @@ class iOSServerApi { init() { let serverID = UserDefaults.standard.integer(forKey: key) let server = serverCompanion.getServer(serverID: Int32(serverID)) - serverAPI = ServerAPI(server: serverCompanion.createServer(server: server)) + serverAPI = ServerAPI(serverName: server) userDefaultsObserver = UserDefaults.standard.observe(\.school, options: [.initial, .new], changeHandler: { (defaults, change) in self.changeServer(serverID: change.newValue ?? 0) @@ -43,7 +45,13 @@ class iOSServerApi { func changeServer(serverID: Int) { let serverID = UserDefaults.standard.integer(forKey: key) let server = serverCompanion.getServer(serverID: Int32(serverID)) + serverAPI = ServerAPI(serverName: server) - serverAPI.changeServer(server: serverCompanion.createServer(server: server)) + CircularRepository(circularDao: iOSRepository.getCircularDao(), serverAPI: serverAPI).updateCirculars(returnNewCirculars: false, completionHandler: + { result, error in + if let errorReal = error { + print(errorReal.localizedDescription) + } + }) } } diff --git a/ios/circolapp/circolapp/View/CircularView.swift b/ios/circolapp/circolapp/View/CircularView.swift index 5190266..818656d 100644 --- a/ios/circolapp/circolapp/View/CircularView.swift +++ b/ios/circolapp/circolapp/View/CircularView.swift @@ -89,7 +89,7 @@ struct CircularView: View { .buttonStyle(PlainButtonStyle()) Button(action: { - iOSDatabase.getCircularDao().update(id: circular.id, school: circular.school, favourite: !circular.favourite, reminder: circular.reminder, completionHandler: {_,_ in }) + iOSRepository.getCircularDao().update(id: circular.id, school: circular.school, favourite: !circular.favourite, reminder: circular.reminder, completionHandler: {_,_ in }) }) { Image(systemName: circular.favourite ? "bookmark.fill" : "bookmark") .foregroundColor(.blue) @@ -99,7 +99,7 @@ struct CircularView: View { .buttonStyle(PlainButtonStyle()) Button(action: { - iOSDatabase.getCircularDao().update(id: circular.id, school: circular.school, favourite: circular.favourite, reminder: !circular.reminder, completionHandler: {_,_ in }) + iOSRepository.getCircularDao().update(id: circular.id, school: circular.school, favourite: circular.favourite, reminder: !circular.reminder, completionHandler: {_,_ in }) }) { Image(systemName: circular.reminder ? "alarm.fill" : "alarm") .foregroundColor(.blue) diff --git a/ios/circolapp/circolapp/View/ContentView.swift b/ios/circolapp/circolapp/View/ContentView.swift index 32db816..dfe4c4f 100644 --- a/ios/circolapp/circolapp/View/ContentView.swift +++ b/ios/circolapp/circolapp/View/ContentView.swift @@ -21,7 +21,7 @@ import UIKit import Shared struct ContentView: View { - @ObservedObject var circularViewModel = CircularViewModel(repository: CircularRepository(circularDao: iOSDatabase.getCircularDao(), serverAPI: ServerAPI(server: CurieServer()))) + @ObservedObject var circularViewModel = CircularViewModel(repository: iOSRepository.getCircularRepository()) var body: some View { NavigationView {