Skip to content

Commit f0e351c

Browse files
authored
Merge pull request #499 from jorgeblacio/delete_label
Added delete label functionality.
2 parents 8b58fde + e617327 commit f0e351c

File tree

9 files changed

+188
-99
lines changed

9 files changed

+188
-99
lines changed

iOS-Email-Client.xcodeproj/project.pbxproj

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2805,7 +2805,7 @@
28052805
INFOPLIST_FILE = "iOS-Email-Client/Info.plist";
28062806
IPHONEOS_DEPLOYMENT_TARGET = 11.2;
28072807
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
2808-
MARKETING_VERSION = 1.1.24;
2808+
MARKETING_VERSION = 1.1.25;
28092809
OTHER_LDFLAGS = (
28102810
"-ObjC",
28112811
"$(inherited)",
@@ -2847,7 +2847,7 @@
28472847
INFOPLIST_FILE = "iOS-Email-Client/Info.plist";
28482848
IPHONEOS_DEPLOYMENT_TARGET = 11.2;
28492849
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
2850-
MARKETING_VERSION = 1.1.24;
2850+
MARKETING_VERSION = 1.1.25;
28512851
OTHER_LDFLAGS = (
28522852
"-ObjC",
28532853
"$(inherited)",
@@ -2995,7 +2995,7 @@
29952995
INFOPLIST_FILE = "iOS-Email-Client/Info.plist";
29962996
IPHONEOS_DEPLOYMENT_TARGET = 11.2;
29972997
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
2998-
MARKETING_VERSION = 1.1.24;
2998+
MARKETING_VERSION = 1.1.25;
29992999
OTHER_LDFLAGS = (
30003000
"-ObjC",
30013001
"$(inherited)",
@@ -3056,7 +3056,7 @@
30563056
INFOPLIST_FILE = ShareExtension/Info.plist;
30573057
IPHONEOS_DEPLOYMENT_TARGET = 11.2;
30583058
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
3059-
MARKETING_VERSION = 1.1.24;
3059+
MARKETING_VERSION = 1.1.25;
30603060
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
30613061
MTL_FAST_MATH = YES;
30623062
PRODUCT_BUNDLE_IDENTIFIER = com.criptext.mail.ShareExtension;
@@ -3087,7 +3087,7 @@
30873087
INFOPLIST_FILE = ShareExtension/Info.plist;
30883088
IPHONEOS_DEPLOYMENT_TARGET = 11.2;
30893089
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
3090-
MARKETING_VERSION = 1.1.24;
3090+
MARKETING_VERSION = 1.1.25;
30913091
MTL_FAST_MATH = YES;
30923092
PRODUCT_BUNDLE_IDENTIFIER = com.criptext.mail.ShareExtension;
30933093
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -3118,7 +3118,7 @@
31183118
INFOPLIST_FILE = ShareExtension/Info.plist;
31193119
IPHONEOS_DEPLOYMENT_TARGET = 11.2;
31203120
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
3121-
MARKETING_VERSION = 1.1.24;
3121+
MARKETING_VERSION = 1.1.25;
31223122
MTL_FAST_MATH = YES;
31233123
PRODUCT_BUNDLE_IDENTIFIER = com.criptext.mail.support.ShareExtension;
31243124
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -3150,7 +3150,7 @@
31503150
INFOPLIST_FILE = NotificationExtension/Info.plist;
31513151
IPHONEOS_DEPLOYMENT_TARGET = 11.2;
31523152
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
3153-
MARKETING_VERSION = 1.1.24;
3153+
MARKETING_VERSION = 1.1.25;
31543154
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
31553155
MTL_FAST_MATH = YES;
31563156
PRODUCT_BUNDLE_IDENTIFIER = com.criptext.mail.NotificationExtension;
@@ -3184,7 +3184,7 @@
31843184
INFOPLIST_FILE = NotificationExtension/Info.plist;
31853185
IPHONEOS_DEPLOYMENT_TARGET = 11.2;
31863186
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
3187-
MARKETING_VERSION = 1.1.24;
3187+
MARKETING_VERSION = 1.1.25;
31883188
MTL_FAST_MATH = YES;
31893189
PRODUCT_BUNDLE_IDENTIFIER = com.criptext.mail.NotificationExtension;
31903190
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -3218,7 +3218,7 @@
32183218
INFOPLIST_FILE = NotificationExtension/Info.plist;
32193219
IPHONEOS_DEPLOYMENT_TARGET = 11.2;
32203220
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
3221-
MARKETING_VERSION = 1.1.24;
3221+
MARKETING_VERSION = 1.1.25;
32223222
MTL_FAST_MATH = YES;
32233223
PRODUCT_BUNDLE_IDENTIFIER = com.criptext.mail.support.NotificationExtension;
32243224
PRODUCT_NAME = "$(TARGET_NAME)";

iOS-Email-Client/Base.lproj/Main.storyboard

Lines changed: 93 additions & 86 deletions
Large diffs are not rendered by default.

iOS-Email-Client/Controllers/SettingsLabelsViewController.swift

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,31 @@ class SettingsLabelsViewController: UIViewController {
7474
DBManager.createQueueItem(params: ["cmd": Event.Peer.newLabel.rawValue, "params": params.asDictionary()], account: myAccount)
7575
}
7676

77+
func createDeleteLabelPopover(label: Label, row: Int){
78+
let popover = GenericDualAnswerUIPopover()
79+
popover.initialTitle = String.localize("DELETE_LABEL_DIALOG_TITLE")
80+
popover.initialMessage = String.localize("DELETE_LABEL_DIALOG_MESSAGE", arguments: label.text)
81+
popover.leftOption = String.localize("CANCEL")
82+
popover.rightOption = String.localize("YES")
83+
popover.onResponse = { [weak self] accept in
84+
guard accept,
85+
let weakSelf = self else {
86+
return
87+
}
88+
if(accept){
89+
guard let account = weakSelf.myAccount else {
90+
return
91+
}
92+
let params = EventData.Peer.DeleteLabel(uuid: label.uuid)
93+
DBManager.createQueueItem(params: ["cmd": Event.Peer.deleteLabel.rawValue, "params": params.asDictionary()], account: account)
94+
DBManager.deleteLabel(label: label)
95+
weakSelf.labels.remove(at: row)
96+
weakSelf.tableView.reloadData()
97+
}
98+
}
99+
self.presentPopover(popover: popover, height: 200)
100+
}
101+
77102
@objc func goBack(){
78103
navigationController?.popViewController(animated: true)
79104
}
@@ -88,6 +113,13 @@ extension SettingsLabelsViewController: UITableViewDelegate, UITableViewDataSour
88113
let label = labels[indexPath.row]
89114
let cell = tableView.dequeueReusableCell(withIdentifier: "settingsLabelCell") as! LabelsLabelTableViewCell
90115
cell.fillFields(label: label)
116+
cell.clickTrash = { [weak self] in
117+
guard let weakSelf = self else {
118+
return
119+
}
120+
weakSelf.createDeleteLabelPopover(label: label, row: indexPath.row)
121+
}
122+
cell.delegate = self
91123
return cell
92124
}
93125

@@ -114,12 +146,14 @@ extension SettingsLabelsViewController: UITableViewDelegate, UITableViewDataSour
114146
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
115147
return tableView.dequeueReusableHeaderFooterView(withIdentifier: "settingsHeaderLabel")
116148
}
117-
118-
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
119-
let label = labels[indexPath.row]
120-
guard label.id != SystemLabel.starred.id else {
149+
}
150+
151+
extension SettingsLabelsViewController: LabelTableViewCellDelegate {
152+
func tableViewCellDidTapCheck(_ cell: LabelsLabelTableViewCell) {
153+
guard let indexPath = self.tableView.indexPath(for: cell) else {
121154
return
122155
}
156+
let label = labels[indexPath.row]
123157
DBManager.updateLabel(label, visible: !label.visible)
124158
tableView.reloadRows(at: [indexPath], with: .automatic)
125159
}

iOS-Email-Client/Libs/EventHandler.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -350,6 +350,7 @@ enum Event: Int32 {
350350
case recoveryChange = 311
351351
case recoveryVerify = 312
352352
case updateProfilePic = 313
353+
case deleteLabel = 320
353354
}
354355

355356
enum Server: Int32 {

iOS-Email-Client/Managers/DBManager.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -666,6 +666,14 @@ class DBManager: SharedDB {
666666
return settableLabels
667667
}
668668

669+
class func deleteLabel(label: Label){
670+
let realm = try! Realm()
671+
672+
try! realm.write {
673+
realm.delete(label)
674+
}
675+
}
676+
669677
//MARK: - File
670678

671679
class func delete(_ files: [File]){

iOS-Email-Client/Model/EventData.swift

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,18 @@ extension EventData {
261261
}
262262
}
263263

264+
struct DeleteLabel: Dictionarify {
265+
let uuid: String
266+
267+
init(params: [String: Any]){
268+
uuid = params["uuid"] as! String
269+
}
270+
271+
init(uuid: String){
272+
self.uuid = uuid
273+
}
274+
}
275+
264276
struct NameChanged: Dictionarify {
265277
let name: String
266278

iOS-Email-Client/Views/LabelsLabelTableViewCell.swift

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,30 @@
88

99
import Foundation
1010

11+
protocol LabelTableViewCellDelegate: class {
12+
func tableViewCellDidTapCheck(_ cell: LabelsLabelTableViewCell)
13+
}
14+
1115
class LabelsLabelTableViewCell: UITableViewCell{
1216
@IBOutlet weak var checkMarkView: CheckMarkUIView!
17+
@IBOutlet weak var trashButton: UIButton!
1318
@IBOutlet weak var labelLabel: UILabel!
1419
@IBOutlet weak var colorDotsContainer: UIView!
1520
@IBOutlet weak var colorDotsView: UIView!
1621

22+
weak var delegate: LabelTableViewCellDelegate?
23+
24+
var clickTrash: (() -> Void)? = nil
25+
1726
var theme: Theme {
1827
return ThemeManager.shared.theme
1928
}
2029

2130
override func awakeFromNib() {
2231
super.awakeFromNib()
2332
applyTheme()
33+
let tap = UITapGestureRecognizer(target: self, action: #selector(handleTap(_:)))
34+
checkMarkView.addGestureRecognizer(tap)
2435
}
2536

2637
override func prepareForReuse() {
@@ -35,8 +46,20 @@ class LabelsLabelTableViewCell: UITableViewCell{
3546

3647
func fillFields(label: Label) {
3748
let isDisabled = label.id == SystemLabel.starred.id
49+
trashButton.isHidden = isDisabled
3850
labelLabel.text = label.localized
3951
checkMarkView.setChecked(label.visible, disabled: isDisabled)
4052
colorDotsView.backgroundColor = UIColor(hex: label.color)
4153
}
54+
55+
@objc func handleTap(_ gestureRecognizer:UITapGestureRecognizer){
56+
guard let delegate = self.delegate else {
57+
return
58+
}
59+
delegate.tableViewCellDidTapCheck(self)
60+
}
61+
62+
@IBAction func didTapButton(sender: UIButton) {
63+
clickTrash?()
64+
}
4265
}

iOS-Email-Client/en.lproj/Localizable.strings

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -459,3 +459,5 @@
459459
"RECOVERY_CODE_DIALOG_ERROR" = "Incorrect Recovery Code";
460460
"RECOVERY_CODE_VALIDATION_ERROR" = "Recovery Code is at least 6 characters long.";
461461
"RECOVERY_CODE_VALIDATION_ERROR_EMPTY" = "Recovery Code cannot be empty.";
462+
"DELETE_LABEL_DIALOG_TITLE" = "Delete Label";
463+
"DELETE_LABEL_DIALOG_MESSAGE" = "Are you sure you want to delete label: (%@)?";

iOS-Email-Client/es-419.lproj/Localizable.strings

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -459,3 +459,5 @@
459459
"RECOVERY_CODE_DIALOG_ERROR" = "Código de Recuperación no es correcto.";
460460
"RECOVERY_CODE_VALIDATION_ERROR" = "El código de recuperación debe tener 6 caracteres.";
461461
"RECOVERY_CODE_VALIDATION_ERROR_EMPTY" = "El código de recuperación no puede estar vacío.";
462+
"DELETE_LABEL_DIALOG_TITLE" = "Borrar Etiqueta";
463+
"DELETE_LABEL_DIALOG_MESSAGE" = "¿Estás seguro que quieres borrar la etiqueta: (%@)?";

0 commit comments

Comments
 (0)