diff --git a/AgileWorks/AgileWorks/Main/View/MainTabBarViewController.swift b/AgileWorks/AgileWorks/Main/View/MainTabBarViewController.swift index e4df9c02d152f48b4439b464430ecd5bcaca17a7..a9a9227077474bf806c17fcccbdcac4b2ded5c5c 100644 --- a/AgileWorks/AgileWorks/Main/View/MainTabBarViewController.swift +++ b/AgileWorks/AgileWorks/Main/View/MainTabBarViewController.swift @@ -53,6 +53,8 @@ class MainTabBarViewController: UITabBarController { @objc func movedToBackground() { + //ウィジェット更新フラグのクリア + UserDefaultsDataStore().writeUpdateWidgetFlg(update: false) // 承認待ち件数の取得 getApprovals { result in var reqApprovalCount = 0 diff --git a/AgileWorks/Common/DataStore/UserDefaultsDataStore.swift b/AgileWorks/Common/DataStore/UserDefaultsDataStore.swift index bc9c72ba86f0cd811a274a1c5c2cd350ace75d2b..1e39b583f20c109ce0f050bb374ddd37863cf1bf 100644 --- a/AgileWorks/Common/DataStore/UserDefaultsDataStore.swift +++ b/AgileWorks/Common/DataStore/UserDefaultsDataStore.swift @@ -16,6 +16,7 @@ final class UserDefaultsDataStore: DataStoreProtocol { private let sharedDefaults: UserDefaults private let kFirebaseRemovalKey: String = "FirebaseRemoval" private let kLastAcceptedLicenseVersionKey: String = "LastAppceptedLicenseVersion" + private let kUpdateWidgetFlgKey : String = "UpdateWidgetFlg" init() { sharedDefaults = UserDefaults() @@ -40,4 +41,17 @@ final class UserDefaultsDataStore: DataStoreProtocol { func readLastAcceptedLicenseVersion() -> Int? { return sharedDefaults.integer(forKey: kLastAcceptedLicenseVersionKey) } + + //ウィジェット更新フラグ + func writeUpdateWidgetFlg(update: Bool) { + sharedDefaults.set(update, forKey: kUpdateWidgetFlgKey) + } + + func readUpdateWidgetFlg() -> Bool? { + return sharedDefaults.bool(forKey: kUpdateWidgetFlgKey) + } + + func removeUpdateWidgetFlg(update: Bool) { + sharedDefaults.removeObject(forKey: kUpdateWidgetFlgKey) + } } diff --git a/AgileWorks/WidgetExtension/WidgetExtension.swift b/AgileWorks/WidgetExtension/WidgetExtension.swift index 0afb2a4de47eb4125f4b1cdb32a8403c760fc305..cf996405c90e19502663560304c9f5f1bfe44136 100644 --- a/AgileWorks/WidgetExtension/WidgetExtension.swift +++ b/AgileWorks/WidgetExtension/WidgetExtension.swift @@ -107,8 +107,13 @@ func fetch(completion: @escaping (widgetAPIResult } let approvalsEndpoint = GetApprovalsEndpoint() - + + while UserDefaultsDataStore().readUpdateWidgetFlg() ?? false { + //別のウィジェットが更新中の場合は待つ + } + UserDefaultsDataStore().writeUpdateWidgetFlg(update: true) Session.send(approvalsEndpoint) { result in + UserDefaultsDataStore().writeUpdateWidgetFlg(update: false) switch result { case .success(let response): if !response.items.isEmpty {