Skip to content

Commit 46da8e9

Browse files
committed
[BOOK-409] feat: update FCM token registration spec
1 parent 743c774 commit 46da8e9

4 files changed

Lines changed: 24 additions & 8 deletions

File tree

src/Projects/BKData/Sources/API/UserAPI.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import Foundation
55
enum UserAPI {
66
case me
77
case termsAgreement(termsAgreed: Bool)
8-
case upsertFCMToken(fcmToken: String)
8+
case upsertFCMToken(fcmToken: String, deviceId: String)
99
case upsertNotificationSettings(notificationEnabled: Bool)
1010
}
1111

@@ -51,8 +51,8 @@ extension UserAPI: RequestTarget {
5151
switch self {
5252
case .termsAgreement(let termsAgreed):
5353
return TermsAgreementRequestDTO(termsAgreed: termsAgreed)
54-
case .upsertFCMToken(let fcmToken):
55-
return UpsertFCMTokenRequestDTO(fcmToken: fcmToken)
54+
case .upsertFCMToken(let fcmToken, let deviceId):
55+
return UpsertFCMTokenRequestDTO(fcmToken: fcmToken, deviceId: deviceId)
5656
case .upsertNotificationSettings(let notificationEnabled):
5757
return NotificationStatusRequestDTO(notificationEnabled: notificationEnabled)
5858
case .me:

src/Projects/BKData/Sources/DTO/Request/UpsertFCMTokenRequestDTO.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ import Foundation
44

55
struct UpsertFCMTokenRequestDTO: Encodable {
66
let fcmToken: String
7+
let deviceId: String
78
}

src/Projects/BKData/Sources/DataAssembly.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,11 @@ public struct DataAssembly: Assembly {
134134
type: NotificationRepository.self
135135
) { _ in
136136
@Autowired(name: "OAuth") var networkProvider: NetworkProvider
137-
return DefaultNotificationRepository(networkProvider: networkProvider)
137+
@Autowired var deviceIDProvider: DeviceIDProvider
138+
return DefaultNotificationRepository(
139+
networkProvider: networkProvider,
140+
deviceIDProvider: deviceIDProvider
141+
)
138142
}
139143

140144
container.register(

src/Projects/BKData/Sources/Repository/DefaultNotificationRepository.swift

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,27 @@ import Combine
66

77
public struct DefaultNotificationRepository: NotificationRepository {
88
private let networkProvider: NetworkProvider
9-
10-
public init(networkProvider: NetworkProvider) {
9+
private let deviceIDProvider: DeviceIDProvider
10+
11+
public init(
12+
networkProvider: NetworkProvider,
13+
deviceIDProvider: DeviceIDProvider
14+
) {
1115
self.networkProvider = networkProvider
16+
self.deviceIDProvider = deviceIDProvider
1217
}
1318

1419
public func upsertFCMToken(
1520
fcmToken: String
1621
) -> AnyPublisher<Void, DomainError> {
17-
networkProvider.request(
18-
target: UserAPI.upsertFCMToken(fcmToken: fcmToken),
22+
guard let deviceID = deviceIDProvider.deviceID else {
23+
Log.error("Device ID not available", logger: AppLogger.storage)
24+
return Fail(error: DomainError.unknown)
25+
.eraseToAnyPublisher()
26+
}
27+
28+
return networkProvider.request(
29+
target: UserAPI.upsertFCMToken(fcmToken: fcmToken, deviceId: deviceID),
1930
type: UserProfileResponseDTO.self
2031
)
2132
.debugError(logger: AppLogger.network)

0 commit comments

Comments
 (0)