Moves database + cached apps to app group so they can be accessed by extensions

This commit is contained in:
Riley Testut
2020-09-14 14:31:46 -07:00
parent 88c8d5f0f8
commit b0c36adedb
2 changed files with 16 additions and 2 deletions

View File

@@ -11,6 +11,19 @@ import CoreData
import AltSign import AltSign
import Roxas import Roxas
private class PersistentContainer: RSTPersistentContainer
{
override class func defaultDirectoryURL() -> URL
{
guard let sharedDirectoryURL = FileManager.default.altstoreSharedDirectory else { return super.defaultDirectoryURL() }
let databaseDirectoryURL = sharedDirectoryURL.appendingPathComponent("Database")
try? FileManager.default.createDirectory(at: databaseDirectoryURL, withIntermediateDirectories: true, attributes: nil)
return databaseDirectoryURL
}
}
public class DatabaseManager public class DatabaseManager
{ {
public static let shared = DatabaseManager() public static let shared = DatabaseManager()
@@ -24,7 +37,7 @@ public class DatabaseManager
private init() private init()
{ {
self.persistentContainer = RSTPersistentContainer(name: "AltStore", bundle: Bundle(for: DatabaseManager.self)) self.persistentContainer = PersistentContainer(name: "AltStore", bundle: Bundle(for: DatabaseManager.self))
self.persistentContainer.preferredMergePolicy = MergePolicy() self.persistentContainer.preferredMergePolicy = MergePolicy()
} }
} }

View File

@@ -219,7 +219,8 @@ public extension InstalledApp
public extension InstalledApp public extension InstalledApp
{ {
class var appsDirectoryURL: URL { class var appsDirectoryURL: URL {
let appsDirectoryURL = FileManager.default.applicationSupportDirectory.appendingPathComponent("Apps") let baseDirectory = FileManager.default.altstoreSharedDirectory ?? FileManager.default.applicationSupportDirectory
let appsDirectoryURL = baseDirectory.appendingPathComponent("Apps")
do { try FileManager.default.createDirectory(at: appsDirectoryURL, withIntermediateDirectories: true, attributes: nil) } do { try FileManager.default.createDirectory(at: appsDirectoryURL, withIntermediateDirectories: true, attributes: nil) }
catch { print(error) } catch { print(error) }