mirror of
https://github.com/SideStore/SideStore.git
synced 2026-02-15 09:43:34 +01:00
Adds ability to change sideloaded app icons
This commit is contained in:
@@ -41,6 +41,7 @@ public class InstalledApp: NSManagedObject, InstalledAppProtocol
|
||||
|
||||
@NSManaged public var isActive: Bool
|
||||
@NSManaged public var needsResign: Bool
|
||||
@NSManaged public var hasAlternateIcon: Bool
|
||||
|
||||
@NSManaged public var certificateSerialNumber: String?
|
||||
|
||||
@@ -104,6 +105,32 @@ public class InstalledApp: NSManagedObject, InstalledAppProtocol
|
||||
self.refreshedDate = provisioningProfile.creationDate
|
||||
self.expirationDate = provisioningProfile.expirationDate
|
||||
}
|
||||
|
||||
public func loadIcon(completion: @escaping (Result<UIImage?, Error>) -> Void)
|
||||
{
|
||||
let hasAlternateIcon = self.hasAlternateIcon
|
||||
let alternateIconURL = self.alternateIconURL
|
||||
let fileURL = self.fileURL
|
||||
|
||||
DispatchQueue.global().async {
|
||||
do
|
||||
{
|
||||
if hasAlternateIcon,
|
||||
case let data = try Data(contentsOf: alternateIconURL),
|
||||
let icon = UIImage(data: data)
|
||||
{
|
||||
return completion(.success(icon))
|
||||
}
|
||||
|
||||
let application = ALTApplication(fileURL: fileURL)
|
||||
completion(.success(application?.icon))
|
||||
}
|
||||
catch
|
||||
{
|
||||
completion(.failure(error))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public extension InstalledApp
|
||||
@@ -269,6 +296,12 @@ public extension InstalledApp
|
||||
return installedBackupAppUTI
|
||||
}
|
||||
|
||||
class func alternateIconURL(for app: AppProtocol) -> URL
|
||||
{
|
||||
let installedBackupAppUTI = self.directoryURL(for: app).appendingPathComponent("AltIcon.png")
|
||||
return installedBackupAppUTI
|
||||
}
|
||||
|
||||
var directoryURL: URL {
|
||||
return InstalledApp.directoryURL(for: self)
|
||||
}
|
||||
@@ -288,4 +321,8 @@ public extension InstalledApp
|
||||
var installedBackupAppUTI: String {
|
||||
return InstalledApp.installedBackupAppUTI(forBundleIdentifier: self.resignedBundleIdentifier)
|
||||
}
|
||||
|
||||
var alternateIconURL: URL {
|
||||
return InstalledApp.alternateIconURL(for: self)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user