@@ -25,50 +25,48 @@ import MailResources
25
25
import SwiftUI
26
26
27
27
extension DestructiveActionAlertState {
28
- func title( in folder : Folder ? ) -> String {
28
+ var title : String {
29
29
switch type {
30
- case . delete:
31
- if let impactedMessages {
32
- return MailResourcesStrings . Localizable. threadListDeletionConfirmationAlertTitle ( impactedMessages)
33
- } else {
34
- switch folder? . role {
35
- case . spam:
36
- return MailResourcesStrings . Localizable. threadListEmptySpamButton
37
- case . trash:
38
- return MailResourcesStrings . Localizable. threadListEmptyTrashButton
39
- default :
40
- return " "
41
- }
30
+ case . flushFolder( let frozenFolder) :
31
+ switch frozenFolder? . role {
32
+ case . spam:
33
+ return MailResourcesStrings . Localizable. threadListEmptySpamButton
34
+ case . trash:
35
+ return MailResourcesStrings . Localizable. threadListEmptyTrashButton
36
+ default :
37
+ return " "
42
38
}
43
39
40
+ case . permanentlyDelete( let impactedMessages) :
41
+ return MailResourcesStrings . Localizable. threadListDeletionConfirmationAlertTitle ( impactedMessages)
42
+
44
43
case . deleteSnooze:
45
- return " !TODO "
44
+ return MailResourcesStrings . Localizable . actionDelete
46
45
47
46
case . archiveSnooze:
48
- return " !TODO "
47
+ return MailResourcesStrings . Localizable . actionArchive
49
48
50
49
case . moveSnooze:
51
- return " !TODO "
50
+ return MailResourcesStrings . Localizable . actionMove
52
51
}
53
52
}
54
53
55
54
var description : String {
56
55
switch type {
57
- case . delete:
58
- if let impactedMessages {
59
- return MailResourcesStrings . Localizable. threadListDeletionConfirmationAlertDescription ( impactedMessages)
60
- } else {
61
- return MailResourcesStrings . Localizable. threadListEmptyFolderAlertDescription
62
- }
56
+ case . flushFolder:
57
+ return MailResourcesStrings . Localizable. threadListEmptyFolderAlertDescription
63
58
64
- case . deleteSnooze :
65
- return " !TODO "
59
+ case . permanentlyDelete ( let impactedMessages ) :
60
+ return MailResourcesStrings . Localizable . threadListDeletionConfirmationAlertDescription ( impactedMessages )
66
61
67
- case . archiveSnooze :
68
- return " !TODO "
62
+ case . deleteSnooze ( let impactedMessages ) :
63
+ return MailResourcesStrings . Localizable . snoozeDeleteConfirmAlertDescription ( impactedMessages )
69
64
70
- case . moveSnooze:
71
- return " !TODO "
65
+ case . archiveSnooze( let impactedMessages) :
66
+ return MailResourcesStrings . Localizable. snoozeArchiveConfirmAlertDescription ( impactedMessages)
67
+
68
+ case . moveSnooze( let impactedMessages) :
69
+ return MailResourcesStrings . Localizable. snoozeArchiveConfirmAlertDescription ( impactedMessages)
72
70
}
73
71
}
74
72
}
@@ -77,22 +75,20 @@ struct DestructiveActionAlertView: View {
77
75
@LazyInjectService private var matomo : MatomoUtils
78
76
79
77
let destructiveAlert : DestructiveActionAlertState
80
- var frozenFolder : Folder ?
81
78
82
- init ( destructiveAlert: DestructiveActionAlertState , folder : Folder ? = nil ) {
79
+ init ( destructiveAlert: DestructiveActionAlertState ) {
83
80
self . destructiveAlert = destructiveAlert
84
- frozenFolder = folder? . freezeIfNeeded ( )
85
81
}
86
82
87
83
var body : some View {
88
84
VStack ( alignment: . leading, spacing: IKPadding . large) {
89
- Text ( destructiveAlert. title ( in : frozenFolder ) )
85
+ Text ( destructiveAlert. title)
90
86
. textStyle ( . bodyMedium)
91
87
Text ( destructiveAlert. description)
92
88
. textStyle ( . body)
93
89
94
90
ModalButtonsView ( primaryButtonTitle: MailResourcesStrings . Localizable. buttonConfirm) {
95
- if let frozenFolder, destructiveAlert. impactedMessages == nil {
91
+ if case let . flushFolder ( frozenFolder) = destructiveAlert. type , let frozenFolder {
96
92
matomo. track ( eventWithCategory: . threadList, name: " empty \( frozenFolder. matomoName. capitalized) Confirm " )
97
93
}
98
94
await destructiveAlert. completion ( )
@@ -102,5 +98,5 @@ struct DestructiveActionAlertView: View {
102
98
}
103
99
104
100
#Preview {
105
- DestructiveActionAlertView ( destructiveAlert: DestructiveActionAlertState ( type: . delete ) { /* Preview */ } )
101
+ DestructiveActionAlertView ( destructiveAlert: DestructiveActionAlertState ( type: . deleteSnooze ( 10 ) ) { /* Preview */ } )
106
102
}
0 commit comments