From e5da723472ae709cc3d39abafb4926f7cd6cee60 Mon Sep 17 00:00:00 2001 From: Azuma Kasumi Date: Tue, 29 Mar 2022 15:44:51 +0900 Subject: [PATCH 1/5] =?UTF-8?q?widget=20extension=20UI=E5=AF=BE=E5=BF=9C?= =?UTF-8?q?=E3=83=BBAPI=E9=80=A3=E6=90=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AgileWorks.xcodeproj/project.pbxproj | 360 ++++++++++++++++-- .../TodayExtension-Production.xcscheme | 11 + .../xcschemes/WidgetExtension.xcscheme | 123 ++++++ .../AgileWorks/App/RootViewController.swift | 5 + .../Common/Entity/ApprovalResponse.swift | 7 +- AgileWorks/Common/OAuthService.swift | 5 + .../WebClient/GetApprovalsEndpoint.swift | 2 +- AgileWorks/Common/WebClient/Session.swift | 2 +- .../Debug-Production-Widget.xcconfig | 13 + .../Flavor/Production-Widget.xcconfig | 17 + .../Release-Production-Widget.xcconfig | 13 + .../View/TodayViewController.swift | 4 +- .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 98 +++++ .../Assets.xcassets/Contents.json | 6 + .../WidgetBackground.colorset/Contents.json | 11 + AgileWorks/WidgetExtension/Info.plist | 20 + .../WidgetExtension.entitlements | 10 + .../WidgetExtension/WidgetExtension.swift | 239 ++++++++++++ 19 files changed, 926 insertions(+), 31 deletions(-) create mode 100644 AgileWorks/AgileWorks.xcodeproj/xcshareddata/xcschemes/WidgetExtension.xcscheme create mode 100644 AgileWorks/Configurations/Debug-Production-Widget.xcconfig create mode 100644 AgileWorks/Configurations/Flavor/Production-Widget.xcconfig create mode 100644 AgileWorks/Configurations/Release-Production-Widget.xcconfig create mode 100644 AgileWorks/WidgetExtension/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 AgileWorks/WidgetExtension/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 AgileWorks/WidgetExtension/Assets.xcassets/Contents.json create mode 100644 AgileWorks/WidgetExtension/Assets.xcassets/WidgetBackground.colorset/Contents.json create mode 100644 AgileWorks/WidgetExtension/Info.plist create mode 100644 AgileWorks/WidgetExtension/WidgetExtension.entitlements create mode 100644 AgileWorks/WidgetExtension/WidgetExtension.swift diff --git a/AgileWorks/AgileWorks.xcodeproj/project.pbxproj b/AgileWorks/AgileWorks.xcodeproj/project.pbxproj index 853fc4b..eab7710 100644 --- a/AgileWorks/AgileWorks.xcodeproj/project.pbxproj +++ b/AgileWorks/AgileWorks.xcodeproj/project.pbxproj @@ -24,6 +24,11 @@ 3AED7EE42449387600FC6BCC /* SearchResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AED7EE32449387600FC6BCC /* SearchResponse.swift */; }; 3AF4A84524A06A73006C0C0A /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 3AF4A84724A06A73006C0C0A /* Localizable.strings */; }; 430C967B2E966FC047726763 /* Pods_All_AgileWorks.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CF516C40B9AA44C977664C98 /* Pods_All_AgileWorks.framework */; }; + 7549FC8F27EAF42C00FF9E0C /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 3AF4A84724A06A73006C0C0A /* Localizable.strings */; }; + 7549FC9027EAF42C00FF9E0C /* English.strings in Resources */ = {isa = PBXBuildFile; fileRef = 75917F9D27BDF1C30051E201 /* English.strings */; }; + 7549FC9127EAF42C00FF9E0C /* Japanese.strings in Resources */ = {isa = PBXBuildFile; fileRef = 75917F9B27BDF0F10051E201 /* Japanese.strings */; }; + 7549FC9227EAF42C00FF9E0C /* Chinese-Simplified.strings in Resources */ = {isa = PBXBuildFile; fileRef = 75917F9F27BDF2050051E201 /* Chinese-Simplified.strings */; }; + 7549FC9327EAF42C00FF9E0C /* Chinese-Traditional.strings in Resources */ = {isa = PBXBuildFile; fileRef = 75917FA127BDF2250051E201 /* Chinese-Traditional.strings */; }; 75917F9C27BDF0F10051E201 /* Japanese.strings in Resources */ = {isa = PBXBuildFile; fileRef = 75917F9B27BDF0F10051E201 /* Japanese.strings */; }; 75917F9E27BDF1C30051E201 /* English.strings in Resources */ = {isa = PBXBuildFile; fileRef = 75917F9D27BDF1C30051E201 /* English.strings */; }; 75917FA027BDF2050051E201 /* Chinese-Simplified.strings in Resources */ = {isa = PBXBuildFile; fileRef = 75917F9F27BDF2050051E201 /* Chinese-Simplified.strings */; }; @@ -44,6 +49,30 @@ 75917FB527C371390051E201 /* StringsUtility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75917FB227C371390051E201 /* StringsUtility.swift */; }; 75917FB627C372C80051E201 /* XCGLoggerExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD8D55D82420609000A667B0 /* XCGLoggerExtensions.swift */; }; 75917FB727C373060051E201 /* UserDefaultsExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDAB1F6C240D0D0000EA15FD /* UserDefaultsExtensions.swift */; }; + 75EF9CAE27E9E983003178A3 /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75EF9CAD27E9E983003178A3 /* WidgetKit.framework */; }; + 75EF9CB027E9E983003178A3 /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75EF9CAF27E9E983003178A3 /* SwiftUI.framework */; }; + 75EF9CB327E9E983003178A3 /* WidgetExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75EF9CB227E9E983003178A3 /* WidgetExtension.swift */; }; + 75EF9CB527E9E984003178A3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 75EF9CB427E9E984003178A3 /* Assets.xcassets */; }; + 75EF9CB927E9E985003178A3 /* WidgetExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 75EF9CAC27E9E983003178A3 /* WidgetExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + 75EF9CC027E9EC88003178A3 /* NumberUtility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 761F49E1255511A1007708D8 /* NumberUtility.swift */; }; + 75EF9CC127E9EC90003178A3 /* CertificateDataStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 764D0DB0257F44DF00AB6617 /* CertificateDataStore.swift */; }; + 75EF9CC227E9ECD2003178A3 /* GetSessionEndpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDAB1F70240D0E5C00EA15FD /* GetSessionEndpoint.swift */; }; + 75EF9CC327E9ECDB003178A3 /* KeychainDataStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDEA2CD4246CDAEF00D3E15F /* KeychainDataStore.swift */; }; + 75EF9CC427E9ECE5003178A3 /* URLAuthenticationUtility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 764D0E1A2580ABCB00AB6617 /* URLAuthenticationUtility.swift */; }; + 75EF9CC527E9ECEF003178A3 /* SessionInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD969630240C9CD400521925 /* SessionInfo.swift */; }; + 75EF9CC627E9ECEF003178A3 /* Session.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD25F852242A05510014B726 /* Session.swift */; }; + 75EF9CC727E9ECF9003178A3 /* APIEndpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDAB1F6E240D0D1400EA15FD /* APIEndpoint.swift */; }; + 75EF9CC827E9ED18003178A3 /* UserDefaultsDataStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD928CCD2407500400ED04C2 /* UserDefaultsDataStore.swift */; }; + 75EF9CC927E9ED18003178A3 /* UserDefaultsExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDAB1F6C240D0D0000EA15FD /* UserDefaultsExtensions.swift */; }; + 75EF9CCA27E9ED21003178A3 /* APIResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD86A6B024067EB3007B48F1 /* APIResult.swift */; }; + 75EF9CCB27E9ED28003178A3 /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD5061B3242866780014F3FA /* Configuration.swift */; }; + 75EF9CCC27E9ED3B003178A3 /* ApprovalResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31AA002E24347BBD000177B4 /* ApprovalResponse.swift */; }; + 75EF9CCD27E9ED53003178A3 /* GetApprovalsEndpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD904167243B2994009D0B19 /* GetApprovalsEndpoint.swift */; }; + 75EF9CCE27E9ED5F003178A3 /* Log.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDA74C5524501917000D4351 /* Log.swift */; }; + 75EF9CCF27E9ED6D003178A3 /* ErrorResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD7DC0F124C0608800C3FBED /* ErrorResponse.swift */; }; + 75EF9CD027E9ED7B003178A3 /* StringsUtility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75917FB227C371390051E201 /* StringsUtility.swift */; }; + 75EF9CD127E9ED82003178A3 /* XCGLoggerExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD8D55D82420609000A667B0 /* XCGLoggerExtensions.swift */; }; + 75EF9CD227E9ED8C003178A3 /* OAuthService.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD72589E240E69E000928CE9 /* OAuthService.swift */; }; 7604950425380980000D6951 /* FirebaseSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7604950325380980000D6951 /* FirebaseSupport.swift */; }; 761F49E2255511A1007708D8 /* NumberUtility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 761F49E1255511A1007708D8 /* NumberUtility.swift */; }; 761F4A0925551FCF007708D8 /* NumberUtility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 761F49E1255511A1007708D8 /* NumberUtility.swift */; }; @@ -180,6 +209,13 @@ remoteGlobalIDString = 3127EE09241A2A9500535CC7; remoteInfo = TodayExtension; }; + 75EF9CB727E9E984003178A3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BDA1830723F3FD7F00C9A6DD /* Project object */; + proxyType = 1; + remoteGlobalIDString = 75EF9CAB27E9E983003178A3; + remoteInfo = WidgetExtensionExtension; + }; 7672AD71257EFF500063884A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BDA1830723F3FD7F00C9A6DD /* Project object */; @@ -198,6 +234,7 @@ files = ( 7672AD73257EFF500063884A /* ShareExtension.appex in Embed App Extensions */, 3127EE16241A2A9500535CC7 /* TodayExtension.appex in Embed App Extensions */, + 75EF9CB927E9E985003178A3 /* WidgetExtension.appex in Embed App Extensions */, ); name = "Embed App Extensions"; runOnlyForDeploymentPostprocessing = 0; @@ -221,6 +258,7 @@ 3AED7EE32449387600FC6BCC /* SearchResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResponse.swift; sourceTree = ""; }; 3AF4A84624A06A73006C0C0A /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; 3AF4A84824A06AD0006C0C0A /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = ""; }; + 7503F77D27EAF7E00074A76E /* WidgetExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = WidgetExtension.entitlements; sourceTree = ""; }; 75917F8F27BD315A0051E201 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/LaunchScreen.strings"; sourceTree = ""; }; 75917F9027BD315A0051E201 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/MainInterface.strings"; sourceTree = ""; }; 75917F9227BD315A0051E201 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = ""; }; @@ -232,6 +270,15 @@ 75917F9F27BDF2050051E201 /* Chinese-Simplified.strings */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; path = "Chinese-Simplified.strings"; sourceTree = ""; }; 75917FA127BDF2250051E201 /* Chinese-Traditional.strings */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; path = "Chinese-Traditional.strings"; sourceTree = ""; }; 75917FB227C371390051E201 /* StringsUtility.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StringsUtility.swift; sourceTree = ""; }; + 75EF9CAC27E9E983003178A3 /* WidgetExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = WidgetExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; + 75EF9CAD27E9E983003178A3 /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; }; + 75EF9CAF27E9E983003178A3 /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = System/Library/Frameworks/SwiftUI.framework; sourceTree = SDKROOT; }; + 75EF9CB227E9E983003178A3 /* WidgetExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WidgetExtension.swift; sourceTree = ""; }; + 75EF9CB427E9E984003178A3 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 75EF9CB627E9E984003178A3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 75EF9CBD27E9EB6E003178A3 /* Production-Widget.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Production-Widget.xcconfig"; sourceTree = ""; }; + 75EF9CBE27E9EB93003178A3 /* Debug-Production-Widget.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Debug-Production-Widget.xcconfig"; sourceTree = ""; }; + 75EF9CBF27E9EBB3003178A3 /* Release-Production-Widget.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Release-Production-Widget.xcconfig"; sourceTree = ""; }; 7604950325380980000D6951 /* FirebaseSupport.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FirebaseSupport.swift; sourceTree = ""; }; 761F49E1255511A1007708D8 /* NumberUtility.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NumberUtility.swift; sourceTree = ""; }; 761F4A48255D15DA007708D8 /* AppShared.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppShared.swift; sourceTree = ""; }; @@ -366,6 +413,15 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 75EF9CA927E9E983003178A3 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 75EF9CB027E9E983003178A3 /* SwiftUI.framework in Frameworks */, + 75EF9CAE27E9E983003178A3 /* WidgetKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 7672AD66257EFF500063884A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -391,6 +447,8 @@ BDEB7D8F23F530A400EFAF31 /* KeychainAccess.framework */, 3127EE0B241A2A9500535CC7 /* NotificationCenter.framework */, CF516C40B9AA44C977664C98 /* Pods_All_AgileWorks.framework */, + 75EF9CAD27E9E983003178A3 /* WidgetKit.framework */, + 75EF9CAF27E9E983003178A3 /* SwiftUI.framework */, ); name = Frameworks; sourceTree = ""; @@ -463,6 +521,17 @@ path = Strings; sourceTree = ""; }; + 75EF9CB127E9E983003178A3 /* WidgetExtension */ = { + isa = PBXGroup; + children = ( + 7503F77D27EAF7E00074A76E /* WidgetExtension.entitlements */, + 75EF9CB227E9E983003178A3 /* WidgetExtension.swift */, + 75EF9CB427E9E984003178A3 /* Assets.xcassets */, + 75EF9CB627E9E984003178A3 /* Info.plist */, + ); + path = WidgetExtension; + sourceTree = ""; + }; 761F49E025551159007708D8 /* Utility */ = { isa = PBXGroup; children = ( @@ -632,6 +701,8 @@ BD5061AF242848560014F3FA /* Release-Production-Today.xcconfig */, 764D0DFF257F602400AB6617 /* Debug-Production-Share.xcconfig */, 764D0E00257F603400AB6617 /* Release-Production-Share.xcconfig */, + 75EF9CBE27E9EB93003178A3 /* Debug-Production-Widget.xcconfig */, + 75EF9CBF27E9EBB3003178A3 /* Release-Production-Widget.xcconfig */, ); path = Configurations; sourceTree = ""; @@ -643,6 +714,7 @@ BD50619B242844CC0014F3FA /* Production.xcconfig */, BD5061A1242845750014F3FA /* Production-Today.xcconfig */, 764D0DF7257F589D00AB6617 /* Production-Share.xcconfig */, + 75EF9CBD27E9EB6E003178A3 /* Production-Widget.xcconfig */, ); path = Flavor; sourceTree = ""; @@ -769,6 +841,7 @@ BD0231F1242B6DF3000A95BB /* Common */, 3127EE0D241A2A9500535CC7 /* TodayExtension */, 7672AD6A257EFF500063884A /* ShareExtension */, + 75EF9CB127E9E983003178A3 /* WidgetExtension */, BDA1831023F3FD7F00C9A6DD /* Products */, 833C64FFE6F6CB735DE07EB7 /* Pods */, 07A802C56A3436654CD69C43 /* Frameworks */, @@ -781,6 +854,7 @@ BDA1830F23F3FD7F00C9A6DD /* AgileWorks.app */, 3127EE0A241A2A9500535CC7 /* TodayExtension.appex */, 7672AD69257EFF500063884A /* ShareExtension.appex */, + 75EF9CAC27E9E983003178A3 /* WidgetExtension.appex */, ); name = Products; sourceTree = ""; @@ -834,14 +908,6 @@ path = WebClient; sourceTree = ""; }; - C5285D3727CCB3A1006A9182 /* Cell */ = { - isa = PBXGroup; - children = ( - C5285D3827CCB3C8006A9182 /* ProfileTableViewCell.swift */, - ); - path = Cell; - sourceTree = ""; - }; C50CF78A27D86D760042C210 /* OpenLicense */ = { isa = PBXGroup; children = ( @@ -872,6 +938,14 @@ path = View; sourceTree = ""; }; + C5285D3727CCB3A1006A9182 /* Cell */ = { + isa = PBXGroup; + children = ( + C5285D3827CCB3C8006A9182 /* ProfileTableViewCell.swift */, + ); + path = Cell; + sourceTree = ""; + }; C53577282754D02400EAA660 /* WebView */ = { isa = PBXGroup; children = ( @@ -901,14 +975,6 @@ path = View; sourceTree = ""; }; - C599740927D992B1006F5AAC /* Cell */ = { - isa = PBXGroup; - children = ( - C599740A27D992E9006F5AAC /* OpenLicenseTableViewCell.swift */, - ); - path = Cell; - sourceTree = ""; - }; C57DCAA727C8954B000A2ABC /* Profile */ = { isa = PBXGroup; children = ( @@ -928,6 +994,14 @@ path = View; sourceTree = ""; }; + C599740927D992B1006F5AAC /* Cell */ = { + isa = PBXGroup; + children = ( + C599740A27D992E9006F5AAC /* OpenLicenseTableViewCell.swift */, + ); + path = Cell; + sourceTree = ""; + }; ETCUTRCSRVUF3YT1U0HUMDJ4 /* Splash */ = { isa = PBXGroup; children = ( @@ -1017,6 +1091,23 @@ productReference = 3127EE0A241A2A9500535CC7 /* TodayExtension.appex */; productType = "com.apple.product-type.app-extension"; }; + 75EF9CAB27E9E983003178A3 /* WidgetExtension */ = { + isa = PBXNativeTarget; + buildConfigurationList = 75EF9CBC27E9E985003178A3 /* Build configuration list for PBXNativeTarget "WidgetExtension" */; + buildPhases = ( + 75EF9CA827E9E983003178A3 /* Sources */, + 75EF9CA927E9E983003178A3 /* Frameworks */, + 75EF9CAA27E9E983003178A3 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = WidgetExtension; + productName = WidgetExtensionExtension; + productReference = 75EF9CAC27E9E983003178A3 /* WidgetExtension.appex */; + productType = "com.apple.product-type.app-extension"; + }; 7672AD68257EFF500063884A /* ShareExtension */ = { isa = PBXNativeTarget; buildConfigurationList = 7672AD76257EFF500063884A /* Build configuration list for PBXNativeTarget "ShareExtension" */; @@ -1052,6 +1143,7 @@ dependencies = ( 3127EE15241A2A9500535CC7 /* PBXTargetDependency */, 7672AD72257EFF500063884A /* PBXTargetDependency */, + 75EF9CB827E9E984003178A3 /* PBXTargetDependency */, ); name = AgileWorks; productName = AgileWorks; @@ -1064,13 +1156,16 @@ BDA1830723F3FD7F00C9A6DD /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 1220; + LastSwiftUpdateCheck = 1320; LastUpgradeCheck = 1140; ORGANIZATIONNAME = "ATLED CORP"; TargetAttributes = { 3127EE09241A2A9500535CC7 = { CreatedOnToolsVersion = 11.3.1; }; + 75EF9CAB27E9E983003178A3 = { + CreatedOnToolsVersion = 13.2.1; + }; 7672AD68257EFF500063884A = { CreatedOnToolsVersion = 12.2; }; @@ -1099,6 +1194,7 @@ BDA1830E23F3FD7F00C9A6DD /* AgileWorks */, 3127EE09241A2A9500535CC7 /* TodayExtension */, 7672AD68257EFF500063884A /* ShareExtension */, + 75EF9CAB27E9E983003178A3 /* WidgetExtension */, ); }; /* End PBXProject section */ @@ -1117,6 +1213,19 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 75EF9CAA27E9E983003178A3 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7549FC8F27EAF42C00FF9E0C /* Localizable.strings in Resources */, + 7549FC9027EAF42C00FF9E0C /* English.strings in Resources */, + 7549FC9127EAF42C00FF9E0C /* Japanese.strings in Resources */, + 7549FC9227EAF42C00FF9E0C /* Chinese-Simplified.strings in Resources */, + 7549FC9327EAF42C00FF9E0C /* Chinese-Traditional.strings in Resources */, + 75EF9CB527E9E984003178A3 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 7672AD67257EFF500063884A /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -1272,6 +1381,33 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 75EF9CA827E9E983003178A3 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 75EF9CD227E9ED8C003178A3 /* OAuthService.swift in Sources */, + 75EF9CD127E9ED82003178A3 /* XCGLoggerExtensions.swift in Sources */, + 75EF9CD027E9ED7B003178A3 /* StringsUtility.swift in Sources */, + 75EF9CCF27E9ED6D003178A3 /* ErrorResponse.swift in Sources */, + 75EF9CCE27E9ED5F003178A3 /* Log.swift in Sources */, + 75EF9CCD27E9ED53003178A3 /* GetApprovalsEndpoint.swift in Sources */, + 75EF9CCC27E9ED3B003178A3 /* ApprovalResponse.swift in Sources */, + 75EF9CCB27E9ED28003178A3 /* Configuration.swift in Sources */, + 75EF9CCA27E9ED21003178A3 /* APIResult.swift in Sources */, + 75EF9CC827E9ED18003178A3 /* UserDefaultsDataStore.swift in Sources */, + 75EF9CC927E9ED18003178A3 /* UserDefaultsExtensions.swift in Sources */, + 75EF9CC727E9ECF9003178A3 /* APIEndpoint.swift in Sources */, + 75EF9CC527E9ECEF003178A3 /* SessionInfo.swift in Sources */, + 75EF9CC627E9ECEF003178A3 /* Session.swift in Sources */, + 75EF9CC427E9ECE5003178A3 /* URLAuthenticationUtility.swift in Sources */, + 75EF9CC327E9ECDB003178A3 /* KeychainDataStore.swift in Sources */, + 75EF9CC227E9ECD2003178A3 /* GetSessionEndpoint.swift in Sources */, + 75EF9CC127E9EC90003178A3 /* CertificateDataStore.swift in Sources */, + 75EF9CC027E9EC88003178A3 /* NumberUtility.swift in Sources */, + 75EF9CB327E9E983003178A3 /* WidgetExtension.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 7672AD65257EFF500063884A /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1393,6 +1529,11 @@ target = 3127EE09241A2A9500535CC7 /* TodayExtension */; targetProxy = 3127EE14241A2A9500535CC7 /* PBXContainerItemProxy */; }; + 75EF9CB827E9E984003178A3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 75EF9CAB27E9E983003178A3 /* WidgetExtension */; + targetProxy = 75EF9CB727E9E984003178A3 /* PBXContainerItemProxy */; + }; 7672AD72257EFF500063884A /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 7672AD68257EFF500063884A /* ShareExtension */; @@ -1468,14 +1609,180 @@ }; name = "Release-Production"; }; + 75EF9CBA27E9E985003178A3 /* Release-Production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 75EF9CBF27E9EBB3003178A3 /* Release-Production-Widget.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_ENTITLEMENTS = WidgetExtension/WidgetExtension.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Manual; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = "4TWZNUHVN6"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = WidgetExtension/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = WidgetExtension; + INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 ATLED CORP. All rights reserved."; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = jp.atled.agileworks.WidgetExtension; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = "Release-Production"; + }; + 75EF9CBB27E9E985003178A3 /* Debug-Production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 75EF9CBE27E9EB93003178A3 /* Debug-Production-Widget.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_ENTITLEMENTS = WidgetExtension/WidgetExtension.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Manual; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = "4TWZNUHVN6"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = WidgetExtension/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = WidgetExtension; + INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 ATLED CORP. All rights reserved."; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_BUNDLE_IDENTIFIER = jp.atled.agileworks.WidgetExtension; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = "Debug-Production"; + }; 7672AD74257EFF500063884A /* Release-Production */ = { isa = XCBuildConfiguration; baseConfigurationReference = 764D0E00257F603400AB6617 /* Release-Production-Share.xcconfig */; buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Distribution"; + 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 = ( @@ -1486,7 +1793,7 @@ MARKETING_VERSION = 1.1.0; PRODUCT_BUNDLE_IDENTIFIER = jp.atled.agileworks.ShareExtension; PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = "AgileWorks App ShareExtension Ad Hoc"; + PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -1571,7 +1878,7 @@ MTL_FAST_MATH = YES; SDKROOT = iphoneos; SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; VALIDATE_PRODUCT = YES; }; name = "Debug-Production"; @@ -1739,7 +2046,7 @@ MTL_FAST_MATH = YES; SDKROOT = iphoneos; SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; VALIDATE_PRODUCT = YES; }; name = "Release-Production"; @@ -1841,6 +2148,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = "Release-Production"; }; + 75EF9CBC27E9E985003178A3 /* Build configuration list for PBXNativeTarget "WidgetExtension" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 75EF9CBA27E9E985003178A3 /* Release-Production */, + 75EF9CBB27E9E985003178A3 /* Debug-Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Release-Production"; + }; 7672AD76257EFF500063884A /* Build configuration list for PBXNativeTarget "ShareExtension" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/AgileWorks/AgileWorks.xcodeproj/xcshareddata/xcschemes/TodayExtension-Production.xcscheme b/AgileWorks/AgileWorks.xcodeproj/xcshareddata/xcschemes/TodayExtension-Production.xcscheme index 375ce7f..2b0bb81 100644 --- a/AgileWorks/AgileWorks.xcodeproj/xcshareddata/xcschemes/TodayExtension-Production.xcscheme +++ b/AgileWorks/AgileWorks.xcodeproj/xcshareddata/xcschemes/TodayExtension-Production.xcscheme @@ -37,6 +37,14 @@ + + + + + + diff --git a/AgileWorks/AgileWorks.xcodeproj/xcshareddata/xcschemes/WidgetExtension.xcscheme b/AgileWorks/AgileWorks.xcodeproj/xcshareddata/xcschemes/WidgetExtension.xcscheme new file mode 100644 index 0000000..6f1eca6 --- /dev/null +++ b/AgileWorks/AgileWorks.xcodeproj/xcshareddata/xcschemes/WidgetExtension.xcscheme @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AgileWorks/AgileWorks/App/RootViewController.swift b/AgileWorks/AgileWorks/App/RootViewController.swift index f5e6907..6fe99fc 100644 --- a/AgileWorks/AgileWorks/App/RootViewController.swift +++ b/AgileWorks/AgileWorks/App/RootViewController.swift @@ -7,6 +7,7 @@ // import UIKit +import WidgetKit class RootViewController: UIViewController { private var current: UIViewController @@ -69,6 +70,10 @@ extension RootViewController { DispatchQueue.main.async { self.switchToLogout() + //ウィジェットの更新 + if #available(iOS 14.0, *) { + WidgetCenter.shared.reloadAllTimelines() + } } } } diff --git a/AgileWorks/Common/Entity/ApprovalResponse.swift b/AgileWorks/Common/Entity/ApprovalResponse.swift index b9a0316..ccb0ee5 100644 --- a/AgileWorks/Common/Entity/ApprovalResponse.swift +++ b/AgileWorks/Common/Entity/ApprovalResponse.swift @@ -9,16 +9,13 @@ import Foundation struct ApprovalResponse: Codable { - let itemCount: Int let items: [ApprovalItem] } struct ApprovalItem: Codable { - let id: Int + let code: String let name: String - let docCount: Int - let itemCount: Int - let items: [ApprovalSubItem] + let count: Int } struct ApprovalSubItem: Codable { diff --git a/AgileWorks/Common/OAuthService.swift b/AgileWorks/Common/OAuthService.swift index 0f90106..6141dc1 100644 --- a/AgileWorks/Common/OAuthService.swift +++ b/AgileWorks/Common/OAuthService.swift @@ -8,6 +8,7 @@ import AppAuth import Foundation +import WidgetKit public enum OAuthError: Error { case noOAuthStateError @@ -51,6 +52,10 @@ public class OAuthService: NSObject { } KeychainDataStore().writeAccessToken(accessToken: accessToken) + //ウィジェットの更新 + if #available(iOS 14.0, *) { + WidgetCenter.shared.reloadAllTimelines() + } completion(.success(())) } else { self.setAuthState(nil) diff --git a/AgileWorks/Common/WebClient/GetApprovalsEndpoint.swift b/AgileWorks/Common/WebClient/GetApprovalsEndpoint.swift index 5cfa4fc..af9d888 100644 --- a/AgileWorks/Common/WebClient/GetApprovalsEndpoint.swift +++ b/AgileWorks/Common/WebClient/GetApprovalsEndpoint.swift @@ -19,7 +19,7 @@ struct GetApprovalsEndpoint: APIEndpoint { typealias Response = ApprovalResponse let method: HttpMethod = .GET - let path = "/xpoint/x/v1/approvals" + let path = "/" + (KeychainDataStore().readContextPath() ?? "") + "/Broker/MobileAppApi/Approvals" var headerFields: [String: String]? { return ["Authorization": "Bearer \(KeychainDataStore().readAccessToken() ?? "")", diff --git a/AgileWorks/Common/WebClient/Session.swift b/AgileWorks/Common/WebClient/Session.swift index da0f712..91713b8 100644 --- a/AgileWorks/Common/WebClient/Session.swift +++ b/AgileWorks/Common/WebClient/Session.swift @@ -34,7 +34,7 @@ class Session { class func send(_ request: T, completion: @escaping (Result) -> Void) -> URLSessionTask? { let req = request.request log.debug("Session Request: \(String(describing: req.url))\nHTTPMethod: \(String(describing: req.httpMethod) )\nHeaders: \(String(describing: req.allHTTPHeaderFields))\nHTTPBody: \(String(data: req.httpBody ?? Data(), encoding: .utf8)!)") - + print("Session Request: \(String(describing: req.url))\nHTTPMethod: \(String(describing: req.httpMethod) )\nHeaders: \(String(describing: req.allHTTPHeaderFields))\nHTTPBody: \(String(data: req.httpBody ?? Data(), encoding: .utf8)!)") let task = shared.dataTask(with: req) { data, response, error in let result: Result let res = response as? HTTPURLResponse diff --git a/AgileWorks/Configurations/Debug-Production-Widget.xcconfig b/AgileWorks/Configurations/Debug-Production-Widget.xcconfig new file mode 100644 index 0000000..bf2e856 --- /dev/null +++ b/AgileWorks/Configurations/Debug-Production-Widget.xcconfig @@ -0,0 +1,13 @@ +// +// Debug-Production-Widget.xcconfig +// AgileWorks +// +// Created by Azuma Kasumi on 2022/03/22. +// Copyright © 2022 ATLED CORP. All rights reserved. +// + +// Configuration settings file format documentation can be found at: +// https://help.apple.com/xcode/#/dev745c5c974 +#include "../Pods/Target Support Files/Pods-All-AgileWorks/Pods-All-AgileWorks.debug-production.xcconfig" +#include "Build/Debug.xcconfig" +#include "Flavor/Production-Widget.xcconfig" diff --git a/AgileWorks/Configurations/Flavor/Production-Widget.xcconfig b/AgileWorks/Configurations/Flavor/Production-Widget.xcconfig new file mode 100644 index 0000000..7598431 --- /dev/null +++ b/AgileWorks/Configurations/Flavor/Production-Widget.xcconfig @@ -0,0 +1,17 @@ +// +// Production-Widget.xcconfig +// AgileWorks +// +// Created by Azuma Kasumi on 2022/03/22. +// Copyright © 2022 ATLED CORP. All rights reserved. +// + +// Configuration settings file format documentation can be found at: +// https://help.apple.com/xcode/#/dev745c5c974 +#include "Base-Production.xcconfig" + +DISPLAY_NAME = AgileWorks + +PRODUCT_BUNDLE_IDENTIFIER = $(AGILE_WORKS_SHARE_BUNDLE_IDENTIFIER).WidgetExtension + +CODE_SIGN_ENTITLEMENTS = WidgetExtension/WidgetExtension.entitlements diff --git a/AgileWorks/Configurations/Release-Production-Widget.xcconfig b/AgileWorks/Configurations/Release-Production-Widget.xcconfig new file mode 100644 index 0000000..c14b53b --- /dev/null +++ b/AgileWorks/Configurations/Release-Production-Widget.xcconfig @@ -0,0 +1,13 @@ +// +// Release-Production-Widget.xcconfig +// AgileWorks +// +// Created by Azuma Kasumi on 2022/03/22. +// Copyright © 2022 ATLED CORP. All rights reserved. +// + +// Configuration settings file format documentation can be found at: +// https://help.apple.com/xcode/#/dev745c5c974 +#include "../Pods/Target Support Files/Pods-All-AgileWorks/Pods-All-AgileWorks.release-production.xcconfig" +#include "Build/Release.xcconfig" +#include "Flavor/Production-Widget.xcconfig" diff --git a/AgileWorks/TodayExtension/View/TodayViewController.swift b/AgileWorks/TodayExtension/View/TodayViewController.swift index bb0451d..45f7914 100644 --- a/AgileWorks/TodayExtension/View/TodayViewController.swift +++ b/AgileWorks/TodayExtension/View/TodayViewController.swift @@ -93,7 +93,7 @@ extension TodayViewController: UITableViewDataSource { func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "todayCell", for: indexPath) - cell.textLabel?.text = approvalItems[indexPath.row].name + " (" + String(approvalItems[indexPath.row].docCount.toFormattedString()) + ")" + cell.textLabel?.text = approvalItems[indexPath.row].name + " (" + String(approvalItems[indexPath.row].count.toFormattedString()) + ")" return cell } } @@ -120,7 +120,7 @@ extension TodayViewController { Session.send(approvalsEndpoint) { result in switch result { case .success(let response): - if response.itemCount > 0 { + if !response.items.isEmpty { completion(.success(response)) } else { completion(.nodate(localizadString(key: "NoData", comment: ""))) diff --git a/AgileWorks/WidgetExtension/Assets.xcassets/AccentColor.colorset/Contents.json b/AgileWorks/WidgetExtension/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/AgileWorks/WidgetExtension/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/AgileWorks/WidgetExtension/Assets.xcassets/AppIcon.appiconset/Contents.json b/AgileWorks/WidgetExtension/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..9221b9b --- /dev/null +++ b/AgileWorks/WidgetExtension/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/AgileWorks/WidgetExtension/Assets.xcassets/Contents.json b/AgileWorks/WidgetExtension/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/AgileWorks/WidgetExtension/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/AgileWorks/WidgetExtension/Assets.xcassets/WidgetBackground.colorset/Contents.json b/AgileWorks/WidgetExtension/Assets.xcassets/WidgetBackground.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/AgileWorks/WidgetExtension/Assets.xcassets/WidgetBackground.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/AgileWorks/WidgetExtension/Info.plist b/AgileWorks/WidgetExtension/Info.plist new file mode 100644 index 0000000..f8f812c --- /dev/null +++ b/AgileWorks/WidgetExtension/Info.plist @@ -0,0 +1,20 @@ + + + + + NSExtension + + NSExtensionPointIdentifier + com.apple.widgetkit-extension + + AppIdentifierPrefix + $(AppIdentifierPrefix) + AppConfig + + OAUTH_CLIENTID + $(OAUTH_CLIENTID) + AGILE_WORKS_SHARE_BUNDLE_IDENTIFIER + $(AGILE_WORKS_SHARE_BUNDLE_IDENTIFIER) + + + diff --git a/AgileWorks/WidgetExtension/WidgetExtension.entitlements b/AgileWorks/WidgetExtension/WidgetExtension.entitlements new file mode 100644 index 0000000..71e202e --- /dev/null +++ b/AgileWorks/WidgetExtension/WidgetExtension.entitlements @@ -0,0 +1,10 @@ + + + + + keychain-access-groups + + $(AppIdentifierPrefix)jp.atled.agileworks + + + diff --git a/AgileWorks/WidgetExtension/WidgetExtension.swift b/AgileWorks/WidgetExtension/WidgetExtension.swift new file mode 100644 index 0000000..a94910c --- /dev/null +++ b/AgileWorks/WidgetExtension/WidgetExtension.swift @@ -0,0 +1,239 @@ +// +// WidgetExtension.swift +// WidgetExtension +// +// Created by Azuma Kasumi on 2022/03/14. +// Copyright © 2022 ATLED CORP. All rights reserved. +// + +import WidgetKit +import SwiftUI + + +//ウィジェット選択のプレビュー画面などで表示させる項目 +private func previewItems() -> [ApprovalItem]{ + var items = [ApprovalItem]() + items.append(ApprovalItem(code: "DRAFT", name: "下書き", count: 1)) + items.append(ApprovalItem(code: "REQUEST_APPLICATION", name: "申請依頼", count: 10)) + items.append(ApprovalItem(code: "REQUEST_APPROVAL", name: "承認依頼", count: 35)) + items.append(ApprovalItem(code: "REMAND", name: "差戻し", count: 6)) + items.append(ApprovalItem(code: "CHECK_REPORT", name: "報告確認", count: 10)) + items.append(ApprovalItem(code: "DEMAND", name: "催促あり", count: 0)) + items.append(ApprovalItem(code: "SHARE", name: "共有した", count: 0)) + items.append(ApprovalItem(code: "SHARED", name: "共有された", count: 0)) + items.append(ApprovalItem(code: "MESSAGE", name: "回付予定", count: 0)) + + return items +} + +struct Provider: TimelineProvider { + func placeholder(in context: Context) -> SimpleEntry { + SimpleEntry(date: Date(), approvalItems:previewItems(), message: nil) + } + + func getSnapshot(in context: Context, completion: @escaping (SimpleEntry) -> ()) { + let entry = SimpleEntry(date: Date(), approvalItems: previewItems(), message: nil) + completion(entry) + } + + func getTimeline(in context: Context, completion: @escaping (Timeline) -> ()) { + var entries: [SimpleEntry] = [] + + // Generate a timeline consisting of five entries an hour apart, starting from the current date. + let entryDate = Calendar.current.date(byAdding: .minute, value: 5, to: Date()) ?? Date() + print(entryDate) + + fetch { result in + DispatchQueue.main.async { + switch result { + case .success(let response): + entries.append(SimpleEntry(date: entryDate, approvalItems: response.items, message: nil)) + case .nodate(let message): + entries.append(SimpleEntry(date: entryDate, approvalItems: [ApprovalItem](), message: message)) + case .failure(let message): + entries.append(SimpleEntry(date: entryDate, approvalItems: previewItems(), message: message)) + } + let timeline = Timeline(entries: entries, policy: .after(entryDate)) + completion(timeline) + } + } + } +} + +struct SimpleEntry: TimelineEntry { + let date: Date + var approvalItems: [ApprovalItem] + var message: String? +} + +struct ApprovalsWidgetView : View { + var entry: Provider.Entry + var body: some View { + //API取得成功 + if entry.message == nil { + ApplovalsBoxView(entry: entry) + }else { + //APIサーバーエラー + if entry.message == "-" { + ApplovalsBoxView(entry: entry) + }else { //ログイン・コネクションエラー + FailureWidgetView(entry: entry) + } + } + } +} + +//書類状況を表示するための各BOXビュー +struct ApplovalsBoxView : View { + var entry: Provider.Entry + + //書類状態の種類をカウント + func rowCnt() -> Int { + var row = entry.approvalItems.count / 2 + if (entry.approvalItems.count % 2 != 0) { + row += 1 + } + return row + } + + //BOXの右側を表示させるかの条件 + func evenCheck(row: Int) -> Bool { + row < rowCnt()-1 || entry.approvalItems.count % 2 == 0 + } + + var body: some View { + GeometryReader { geometry in + VStack (spacing: 5){ + ForEach(0.. { + case success(T) + case nodate(String) + case failure(String) +} + +func fetch(completion: @escaping (widgetAPIResult) -> Void) { + guard KeychainDataStore().readAccessToken() != nil else { + completion(.failure(localizadString(key: "NotLogedin", comment: ""))) + return + } + + let approvalsEndpoint = GetApprovalsEndpoint() + + Session.send(approvalsEndpoint) { result in + switch result { + case .success(let response): + if !response.items.isEmpty { + completion(.success(response)) + } else { + completion(.nodate(localizadString(key: "NoData", comment: ""))) + } + case .failure(let error): + var errorMessage = "-" + switch error { + case .connectionError(let error): + if let message = errorMessageNSError(error: error) { + errorMessage = message + } + default: + break + } + completion(.failure(errorMessage)) + } + } +} + +func errorMessageNSError(error: Error) -> String? { + switch URLError.Code(rawValue: (error as NSError).code) { + case .notConnectedToInternet: // -1009 + return localizadString(key: "NotConnectNetworkError", comment: "") + case .timedOut: // -1001 + return localizadString(key: "TimedOutNetworkError", comment: "") + default: + return nil + } +} -- GitLab From 8c26e673ce8818edba7649665c2a3e9137807239 Mon Sep 17 00:00:00 2001 From: Azuma Kasumi Date: Tue, 29 Mar 2022 16:02:51 +0900 Subject: [PATCH 2/5] =?UTF-8?q?15=E5=88=86=E6=9B=B4=E6=96=B0=E8=A8=AD?= =?UTF-8?q?=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AgileWorks/WidgetExtension/WidgetExtension.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AgileWorks/WidgetExtension/WidgetExtension.swift b/AgileWorks/WidgetExtension/WidgetExtension.swift index a94910c..42ac775 100644 --- a/AgileWorks/WidgetExtension/WidgetExtension.swift +++ b/AgileWorks/WidgetExtension/WidgetExtension.swift @@ -40,7 +40,7 @@ struct Provider: TimelineProvider { var entries: [SimpleEntry] = [] // Generate a timeline consisting of five entries an hour apart, starting from the current date. - let entryDate = Calendar.current.date(byAdding: .minute, value: 5, to: Date()) ?? Date() + let entryDate = Calendar.current.date(byAdding: .minute, value: 15, to: Date()) ?? Date() print(entryDate) fetch { result in -- GitLab From a7b5380ccc6e19e4e1053214053919f7df58585b Mon Sep 17 00:00:00 2001 From: Azuma Kasumi Date: Thu, 31 Mar 2022 12:26:12 +0900 Subject: [PATCH 3/5] =?UTF-8?q?today=20extension=E3=81=AE=E8=A8=AD?= =?UTF-8?q?=E5=AE=9A=E5=B7=BB=E3=81=8D=E6=88=BB=E3=81=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xcschemes/TodayExtension-Production.xcscheme | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/AgileWorks/AgileWorks.xcodeproj/xcshareddata/xcschemes/TodayExtension-Production.xcscheme b/AgileWorks/AgileWorks.xcodeproj/xcshareddata/xcschemes/TodayExtension-Production.xcscheme index 2b0bb81..375ce7f 100644 --- a/AgileWorks/AgileWorks.xcodeproj/xcshareddata/xcschemes/TodayExtension-Production.xcscheme +++ b/AgileWorks/AgileWorks.xcodeproj/xcshareddata/xcschemes/TodayExtension-Production.xcscheme @@ -37,14 +37,6 @@ - - - - - - -- GitLab From 4b90cb3f8cadb3c1c3bf67bebaf3154332f3f0c8 Mon Sep 17 00:00:00 2001 From: Azuma Kasumi Date: Thu, 31 Mar 2022 15:56:45 +0900 Subject: [PATCH 4/5] =?UTF-8?q?=E3=83=97=E3=83=AC=E3=83=93=E3=83=A5?= =?UTF-8?q?=E3=83=BC=E3=81=AE=E5=A4=9A=E8=A8=80=E8=AA=9E=E5=AF=BE=E5=BF=9C?= =?UTF-8?q?=E3=83=BB=E4=B8=8D=E8=A6=81=E3=82=B3=E3=83=BC=E3=83=89=E3=81=AE?= =?UTF-8?q?=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xcschemes/WidgetExtension.xcscheme | 7 ++++++- .../Strings/Chinese-Simplified.strings | 11 +++++++++++ .../Strings/Chinese-Traditional.strings | 11 +++++++++++ AgileWorks/AgileWorks/Strings/English.strings | 11 +++++++++++ .../AgileWorks/Strings/Japanese.strings | 11 +++++++++++ .../Strings/en.lproj/Localizable.strings | 11 +++++++++++ .../Strings/ja.lproj/Localizable.strings | 11 +++++++++++ .../Strings/zh-Hans.lproj/Localizable.strings | 11 +++++++++++ .../Strings/zh-Hant.lproj/Localizable.strings | 10 ++++++++++ AgileWorks/Common/WebClient/Session.swift | 2 +- .../WidgetExtension/WidgetExtension.swift | 19 +++++++++---------- 11 files changed, 103 insertions(+), 12 deletions(-) diff --git a/AgileWorks/AgileWorks.xcodeproj/xcshareddata/xcschemes/WidgetExtension.xcscheme b/AgileWorks/AgileWorks.xcodeproj/xcshareddata/xcschemes/WidgetExtension.xcscheme index 6f1eca6..f4fd053 100644 --- a/AgileWorks/AgileWorks.xcodeproj/xcshareddata/xcschemes/WidgetExtension.xcscheme +++ b/AgileWorks/AgileWorks.xcodeproj/xcshareddata/xcschemes/WidgetExtension.xcscheme @@ -80,7 +80,12 @@ + + (_ request: T, completion: @escaping (Result) -> Void) -> URLSessionTask? { let req = request.request log.debug("Session Request: \(String(describing: req.url))\nHTTPMethod: \(String(describing: req.httpMethod) )\nHeaders: \(String(describing: req.allHTTPHeaderFields))\nHTTPBody: \(String(data: req.httpBody ?? Data(), encoding: .utf8)!)") - print("Session Request: \(String(describing: req.url))\nHTTPMethod: \(String(describing: req.httpMethod) )\nHeaders: \(String(describing: req.allHTTPHeaderFields))\nHTTPBody: \(String(data: req.httpBody ?? Data(), encoding: .utf8)!)") + let task = shared.dataTask(with: req) { data, response, error in let result: Result let res = response as? HTTPURLResponse diff --git a/AgileWorks/WidgetExtension/WidgetExtension.swift b/AgileWorks/WidgetExtension/WidgetExtension.swift index 42ac775..890bc42 100644 --- a/AgileWorks/WidgetExtension/WidgetExtension.swift +++ b/AgileWorks/WidgetExtension/WidgetExtension.swift @@ -13,15 +13,15 @@ import SwiftUI //ウィジェット選択のプレビュー画面などで表示させる項目 private func previewItems() -> [ApprovalItem]{ var items = [ApprovalItem]() - items.append(ApprovalItem(code: "DRAFT", name: "下書き", count: 1)) - items.append(ApprovalItem(code: "REQUEST_APPLICATION", name: "申請依頼", count: 10)) - items.append(ApprovalItem(code: "REQUEST_APPROVAL", name: "承認依頼", count: 35)) - items.append(ApprovalItem(code: "REMAND", name: "差戻し", count: 6)) - items.append(ApprovalItem(code: "CHECK_REPORT", name: "報告確認", count: 10)) - items.append(ApprovalItem(code: "DEMAND", name: "催促あり", count: 0)) - items.append(ApprovalItem(code: "SHARE", name: "共有した", count: 0)) - items.append(ApprovalItem(code: "SHARED", name: "共有された", count: 0)) - items.append(ApprovalItem(code: "MESSAGE", name: "回付予定", count: 0)) + 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)) return items } @@ -41,7 +41,6 @@ struct Provider: TimelineProvider { // Generate a timeline consisting of five entries an hour apart, starting from the current date. let entryDate = Calendar.current.date(byAdding: .minute, value: 15, to: Date()) ?? Date() - print(entryDate) fetch { result in DispatchQueue.main.async { -- GitLab From 44d77907a674e7daa5ec97fd38123e552fb06cf3 Mon Sep 17 00:00:00 2001 From: Azuma Kasumi Date: Thu, 31 Mar 2022 16:54:05 +0900 Subject: [PATCH 5/5] =?UTF-8?q?=E4=B8=8B=E6=9B=B8=E3=81=8D=E3=82=B3?= =?UTF-8?q?=E3=83=A1=E3=83=B3=E3=83=88=E3=82=A2=E3=82=A6=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AgileWorks/AgileWorks/Strings/Chinese-Simplified.strings | 4 ++-- AgileWorks/AgileWorks/Strings/Chinese-Traditional.strings | 4 ++-- AgileWorks/AgileWorks/Strings/English.strings | 4 ++-- AgileWorks/AgileWorks/Strings/Japanese.strings | 4 ++-- AgileWorks/AgileWorks/Strings/en.lproj/Localizable.strings | 4 ++-- AgileWorks/AgileWorks/Strings/ja.lproj/Localizable.strings | 4 ++-- .../AgileWorks/Strings/zh-Hans.lproj/Localizable.strings | 4 ++-- .../AgileWorks/Strings/zh-Hant.lproj/Localizable.strings | 4 ++-- 8 files changed, 16 insertions(+), 16 deletions(-) diff --git a/AgileWorks/AgileWorks/Strings/Chinese-Simplified.strings b/AgileWorks/AgileWorks/Strings/Chinese-Simplified.strings index ff9633d..3a3ce53 100644 --- a/AgileWorks/AgileWorks/Strings/Chinese-Simplified.strings +++ b/AgileWorks/AgileWorks/Strings/Chinese-Simplified.strings @@ -63,7 +63,7 @@ // Approval Detail, Search Result "Number" = "No. %d"; "Form" = "%@"; -"Draft" = "下書き"; +//"Draft" = "下書き"; "Approving" = "承認中"; "Hold" = "保留"; "Reject" = "却下"; @@ -166,7 +166,7 @@ "CertificateImportError" = "証明書のインポート中にエラーが発生しました。"; // WidgetExtension -// "Draft" = "下書き"; +"Draft" = "下書き"; "RequestApplication" = "申請依頼"; "RequestApproval" = "承認依頼"; "Remand" = "差戻し"; diff --git a/AgileWorks/AgileWorks/Strings/Chinese-Traditional.strings b/AgileWorks/AgileWorks/Strings/Chinese-Traditional.strings index ced40ea..3b2086f 100644 --- a/AgileWorks/AgileWorks/Strings/Chinese-Traditional.strings +++ b/AgileWorks/AgileWorks/Strings/Chinese-Traditional.strings @@ -63,7 +63,7 @@ // Approval Detail, Search Result "Number" = "No. %d"; "Form" = "%@"; -"Draft" = "下書き"; +//"Draft" = "下書き"; "Approving" = "承認中"; "Hold" = "保留"; "Reject" = "却下"; @@ -166,7 +166,7 @@ "CertificateImportError" = "証明書のインポート中にエラーが発生しました。"; // WidgetExtension -// "Draft" = "下書き"; +"Draft" = "下書き"; "RequestApplication" = "申請依頼"; "RequestApproval" = "承認依頼"; "Remand" = "差戻し"; diff --git a/AgileWorks/AgileWorks/Strings/English.strings b/AgileWorks/AgileWorks/Strings/English.strings index 0842d7d..ca8214a 100644 --- a/AgileWorks/AgileWorks/Strings/English.strings +++ b/AgileWorks/AgileWorks/Strings/English.strings @@ -63,7 +63,7 @@ // Approval Detail, Search Result "Number" = "No. %d"; "Form" = "%@"; -"Draft" = "下書き"; +//"Draft" = "下書き"; "Approving" = "承認中"; "Hold" = "保留"; "Reject" = "却下"; @@ -166,7 +166,7 @@ "CertificateImportError" = "証明書のインポート中にエラーが発生しました。"; // WidgetExtension -// "Draft" = "下書き"; +"Draft" = "下書き"; "RequestApplication" = "申請依頼"; "RequestApproval" = "承認依頼"; "Remand" = "差戻し"; diff --git a/AgileWorks/AgileWorks/Strings/Japanese.strings b/AgileWorks/AgileWorks/Strings/Japanese.strings index 15edd4b..456297d 100644 --- a/AgileWorks/AgileWorks/Strings/Japanese.strings +++ b/AgileWorks/AgileWorks/Strings/Japanese.strings @@ -63,7 +63,7 @@ // Approval Detail, Search Result "Number" = "No. %d"; "Form" = "%@"; -"Draft" = "下書き"; +//"Draft" = "下書き"; "Approving" = "承認中"; "Hold" = "保留"; "Reject" = "却下"; @@ -166,7 +166,7 @@ "CertificateImportError" = "証明書のインポート中にエラーが発生しました。"; // WidgetExtension -// "Draft" = "下書き"; +"Draft" = "下書き"; "RequestApplication" = "申請依頼"; "RequestApproval" = "承認依頼"; "Remand" = "差戻し"; diff --git a/AgileWorks/AgileWorks/Strings/en.lproj/Localizable.strings b/AgileWorks/AgileWorks/Strings/en.lproj/Localizable.strings index 1d5658f..4ccfae5 100644 --- a/AgileWorks/AgileWorks/Strings/en.lproj/Localizable.strings +++ b/AgileWorks/AgileWorks/Strings/en.lproj/Localizable.strings @@ -63,7 +63,7 @@ // Approval Detail, Search Result "Number" = "No. %d"; "Form" = "%@"; -"Draft" = "下書き"; +//"Draft" = "下書き"; "Approving" = "承認中"; "Hold" = "保留"; "Reject" = "却下"; @@ -166,7 +166,7 @@ "CertificateImportError" = "証明書のインポート中にエラーが発生しました。"; // WidgetExtension -// "Draft" = "下書き"; +"Draft" = "下書き"; "RequestApplication" = "申請依頼"; "RequestApproval" = "承認依頼"; "Remand" = "差戻し"; diff --git a/AgileWorks/AgileWorks/Strings/ja.lproj/Localizable.strings b/AgileWorks/AgileWorks/Strings/ja.lproj/Localizable.strings index 005c777..2ebe4b2 100644 --- a/AgileWorks/AgileWorks/Strings/ja.lproj/Localizable.strings +++ b/AgileWorks/AgileWorks/Strings/ja.lproj/Localizable.strings @@ -63,7 +63,7 @@ // Approval Detail, Search Result "Number" = "No. %d"; "Form" = "%@"; -"Draft" = "下書き"; +//"Draft" = "下書き"; "Approving" = "承認中"; "Hold" = "保留"; "Reject" = "却下"; @@ -166,7 +166,7 @@ "CertificateImportError" = "証明書のインポート中にエラーが発生しました。"; // WidgetExtension -// "Draft" = "下書き"; +"Draft" = "下書き"; "RequestApplication" = "申請依頼"; "RequestApproval" = "承認依頼"; "Remand" = "差戻し"; diff --git a/AgileWorks/AgileWorks/Strings/zh-Hans.lproj/Localizable.strings b/AgileWorks/AgileWorks/Strings/zh-Hans.lproj/Localizable.strings index 14e18ac..4223252 100644 --- a/AgileWorks/AgileWorks/Strings/zh-Hans.lproj/Localizable.strings +++ b/AgileWorks/AgileWorks/Strings/zh-Hans.lproj/Localizable.strings @@ -63,7 +63,7 @@ // Approval Detail, Search Result "Number" = "No. %d"; "Form" = "%@"; -"Draft" = "下書き"; +//"Draft" = "下書き"; "Approving" = "承認中"; "Hold" = "保留"; "Reject" = "却下"; @@ -166,7 +166,7 @@ "CertificateImportError" = "証明書のインポート中にエラーが発生しました。"; // WidgetExtension -// "Draft" = "下書き"; +"Draft" = "下書き"; "RequestApplication" = "申請依頼"; "RequestApproval" = "承認依頼"; "Remand" = "差戻し"; diff --git a/AgileWorks/AgileWorks/Strings/zh-Hant.lproj/Localizable.strings b/AgileWorks/AgileWorks/Strings/zh-Hant.lproj/Localizable.strings index f0780b9..48d8d95 100644 --- a/AgileWorks/AgileWorks/Strings/zh-Hant.lproj/Localizable.strings +++ b/AgileWorks/AgileWorks/Strings/zh-Hant.lproj/Localizable.strings @@ -63,7 +63,7 @@ // Approval Detail, Search Result "Number" = "No. %d"; "Form" = "%@"; -"Draft" = "下書き"; +//"Draft" = "下書き"; "Approving" = "承認中"; "Hold" = "保留"; "Reject" = "却下"; @@ -166,7 +166,7 @@ "CertificateImportError" = "証明書のインポート中にエラーが発生しました。"; // WidgetExtension -// "Draft" = "下書き"; +"Draft" = "下書き"; "RequestApplication" = "申請依頼"; "RequestApproval" = "承認依頼"; "Remand" = "差戻し"; -- GitLab