mirror of
https://github.com/iSoron/uhabits.git
synced 2025-12-06 01:08:50 -06:00
Restore Backend class; replace TaskRunner by Kotlin Coroutines
This commit is contained in:
@@ -19,27 +19,36 @@
|
||||
|
||||
import UIKit
|
||||
|
||||
@UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate {
|
||||
|
||||
@UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate, BackendListener {
|
||||
|
||||
var window: UIWindow?
|
||||
var backend = Backend(databaseName: "dev.db",
|
||||
databaseOpener: IosDatabaseOpener(withLog: StandardLog()),
|
||||
fileOpener: IosFileOpener(),
|
||||
localeHelper: IosLocaleHelper(NSLocale.preferredLanguages),
|
||||
log: StandardLog(),
|
||||
taskRunner: SequentialTaskRunner())
|
||||
var nav: UINavigationController?
|
||||
let log = StandardLog()
|
||||
var backend: Backend?
|
||||
|
||||
func application(_ application: UIApplication,
|
||||
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
|
||||
|
||||
backend = Backend(databaseName: "uhabits.db",
|
||||
databaseOpener: IosDatabaseOpener(withLog: log),
|
||||
fileOpener: IosFileOpener(),
|
||||
localeHelper: IosLocaleHelper(NSLocale.preferredLanguages),
|
||||
log: log,
|
||||
crCtx: UIDispatcher())
|
||||
|
||||
backend?.observable.addListener(listener: self)
|
||||
backend?.doInit()
|
||||
|
||||
window = UIWindow(frame: UIScreen.main.bounds)
|
||||
if let window = window {
|
||||
let nav = UINavigationController()
|
||||
nav.viewControllers = [MainScreenController(withBackend: backend)]
|
||||
window.backgroundColor = UIColor.white
|
||||
window.rootViewController = nav
|
||||
window.makeKeyAndVisible()
|
||||
}
|
||||
nav = UINavigationController()
|
||||
window?.backgroundColor = UIColor.white
|
||||
window?.rootViewController = nav
|
||||
window?.makeKeyAndVisible()
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func onReady() {
|
||||
nav?.viewControllers = [MainScreenController(withBackend: backend!)]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -100,7 +100,7 @@ class MainScreenController: UITableViewController, MainScreenDataSourceListener
|
||||
var preferences: Preferences
|
||||
var theme: Theme
|
||||
var nButtons = 3
|
||||
var strings: Strings
|
||||
var strings = Strings()
|
||||
|
||||
required init?(coder aDecoder: NSCoder) {
|
||||
fatalError()
|
||||
@@ -109,9 +109,9 @@ class MainScreenController: UITableViewController, MainScreenDataSourceListener
|
||||
init(withBackend backend:Backend) {
|
||||
self.backend = backend
|
||||
self.strings = backend.strings
|
||||
self.dataSource = backend.mainScreenDataSource!
|
||||
self.dataSource = backend.mainScreenDataSource
|
||||
self.theme = backend.theme
|
||||
self.preferences = backend.preferences!
|
||||
self.preferences = backend.preferences
|
||||
super.init(nibName: nil, bundle: nil)
|
||||
self.dataSource.observable.addListener(listener: self)
|
||||
self.dataSource.requestData()
|
||||
@@ -189,7 +189,7 @@ class MainScreenController: UITableViewController, MainScreenDataSourceListener
|
||||
|
||||
@objc func onMoreActionsClicked() {
|
||||
let alert = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
|
||||
|
||||
|
||||
if preferences.showArchived {
|
||||
alert.addAction(UIAlertAction(title: strings.hide_archived, style: .default) {
|
||||
(action: UIAlertAction) -> Void in
|
||||
@@ -203,7 +203,7 @@ class MainScreenController: UITableViewController, MainScreenDataSourceListener
|
||||
self.dataSource.requestData()
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
if preferences.showCompleted {
|
||||
alert.addAction(UIAlertAction(title: strings.hide_completed, style: .default) {
|
||||
(action: UIAlertAction) -> Void in
|
||||
@@ -217,7 +217,7 @@ class MainScreenController: UITableViewController, MainScreenDataSourceListener
|
||||
self.dataSource.requestData()
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
if preferences.nightMode {
|
||||
alert.addAction(UIAlertAction(title: strings.day_mode, style: .default) {
|
||||
(action: UIAlertAction) -> Void in
|
||||
@@ -229,7 +229,7 @@ class MainScreenController: UITableViewController, MainScreenDataSourceListener
|
||||
self.preferences.nightMode = true
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
alert.addAction(UIAlertAction(title: strings.help, style: .default) {
|
||||
(action: UIAlertAction) -> Void in
|
||||
if let link = URL(string: "http://loophabits.org/faq") {
|
||||
|
||||
@@ -124,7 +124,7 @@ class IosDatabaseOpener : NSObject, DatabaseOpener {
|
||||
}
|
||||
|
||||
func open(file: UserFile) -> Database {
|
||||
let dbPath = (file as! IosUserFile).path
|
||||
let dbPath = (file as! IosFile).path
|
||||
|
||||
let version = String(cString: sqlite3_libversion())
|
||||
log.info(tag: "IosDatabaseOpener", msg: "SQLite \(version)")
|
||||
|
||||
@@ -26,9 +26,6 @@ class IosDatabaseTest: XCTestCase {
|
||||
let fileOpener = IosFileOpener()
|
||||
|
||||
let dbFile = fileOpener.openUserFile(path: "test.sqlite3")
|
||||
if dbFile.exists() {
|
||||
dbFile.delete()
|
||||
}
|
||||
let db = databaseOpener.open(file: dbFile)
|
||||
|
||||
var stmt = db.prepareStatement(sql: "drop table if exists demo")
|
||||
@@ -68,6 +65,5 @@ class IosDatabaseTest: XCTestCase {
|
||||
stmt.finalize()
|
||||
|
||||
db.close()
|
||||
dbFile.delete()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
001592642260AE0F00D2814F /* main.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C0C6C92246E543003D8AF0 /* main.framework */; };
|
||||
006EFE4E2252EA2B008464E0 /* IosLocale.swift in Sources */ = {isa = PBXBuildFile; fileRef = 006EFE4D2252EA2B008464E0 /* IosLocale.swift */; };
|
||||
006EFE50225432B8008464E0 /* AboutScreenController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 006EFE4F225432B8008464E0 /* AboutScreenController.swift */; };
|
||||
00A5B42822009F590024E00C /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00A5B42722009F590024E00C /* AppDelegate.swift */; };
|
||||
@@ -18,7 +19,6 @@
|
||||
00C0C6BE22465F65003D8AF0 /* databases in Resources */ = {isa = PBXBuildFile; fileRef = 00C0C6BB22465F65003D8AF0 /* databases */; };
|
||||
00C0C6BF22465F65003D8AF0 /* migrations in Resources */ = {isa = PBXBuildFile; fileRef = 00C0C6BC22465F65003D8AF0 /* migrations */; };
|
||||
00C0C6CA2246E543003D8AF0 /* main.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C0C6C92246E543003D8AF0 /* main.framework */; };
|
||||
00C0C6CB2246E543003D8AF0 /* main.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C0C6C92246E543003D8AF0 /* main.framework */; };
|
||||
00C0C6CC2246E550003D8AF0 /* main.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 00C0C6C92246E543003D8AF0 /* main.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
00C0C6CE2246EFB3003D8AF0 /* IosExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00C0C6CD2246EFB3003D8AF0 /* IosExtensions.swift */; };
|
||||
00C0C6D122470705003D8AF0 /* IosCanvas.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00C0C6D022470705003D8AF0 /* IosCanvas.swift */; };
|
||||
@@ -94,7 +94,7 @@
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
00C0C6CB2246E543003D8AF0 /* main.framework in Frameworks */,
|
||||
001592642260AE0F00D2814F /* main.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -498,6 +498,7 @@
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = Application/BridgingHeader.h;
|
||||
SWIFT_PRECOMPILE_BRIDGING_HEADER = NO;
|
||||
SWIFT_VERSION = 4.2;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
@@ -525,6 +526,7 @@
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = Application/BridgingHeader.h;
|
||||
SWIFT_PRECOMPILE_BRIDGING_HEADER = NO;
|
||||
SWIFT_VERSION = 4.2;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
@@ -547,6 +549,8 @@
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.isoron.uhabitsTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "";
|
||||
SWIFT_PRECOMPILE_BRIDGING_HEADER = NO;
|
||||
SWIFT_VERSION = 4.2;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/uhabits.app/uhabits";
|
||||
@@ -570,6 +574,8 @@
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.isoron.uhabitsTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "";
|
||||
SWIFT_PRECOMPILE_BRIDGING_HEADER = NO;
|
||||
SWIFT_VERSION = 4.2;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/uhabits.app/uhabits";
|
||||
|
||||
Reference in New Issue
Block a user