Skip to content

Commit f4f1062

Browse files
committed
fix/#70 :: decoder 변경
- Date() 때문에 JSONDecoder에 .iso8601 이 필요했습니다. - 임시로 ConnectionClient를 Host라고 가정하여 로직을 구성했습니다.
1 parent 5b9551f commit f4f1062

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

PhotoGether/DataLayer/PhotoGetherData/PhotoGetherData/EventConnection/EventConnectionGuestRepositoryImpl.swift

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ public final class EventConnectionGuestRepositoryImpl: EventConnectionRepository
77
private var cancellables: Set<AnyCancellable> = []
88
private var receiveDataFromHost = PassthroughSubject<Data, Never>()
99

10+
private var decoder: JSONDecoder = {
11+
let decoder = JSONDecoder()
12+
decoder.dateDecodingStrategy = .iso8601
13+
return decoder
14+
}()
15+
1016
public init(clients: [ConnectionClient]) {
1117
self.clients = clients
1218
bindData()
@@ -16,6 +22,13 @@ public final class EventConnectionGuestRepositoryImpl: EventConnectionRepository
1622
// MARK: Host로 부터 들어오는 Data를 send한다.
1723
// clients.filter { $0 == .host }
1824
// receiveDataFromHost.send(Data())
25+
26+
clients.first?.receivedDataPublisher
27+
.sink(receiveValue: { [weak self] data in
28+
print("DEBUG: Data Receive From Host")
29+
self?.receiveDataFromHost.send(data)
30+
})
31+
.store(in: &cancellables)
1932
}
2033

2134
// MARK: 게스트가 호스트에게 스티커의 생성/삭제/이동 등 자신의 이벤트를 전달
@@ -37,7 +50,7 @@ public final class EventConnectionGuestRepositoryImpl: EventConnectionRepository
3750

3851
public func receiveStickerList() -> AnyPublisher<[StickerEntity], Never> {
3952
return receiveDataFromHost
40-
.decode(type: [StickerEntity].self, decoder: JSONDecoder())
53+
.decode(type: [StickerEntity].self, decoder: decoder)
4154
.replaceError(with: [])
4255
.eraseToAnyPublisher()
4356
}

PhotoGether/DataLayer/PhotoGetherData/PhotoGetherData/EventConnection/EventConnectionHostRepositoryImpl.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public final class EventConnectionHostRepositoryImpl: EventConnectionRepository
1717
private func bindData() {
1818
clients.forEach {
1919
$0.receivedDataPublisher.sink { [weak self] data in
20+
print("DEBUG: Data Receive From Guest")
2021
self?.receiveDataFromGuest.send(data)
2122
}
2223
.store(in: &cancellables)
@@ -26,6 +27,7 @@ public final class EventConnectionHostRepositoryImpl: EventConnectionRepository
2627
receiveDataFromGuest
2728
.sink { [weak self] data in
2829
// TODO: Data를 EventEntity로 디코딩해서 EventHub에 push
30+
print("DEBUG: Push Event Hub")
2931
guard let eventEntity = try? EventEntity.decode(from: data) else { return }
3032
self?.eventHub.push(event: eventEntity)
3133
}
@@ -35,6 +37,7 @@ public final class EventConnectionHostRepositoryImpl: EventConnectionRepository
3537
eventHub.resultEventPublisher
3638
.sink { [weak self] entityList in
3739
guard let encodedData = try? entityList.encode() else { return }
40+
print("DEBUG: EventHub Result Send")
3841
self?.clients.forEach { $0.sendData(data: encodedData)}
3942
self?.sendToViewModel.send(entityList)
4043
}

0 commit comments

Comments
 (0)