From ac007fec6d8612bf60be24e1edfd89702d165fcd Mon Sep 17 00:00:00 2001 From: Bob Sun Date: Thu, 9 Feb 2017 13:17:11 +0800 Subject: [PATCH] update icon in detailed page --- .../PasswordDetailTableViewController.swift | 27 ++++++++++++++++++- pass/Models/Password.swift | 11 ++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/pass/Controllers/PasswordDetailTableViewController.swift b/pass/Controllers/PasswordDetailTableViewController.swift index 766edcf..4b20d0e 100644 --- a/pass/Controllers/PasswordDetailTableViewController.swift +++ b/pass/Controllers/PasswordDetailTableViewController.swift @@ -7,12 +7,14 @@ // import UIKit +import FavIcon class PasswordDetailTableViewController: UITableViewController, UIGestureRecognizerDelegate { var passwordEntity: PasswordEntity? var passwordCategoryEntities: [PasswordCategoryEntity]? var passwordCategoryText = "" var password = Password() + var passwordImage: UIImage? struct TableCell { var title: String @@ -79,16 +81,39 @@ class PasswordDetailTableViewController: UITableViewController, UIGestureRecogni tableDataIndex += 1 for addition in self.password.additions { self.tableData[tableDataIndex].item.append(TableCell(title: addition.title, content: addition.content)) + if addition.title.lowercased() == "url" { + self.password.url = addition.content + } } } DispatchQueue.main.async { self.tableView.reloadData() indicator.stopAnimating() indicatorLable.isHidden = true + if self.password.url != "" { + self.updatePasswordImage(url: self.password.url) + } } } } + func updatePasswordImage(url: String) { + do { + try FavIcon.downloadPreferred(url) { result in + switch result { + case .success(let image): + let indexPath = IndexPath(row: 0, section: 0) + self.passwordImage = image + self.tableView.reloadRows(at: [indexPath], with: UITableViewRowAnimation.automatic) + case .failure(let error): + print(error) + } + } + } catch { + print(error) + } + } + func tapMenu(recognizer: UITapGestureRecognizer) { if recognizer.state == UIGestureRecognizerState.ended { let tapLocation = recognizer.location(in: self.tableView) @@ -125,7 +150,7 @@ class PasswordDetailTableViewController: UITableViewController, UIGestureRecogni if sectionIndex == 0 && rowIndex == 0 { let cell = tableView.dequeueReusableCell(withIdentifier: "passwordDetailTitleTableViewCell", for: indexPath) as! PasswordDetailTitleTableViewCell - cell.passwordImageImageView.image = #imageLiteral(resourceName: "PasswordImagePlaceHolder") + cell.passwordImageImageView.image = passwordImage ?? #imageLiteral(resourceName: "PasswordImagePlaceHolder") cell.nameLabel.text = passwordEntity?.name cell.categoryLabel.text = passwordCategoryText return cell diff --git a/pass/Models/Password.swift b/pass/Models/Password.swift index a31c2cb..19977a5 100644 --- a/pass/Models/Password.swift +++ b/pass/Models/Password.swift @@ -18,12 +18,14 @@ class Password { var name: String var username: String var password: String + var url: String var additions: [AdditionField] init() { name = "" password = "" username = "" + url = "" additions = [] } @@ -32,6 +34,15 @@ class Password { self.username = username self.password = password self.additions = additions + self.url = "" + } + + init(name: String, username: String, password: String, url: String, additions: [AdditionField]) { + self.name = name + self.username = username + self.password = password + self.url = url + self.additions = additions } }