From 75606eb3e9b61160c8a9ae9987de968955d08103 Mon Sep 17 00:00:00 2001 From: JinUng41 Date: Sun, 15 Sep 2024 00:38:08 +0900 Subject: [PATCH 1/2] =?UTF-8?q?refactor/#386=20ObservablePattern=20?= =?UTF-8?q?=EB=8B=A4=EC=A4=91=20=EA=B5=AC=EB=8F=85=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ObservablePattern/ObservablePattern.swift | 33 +++++++++++++++---- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/KkuMulKum/Resource/ObservablePattern/ObservablePattern.swift b/KkuMulKum/Resource/ObservablePattern/ObservablePattern.swift index fb6a1aa8..a6829897 100644 --- a/KkuMulKum/Resource/ObservablePattern/ObservablePattern.swift +++ b/KkuMulKum/Resource/ObservablePattern/ObservablePattern.swift @@ -10,42 +10,61 @@ import Foundation class ObservablePattern { var value: T { didSet { - listener?(value) + notifyListeners(value) } } - private var listener: ((T) -> Void)? + typealias Listener = (T) -> Void + + private var listeners: [Listener] = [] init(_ value: T) { self.value = value } + private func notifyListeners(_ value: T) { + for listener in listeners { + listener(value) + } + } + func bind(_ listener: @escaping (T) -> Void) { - self.listener = listener + listeners.append(listener) + + listener(value) } func bind(with object: Object, _ listener: @escaping (Object, T) -> Void) { - self.listener = { [weak object] value in + listeners.append { [weak object] value in guard let object else { return } listener(object, value) } + + listener(object, value) } func bindOnMain(_ listener: @escaping (T) -> Void) { - self.listener = { value in + listeners.append { value in DispatchQueue.main.async { listener(value) } } + + DispatchQueue.main.async { + listener(self.value) + } } func bindOnMain(with object: Object, _ listener: @escaping (Object, T) -> Void) { - self.listener = { [weak object] value in + listeners.append { [weak object] value in guard let object else { return } DispatchQueue.main.async { listener(object, value) } } + + DispatchQueue.main.async { + listener(object, self.value) + } } } - From dc1ce1fd21ee7b03a7f0824b2bc32affd318384b Mon Sep 17 00:00:00 2001 From: JinUng41 Date: Sun, 15 Sep 2024 00:42:13 +0900 Subject: [PATCH 2/2] =?UTF-8?q?chore/#386=20=EB=B9=88=20=EC=A4=84=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Source/Promise/ServiceProtocol/PromiseServiceProtocol.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/KkuMulKum/Source/Promise/ServiceProtocol/PromiseServiceProtocol.swift b/KkuMulKum/Source/Promise/ServiceProtocol/PromiseServiceProtocol.swift index 10babaad..01273917 100644 --- a/KkuMulKum/Source/Promise/ServiceProtocol/PromiseServiceProtocol.swift +++ b/KkuMulKum/Source/Promise/ServiceProtocol/PromiseServiceProtocol.swift @@ -26,4 +26,3 @@ protocol PromiseServiceProtocol { func deletePromise(promiseID: Int) async throws -> ResponseBodyDTO? func exitPromise(promiseID: Int) async throws -> ResponseBodyDTO? } -