Skip to content

Commit f1ae762

Browse files
feat: Listen FeatureFlag
1 parent 4a1c6cc commit f1ae762

File tree

3 files changed

+27
-4
lines changed

3 files changed

+27
-4
lines changed

MailCore/Cache/Actions/Action+List.swift

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,14 +79,26 @@ extension Action: CaseIterable {
7979
}
8080

8181
public var shouldDisableMultipleSelection: Bool {
82-
return ![.openMovePanel, .saveThreadInkDrive, .shareMailLink, .reportJunk, .phishing, .block, .blockList, .snooze, .modifySnooze].contains(self)
82+
return ![
83+
.openMovePanel,
84+
.saveThreadInkDrive,
85+
.shareMailLink,
86+
.reportJunk,
87+
.phishing,
88+
.block,
89+
.blockList,
90+
.snooze,
91+
.modifySnooze
92+
].contains(self)
8393
}
8494

8595
private static func actionsForMessage(_ message: Message, origin: ActionOrigin,
8696
userIsStaff: Bool,
8797
userEmail: String) -> (quickActions: [Action], listActions: [Action]) {
8898
@LazyInjectService var platformDetector: PlatformDetectable
8999

100+
let snoozedActions = snoozedActions([message], folder: origin.frozenFolder)
101+
90102
var spamAction: Action? {
91103
guard !message.fromMe(currentMailboxEmail: userEmail) else { return nil }
92104
return message.folder?.role == .spam ? .nonSpam : .reportJunk
@@ -123,6 +135,8 @@ extension Action: CaseIterable {
123135
.delete
124136
]
125137

138+
let snoozedActions = snoozedActions(messages, folder: originFolder)
139+
126140
var spamAction: Action? {
127141
let selfThread = messages.flatMap(\.from).allSatisfy { $0.isMeOrPlusMe(currentMailboxEmail: userEmail) }
128142
guard !selfThread else { return nil }
@@ -136,7 +150,9 @@ extension Action: CaseIterable {
136150
.saveThreadInkDrive
137151
]
138152

139-
return (quickActions, tempListActions.compactMap { $0 })
153+
let listActions = snoozedActions + tempListActions.compactMap { $0 }
154+
155+
return (quickActions, listActions)
140156
}
141157

142158
private static func actionsForMessagesInSameThreads(_ messages: [Message], originFolder: Folder?, userEmail: String)
@@ -168,7 +184,7 @@ extension Action: CaseIterable {
168184
private static func snoozedActions(_ messages: [Message], folder: Folder?) -> [Action] {
169185
guard folder?.canAccessSnoozeActions == true else { return [] }
170186

171-
let messagesFromFolder = messages.filter { $0.folder == folder }
187+
let messagesFromFolder = messages.filter { $0.folder?.remoteId == folder?.remoteId }
172188
guard !messagesFromFolder.isEmpty else { return [] }
173189

174190
if messagesFromFolder.allSatisfy(\.isSnoozed) {

MailCore/Models/Folder.swift

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import Foundation
2020
import InfomaniakCore
21+
import InfomaniakDI
2122
import MailResources
2223
import RealmSwift
2324
import SwiftUI
@@ -258,7 +259,12 @@ public class Folder: Object, Codable, Comparable, Identifiable {
258259
}
259260

260261
public var canAccessSnoozeActions: Bool {
261-
return role == .inbox || role == .snoozed
262+
@InjectService var featureFlagsManageable: FeatureFlagsManageable
263+
let isFeatureFlagEnabled = featureFlagsManageable.isEnabled(.mailSnooze)
264+
let isModeCorrect = UserDefaults.shared.threadMode == .conversation
265+
let isFolderCorrect = role == .inbox || role == .snoozed
266+
267+
return isModeCorrect && isFeatureFlagEnabled && isFolderCorrect
262268
}
263269

264270
public var permanentlyDeleteContent: Bool {

MailCore/Utils/FeatureFlagsManager.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public enum FeatureFlag: String, Codable {
2727
case aiMailComposer = "ai-mail-composer"
2828
case bimi
2929
case scheduleSendDraft = "schedule-send-draft"
30+
case mailSnooze = "mail-snooze"
3031
case unknown
3132

3233
public init(from decoder: Decoder) throws {

0 commit comments

Comments
 (0)