From ee72630e8aca111753624ceb5d9e8935943ff7fe Mon Sep 17 00:00:00 2001 From: Gk40002148 Date: Fri, 18 Mar 2022 15:08:34 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=E9=80=9A=E7=9F=A5=E3=81=8B=E3=82=89?= =?UTF-8?q?=E3=81=AE=E8=B5=B7=E5=8B=95=E5=B0=8E=E7=B7=9A=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AgileWorks.xcodeproj/project.pbxproj | 38 ++++++++----- .../AgileWorks/App/RootViewController.swift | 6 +-- .../Main/Builder/MainTabBarViewBuilder.swift | 1 + .../Main/View/MainTabBarViewController.swift | 21 ++++++++ .../Wireframe/MainTabBarViewWireframe.swift | 54 +++++++++++++++++++ .../WebView/View/WebViewController.storyboard | 9 +++- .../WebView/View/WebViewController.swift | 20 +++++++ .../View/WebViewScriptMessageHandler.swift | 6 +-- 8 files changed, 135 insertions(+), 20 deletions(-) create mode 100644 AgileWorks/AgileWorks/Main/Wireframe/MainTabBarViewWireframe.swift diff --git a/AgileWorks/AgileWorks.xcodeproj/project.pbxproj b/AgileWorks/AgileWorks.xcodeproj/project.pbxproj index 853fc4b..bafadef 100644 --- a/AgileWorks/AgileWorks.xcodeproj/project.pbxproj +++ b/AgileWorks/AgileWorks.xcodeproj/project.pbxproj @@ -150,6 +150,7 @@ C535772C2754D12600EAA660 /* WebViewBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = C535772B2754D12600EAA660 /* WebViewBuilder.swift */; }; C535772E2754D5C500EAA660 /* WebViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C535772D2754D5C500EAA660 /* WebViewController.swift */; }; C53577372758AC1100EAA660 /* WebViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C53577362758AC1100EAA660 /* WebViewController.storyboard */; }; + C5377F0327E07CD9004467BE /* MainTabBarViewWireframe.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5377F0227E07CD9004467BE /* MainTabBarViewWireframe.swift */; }; C57DCAAA27C89692000A2ABC /* ProfileViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C57DCAA927C89692000A2ABC /* ProfileViewController.storyboard */; }; C57DCAAE27C89823000A2ABC /* ProfileViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C57DCAAD27C89823000A2ABC /* ProfileViewController.swift */; }; C57DCAB027C8AEFC000A2ABC /* ProfileTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C57DCAAF27C8AEFC000A2ABC /* ProfileTableViewController.swift */; }; @@ -334,6 +335,7 @@ C535772B2754D12600EAA660 /* WebViewBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebViewBuilder.swift; sourceTree = ""; }; C535772D2754D5C500EAA660 /* WebViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebViewController.swift; sourceTree = ""; }; C53577362758AC1100EAA660 /* WebViewController.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = WebViewController.storyboard; sourceTree = ""; }; + C5377F0227E07CD9004467BE /* MainTabBarViewWireframe.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainTabBarViewWireframe.swift; sourceTree = ""; }; C57DCAA927C89692000A2ABC /* ProfileViewController.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = ProfileViewController.storyboard; sourceTree = ""; }; C57DCAAD27C89823000A2ABC /* ProfileViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileViewController.swift; sourceTree = ""; }; C57DCAAF27C8AEFC000A2ABC /* ProfileTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileTableViewController.swift; sourceTree = ""; }; @@ -447,6 +449,7 @@ children = ( YQKN6GSUCQ782XFYNUG11TN3 /* Builder */, LLI0RGX2ZZLAP3ZAE0TGGV6N /* View */, + C5377F0127E07C7B004467BE /* Wireframe */, ); path = Main; sourceTree = ""; @@ -834,14 +837,6 @@ path = WebClient; sourceTree = ""; }; - C5285D3727CCB3A1006A9182 /* Cell */ = { - isa = PBXGroup; - children = ( - C5285D3827CCB3C8006A9182 /* ProfileTableViewCell.swift */, - ); - path = Cell; - sourceTree = ""; - }; C50CF78A27D86D760042C210 /* OpenLicense */ = { isa = PBXGroup; children = ( @@ -872,6 +867,14 @@ path = View; sourceTree = ""; }; + C5285D3727CCB3A1006A9182 /* Cell */ = { + isa = PBXGroup; + children = ( + C5285D3827CCB3C8006A9182 /* ProfileTableViewCell.swift */, + ); + path = Cell; + sourceTree = ""; + }; C53577282754D02400EAA660 /* WebView */ = { isa = PBXGroup; children = ( @@ -901,14 +904,14 @@ path = View; sourceTree = ""; }; - C599740927D992B1006F5AAC /* Cell */ = { + C5377F0127E07C7B004467BE /* Wireframe */ = { isa = PBXGroup; children = ( - C599740A27D992E9006F5AAC /* OpenLicenseTableViewCell.swift */, + C5377F0227E07CD9004467BE /* MainTabBarViewWireframe.swift */, ); - path = Cell; - sourceTree = ""; - }; + path = Wireframe; + sourceTree = ""; + }; C57DCAA727C8954B000A2ABC /* Profile */ = { isa = PBXGroup; children = ( @@ -928,6 +931,14 @@ path = View; sourceTree = ""; }; + C599740927D992B1006F5AAC /* Cell */ = { + isa = PBXGroup; + children = ( + C599740A27D992E9006F5AAC /* OpenLicenseTableViewCell.swift */, + ); + path = Cell; + sourceTree = ""; + }; ETCUTRCSRVUF3YT1U0HUMDJ4 /* Splash */ = { isa = PBXGroup; children = ( @@ -1336,6 +1347,7 @@ DO2X5NYERJY3QMXCZGA5H9OJ /* LoginBuilder.swift in Sources */, BDBBF83B243C9EAB00EEB25D /* GetSubmissionsIDEndpoint.swift in Sources */, 76D1DC1E2592FE3400429C70 /* GetDocumentInfoEndpoint.swift in Sources */, + C5377F0327E07CD9004467BE /* MainTabBarViewWireframe.swift in Sources */, C57DCAB027C8AEFC000A2ABC /* ProfileTableViewController.swift in Sources */, 3A1F975424AF2D6700AE6A42 /* ModalFullCollectionViewController.swift in Sources */, BD8D55D92420609000A667B0 /* XCGLoggerExtensions.swift in Sources */, diff --git a/AgileWorks/AgileWorks/App/RootViewController.swift b/AgileWorks/AgileWorks/App/RootViewController.swift index f5e6907..578203f 100644 --- a/AgileWorks/AgileWorks/App/RootViewController.swift +++ b/AgileWorks/AgileWorks/App/RootViewController.swift @@ -113,16 +113,16 @@ extension RootViewController { } func handleLink() { - /* if let mainNavigationController = current as? MainTabBarViewController, let linkType = linkType { switch linkType { + case .deeplink(let path): - mainNavigationController.screenPath = path + //mainNavigationController.screenPath = path + break case .notification(let data): mainNavigationController.notificationData = data } } - */ } } diff --git a/AgileWorks/AgileWorks/Main/Builder/MainTabBarViewBuilder.swift b/AgileWorks/AgileWorks/Main/Builder/MainTabBarViewBuilder.swift index b8d6367..80019a5 100644 --- a/AgileWorks/AgileWorks/Main/Builder/MainTabBarViewBuilder.swift +++ b/AgileWorks/AgileWorks/Main/Builder/MainTabBarViewBuilder.swift @@ -31,6 +31,7 @@ struct MainTabBarViewBuilderImpl: MainTabBarViewBuilder { func build() -> UITabBarController { let viewController = storyboard() + viewController.inject(wireframe: MainTabBarViewWireframeImpl(viewController: viewController)) // viewController にセットする WebViewController 生成 let homeNC = createWebViewController(type: ViewType.home.rawValue) let workNC = createWebViewController(type: ViewType.work.rawValue) diff --git a/AgileWorks/AgileWorks/Main/View/MainTabBarViewController.swift b/AgileWorks/AgileWorks/Main/View/MainTabBarViewController.swift index b422b5c..a11006b 100644 --- a/AgileWorks/AgileWorks/Main/View/MainTabBarViewController.swift +++ b/AgileWorks/AgileWorks/Main/View/MainTabBarViewController.swift @@ -9,6 +9,27 @@ import UIKit class MainTabBarViewController: UITabBarController { + private var wireframe: MainTabBarViewWireframe! + + var screenPath: String? { + didSet { + wireframe.showApprovalDetail(id: (String(self.screenPath!.suffix(1)))) + } + } + + var notificationData: NotificationData? { + didSet { + guard let data = self.notificationData else { + return + } + wireframe.showDocForm(notificationData: data) + } + } + + func inject(wireframe: MainTabBarViewWireframe) { + self.wireframe = wireframe + } + override func viewDidLoad() { super.viewDidLoad() delegate = self diff --git a/AgileWorks/AgileWorks/Main/Wireframe/MainTabBarViewWireframe.swift b/AgileWorks/AgileWorks/Main/Wireframe/MainTabBarViewWireframe.swift new file mode 100644 index 0000000..9706865 --- /dev/null +++ b/AgileWorks/AgileWorks/Main/Wireframe/MainTabBarViewWireframe.swift @@ -0,0 +1,54 @@ +// +// MainTabBarViewWireframe.swift +// AgileWorks +// +// Created by Gk40002148 on 2022/03/15. +// Copyright © 2022 ATLED CORP. All rights reserved. +// + +import UIKit + +protocol MainTabBarViewWireframe: AnyObject { + func showApprovalDetail(id: String) + func showDocForm(notificationData: NotificationData) +} + +class MainTabBarViewWireframeImpl { + weak var viewController: UITabBarController! + + required init(viewController: UITabBarController) { + self.viewController = viewController + } +} + +extension MainTabBarViewWireframeImpl: MainTabBarViewWireframe { + func showApprovalDetail(id: String) { + // ウィジェットからの起動 + // 以下、XPoint時のコード + /* + let approvalDetailVC = ApprovalDetailBuilderImpl().build() + approvalDetailVC.detailId = id + + let mainTab = viewController.viewControllers.first as? UITabBarController + mainTab?.selectedIndex = 0 + + let collection = viewController.traitCollection.horizontalSizeClass + if collection == .compact { + let navigation = mainTab?.viewControllers?.first as? UINavigationController + + navigation?.popToRootViewController(animated: false) + navigation?.pushViewController(approvalDetailVC, animated: true) + } else { + let nav = UINavigationController(rootViewController: approvalDetailVC) + viewController.showDetailViewController(nav, sender: self) + } + */ + } + func showDocForm(notificationData: NotificationData) { + let modalWebVC = WebViewBuilderImpl().build() + // URL 設定、タイトルも + let nav = UINavigationController(rootViewController: modalWebVC) + nav.modalPresentationStyle = .fullScreen + self.viewController.present(nav, animated: true, completion: nil) + } +} diff --git a/AgileWorks/AgileWorks/WebView/View/WebViewController.storyboard b/AgileWorks/AgileWorks/WebView/View/WebViewController.storyboard index b7eb59c..e5376c3 100644 --- a/AgileWorks/AgileWorks/WebView/View/WebViewController.storyboard +++ b/AgileWorks/AgileWorks/WebView/View/WebViewController.storyboard @@ -75,18 +75,25 @@ - + + + + + + + + diff --git a/AgileWorks/AgileWorks/WebView/View/WebViewController.swift b/AgileWorks/AgileWorks/WebView/View/WebViewController.swift index ca3043b..41e1b56 100644 --- a/AgileWorks/AgileWorks/WebView/View/WebViewController.swift +++ b/AgileWorks/AgileWorks/WebView/View/WebViewController.swift @@ -15,6 +15,8 @@ class WebViewController: UIViewController { @IBOutlet private var disablingView: UIView! @IBOutlet private var disconnectLabel: UILabel! @IBOutlet private var checkConnectButton: UIButton! + @IBOutlet private var closeButton: UIBarButtonItem! + @IBOutlet private var menuButton: UIBarButtonItem! var mainWebView: WKWebView! // WebView 表示用 JSESSIONID var sessionId: String! @@ -22,6 +24,7 @@ class WebViewController: UIViewController { var subWebViewStack = SubWebViewStack() var loadURL: String! var naviTitle: String! + var showNotification = false // UserAgent let kCustomUserAgent = "AwMobileApp Safari/605.1.15" var messageHandler: WebViewScriptMessageHandler! @@ -45,6 +48,19 @@ class WebViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() + // naviBarButton 設定 + if self.showNotification { + // 通知からの起動 + self.closeButton.title = localizadString(key: "Close", comment: "") + self.closeButton.isEnabled = true + // メニューボタンを消す + self.menuButton.image = nil + self.menuButton.isEnabled = false + } else { + // 通常起動 + self.closeButton.isEnabled = false + self.menuButton.isEnabled = true + } self.subWebViewStack.eventDelegate = self self.updateSession(isInit: true) @@ -281,6 +297,10 @@ class WebViewController: UIViewController { self.refreshControl.endRefreshing() } + @IBAction private func closeTapped() { + self.dismiss(animated: true, completion: nil) + } + // 接続確認ボタンタップ処理 @IBAction private func checkConnectTapped() { // 2重タップ防止 diff --git a/AgileWorks/AgileWorks/WebView/View/WebViewScriptMessageHandler.swift b/AgileWorks/AgileWorks/WebView/View/WebViewScriptMessageHandler.swift index 1b2c5e8..8328452 100644 --- a/AgileWorks/AgileWorks/WebView/View/WebViewScriptMessageHandler.swift +++ b/AgileWorks/AgileWorks/WebView/View/WebViewScriptMessageHandler.swift @@ -27,13 +27,13 @@ class WebViewScriptMessageHandler: NSObject { } } ] - + private unowned let webViewController: WebViewController - + init(webViewController: WebViewController) { self.webViewController = webViewController } - + func registerHandlers(controller: WKUserContentController) { for message in WebViewScriptMessageHandler.messageHandlers.keys { controller.add(self, name: message) -- GitLab From 50231fe9a338f91e42d5c94fc2827a3903c452ac Mon Sep 17 00:00:00 2001 From: Gk40002148 Date: Tue, 22 Mar 2022 09:15:26 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=E9=80=9A=E7=9F=A5=E3=81=8B=E3=82=89?= =?UTF-8?q?=E3=81=AE=E6=83=85=E5=A0=B1=E8=A8=AD=E5=AE=9A=E9=83=A8=E5=88=86?= =?UTF-8?q?=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Main/Wireframe/MainTabBarViewWireframe.swift | 7 +++++-- AgileWorks/AgileWorks/WebView/Builder/WebViewBuilder.swift | 6 ++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/AgileWorks/AgileWorks/Main/Wireframe/MainTabBarViewWireframe.swift b/AgileWorks/AgileWorks/Main/Wireframe/MainTabBarViewWireframe.swift index 9706865..a3895cc 100644 --- a/AgileWorks/AgileWorks/Main/Wireframe/MainTabBarViewWireframe.swift +++ b/AgileWorks/AgileWorks/Main/Wireframe/MainTabBarViewWireframe.swift @@ -45,8 +45,11 @@ extension MainTabBarViewWireframeImpl: MainTabBarViewWireframe { */ } func showDocForm(notificationData: NotificationData) { - let modalWebVC = WebViewBuilderImpl().build() - // URL 設定、タイトルも + let modalWebVC = WebViewBuilderImpl().buildVC() + // URL , タイトル設定 + modalWebVC.loadURL = notificationData.url + modalWebVC.naviTitle = notificationData.title + modalWebVC.showNotification = true let nav = UINavigationController(rootViewController: modalWebVC) nav.modalPresentationStyle = .fullScreen self.viewController.present(nav, animated: true, completion: nil) diff --git a/AgileWorks/AgileWorks/WebView/Builder/WebViewBuilder.swift b/AgileWorks/AgileWorks/WebView/Builder/WebViewBuilder.swift index 9c004a6..1a15758 100644 --- a/AgileWorks/AgileWorks/WebView/Builder/WebViewBuilder.swift +++ b/AgileWorks/AgileWorks/WebView/Builder/WebViewBuilder.swift @@ -10,6 +10,7 @@ import UIKit protocol WebViewBuilder { func build() -> UINavigationController + func buildVC() -> WebViewController } struct WebViewBuilderImpl: WebViewBuilder { @@ -22,6 +23,11 @@ struct WebViewBuilderImpl: WebViewBuilder { navigationController.setViewControllers([viewController], animated: false) return navigationController } + + func buildVC() -> WebViewController { + let viewController = storyboard() + return viewController + } } extension WebViewBuilderImpl { -- GitLab