diff --git a/Kiwix-iOS/Controller/LibraryBackupTBVC.swift b/Kiwix-iOS/Controller/LibraryBackupTBVC.swift
index ffede572..a5cd5a46 100644
--- a/Kiwix-iOS/Controller/LibraryBackupTBVC.swift
+++ b/Kiwix-iOS/Controller/LibraryBackupTBVC.swift
@@ -16,7 +16,7 @@ class LibraryBackupTBVC: UITableViewController {
super.viewDidLoad()
title = NSLocalizedString("Backup", comment: "Setting: Backup local files title")
toggle.addTarget(self, action: #selector(LibraryBackupTBVC.switcherValueChanged(_:)), forControlEvents: .ValueChanged)
- toggle.on = !(FileManager.getSkipBackupAttribute(item: NSFileManager.docDirURL) ?? false)
+ toggle.on = !(NSFileManager.getSkipBackupAttribute(item: NSFileManager.docDirURL) ?? false)
}
// MARK: - Table view data source
@@ -48,7 +48,7 @@ class LibraryBackupTBVC: UITableViewController {
func switcherValueChanged(switcher: UISwitch) {
guard switcher == toggle else {return}
- FileManager.setSkipBackupAttribute(!switcher.on, url: NSFileManager.docDirURL)
+ NSFileManager.setSkipBackupAttribute(!switcher.on, url: NSFileManager.docDirURL)
}
}
diff --git a/Kiwix-iOS/Controller/SettingTBVC.swift b/Kiwix-iOS/Controller/SettingTBVC.swift
index 1b36e9c6..7e56a429 100644
--- a/Kiwix-iOS/Controller/SettingTBVC.swift
+++ b/Kiwix-iOS/Controller/SettingTBVC.swift
@@ -67,7 +67,7 @@ class SettingTBVC: UITableViewController {
case NSIndexPath(forRow: 1, inSection: 0):
return Preference.libraryRefreshAllowCellularData ? LocalizedStrings.on : LocalizedStrings.off
case NSIndexPath(forRow: 2, inSection: 0):
- guard let skipBackup = FileManager.getSkipBackupAttribute(item: NSFileManager.docDirURL) else {return ""}
+ guard let skipBackup = NSFileManager.getSkipBackupAttribute(item: NSFileManager.docDirURL) else {return ""}
return skipBackup ? LocalizedStrings.off: LocalizedStrings.on
case NSIndexPath(forRow: 0, inSection: 1):
return String.formattedPercentString(Preference.webViewZoomScale / 100)
diff --git a/Kiwix-iOS/Info.plist b/Kiwix-iOS/Info.plist
index 1bf6d742..3b543523 100644
--- a/Kiwix-iOS/Info.plist
+++ b/Kiwix-iOS/Info.plist
@@ -49,7 +49,7 @@
CFBundleVersion
- 1.8.956
+ 1.8.966
ITSAppUsesNonExemptEncryption
LSRequiresIPhoneOS
diff --git a/Kiwix-iOSWidgets/Bookmarks/Info.plist b/Kiwix-iOSWidgets/Bookmarks/Info.plist
index 05bcad30..697ec8fa 100644
--- a/Kiwix-iOSWidgets/Bookmarks/Info.plist
+++ b/Kiwix-iOSWidgets/Bookmarks/Info.plist
@@ -21,7 +21,7 @@
CFBundleSignature
????
CFBundleVersion
- 1.8.959
+ 1.8.969
NSExtension
NSExtensionMainStoryboard
diff --git a/Kiwix.xcodeproj/project.pbxproj b/Kiwix.xcodeproj/project.pbxproj
index c05b1094..14e5f918 100644
--- a/Kiwix.xcodeproj/project.pbxproj
+++ b/Kiwix.xcodeproj/project.pbxproj
@@ -107,7 +107,6 @@
97A1FD3A1D6F724E00A80EE2 /* reader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97A1FD351D6F724E00A80EE2 /* reader.cpp */; settings = {COMPILER_FLAGS = "-w"; }; };
97A1FD3B1D6F724E00A80EE2 /* stringTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97A1FD371D6F724E00A80EE2 /* stringTools.cpp */; settings = {COMPILER_FLAGS = "-w"; }; };
97A1FD421D6F728200A80EE2 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97A1FD3D1D6F728200A80EE2 /* Extensions.swift */; };
- 97A1FD431D6F728200A80EE2 /* FileManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97A1FD3E1D6F728200A80EE2 /* FileManager.swift */; };
97A1FD441D6F728200A80EE2 /* Preference.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97A1FD401D6F728200A80EE2 /* Preference.swift */; };
97A1FD451D6F728200A80EE2 /* StringTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97A1FD411D6F728200A80EE2 /* StringTools.swift */; };
97A7017F1D2C59CA00AAE2D8 /* GetStartedController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97A7017E1D2C59CA00AAE2D8 /* GetStartedController.swift */; };
@@ -337,7 +336,6 @@
97A1FD351D6F724E00A80EE2 /* reader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = reader.cpp; path = "C&C++/reader.cpp"; sourceTree = ""; };
97A1FD371D6F724E00A80EE2 /* stringTools.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = stringTools.cpp; path = "C&C++/stringTools.cpp"; sourceTree = ""; };
97A1FD3D1D6F728200A80EE2 /* Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = ""; };
- 97A1FD3E1D6F728200A80EE2 /* FileManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FileManager.swift; sourceTree = ""; };
97A1FD401D6F728200A80EE2 /* Preference.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Preference.swift; sourceTree = ""; };
97A1FD411D6F728200A80EE2 /* StringTools.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StringTools.swift; sourceTree = ""; };
97A2AB881C1B80FF00052E74 /* Kiwix.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Kiwix.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -856,7 +854,6 @@
isa = PBXGroup;
children = (
97A1FD3D1D6F728200A80EE2 /* Extensions.swift */,
- 97A1FD3E1D6F728200A80EE2 /* FileManager.swift */,
97C601DD1D7F342100362D4F /* HTMLHeading.swift */,
97A1FD401D6F728200A80EE2 /* Preference.swift */,
97A1FD411D6F728200A80EE2 /* StringTools.swift */,
@@ -1532,7 +1529,6 @@
97D681401D6F712800E5FA99 /* Book+CoreDataProperties.swift in Sources */,
9764CBD31D8083AA00072D6A /* ArticleOperation.swift in Sources */,
97A1FD421D6F728200A80EE2 /* Extensions.swift in Sources */,
- 97A1FD431D6F728200A80EE2 /* FileManager.swift in Sources */,
974F42821D47E19A00F8074C /* SettingWidgetBookmarksTBVC.swift in Sources */,
97A1FD3A1D6F724E00A80EE2 /* reader.cpp in Sources */,
97D681381D6F711A00E5FA99 /* Book.swift in Sources */,
diff --git a/Kiwix/Tools/Extensions.swift b/Kiwix/Tools/Extensions.swift
index 4e111b8e..7ae14d84 100644
--- a/Kiwix/Tools/Extensions.swift
+++ b/Kiwix/Tools/Extensions.swift
@@ -84,6 +84,35 @@ extension NSFileManager {
let urls = try? NSFileManager.defaultManager().contentsOfDirectoryAtURL(NSFileManager.docDirURL, includingPropertiesForKeys: nil, options: options)
return urls ?? [NSURL]()
}
+
+ // MARK: - Backup Attribute
+
+ class func setSkipBackupAttribute(skipBackup: Bool, url: NSURL) {
+ guard let path = url.path else {return}
+ guard NSFileManager.defaultManager().fileExistsAtPath(path) else {return}
+
+ do {
+ try url.setResourceValues([NSURLIsExcludedFromBackupKey: skipBackup])
+ } catch let error as NSError {
+ print("Set skip backup attribute for item \(url) failed, error: \(error.localizedDescription)")
+ }
+ }
+
+ class func getSkipBackupAttribute(item url: NSURL) -> Bool? {
+ guard let path = url.path else {return nil}
+ guard NSFileManager.defaultManager().fileExistsAtPath(path) else {return nil}
+
+ var skipBackup: AnyObject? = nil
+
+ do {
+ try url.getResourceValue(&skipBackup, forKey: NSURLIsExcludedFromBackupKey)
+ } catch let error as NSError {
+ print("Get skip backup attribute for item \(url) failed, error: \(error.localizedDescription)")
+ }
+
+ guard let number = skipBackup as? NSNumber else {return nil}
+ return number.boolValue
+ }
}
extension UIDevice {
diff --git a/Kiwix/Tools/FileManager.swift b/Kiwix/Tools/FileManager.swift
deleted file mode 100644
index 280fdc0b..00000000
--- a/Kiwix/Tools/FileManager.swift
+++ /dev/null
@@ -1,148 +0,0 @@
-//
-// FileManager.swift
-// Kiwix
-//
-// Created by Chris Li on 3/28/16.
-// Copyright © 2016 Chris. All rights reserved.
-//
-
-class FileManager {
-
- // MARK: - Move Book
-
- class func move(book: Book, fromURL: NSURL, suggestedFileName: String?) {
- let fileName: String = {
- if let suggestedFileName = suggestedFileName {return suggestedFileName}
- return book.id
- }()
- let directory = NSFileManager.docDirURL
- createDirectory(directory, includeInICloudBackup: false)
- let destination = directory.URLByAppendingPathComponent(fileName)
- moveOrReplaceFile(from: fromURL, to: destination!)
- }
-
- // MARK: - Book Resume Data
-
- private class func resumeDataURL(book: Book) -> NSURL {
- let tempDownloadLocation = NSURL(fileURLWithPath: NSFileManager.libDirURL.path!).URLByAppendingPathComponent("DownloadTemp", isDirectory: true)
- return tempDownloadLocation!.URLByAppendingPathComponent(book.id ?? NSDate().description, isDirectory: false)!
- }
-
- class func saveResumeData(data: NSData, book: Book) {
- let tempDownloadLocation = NSURL(fileURLWithPath: NSFileManager.libDirURL.path!).URLByAppendingPathComponent("DownloadTemp", isDirectory: true)
- if !NSFileManager.defaultManager().fileExistsAtPath(tempDownloadLocation!.path!) {
- do {
- try NSFileManager.defaultManager().createDirectoryAtURL(tempDownloadLocation!, withIntermediateDirectories: true, attributes: [NSURLIsExcludedFromBackupKey: true])
- } catch let error as NSError {
- print("Create temp download folder failed: \(error.localizedDescription)")
- }
- }
- data.writeToURL(resumeDataURL(book), atomically: true)
- }
-
- class func readResumeData(book: Book) -> NSData? {
- guard let path = resumeDataURL(book).path else {return nil}
- return NSFileManager.defaultManager().contentsAtPath(path)
- }
-
- class func removeResumeData(book: Book) {
- if NSFileManager.defaultManager().fileExistsAtPath(resumeDataURL(book).path!) {
- removeItem(atURL: resumeDataURL(book))
- }
- }
-
- // MARK: - Contents of Doc Folder
-
- class var zimFileURLsInDocDir: [NSURL] {
- return [NSURL]()
- }
-
- // MARK: - Item Operations
-
- class func itemExistAtURL(url: NSURL) -> Bool {
- guard let path = url.path else {return false}
- return NSFileManager.defaultManager().fileExistsAtPath(path)
- }
-
- class func removeItem(atURL location: NSURL) -> Bool {
- var succeed = true
- do {
- try NSFileManager.defaultManager().removeItemAtURL(location)
- } catch let error as NSError {
- succeed = false
- print("Remove File failed: \(error.localizedDescription)")
- }
- return succeed
- }
-
- class func moveOrReplaceFile(from fromURL: NSURL, to toURL: NSURL) -> Bool {
- var succeed = true
- guard let path = toURL.path else {return false}
- if NSFileManager.defaultManager().fileExistsAtPath(path) {
- succeed = removeItem(atURL: toURL)
- }
-
- do {
- try NSFileManager.defaultManager().moveItemAtURL(fromURL, toURL: toURL)
- } catch let error as NSError {
- succeed = false
- print("Move File failed: \(error.localizedDescription)")
- }
- return succeed
- }
-
- // MARK: - Dir Operations
-
- class func createDirectory(url: NSURL, includeInICloudBackup: Bool) {
- guard let path = url.path else {return}
- do {
- try NSFileManager.defaultManager().createDirectoryAtPath(path, withIntermediateDirectories: true, attributes: [NSURLIsExcludedFromBackupKey: true])
- } catch let error as NSError {
- print("Create Directory failed: \(error.localizedDescription)")
- }
- }
-
- class func contentsOfDirectory(url: NSURL) -> [NSURL] {
- do {
- return try NSFileManager.defaultManager().contentsOfDirectoryAtURL(url, includingPropertiesForKeys: nil, options: .SkipsSubdirectoryDescendants)
- } catch let error as NSError {
- print("Contents of Directory failed: \(error.localizedDescription)")
- return [NSURL]()
- }
- }
-
- class func removeContentsOfDirectory(url: NSURL) {
- for fileURL in contentsOfDirectory(url) {
- removeItem(atURL: fileURL)
- }
- }
-
- // MARK: - Backup Attribute
-
- class func setSkipBackupAttribute(skipBackup: Bool, url: NSURL) {
- guard let path = url.path else {return}
- guard NSFileManager.defaultManager().fileExistsAtPath(path) else {return}
-
- do {
- try url.setResourceValues([NSURLIsExcludedFromBackupKey: skipBackup])
- } catch let error as NSError {
- print("Set skip backup attribute for item \(url) failed, error: \(error.localizedDescription)")
- }
- }
-
- class func getSkipBackupAttribute(item url: NSURL) -> Bool? {
- guard let path = url.path else {return nil}
- guard NSFileManager.defaultManager().fileExistsAtPath(path) else {return nil}
-
- var skipBackup: AnyObject? = nil
-
- do {
- try url.getResourceValue(&skipBackup, forKey: NSURLIsExcludedFromBackupKey)
- } catch let error as NSError {
- print("Get skip backup attribute for item \(url) failed, error: \(error.localizedDescription)")
- }
-
- guard let number = skipBackup as? NSNumber else {return nil}
- return number.boolValue
- }
-}