Skip to content

Commit 533790e

Browse files
authored
Поправил запрос на доступ к наклейкам (#324)
- При авторизации делаем запрос для наклеек (бейджи) - Если доступ есть, но значение не изменилось, ничего не делаем - Если пользователь сделал логаут, обнуляем значение наклейки
1 parent bc65978 commit 533790e

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

SwiftUI-WorkoutApp/SwiftUI_WorkoutAppApp.swift

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,13 @@ struct SwiftUI_WorkoutAppApp: App {
4747
try? await dialogsViewModel.getDialogs(defaults: defaults)
4848
}
4949
}
50-
.onChange(of: defaults.isAuthorized) { _ in updateAppIconBadgeIfNeeded() }
50+
.onChange(of: defaults.isAuthorized, perform: updateAppIconBadgeIfNeeded)
5151
.onChange(of: scenePhase) { phase in
5252
switch phase {
5353
case .active:
5454
updateCountriesIfNeeded()
5555
case .background:
56-
updateAppIconBadgeIfNeeded()
56+
updateAppIconBadgeIfNeeded(defaults.isAuthorized)
5757
defaults.setUserNeedUpdate(true)
5858
default: break
5959
}
@@ -72,15 +72,17 @@ struct SwiftUI_WorkoutAppApp: App {
7272
}
7373
}
7474

75-
private func updateAppIconBadgeIfNeeded() {
76-
guard defaults.isAuthorized,
77-
UIApplication.shared.applicationIconBadgeNumber != defaults.appIconBadgeCount
78-
else { return }
75+
private func updateAppIconBadgeIfNeeded(_ isAuthorized: Bool) {
76+
guard isAuthorized else {
77+
UIApplication.shared.applicationIconBadgeNumber = 0
78+
return
79+
}
7980
badgeUpdateTask?.cancel()
8081
badgeUpdateTask = Task {
8182
let center = UNUserNotificationCenter.current()
8283
let granted = try? await center.requestAuthorization(options: [.badge])
8384
guard granted == true else { return }
85+
guard UIApplication.shared.applicationIconBadgeNumber != defaults.appIconBadgeCount else { return }
8486
UIApplication.shared.applicationIconBadgeNumber = defaults.appIconBadgeCount
8587
}
8688
}

0 commit comments

Comments
 (0)