mirror of
https://github.com/SideStore/SideStore.git
synced 2026-02-08 22:33:26 +01:00
91 lines
1.9 KiB
Swift
91 lines
1.9 KiB
Swift
//
|
|
// AppProtocol.swift
|
|
// AltStore
|
|
//
|
|
// Created by Riley Testut on 7/26/19.
|
|
// Copyright © 2019 Riley Testut. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
import AltSign
|
|
|
|
public protocol AppProtocol
|
|
{
|
|
var name: String { get }
|
|
var bundleIdentifier: String { get }
|
|
var url: URL? { get }
|
|
|
|
var storeApp: StoreApp? { get }
|
|
}
|
|
|
|
public struct AnyApp: AppProtocol
|
|
{
|
|
public var name: String
|
|
public var bundleIdentifier: String
|
|
public var url: URL?
|
|
public var storeApp: StoreApp?
|
|
|
|
public init(name: String, bundleIdentifier: String, url: URL?, storeApp: StoreApp?)
|
|
{
|
|
self.name = name
|
|
self.bundleIdentifier = bundleIdentifier
|
|
self.url = url
|
|
self.storeApp = storeApp
|
|
}
|
|
|
|
public init(from app: AppProtocol, name: String? = nil, bundleId: String? = nil, url: URL? = nil, storeApp: StoreApp? = nil) {
|
|
self.name = name ?? app.name
|
|
self.bundleIdentifier = bundleId ?? app.bundleIdentifier
|
|
self.url = url ?? app.url
|
|
self.storeApp = storeApp ?? app.storeApp
|
|
}
|
|
}
|
|
|
|
extension ALTApplication: AppProtocol
|
|
{
|
|
public var url: URL? {
|
|
return self.fileURL
|
|
}
|
|
|
|
public var storeApp: StoreApp? {
|
|
return nil
|
|
}
|
|
}
|
|
|
|
extension StoreApp: AppProtocol
|
|
{
|
|
public var url: URL? {
|
|
return self.latestAvailableVersion?.downloadURL
|
|
}
|
|
|
|
public var storeApp: StoreApp? {
|
|
return self
|
|
}
|
|
}
|
|
|
|
extension InstalledApp: AppProtocol
|
|
{
|
|
public var url: URL? {
|
|
return self.fileURL
|
|
}
|
|
}
|
|
|
|
extension AppVersion: AppProtocol
|
|
{
|
|
public var name: String {
|
|
return self.app?.name ?? self.bundleIdentifier
|
|
}
|
|
|
|
public var bundleIdentifier: String {
|
|
return self.appBundleID
|
|
}
|
|
|
|
public var url: URL? {
|
|
return self.downloadURL
|
|
}
|
|
|
|
public var storeApp: StoreApp? {
|
|
return self.app
|
|
}
|
|
}
|