Show last commit time of each entry

This commit is contained in:
yishilin14 2017-02-27 08:54:51 +08:00
parent 44f148c7ea
commit c2db4d4641
3 changed files with 32 additions and 3 deletions

View file

@ -250,6 +250,21 @@ class PasswordDetailTableViewController: UITableViewController, UIGestureRecogni
return tableData[section].title
}
override func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
if section == tableData.count - 1 {
let view = UIView()
let footerLabel = UILabel(frame: CGRect(x: 8, y: 15, width: tableView.frame.width, height: 60))
footerLabel.numberOfLines = 0
footerLabel.font = UIFont.preferredFont(forTextStyle: .footnote)
footerLabel.textColor = UIColor.lightGray
let dateString = DateFormatter.localizedString(from: passwordEntity?.commitDate as! Date, dateStyle: DateFormatter.Style.long, timeStyle: DateFormatter.Style.long)
footerLabel.text = "Latest commit: \(dateString)"
view.addSubview(footerLabel)
return view
}
return nil
}
override func tableView(_ tableView: UITableView, performAction action: Selector, forRowAt indexPath: IndexPath, withSender sender: Any?) {
if action == #selector(copy(_:)) {
Utils.copyToPasteboard(textToCopy: tableData[indexPath.section].item[indexPath.row].content)

View file

@ -243,6 +243,17 @@ class PasswordStore {
let endIndex = url.lastPathComponent.index(url.lastPathComponent.endIndex, offsetBy: -4)
passwordEntity.name = url.lastPathComponent.substring(to: endIndex)
passwordEntity.rawPath = "\(url.path)"
if let blameHunks = try? storeRepository?.blame(withFile: e, options: nil).hunks {
func GetHunkDate(hunk: GTBlameHunk) -> TimeInterval {
guard let date = hunk.finalSignature?.time?.timeIntervalSince1970 else {
print("Time is missing from GTSignature.")
return 0
}
return date
}
let dates = blameHunks?.map(GetHunkDate).max()
passwordEntity.commitDate = NSDate(timeIntervalSince1970: dates!)
}
let items = url.path.characters.split(separator: "/").map(String.init)
for i in 0 ..< items.count - 1 {
let passwordCategoryEntity = PasswordCategoryEntity(context: context)
@ -439,7 +450,8 @@ class PasswordStore {
passwordEntity.synced = false
try context.save()
print(saveURL.path)
let _ = createAddCommitInRepository(message: "Add new password by pass for iOS", fileData: encryptedData, filename: saveURL.lastPathComponent, progressBlock: progressBlock)
let commit = createAddCommitInRepository(message: "Add new password by pass for iOS", fileData: encryptedData, filename: saveURL.lastPathComponent, progressBlock: progressBlock)
passwordEntity.commitDate = commit?.commitDate as NSDate?
progressBlock(1.0)
} catch {
print(error)
@ -452,7 +464,8 @@ class PasswordStore {
let saveURL = storeURL.appendingPathComponent(passwordEntity.rawPath!)
try encryptedData.write(to: saveURL)
progressBlock(0.3)
let _ = createAddCommitInRepository(message: "Update password by pass for iOS", fileData: encryptedData, filename: saveURL.lastPathComponent, progressBlock: progressBlock)
let commit = createAddCommitInRepository(message: "Update password by pass for iOS", fileData: encryptedData, filename: saveURL.lastPathComponent, progressBlock: progressBlock)
passwordEntity.commitDate = commit?.commitDate as NSDate?
} catch {
print(error)
}

View file

@ -6,6 +6,7 @@
<relationship name="password" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="PasswordEntity" inverseName="categories" inverseEntity="PasswordEntity" syncable="YES"/>
</entity>
<entity name="PasswordEntity" representedClassName="PasswordEntity" syncable="YES" codeGenerationType="class">
<attribute name="commitDate" optional="YES" attributeType="Date" usesScalarValueType="NO" syncable="YES"/>
<attribute name="image" optional="YES" attributeType="Binary" allowsExternalBinaryDataStorage="YES" syncable="YES"/>
<attribute name="name" attributeType="String" syncable="YES"/>
<attribute name="raw" optional="YES" attributeType="Binary" allowsExternalBinaryDataStorage="YES" syncable="YES"/>
@ -15,6 +16,6 @@
</entity>
<elements>
<element name="PasswordCategoryEntity" positionX="115" positionY="-9" width="128" height="90"/>
<element name="PasswordEntity" positionX="-63" positionY="-18" width="128" height="135"/>
<element name="PasswordEntity" positionX="-63" positionY="-18" width="128" height="150"/>
</elements>
</model>