mirror of
https://github.com/SideStore/SideStore.git
synced 2026-02-09 06:43:25 +01:00
84 lines
1.5 KiB
Swift
84 lines
1.5 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
|
|
}
|
|
}
|
|
|
|
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
|
|
}
|
|
}
|