From 8a320a39c0847ec4bf52f13dfc3235475c4277c4 Mon Sep 17 00:00:00 2001 From: yuki tamazawa Date: Fri, 20 Dec 2019 10:39:09 +0900 Subject: [PATCH 1/9] fixed # From dd8f32fdfcafd5ce3a65b01023ba589993331b29 Mon Sep 17 00:00:00 2001 From: yuki tamazawa Date: Fri, 20 Dec 2019 11:47:25 +0900 Subject: [PATCH 2/9] Add Interval Option & Stop Interface --- .../Sources/RIBsTreeViewer.swift | 41 ++++++++++++++----- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/RIBsTreeViewerClient/Sources/RIBsTreeViewer.swift b/RIBsTreeViewerClient/Sources/RIBsTreeViewer.swift index 4853f66..9f2a5bf 100644 --- a/RIBsTreeViewerClient/Sources/RIBsTreeViewer.swift +++ b/RIBsTreeViewerClient/Sources/RIBsTreeViewer.swift @@ -10,12 +10,14 @@ import Foundation import RxSwift import RIBs -protocol RIBsTreeViewer { +public protocol RIBsTreeViewer { func start() + func stop() } -public enum RIBsTreeViewerOptions: String { +public enum RIBsTreeViewerOption { case webSocketURL + case monitoringInterval } @available(iOS 13.0, *) @@ -23,23 +25,34 @@ public class RIBsTreeViewerImpl { private let router: Routing private let webSocket: WebSocketClient - private let disposeBag = DisposeBag() + private var watchingDisposable: Disposable? + private let option: [RIBsTreeViewerOption: Any]? - public init(router: Routing, option: [RIBsTreeViewerOptions: String]? = nil) { - let url = option?[.webSocketURL] + public init(router: Routing, option: [RIBsTreeViewerOption: Any]?) { + self.option = option self.router = router - if let url = url { - self.webSocket = WebSocketClient.init(url: URL(string: url)!) + let webSocketURL: String + if let url = option?[.webSocketURL] as? String { + webSocketURL = url } else { - self.webSocket = WebSocketClient.init(url: URL(string: "ws://0.0.0.0:8080")!) + webSocketURL = "ws://0.0.0.0:8080" } + + self.webSocket = WebSocketClient.init(url: URL(string: webSocketURL)!) self.webSocket.delegate = self self.webSocket.connect() } public func start() { - Observable.interval(RxTimeInterval.microseconds(200), scheduler: MainScheduler.instance) + let watchingInterval: Int + if let interval = option?[.monitoringInterval] as? Int { + watchingInterval = interval + } else { + watchingInterval = 1000 + } + + watchingDisposable = Observable.interval(RxTimeInterval.microseconds(watchingInterval), scheduler: MainScheduler.instance) .map { [unowned self] _ in self.tree(router: self.router) } @@ -52,10 +65,16 @@ public class RIBsTreeViewerImpl { let jsonString = String(bytes: jsonData, encoding: .utf8)! self?.webSocket.send(text: jsonString) } catch { - // print(error) + // TODO: Error Handling } }) - .disposed(by: disposeBag) + + } + + public func stop() { + watchingDisposable?.dispose() + watchingDisposable = nil + webSocket.disconnect() } private func tree(router: Routing, appendImage: Bool = false) -> [String: Any] { From 1a55950eae325dcf1ee31387abb825475a433cba Mon Sep 17 00:00:00 2001 From: yuki tamazawa Date: Fri, 20 Dec 2019 12:04:15 +0900 Subject: [PATCH 3/9] Add init --- RIBsTreeViewerClient/Sources/RIBsTreeViewer.swift | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/RIBsTreeViewerClient/Sources/RIBsTreeViewer.swift b/RIBsTreeViewerClient/Sources/RIBsTreeViewer.swift index 9f2a5bf..244f92e 100644 --- a/RIBsTreeViewerClient/Sources/RIBsTreeViewer.swift +++ b/RIBsTreeViewerClient/Sources/RIBsTreeViewer.swift @@ -11,6 +11,7 @@ import RxSwift import RIBs public protocol RIBsTreeViewer { + init(router: Routing, option: [RIBsTreeViewerOption: Any]?) func start() func stop() } @@ -21,7 +22,7 @@ public enum RIBsTreeViewerOption { } @available(iOS 13.0, *) -public class RIBsTreeViewerImpl { +class RIBsTreeViewerImpl { private let router: Routing private let webSocket: WebSocketClient From 5a7fbbfe914b6ddf0960aa39ab9fc2330a278b14 Mon Sep 17 00:00:00 2001 From: yuki tamazawa Date: Fri, 20 Dec 2019 12:05:21 +0900 Subject: [PATCH 4/9] remove Public --- RIBsTreeViewerClient/Sources/RIBsTreeViewer.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/RIBsTreeViewerClient/Sources/RIBsTreeViewer.swift b/RIBsTreeViewerClient/Sources/RIBsTreeViewer.swift index 244f92e..2fa6702 100644 --- a/RIBsTreeViewerClient/Sources/RIBsTreeViewer.swift +++ b/RIBsTreeViewerClient/Sources/RIBsTreeViewer.swift @@ -29,7 +29,7 @@ class RIBsTreeViewerImpl { private var watchingDisposable: Disposable? private let option: [RIBsTreeViewerOption: Any]? - public init(router: Routing, option: [RIBsTreeViewerOption: Any]?) { + init(router: Routing, option: [RIBsTreeViewerOption: Any]?) { self.option = option self.router = router @@ -45,7 +45,7 @@ class RIBsTreeViewerImpl { self.webSocket.connect() } - public func start() { + func start() { let watchingInterval: Int if let interval = option?[.monitoringInterval] as? Int { watchingInterval = interval @@ -72,7 +72,7 @@ class RIBsTreeViewerImpl { } - public func stop() { + func stop() { watchingDisposable?.dispose() watchingDisposable = nil webSocket.disconnect() From f3762125bb25aa2d02d9e7c3252a95461c6dd559 Mon Sep 17 00:00:00 2001 From: yuki tamazawa Date: Fri, 20 Dec 2019 12:26:55 +0900 Subject: [PATCH 5/9] Impl Interface --- RIBsTreeViewerClient/Sources/RIBsTreeViewer.swift | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/RIBsTreeViewerClient/Sources/RIBsTreeViewer.swift b/RIBsTreeViewerClient/Sources/RIBsTreeViewer.swift index 2fa6702..ae6ad8f 100644 --- a/RIBsTreeViewerClient/Sources/RIBsTreeViewer.swift +++ b/RIBsTreeViewerClient/Sources/RIBsTreeViewer.swift @@ -22,14 +22,14 @@ public enum RIBsTreeViewerOption { } @available(iOS 13.0, *) -class RIBsTreeViewerImpl { +public class RIBsTreeViewerImpl: RIBsTreeViewer { private let router: Routing private let webSocket: WebSocketClient private var watchingDisposable: Disposable? private let option: [RIBsTreeViewerOption: Any]? - init(router: Routing, option: [RIBsTreeViewerOption: Any]?) { + required public init(router: Routing, option: [RIBsTreeViewerOption: Any]?) { self.option = option self.router = router @@ -45,7 +45,7 @@ class RIBsTreeViewerImpl { self.webSocket.connect() } - func start() { + public func start() { let watchingInterval: Int if let interval = option?[.monitoringInterval] as? Int { watchingInterval = interval @@ -72,7 +72,7 @@ class RIBsTreeViewerImpl { } - func stop() { + public func stop() { watchingDisposable?.dispose() watchingDisposable = nil webSocket.disconnect() From a6f44610673b0b4a704047013efc0cd060d7968c Mon Sep 17 00:00:00 2001 From: yuki tamazawa Date: Fri, 20 Dec 2019 15:29:04 +0900 Subject: [PATCH 6/9] micro -> milli --- RIBsTreeViewerClient/Sources/RIBsTreeViewer.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RIBsTreeViewerClient/Sources/RIBsTreeViewer.swift b/RIBsTreeViewerClient/Sources/RIBsTreeViewer.swift index ae6ad8f..9c08574 100644 --- a/RIBsTreeViewerClient/Sources/RIBsTreeViewer.swift +++ b/RIBsTreeViewerClient/Sources/RIBsTreeViewer.swift @@ -53,7 +53,7 @@ public class RIBsTreeViewerImpl: RIBsTreeViewer { watchingInterval = 1000 } - watchingDisposable = Observable.interval(RxTimeInterval.microseconds(watchingInterval), scheduler: MainScheduler.instance) + watchingDisposable = Observable.interval(.milliseconds(watchingInterval), scheduler: MainScheduler.instance) .map { [unowned self] _ in self.tree(router: self.router) } From 10ea18175a62df984f607ff3904650758bc8b2ca Mon Sep 17 00:00:00 2001 From: yuki tamazawa Date: Fri, 20 Dec 2019 16:16:48 +0900 Subject: [PATCH 7/9] v1.0.3 --- RIBsTreeViewerClient.xcodeproj/project.pbxproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/RIBsTreeViewerClient.xcodeproj/project.pbxproj b/RIBsTreeViewerClient.xcodeproj/project.pbxproj index 7ecc1fb..a5fd211 100644 --- a/RIBsTreeViewerClient.xcodeproj/project.pbxproj +++ b/RIBsTreeViewerClient.xcodeproj/project.pbxproj @@ -318,7 +318,7 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MARKETING_VERSION = 1.0.2; + MARKETING_VERSION = 1.0.3; PRODUCT_BUNDLE_IDENTIFIER = co.minipro.app.RIBsTreeViewerClient; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SKIP_INSTALL = YES; @@ -352,7 +352,7 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MARKETING_VERSION = 1.0.2; + MARKETING_VERSION = 1.0.3; PRODUCT_BUNDLE_IDENTIFIER = co.minipro.app.RIBsTreeViewerClient; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SKIP_INSTALL = YES; From 7e808ac07325a9ac2d62231a40053ad2f9fb02f5 Mon Sep 17 00:00:00 2001 From: yuki tamazawa Date: Fri, 20 Dec 2019 16:22:13 +0900 Subject: [PATCH 8/9] Update README.md --- README.md | 54 +++++++++++++++--------------------------------------- 1 file changed, 15 insertions(+), 39 deletions(-) diff --git a/README.md b/README.md index 0457846..63e1fed 100644 --- a/README.md +++ b/README.md @@ -34,40 +34,30 @@ Carthage CopyFrameworks (ONLY DEBUG) ### Implementation ```swift +// MARK: - RIBsTreeViewer + #if DEBUG import RIBsTreeViewerClient -#endif - -@UIApplicationMain -class AppDelegate: UIResponder, UIApplicationDelegate { - - #if DEBUG - private var ribsTreeViewer: RIBsTreeViewer? - #endif - - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { - let window = UIWindow(frame: UIScreen.main.bounds) - self.window = window - ... +@available(iOS 13.0, *) +var RIBsTreeViewerHolder: RIBsTreeViewer? = nil - launchRouter.launch(from: window) - #if DEBUG - startRIBsTreeViewer(launchRouter: launchRouter) - #endif - return true - } - -} - -#if DEBUG extension AppDelegate { private func startRIBsTreeViewer(launchRouter: Routing) { - ribsTreeViewer = RIBsTreeViewer.init(router: launchRouter) - ribsTreeViewer?.start() + if #available(iOS 13.0, *) { + RIBsTreeViewerHolder = RIBsTreeViewerImpl.init(router: launchRouter, + option: [ + .webSocketURL: "ws://0.0.0.0:8080", + .monitoringInterval: 1000] + ]) + RIBsTreeViewerHolder?.start() + } else { + DEBUGLOG { "RIBsTreeViewer is not supported OS version." } + } } } #endif + ``` ## WebSocket Server @@ -84,17 +74,3 @@ $ yarn install $ npx webpack $ open ./public/index.html ``` - -## Options - -### .webSocketURL - -```swift - #if DEBUG - if #available(iOS 13.0, *) { - ribsTreeViewer = RIBsTreeViewerImpl.init(router: launchRouter, - option: [.webSocketURL: "ws://0.0.0.0:8080"]) - ribsTreeViewer?.start() - } - #endif -``` From 8e37a981673fc5765256dbb283ab158ed345b1a0 Mon Sep 17 00:00:00 2001 From: yuki tamazawa Date: Fri, 20 Dec 2019 16:25:15 +0900 Subject: [PATCH 9/9] Update README.md --- README.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 63e1fed..912762f 100644 --- a/README.md +++ b/README.md @@ -46,10 +46,8 @@ extension AppDelegate { private func startRIBsTreeViewer(launchRouter: Routing) { if #available(iOS 13.0, *) { RIBsTreeViewerHolder = RIBsTreeViewerImpl.init(router: launchRouter, - option: [ - .webSocketURL: "ws://0.0.0.0:8080", - .monitoringInterval: 1000] - ]) + option: [.webSocketURL: "ws://0.0.0.0:8080", + .monitoringInterval: 1000]]) RIBsTreeViewerHolder?.start() } else { DEBUGLOG { "RIBsTreeViewer is not supported OS version." } @@ -57,7 +55,6 @@ extension AppDelegate { } } #endif - ``` ## WebSocket Server