From 008bec50f7d1c763f1668b3cd7f19b5c4521a470 Mon Sep 17 00:00:00 2001 From: Azuma Kasumi Date: Thu, 7 Apr 2022 15:22:17 +0900 Subject: [PATCH 1/3] =?UTF-8?q?widget=E3=83=AA=E3=83=B3=E3=82=AF=E3=82=B8?= =?UTF-8?q?=E3=83=A3=E3=83=B3=E3=83=97=E3=83=BBsessionId=E3=82=AD=E3=83=BC?= =?UTF-8?q?=E3=83=81=E3=82=A7=E3=83=BC=E3=83=B3=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AgileWorks.xcodeproj/project.pbxproj | 6 +- .../AgileWorks/App/RootViewController.swift | 2 +- .../Login/View/LoginViewController.swift | 56 ++++++++++++- .../Main/View/MainTabBarViewController.swift | 2 +- .../Wireframe/MainTabBarViewWireframe.swift | 15 ++++ .../Strings/Chinese-Simplified.strings | 2 +- .../Strings/Chinese-Traditional.strings | 2 +- AgileWorks/AgileWorks/Strings/English.strings | 2 +- .../AgileWorks/Strings/Japanese.strings | 2 +- .../Strings/en.lproj/Localizable.strings | 2 +- .../Strings/ja.lproj/Localizable.strings | 2 +- .../Strings/zh-Hans.lproj/Localizable.strings | 2 +- .../Strings/zh-Hant.lproj/Localizable.strings | 2 +- .../WebView/View/WebViewController.swift | 44 ++++++++-- .../WidgetExtension/WidgetExtension.swift | 82 +++++++++++++++---- 15 files changed, 184 insertions(+), 39 deletions(-) diff --git a/AgileWorks/AgileWorks.xcodeproj/project.pbxproj b/AgileWorks/AgileWorks.xcodeproj/project.pbxproj index a93c4e3..bfea8ce 100644 --- a/AgileWorks/AgileWorks.xcodeproj/project.pbxproj +++ b/AgileWorks/AgileWorks.xcodeproj/project.pbxproj @@ -1667,7 +1667,7 @@ COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = "4TWZNUHVN6"; + DEVELOPMENT_TEAM = 4TWZNUHVN6; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -1747,7 +1747,7 @@ COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = "4TWZNUHVN6"; + DEVELOPMENT_TEAM = 4TWZNUHVN6; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -1798,7 +1798,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = "4TWZNUHVN6"; + DEVELOPMENT_TEAM = 4TWZNUHVN6; INFOPLIST_FILE = ShareExtension/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( diff --git a/AgileWorks/AgileWorks/App/RootViewController.swift b/AgileWorks/AgileWorks/App/RootViewController.swift index 28df74b..285463f 100644 --- a/AgileWorks/AgileWorks/App/RootViewController.swift +++ b/AgileWorks/AgileWorks/App/RootViewController.swift @@ -123,7 +123,7 @@ extension RootViewController { 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/Login/View/LoginViewController.swift b/AgileWorks/AgileWorks/Login/View/LoginViewController.swift index b0d76e7..2b38a2d 100644 --- a/AgileWorks/AgileWorks/Login/View/LoginViewController.swift +++ b/AgileWorks/AgileWorks/Login/View/LoginViewController.swift @@ -193,9 +193,7 @@ class LoginViewController: UIViewController { presenter.fetch() { result in switch result { case .success: - DispatchQueue.main.async { - AppDelegate.shared.rootViewController.switchToMainScreen() - } + self.setSessionId() case .failure(let error): log.e(error) DispatchQueue.main.async { @@ -207,6 +205,58 @@ class LoginViewController: UIViewController { } } } + + //sessionIdの取得 + private func setSessionId() { + let sessionEndpoint = GetSessionEndpoint() + + Session.send(sessionEndpoint) { result in + switch result { + // セッション情報取得成功 + case .success(let response): + KeychainDataStore().writeSessionID(sessionID: response.sessionId) + DispatchQueue.main.async { + //メイン画面表示 + AppDelegate.shared.rootViewController.switchToMainScreen() + } + // セッション情報取得失敗 + case .failure(let error): + var refreshError = false + log.e(error) + switch error { + case .connectionError(let err): + switch err { + case ResponseError.tokenInvalid: + refreshError = true + default: + break + } + case .requestError(_): + break + case .responseStatusError(_): + break + case .responseError(_): + break + } + // リフレッシュトークン更新エラーの場合 + if refreshError { + DispatchQueue.main.async { + let title = localizadString(key: "RefreshTokenUpdateErrorTitle", comment: "") + let message = localizadString(key: "RefreshTokenUpdateError", comment: "") + let defaultAction = AppDelegate.shared.rootViewController.logoutDefaultAction(title: localizadString(key: "OK", comment: "")) + AppDelegate.shared.rootViewController.showAlertScreen(view: self, title: title, message: message, defaultAction: defaultAction, cancelAction: nil) + } + // その他エラーの場合 + } else { + DispatchQueue.main.async { + let message = localizadString(key: "UnknownNetworkError", comment: "") + let defaultAction = UIAlertAction(title: localizadString(key: "OK", comment: ""), style: .default) { _ in } + AppDelegate.shared.rootViewController.showAlertScreen(view: self, title: "", message: message, defaultAction: defaultAction, cancelAction: nil) + } + } + } + } + } // QRコードリードボタンタップ処理 @IBAction private func qrCodeStartupTapped() { diff --git a/AgileWorks/AgileWorks/Main/View/MainTabBarViewController.swift b/AgileWorks/AgileWorks/Main/View/MainTabBarViewController.swift index a11006b..7aff364 100644 --- a/AgileWorks/AgileWorks/Main/View/MainTabBarViewController.swift +++ b/AgileWorks/AgileWorks/Main/View/MainTabBarViewController.swift @@ -13,7 +13,7 @@ class MainTabBarViewController: UITabBarController { var screenPath: String? { didSet { - wireframe.showApprovalDetail(id: (String(self.screenPath!.suffix(1)))) + wireframe.showApprovalDetail(id: (String(self.screenPath!))) } } diff --git a/AgileWorks/AgileWorks/Main/Wireframe/MainTabBarViewWireframe.swift b/AgileWorks/AgileWorks/Main/Wireframe/MainTabBarViewWireframe.swift index 0f3d9aa..0fdff03 100644 --- a/AgileWorks/AgileWorks/Main/Wireframe/MainTabBarViewWireframe.swift +++ b/AgileWorks/AgileWorks/Main/Wireframe/MainTabBarViewWireframe.swift @@ -25,6 +25,21 @@ extension MainTabBarViewWireframeImpl: MainTabBarViewWireframe { func showApprovalDetail(id: String) { // ウィジェットからの起動 // 以下、XPoint時のコード + let workNum = 1 + viewController.selectedIndex = workNum + + let storyboard = UIStoryboard(name: "WebViewController", bundle: nil) + let view = viewController.children[workNum] as! UINavigationController + let workVC = view.viewControllers[view.viewControllers.count - 1] as! WebViewController + + //ウィジェットから起動する + workVC.openByWidget = true + + //viewの読み込み + workVC.loadViewIfNeeded() + workVC.widgetLoadWebView(url: id) + //workVC.widgetLoadWebView(url: id) + /* let approvalDetailVC = ApprovalDetailBuilderImpl().build() approvalDetailVC.detailId = id diff --git a/AgileWorks/AgileWorks/Strings/Chinese-Simplified.strings b/AgileWorks/AgileWorks/Strings/Chinese-Simplified.strings index 1e27cec..ad3fde4 100644 --- a/AgileWorks/AgileWorks/Strings/Chinese-Simplified.strings +++ b/AgileWorks/AgileWorks/Strings/Chinese-Simplified.strings @@ -177,7 +177,7 @@ "Demand" = "催促あり"; "Share" = "共有した"; "Shared" = "共有された"; -"Circulation" = "回付予定"; +"FuturePass" = "回付予定"; "StatusCheckWidgetName" = "状況確認ウィジェット"; "StatusCheckWidgetDescription" = "状況確認ウィジェットの説明"; diff --git a/AgileWorks/AgileWorks/Strings/Chinese-Traditional.strings b/AgileWorks/AgileWorks/Strings/Chinese-Traditional.strings index 20c8f1f..5420cc4 100644 --- a/AgileWorks/AgileWorks/Strings/Chinese-Traditional.strings +++ b/AgileWorks/AgileWorks/Strings/Chinese-Traditional.strings @@ -177,7 +177,7 @@ "Demand" = "催促あり"; "Share" = "共有した"; "Shared" = "共有された"; -"Circulation" = "回付予定"; +"FuturePass" = "回付予定"; "StatusCheckWidgetName" = "状況確認ウィジェット"; "StatusCheckWidgetDescription" = "状況確認ウィジェットの説明"; diff --git a/AgileWorks/AgileWorks/Strings/English.strings b/AgileWorks/AgileWorks/Strings/English.strings index 8591c20..61e732b 100644 --- a/AgileWorks/AgileWorks/Strings/English.strings +++ b/AgileWorks/AgileWorks/Strings/English.strings @@ -177,7 +177,7 @@ "Demand" = "催促あり"; "Share" = "共有した"; "Shared" = "共有された"; -"Circulation" = "回付予定"; +"FuturePass" = "回付予定"; "StatusCheckWidgetName" = "状況確認ウィジェット"; "StatusCheckWidgetDescription" = "状況確認ウィジェットの説明"; diff --git a/AgileWorks/AgileWorks/Strings/Japanese.strings b/AgileWorks/AgileWorks/Strings/Japanese.strings index b17d165..bc3dba1 100644 --- a/AgileWorks/AgileWorks/Strings/Japanese.strings +++ b/AgileWorks/AgileWorks/Strings/Japanese.strings @@ -177,7 +177,7 @@ "Demand" = "催促あり"; "Share" = "共有した"; "Shared" = "共有された"; -"Circulation" = "回付予定"; +"FuturePass" = "回付予定"; "StatusCheckWidgetName" = "状況確認ウィジェット"; "StatusCheckWidgetDescription" = "状況確認ウィジェットの説明"; diff --git a/AgileWorks/AgileWorks/Strings/en.lproj/Localizable.strings b/AgileWorks/AgileWorks/Strings/en.lproj/Localizable.strings index 87b9f8b..f2ac9c2 100644 --- a/AgileWorks/AgileWorks/Strings/en.lproj/Localizable.strings +++ b/AgileWorks/AgileWorks/Strings/en.lproj/Localizable.strings @@ -177,7 +177,7 @@ "Demand" = "催促あり"; "Share" = "共有した"; "Shared" = "共有された"; -"Circulation" = "回付予定"; +"FuturePass" = "回付予定"; "StatusCheckWidgetName" = "状況確認ウィジェット"; "StatusCheckWidgetDescription" = "状況確認ウィジェットの説明"; diff --git a/AgileWorks/AgileWorks/Strings/ja.lproj/Localizable.strings b/AgileWorks/AgileWorks/Strings/ja.lproj/Localizable.strings index 2094bb6..d2446f2 100644 --- a/AgileWorks/AgileWorks/Strings/ja.lproj/Localizable.strings +++ b/AgileWorks/AgileWorks/Strings/ja.lproj/Localizable.strings @@ -177,7 +177,7 @@ "Demand" = "催促あり"; "Share" = "共有した"; "Shared" = "共有された"; -"Circulation" = "回付予定"; +"FuturePass" = "回付予定"; "StatusCheckWidgetName" = "状況確認ウィジェット"; "StatusCheckWidgetDescription" = "状況確認ウィジェットの説明"; diff --git a/AgileWorks/AgileWorks/Strings/zh-Hans.lproj/Localizable.strings b/AgileWorks/AgileWorks/Strings/zh-Hans.lproj/Localizable.strings index 579f91a..508434f 100644 --- a/AgileWorks/AgileWorks/Strings/zh-Hans.lproj/Localizable.strings +++ b/AgileWorks/AgileWorks/Strings/zh-Hans.lproj/Localizable.strings @@ -177,7 +177,7 @@ "Demand" = "催促あり"; "Share" = "共有した"; "Shared" = "共有された"; -"Circulation" = "回付予定"; +"FuturePass" = "回付予定"; "StatusCheckWidgetName" = "状況確認ウィジェット"; "StatusCheckWidgetDescription" = "状況確認ウィジェットの説明"; diff --git a/AgileWorks/AgileWorks/Strings/zh-Hant.lproj/Localizable.strings b/AgileWorks/AgileWorks/Strings/zh-Hant.lproj/Localizable.strings index 1ae28db..a35aab6 100644 --- a/AgileWorks/AgileWorks/Strings/zh-Hant.lproj/Localizable.strings +++ b/AgileWorks/AgileWorks/Strings/zh-Hant.lproj/Localizable.strings @@ -177,7 +177,7 @@ "Demand" = "催促あり"; "Share" = "共有した"; "Shared" = "共有された"; -"Circulation" = "回付予定"; +"FuturePass" = "回付予定"; "StatusCheckWidgetName" = "状況確認ウィジェット"; "StatusCheckWidgetDescription" = "状況確認ウィジェットの説明"; diff --git a/AgileWorks/AgileWorks/WebView/View/WebViewController.swift b/AgileWorks/AgileWorks/WebView/View/WebViewController.swift index 41e1b56..fcbdd35 100644 --- a/AgileWorks/AgileWorks/WebView/View/WebViewController.swift +++ b/AgileWorks/AgileWorks/WebView/View/WebViewController.swift @@ -19,7 +19,6 @@ class WebViewController: UIViewController { @IBOutlet private var menuButton: UIBarButtonItem! var mainWebView: WKWebView! // WebView 表示用 JSESSIONID - var sessionId: String! // 別ウインドウで開いたときの子ウインドウスタック var subWebViewStack = SubWebViewStack() var loadURL: String! @@ -33,6 +32,9 @@ class WebViewController: UIViewController { private let queue = DispatchQueue(label: "jp.atled.agileworks") var isShowDoc = false + //widgetから新規タブを開く際のフラグ + var openByWidget = false + // 現在表示中のURL var nowURL: String! @@ -62,8 +64,11 @@ class WebViewController: UIViewController { self.menuButton.isEnabled = true } self.subWebViewStack.eventDelegate = self - self.updateSession(isInit: true) + //アプリからタブを開く + if !openByWidget { + self.updateSession(isInit: true) + } // ネットワークオフラインView関連セットアップ self.setDisconnectView() self.startNetworkMonitor() @@ -78,7 +83,7 @@ class WebViewController: UIViewController { // WebView セットアップ private func setWebView() { let userContentController = WKUserContentController() - let script = "document.cookie='JSESSIONID=\(sessionId!)'" + let script = "document.cookie='JSESSIONID=\(KeychainDataStore().readSessionID() ?? "")'" let cookieScript = WKUserScript(source: script, injectionTime: .atDocumentStart, forMainFrameOnly: false) userContentController.addUserScript(cookieScript) @@ -121,7 +126,7 @@ class WebViewController: UIViewController { // WebView ロード処理 private func loadWebView() { - let sesstionid = "JSESSIONID=" + self.sessionId! + let sesstionid = "JSESSIONID=" + KeychainDataStore().readSessionID()! let url = URL(string: self.loadURL)! var request = URLRequest(url: url, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 30.0) @@ -133,7 +138,28 @@ class WebViewController: UIViewController { \nHeaders: \(String(describing: request.allHTTPHeaderFields)) \nHTTPBody: \(String(data: request.httpBody ?? Data(), encoding: .utf8)!) """) + + mainWebView.load(request) + } + + // WidgetからWebView ロード処理 + func widgetLoadWebView(url: String) { + let sessionid = "JSESSIONID=" + KeychainDataStore().readSessionID()! + + let url = URL(string: url)! + var request = URLRequest(url: url, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 30.0) + request.httpShouldHandleCookies = false + request.setValue(sessionid, forHTTPHeaderField: "Cookie") + log.debug(""" + Session Request: \(String(describing: request.url)) + \nHTTPMethod: \(String(describing: request.httpMethod) ) + \nHeaders: \(String(describing: request.allHTTPHeaderFields)) + \nHTTPBody: \(String(data: request.httpBody ?? Data(), encoding: .utf8)!) + """) + + setWebView() mainWebView.load(request) + openByWidget = false } // sessionId を cookie にセット @@ -144,7 +170,7 @@ class WebViewController: UIViewController { HTTPCookiePropertyKey.path: "/AgileWorks", HTTPCookiePropertyKey.secure: true, HTTPCookiePropertyKey.name: "JSESSIONID", - HTTPCookiePropertyKey.value: self.sessionId! + HTTPCookiePropertyKey.value: KeychainDataStore().readSessionID()! ]) let cookieStore = self.mainWebView.configuration.websiteDataStore.httpCookieStore cookieStore.setCookie(cookie!) @@ -166,15 +192,17 @@ class WebViewController: UIViewController { // セッション情報取得成功 case .success(let response): if isInit { - self.sessionId = response.sessionId + KeychainDataStore().writeSessionID(sessionID: response.sessionId) // 画面ロード DispatchQueue.main.async { - self.setWebView() + if self.mainWebView == nil { + self.setWebView() + } self.loadWebView() } } else { // Cookie 変更 - self.sessionId = response.sessionId + KeychainDataStore().writeSessionID(sessionID: response.sessionId) self.setSessionId() } // セッション情報取得失敗 diff --git a/AgileWorks/WidgetExtension/WidgetExtension.swift b/AgileWorks/WidgetExtension/WidgetExtension.swift index 5766227..98a05f6 100644 --- a/AgileWorks/WidgetExtension/WidgetExtension.swift +++ b/AgileWorks/WidgetExtension/WidgetExtension.swift @@ -9,19 +9,29 @@ import WidgetKit import SwiftUI +let draft = "DRAFT" +let requestApplication = "REQUEST_APPLICATION" +let requestApproval = "REQUEST_APPROVAL" +let remand = "REMAND" +let checkReport = "CHECK_REPORT" +let demand = "DEMAND" +let share = "SHARE" +let shared = "SHARED" +let futurePass = "FUTUREPASS" + //ウィジェット選択のプレビュー画面などで表示させる項目 private func previewItems() -> [ApprovalItem]{ var items = [ApprovalItem]() - items.append(ApprovalItem(code: "DRAFT", name: localizadString(key: "Draft", comment: ""), count: 1)) - items.append(ApprovalItem(code: "REQUEST_APPLICATION", name: localizadString(key: "RequestApplication", comment: ""), count: 10)) - items.append(ApprovalItem(code: "REQUEST_APPROVAL", name: localizadString(key: "RequestApproval", comment: ""), count: 35)) - items.append(ApprovalItem(code: "REMAND", name: localizadString(key: "Remand", comment: ""), count: 6)) - items.append(ApprovalItem(code: "CHECK_REPORT", name: localizadString(key: "CheckReport", comment: ""), count: 10)) - items.append(ApprovalItem(code: "DEMAND", name: localizadString(key: "Demand", comment: ""), count: 0)) - items.append(ApprovalItem(code: "SHARE", name: localizadString(key: "Share", comment: ""), count: 0)) - items.append(ApprovalItem(code: "SHARED", name: localizadString(key: "Shared", comment: ""), count: 0)) - items.append(ApprovalItem(code: "CIRCULATION", name: localizadString(key: "Circulation", comment: ""), count: 0)) + items.append(ApprovalItem(code: draft, name: localizadString(key: "Draft", comment: ""), count: 1)) + items.append(ApprovalItem(code: requestApplication, name: localizadString(key: "RequestApplication", comment: ""), count: 10)) + items.append(ApprovalItem(code: requestApproval, name: localizadString(key: "RequestApproval", comment: ""), count: 35)) + items.append(ApprovalItem(code: remand, name: localizadString(key: "Remand", comment: ""), count: 6)) + items.append(ApprovalItem(code: checkReport, name: localizadString(key: "CheckReport", comment: ""), count: 10)) + items.append(ApprovalItem(code: demand, name: localizadString(key: "Demand", comment: ""), count: 0)) + items.append(ApprovalItem(code: share, name: localizadString(key: "Share", comment: ""), count: 0)) + items.append(ApprovalItem(code: shared, name: localizadString(key: "Shared", comment: ""), count: 0)) + items.append(ApprovalItem(code: futurePass, name: localizadString(key: "FuturePass", comment: ""), count: 0)) return items } @@ -139,11 +149,11 @@ struct StatusBoxView : View { ForEach(0.. String{ + var url: String = Configuration.shared.awURL + "/" + (KeychainDataStore().readContextPath() ?? "") + "/Broker/Mobile#docList_" + + switch approvalItem.code { + case draft: + url += "Draft" + case requestApplication: + url += "RequestApplication" + case requestApproval: + url += "RequestApproval" + case remand: + url += "Remand" + case checkReport: + url += "CheckReport" + case demand: + url += "HasDemand" + case share: + url += "Share" + case shared: + url += "Shared" + case futurePass: + url += "FuturePass" + default: + url = Configuration.shared.awURL + "/" + (KeychainDataStore().readContextPath() ?? "") + "/Broker/Mobile#work" + } + return url + } + + var body: some View { + Link(destination: URL(string: statusUrl())!, label: { + ApprovalItemView(approvalItem: approvalItem, message: message) + }) + } +} + //書類状況の内容を表示するビュー struct ApprovalItemView : View { let approvalItem: ApprovalItem @@ -181,15 +232,16 @@ struct ApprovalItemView : View { }else { //APIサーバーエラーの場合の表示 Text(message ?? "-") } - } - Spacer() + Spacer() } - .background(Color.white) - .cornerRadius(20) + .background(Color.white) + .cornerRadius(20) } } + + //エラー文言を表示するビュー struct FailureWidgetView : View { var entry: Provider.Entry -- GitLab From 677581c9cfbfe7fd564d7b6e46005e857be96631 Mon Sep 17 00:00:00 2001 From: Azuma Kasumi Date: Fri, 8 Apr 2022 11:42:37 +0900 Subject: [PATCH 2/3] =?UTF-8?q?=E6=89=BF=E8=AA=8D=E5=BE=85=E3=81=A1?= =?UTF-8?q?=E3=82=A6=E3=82=A3=E3=82=B8=E3=82=A7=E3=83=83=E3=83=88=E3=83=AA?= =?UTF-8?q?=E3=83=B3=E3=82=AF=E8=BF=BD=E5=8A=A0=E3=83=BB=E3=82=A6=E3=82=A3?= =?UTF-8?q?=E3=82=B8=E3=82=A7=E3=83=83=E3=83=88=E3=81=8B=E3=82=89webview?= =?UTF-8?q?=E3=82=92=E3=83=AD=E3=83=BC=E3=83=89=E3=81=99=E3=82=8B=E9=96=A2?= =?UTF-8?q?=E6=95=B0=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WebView/View/WebViewController.swift | 28 ++++--------------- .../WidgetExtension/WidgetExtension.swift | 1 + 2 files changed, 7 insertions(+), 22 deletions(-) diff --git a/AgileWorks/AgileWorks/WebView/View/WebViewController.swift b/AgileWorks/AgileWorks/WebView/View/WebViewController.swift index fcbdd35..26c672a 100644 --- a/AgileWorks/AgileWorks/WebView/View/WebViewController.swift +++ b/AgileWorks/AgileWorks/WebView/View/WebViewController.swift @@ -125,10 +125,10 @@ class WebViewController: UIViewController { } // WebView ロード処理 - private func loadWebView() { + private func loadWebView(url: String) { let sesstionid = "JSESSIONID=" + KeychainDataStore().readSessionID()! - let url = URL(string: self.loadURL)! + let url = URL(string: url)! var request = URLRequest(url: url, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 30.0) request.httpShouldHandleCookies = false request.setValue(sesstionid, forHTTPHeaderField: "Cookie") @@ -144,22 +144,8 @@ class WebViewController: UIViewController { // WidgetからWebView ロード処理 func widgetLoadWebView(url: String) { - let sessionid = "JSESSIONID=" + KeychainDataStore().readSessionID()! - - let url = URL(string: url)! - var request = URLRequest(url: url, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 30.0) - request.httpShouldHandleCookies = false - request.setValue(sessionid, forHTTPHeaderField: "Cookie") - log.debug(""" - Session Request: \(String(describing: request.url)) - \nHTTPMethod: \(String(describing: request.httpMethod) ) - \nHeaders: \(String(describing: request.allHTTPHeaderFields)) - \nHTTPBody: \(String(data: request.httpBody ?? Data(), encoding: .utf8)!) - """) - setWebView() - mainWebView.load(request) - openByWidget = false + loadWebView(url: url) } // sessionId を cookie にセット @@ -195,10 +181,8 @@ class WebViewController: UIViewController { KeychainDataStore().writeSessionID(sessionID: response.sessionId) // 画面ロード DispatchQueue.main.async { - if self.mainWebView == nil { - self.setWebView() - } - self.loadWebView() + self.setWebView() + self.loadWebView(url:self.loadURL) } } else { // Cookie 変更 @@ -427,7 +411,7 @@ extension WebViewController: UITabBarControllerDelegate { func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) { if loadURL != nowURL { setWebView() - loadWebView() + loadWebView(url: self.loadURL) } } } diff --git a/AgileWorks/WidgetExtension/WidgetExtension.swift b/AgileWorks/WidgetExtension/WidgetExtension.swift index 98a05f6..9168f35 100644 --- a/AgileWorks/WidgetExtension/WidgetExtension.swift +++ b/AgileWorks/WidgetExtension/WidgetExtension.swift @@ -111,6 +111,7 @@ struct ApprovalWidgetView : View { if entry.message == nil { if let num = findApproval() { //「承認依頼」項目あり ApprovalItemView(approvalItem: entry.approvalItems[num], message: entry.message) + .widgetURL(URL(string: Configuration.shared.awURL + "/" + (KeychainDataStore().readContextPath() ?? "") + "/Broker/Mobile#docList_" + "RequestApproval")) }else { //「承認依頼」項目なし ApprovalItemView(approvalItem: ApprovalItem(code: "", name: "", count: 0), message: "-") } -- GitLab From 300bdb56874fc1301555ac38cebe25249e432091 Mon Sep 17 00:00:00 2001 From: Azuma Kasumi Date: Fri, 8 Apr 2022 13:52:59 +0900 Subject: [PATCH 3/3] =?UTF-8?q?id=E6=96=87=E8=A8=80=E5=A4=89=E6=9B=B4?= =?UTF-8?q?=E3=83=BB=E4=B8=8D=E8=A6=81=E3=82=B3=E3=83=BC=E3=83=89=E5=89=8A?= =?UTF-8?q?=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Main/View/MainTabBarViewController.swift | 2 +- .../Wireframe/MainTabBarViewWireframe.swift | 26 +++---------------- 2 files changed, 4 insertions(+), 24 deletions(-) diff --git a/AgileWorks/AgileWorks/Main/View/MainTabBarViewController.swift b/AgileWorks/AgileWorks/Main/View/MainTabBarViewController.swift index 7aff364..5037bd2 100644 --- a/AgileWorks/AgileWorks/Main/View/MainTabBarViewController.swift +++ b/AgileWorks/AgileWorks/Main/View/MainTabBarViewController.swift @@ -13,7 +13,7 @@ class MainTabBarViewController: UITabBarController { var screenPath: String? { didSet { - wireframe.showApprovalDetail(id: (String(self.screenPath!))) + wireframe.showApprovalDetail(url: (String(self.screenPath!))) } } diff --git a/AgileWorks/AgileWorks/Main/Wireframe/MainTabBarViewWireframe.swift b/AgileWorks/AgileWorks/Main/Wireframe/MainTabBarViewWireframe.swift index 0fdff03..368a239 100644 --- a/AgileWorks/AgileWorks/Main/Wireframe/MainTabBarViewWireframe.swift +++ b/AgileWorks/AgileWorks/Main/Wireframe/MainTabBarViewWireframe.swift @@ -9,7 +9,7 @@ import UIKit protocol MainTabBarViewWireframe: AnyObject { - func showApprovalDetail(id: String) + func showApprovalDetail(url: String) func showDocForm(notificationData: NotificationData) } @@ -22,7 +22,7 @@ class MainTabBarViewWireframeImpl { } extension MainTabBarViewWireframeImpl: MainTabBarViewWireframe { - func showApprovalDetail(id: String) { + func showApprovalDetail(url: String) { // ウィジェットからの起動 // 以下、XPoint時のコード let workNum = 1 @@ -37,27 +37,7 @@ extension MainTabBarViewWireframeImpl: MainTabBarViewWireframe { //viewの読み込み workVC.loadViewIfNeeded() - workVC.widgetLoadWebView(url: id) - //workVC.widgetLoadWebView(url: id) - - /* - 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) - } - */ + workVC.widgetLoadWebView(url: url) } // 通知から書類表示 func showDocForm(notificationData: NotificationData) { -- GitLab