From a36bb130047652cf5af0e8781f571f51c11dda62 Mon Sep 17 00:00:00 2001 From: Yishi Lin Date: Fri, 24 Mar 2017 22:05:09 +0800 Subject: [PATCH] Polish the code about "about repository" - Move something to PasswordStore.swift --- .../AboutRepositoryTableViewController.swift | 26 +++++-------------- pass/Models/PasswordStore.swift | 17 ++++++++++++ 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/pass/Controllers/AboutRepositoryTableViewController.swift b/pass/Controllers/AboutRepositoryTableViewController.swift index 8bff269..c58cd6a 100644 --- a/pass/Controllers/AboutRepositoryTableViewController.swift +++ b/pass/Controllers/AboutRepositoryTableViewController.swift @@ -10,12 +10,12 @@ import UIKit class AboutRepositoryTableViewController: BasicStaticTableViewController { - var needRefresh = false - var indicator: UIActivityIndicatorView = { + private var needRefresh = false + private var indicator: UIActivityIndicatorView = { let indicator = UIActivityIndicatorView(activityIndicatorStyle: .gray) return indicator }() - let passwordStore = PasswordStore.shared + private let passwordStore = PasswordStore.shared override func viewDidLoad() { navigationItemTitle = "About Repository" @@ -49,31 +49,19 @@ class AboutRepositoryTableViewController: BasicStaticTableViewController { DispatchQueue.global(qos: .userInitiated).async { let numberFormatter = NumberFormatter() numberFormatter.numberStyle = NumberFormatter.Style.decimal - let fm = FileManager.default - let passwordEntities = self.passwordStore.fetchPasswordEntityCoreData(withDir: false) - let numberOfPasswords = numberFormatter.string(from: NSNumber(value: passwordEntities.count))! - - var size = UInt64(0) - do { - if fm.fileExists(atPath: self.passwordStore.storeURL.path) { - size = try fm.allocatedSizeOfDirectoryAtURL(directoryURL: self.passwordStore.storeURL) - } - } catch { - print(error) - } - let sizeOfRepository = ByteCountFormatter.string(fromByteCount: Int64(size), countStyle: ByteCountFormatter.CountStyle.file) + let numberOfPasswordsString = numberFormatter.string(from: NSNumber(value: self.passwordStore.numberOfPasswords))! + let sizeOfRepositoryString = ByteCountFormatter.string(fromByteCount: Int64(self.passwordStore.sizeOfRepositoryByteCount), countStyle: ByteCountFormatter.CountStyle.file) let numberOfCommits = self.passwordStore.storeRepository?.numberOfCommits(inCurrentBranch: NSErrorPointer(nilLiteral: ())) ?? 0 let numberOfCommitsString = numberFormatter.string(from: NSNumber(value: numberOfCommits))! - DispatchQueue.main.async { [weak self] in let type = UITableViewCellAccessoryType.none self?.tableData = [ // section 0 - [[.style: CellDataStyle.value1, .accessoryType: type, .title: "Passwords", .detailText: numberOfPasswords], - [.style: CellDataStyle.value1, .accessoryType: type, .title: "Size", .detailText: sizeOfRepository], + [[.style: CellDataStyle.value1, .accessoryType: type, .title: "Passwords", .detailText: numberOfPasswordsString], + [.style: CellDataStyle.value1, .accessoryType: type, .title: "Size", .detailText: sizeOfRepositoryString], [.style: CellDataStyle.value1, .accessoryType: type, .title: "Local Commits", .detailText: String(self?.passwordStore.numberOfLocalCommits() ?? 0)], [.style: CellDataStyle.value1, .accessoryType: type, .title: "Last Synced", .detailText: Utils.getLastUpdatedTimeString()], [.style: CellDataStyle.value1, .accessoryType: type, .title: "Commits", .detailText: numberOfCommitsString], diff --git a/pass/Models/PasswordStore.swift b/pass/Models/PasswordStore.swift index 186de00..8c63aa7 100644 --- a/pass/Models/PasswordStore.swift +++ b/pass/Models/PasswordStore.swift @@ -136,6 +136,23 @@ class PasswordStore { } let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext + + var numberOfPasswords : Int { + return self.fetchPasswordEntityCoreData(withDir: false).count + } + + var sizeOfRepositoryByteCount : UInt64 { + let fm = FileManager.default + var size = UInt64(0) + do { + if fm.fileExists(atPath: self.storeURL.path) { + size = try fm.allocatedSizeOfDirectoryAtURL(directoryURL: self.storeURL) + } + } catch { + print(error) + } + return size + } private init() {