-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDefaultSyncFCMTokenUseCase.swift
More file actions
40 lines (34 loc) · 1.28 KB
/
DefaultSyncFCMTokenUseCase.swift
File metadata and controls
40 lines (34 loc) · 1.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// Copyright © 2025 Booket. All rights reserved
import BKCore
import Combine
import Foundation
public struct DefaultSyncFCMTokenUseCase: SyncFCMTokenUseCase {
private let pushTokenRepository: PushTokenRepository
private let notificationRepository: NotificationRepository
public init(
pushTokenRepository: PushTokenRepository,
notificationRepository: NotificationRepository
) {
self.pushTokenRepository = pushTokenRepository
self.notificationRepository = notificationRepository
}
public func execute() -> AnyPublisher<Void, DomainError> {
guard pushTokenRepository.isSyncNeeded() else {
return Just(())
.setFailureType(to: DomainError.self)
.eraseToAnyPublisher()
}
guard let fcmToken = pushTokenRepository.getFCMToken() else {
return Just(())
.setFailureType(to: DomainError.self)
.eraseToAnyPublisher()
}
return notificationRepository
.upsertFCMToken(fcmToken: fcmToken)
.debugError(logger: AppLogger.network)
.flatMap { _ -> AnyPublisher<Void, DomainError> in
return self.pushTokenRepository.resetSyncNeeded()
}
.eraseToAnyPublisher()
}
}