From 281416eaee39f689e03dafe814b4e756aeb19a24 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Wed, 2 Oct 2019 15:32:34 -0500 Subject: [PATCH] Make sure metadata gets saved if background fetch is performed. --- Frameworks/Account/Account.swift | 8 ++++---- Frameworks/Account/AccountManager.swift | 4 ++++ Frameworks/Account/AccountMetadataFile.swift | 2 +- Frameworks/Account/FeedMetadataFile.swift | 2 +- Frameworks/Account/OPMLFile.swift | 2 +- iOS/AppDelegate.swift | 3 +++ iOS/ShareExtension/ShareViewController.swift | 2 +- 7 files changed, 15 insertions(+), 8 deletions(-) diff --git a/Frameworks/Account/Account.swift b/Frameworks/Account/Account.swift index d0f787da3..6619a627a 100644 --- a/Frameworks/Account/Account.swift +++ b/Frameworks/Account/Account.swift @@ -368,10 +368,10 @@ public final class Account: DisplayNameProvider, UnreadCountProvider, Container, } - public func saveIfNecessary() { - metadataFile.saveIfNecessary() - feedMetadataFile.saveIfNecessary() - opmlFile.saveIfNecessary() + public func save() { + metadataFile.save() + feedMetadataFile.save() + opmlFile.save() } func loadOPMLItems(_ items: [RSOPMLItem], parentFolder: Folder?) { diff --git a/Frameworks/Account/AccountManager.swift b/Frameworks/Account/AccountManager.swift index 21edfcbe5..7db38dc48 100644 --- a/Frameworks/Account/AccountManager.swift +++ b/Frameworks/Account/AccountManager.swift @@ -184,6 +184,10 @@ public final class AccountManager: UnreadCountProvider { } } + public func saveAll() { + accounts.forEach { $0.save() } + } + public func anyAccountHasAtLeastOneFeed() -> Bool { for account in activeAccounts { if account.hasAtLeastOneFeed() { diff --git a/Frameworks/Account/AccountMetadataFile.swift b/Frameworks/Account/AccountMetadataFile.swift index 03b5ccf7e..0c78f09da 100644 --- a/Frameworks/Account/AccountMetadataFile.swift +++ b/Frameworks/Account/AccountMetadataFile.swift @@ -31,7 +31,7 @@ final class AccountMetadataFile { managedFile.load() } - func saveIfNecessary() { + func save() { managedFile.saveIfNecessary() } diff --git a/Frameworks/Account/FeedMetadataFile.swift b/Frameworks/Account/FeedMetadataFile.swift index 42fb8a460..cfc900d83 100644 --- a/Frameworks/Account/FeedMetadataFile.swift +++ b/Frameworks/Account/FeedMetadataFile.swift @@ -31,7 +31,7 @@ final class FeedMetadataFile { managedFile.load() } - func saveIfNecessary() { + func save() { managedFile.saveIfNecessary() } diff --git a/Frameworks/Account/OPMLFile.swift b/Frameworks/Account/OPMLFile.swift index 23c4a02c7..d63a6f2a0 100644 --- a/Frameworks/Account/OPMLFile.swift +++ b/Frameworks/Account/OPMLFile.swift @@ -32,7 +32,7 @@ final class OPMLFile { managedFile.load() } - func saveIfNecessary() { + func save() { managedFile.saveIfNecessary() } diff --git a/iOS/AppDelegate.swift b/iOS/AppDelegate.swift index b75d7b34c..b08a84ce0 100644 --- a/iOS/AppDelegate.swift +++ b/iOS/AppDelegate.swift @@ -298,6 +298,9 @@ private extension AppDelegate { os_log("Account refresh operation completed.", log: self.log, type: .info) task.setTaskCompleted(success: true) } + + AccountManager.shared.saveAll() + } // set expiration handler diff --git a/iOS/ShareExtension/ShareViewController.swift b/iOS/ShareExtension/ShareViewController.swift index 1510ff04b..f22ba3fb5 100644 --- a/iOS/ShareExtension/ShareViewController.swift +++ b/iOS/ShareExtension/ShareViewController.swift @@ -119,7 +119,7 @@ class ShareViewController: SLComposeServiceViewController, ShareFolderPickerCont switch result { case .success: - account!.saveIfNecessary() + account!.save() self.extensionContext!.completeRequest(returningItems: [], completionHandler: nil) case .failure(let error): self.presentError(error) {