mirror of
https://github.com/SideStore/SideStore.git
synced 2026-02-09 06:43:25 +01:00
[AltStoreCore] Refactors core AltStore logic into AltStoreCore framework
AltStoreCore will contain all shared AltStore code between AltStore and any app extensions. Initially, it includes all AltStore model logic.
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -2,14 +2,4 @@
|
||||
// Use this file to import your target's public headers that you would like to expose to Swift.
|
||||
//
|
||||
|
||||
#import "ALTAppPermission.h"
|
||||
#import "ALTPatreonBenefitType.h"
|
||||
#import "ALTSourceUserInfoKey.h"
|
||||
|
||||
#import "NSAttributedString+Markdown.h"
|
||||
|
||||
// Shared
|
||||
#import "ALTConstants.h"
|
||||
#import "ALTConnection.h"
|
||||
#import "NSError+ALTServerError.h"
|
||||
#import "CFNotificationName+AltStore.h"
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
|
||||
import Foundation
|
||||
|
||||
import AltStoreCore
|
||||
|
||||
import AppCenter
|
||||
import AppCenterAnalytics
|
||||
import AppCenterCrashes
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
import UIKit
|
||||
|
||||
import AltStoreCore
|
||||
import Roxas
|
||||
|
||||
import Nuke
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
import UIKit
|
||||
|
||||
import AltStoreCore
|
||||
import Roxas
|
||||
|
||||
import Nuke
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
|
||||
import UIKit
|
||||
|
||||
import AltStoreCore
|
||||
|
||||
class PermissionPopoverViewController: UIViewController
|
||||
{
|
||||
var permission: AppPermission!
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
import UIKit
|
||||
|
||||
import AltStoreCore
|
||||
import Roxas
|
||||
|
||||
class AppIDsViewController: UICollectionViewController
|
||||
|
||||
@@ -10,6 +10,7 @@ import UIKit
|
||||
import UserNotifications
|
||||
import AVFoundation
|
||||
|
||||
import AltStoreCore
|
||||
import AltSign
|
||||
import Roxas
|
||||
|
||||
|
||||
@@ -7,8 +7,9 @@
|
||||
//
|
||||
|
||||
import UIKit
|
||||
import AltSign
|
||||
|
||||
import AltStoreCore
|
||||
import AltSign
|
||||
import Roxas
|
||||
|
||||
class RefreshAltStoreViewController: UIViewController
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
import UIKit
|
||||
|
||||
import AltStoreCore
|
||||
import Roxas
|
||||
|
||||
import Nuke
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
import AltStoreCore
|
||||
import Roxas
|
||||
|
||||
class AppBannerView: RSTNibView
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
|
||||
import Roxas
|
||||
|
||||
import AltStoreCore
|
||||
|
||||
extension TimeInterval
|
||||
{
|
||||
static let shortToastViewDuration = 4.0
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
|
||||
import Foundation
|
||||
|
||||
import AltStoreCore
|
||||
|
||||
extension FileManager
|
||||
{
|
||||
var altstoreSharedDirectory: URL? {
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
import UIKit
|
||||
import Roxas
|
||||
|
||||
import AltStoreCore
|
||||
|
||||
class LaunchViewController: RSTLaunchViewController
|
||||
{
|
||||
private var didFinishLaunching = false
|
||||
|
||||
@@ -11,8 +11,8 @@ import UIKit
|
||||
import UserNotifications
|
||||
import MobileCoreServices
|
||||
|
||||
import AltStoreCore
|
||||
import AltSign
|
||||
|
||||
import Roxas
|
||||
|
||||
extension AppManager
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
import Foundation
|
||||
import CoreData
|
||||
|
||||
import AltStoreCore
|
||||
|
||||
extension AppManager
|
||||
{
|
||||
struct FetchSourcesError: LocalizedError, CustomNSError
|
||||
|
||||
@@ -9,9 +9,9 @@
|
||||
import UIKit
|
||||
import MobileCoreServices
|
||||
|
||||
import Roxas
|
||||
|
||||
import AltStoreCore
|
||||
import AltSign
|
||||
import Roxas
|
||||
|
||||
import Nuke
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
import UIKit
|
||||
import SafariServices
|
||||
|
||||
import AltStoreCore
|
||||
import Roxas
|
||||
|
||||
import Nuke
|
||||
|
||||
@@ -10,6 +10,7 @@ import Foundation
|
||||
import Roxas
|
||||
import Network
|
||||
|
||||
import AltStoreCore
|
||||
import AltSign
|
||||
|
||||
enum AuthenticationError: LocalizedError
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
import Foundation
|
||||
|
||||
import AltStoreCore
|
||||
import AltSign
|
||||
|
||||
extension BackupAppOperation
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
import Foundation
|
||||
|
||||
import AltStoreCore
|
||||
import AltSign
|
||||
import Roxas
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
import Foundation
|
||||
import Roxas
|
||||
|
||||
import AltStoreCore
|
||||
import AltSign
|
||||
|
||||
@objc(DownloadAppOperation)
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
import Foundation
|
||||
|
||||
import AltStoreCore
|
||||
import AltSign
|
||||
import Roxas
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
import Foundation
|
||||
|
||||
import AltStoreCore
|
||||
import AltSign
|
||||
import Roxas
|
||||
|
||||
|
||||
@@ -7,9 +7,10 @@
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import Roxas
|
||||
|
||||
import AltStoreCore
|
||||
import AltSign
|
||||
import Roxas
|
||||
|
||||
@objc(FetchProvisioningProfilesOperation)
|
||||
class FetchProvisioningProfilesOperation: ResultOperation<[String: ALTProvisioningProfile]>
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
import Foundation
|
||||
import CoreData
|
||||
|
||||
import AltStoreCore
|
||||
import Roxas
|
||||
|
||||
@objc(FetchSourceOperation)
|
||||
@@ -49,7 +50,7 @@ class FetchSourceOperation: ResultOperation<Source>
|
||||
{
|
||||
let (data, _) = try Result((data, response), error).get()
|
||||
|
||||
let decoder = JSONDecoder()
|
||||
let decoder = AltStoreCore.JSONDecoder()
|
||||
decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
|
||||
let container = try decoder.singleValueContainer()
|
||||
let text = try container.decode(String.self)
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
import Foundation
|
||||
import Network
|
||||
|
||||
import AltStoreCore
|
||||
import AltSign
|
||||
import Roxas
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ import Foundation
|
||||
import CoreData
|
||||
import Network
|
||||
|
||||
import AltStoreCore
|
||||
import AltSign
|
||||
|
||||
class OperationContext
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
|
||||
import Foundation
|
||||
|
||||
import AltStoreCore
|
||||
import AltSign
|
||||
|
||||
import Roxas
|
||||
|
||||
@objc(RefreshAppOperation)
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
import Foundation
|
||||
import CoreData
|
||||
|
||||
import AltStoreCore
|
||||
import AltSign
|
||||
|
||||
class RefreshGroup: NSObject
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
|
||||
import Foundation
|
||||
|
||||
import AltStoreCore
|
||||
|
||||
@objc(RemoveAppOperation)
|
||||
class RemoveAppOperation: ResultOperation<InstalledApp>
|
||||
{
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
import Foundation
|
||||
import Roxas
|
||||
|
||||
import AltStoreCore
|
||||
import AltSign
|
||||
|
||||
@objc(ResignAppOperation)
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
import Foundation
|
||||
import Network
|
||||
|
||||
import AltStoreCore
|
||||
|
||||
@objc(SendAppOperation)
|
||||
class SendAppOperation: ResultOperation<ServerConnection>
|
||||
{
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
import Foundation
|
||||
import Network
|
||||
|
||||
import AltStoreCore
|
||||
|
||||
class ServerConnection
|
||||
{
|
||||
var server: Server
|
||||
@@ -93,7 +95,7 @@ class ServerConnection
|
||||
{
|
||||
let data = try self.process(data: data, error: error)
|
||||
|
||||
let response = try JSONDecoder().decode(ServerResponse.self, from: data)
|
||||
let response = try AltStoreCore.JSONDecoder().decode(ServerResponse.self, from: data)
|
||||
completionHandler(.success(response))
|
||||
}
|
||||
catch
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
import Foundation
|
||||
import Network
|
||||
|
||||
import AltStoreCore
|
||||
|
||||
class ServerManager: NSObject
|
||||
{
|
||||
static let shared = ServerManager()
|
||||
|
||||
@@ -10,6 +10,7 @@ import UIKit
|
||||
import SafariServices
|
||||
import AuthenticationServices
|
||||
|
||||
import AltStoreCore
|
||||
import Roxas
|
||||
|
||||
extension PatreonViewController
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
import UIKit
|
||||
|
||||
import AltStoreCore
|
||||
import Roxas
|
||||
|
||||
@objc(RefreshAttemptTableViewCell)
|
||||
|
||||
@@ -10,6 +10,8 @@ import UIKit
|
||||
import SafariServices
|
||||
import MessageUI
|
||||
|
||||
import AltStoreCore
|
||||
|
||||
extension SettingsViewController
|
||||
{
|
||||
fileprivate enum Section: Int, CaseIterable
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
import UIKit
|
||||
import CoreData
|
||||
|
||||
import AltStoreCore
|
||||
import Roxas
|
||||
|
||||
class SourcesViewController: UICollectionViewController
|
||||
|
||||
27
AltStoreCore/AltStoreCore.h
Normal file
27
AltStoreCore/AltStoreCore.h
Normal file
@@ -0,0 +1,27 @@
|
||||
//
|
||||
// AltStoreCore.h
|
||||
// AltStoreCore
|
||||
//
|
||||
// Created by Riley Testut on 9/3/20.
|
||||
// Copyright © 2020 Riley Testut. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
//! Project version number for AltStoreCore.
|
||||
FOUNDATION_EXPORT double AltStoreCoreVersionNumber;
|
||||
|
||||
//! Project version string for AltStoreCore.
|
||||
FOUNDATION_EXPORT const unsigned char AltStoreCoreVersionString[];
|
||||
|
||||
// In this header, you should import all the public headers of your framework using statements like #import <AltStoreCore/PublicHeader.h>
|
||||
|
||||
#import <AltStoreCore/ALTAppPermission.h>
|
||||
#import <AltStoreCore/ALTSourceUserInfoKey.h>
|
||||
#import <AltStoreCore/ALTPatreonBenefitType.h>
|
||||
|
||||
// Shared
|
||||
#import <AltStoreCore/ALTConstants.h>
|
||||
#import <AltStoreCore/ALTConnection.h>
|
||||
#import <AltStoreCore/NSError+ALTServerError.h>
|
||||
#import <AltStoreCore/CFNotificationName+AltStore.h>
|
||||
@@ -12,11 +12,11 @@ import KeychainAccess
|
||||
import AltSign
|
||||
|
||||
@propertyWrapper
|
||||
struct KeychainItem<Value>
|
||||
public struct KeychainItem<Value>
|
||||
{
|
||||
let key: String
|
||||
public let key: String
|
||||
|
||||
var wrappedValue: Value? {
|
||||
public var wrappedValue: Value? {
|
||||
get {
|
||||
switch Value.self
|
||||
{
|
||||
@@ -35,50 +35,50 @@ struct KeychainItem<Value>
|
||||
}
|
||||
}
|
||||
|
||||
init(key: String)
|
||||
public init(key: String)
|
||||
{
|
||||
self.key = key
|
||||
}
|
||||
}
|
||||
|
||||
class Keychain
|
||||
public class Keychain
|
||||
{
|
||||
static let shared = Keychain()
|
||||
public static let shared = Keychain()
|
||||
|
||||
fileprivate let keychain = KeychainAccess.Keychain(service: "com.rileytestut.AltStore").accessibility(.afterFirstUnlock).synchronizable(true)
|
||||
|
||||
@KeychainItem(key: "appleIDEmailAddress")
|
||||
var appleIDEmailAddress: String?
|
||||
public var appleIDEmailAddress: String?
|
||||
|
||||
@KeychainItem(key: "appleIDPassword")
|
||||
var appleIDPassword: String?
|
||||
public var appleIDPassword: String?
|
||||
|
||||
@KeychainItem(key: "signingCertificatePrivateKey")
|
||||
var signingCertificatePrivateKey: Data?
|
||||
public var signingCertificatePrivateKey: Data?
|
||||
|
||||
@KeychainItem(key: "signingCertificateSerialNumber")
|
||||
var signingCertificateSerialNumber: String?
|
||||
public var signingCertificateSerialNumber: String?
|
||||
|
||||
@KeychainItem(key: "signingCertificate")
|
||||
var signingCertificate: Data?
|
||||
public var signingCertificate: Data?
|
||||
|
||||
@KeychainItem(key: "signingCertificatePassword")
|
||||
var signingCertificatePassword: String?
|
||||
public var signingCertificatePassword: String?
|
||||
|
||||
@KeychainItem(key: "patreonAccessToken")
|
||||
var patreonAccessToken: String?
|
||||
public var patreonAccessToken: String?
|
||||
|
||||
@KeychainItem(key: "patreonRefreshToken")
|
||||
var patreonRefreshToken: String?
|
||||
public var patreonRefreshToken: String?
|
||||
|
||||
@KeychainItem(key: "patreonCreatorAccessToken")
|
||||
var patreonCreatorAccessToken: String?
|
||||
public var patreonCreatorAccessToken: String?
|
||||
|
||||
private init()
|
||||
{
|
||||
}
|
||||
|
||||
func reset()
|
||||
public func reset()
|
||||
{
|
||||
self.appleIDEmailAddress = nil
|
||||
self.appleIDPassword = nil
|
||||
@@ -9,7 +9,7 @@
|
||||
import Foundation
|
||||
import CoreData
|
||||
|
||||
extension CodingUserInfoKey
|
||||
public extension CodingUserInfoKey
|
||||
{
|
||||
static let managedObjectContext = CodingUserInfoKey(rawValue: "managedObjectContext")!
|
||||
static let sourceURL = CodingUserInfoKey(rawValue: "sourceURL")!
|
||||
@@ -18,29 +18,29 @@ extension CodingUserInfoKey
|
||||
public final class JSONDecoder: Foundation.JSONDecoder
|
||||
{
|
||||
@DecoderItem(key: .managedObjectContext)
|
||||
var managedObjectContext: NSManagedObjectContext?
|
||||
public var managedObjectContext: NSManagedObjectContext?
|
||||
|
||||
@DecoderItem(key: .sourceURL)
|
||||
var sourceURL: URL?
|
||||
public var sourceURL: URL?
|
||||
}
|
||||
|
||||
extension Decoder
|
||||
public extension Decoder
|
||||
{
|
||||
var managedObjectContext: NSManagedObjectContext? { self.userInfo[.managedObjectContext] as? NSManagedObjectContext }
|
||||
var sourceURL: URL? { self.userInfo[.sourceURL] as? URL }
|
||||
}
|
||||
|
||||
@propertyWrapper
|
||||
struct DecoderItem<Value>
|
||||
public struct DecoderItem<Value>
|
||||
{
|
||||
let key: CodingUserInfoKey
|
||||
public let key: CodingUserInfoKey
|
||||
|
||||
var wrappedValue: Value? {
|
||||
public var wrappedValue: Value? {
|
||||
get { fatalError("only works on instance properties of classes") }
|
||||
set { fatalError("only works on instance properties of classes") }
|
||||
}
|
||||
|
||||
init(key: CodingUserInfoKey)
|
||||
public init(key: CodingUserInfoKey)
|
||||
{
|
||||
self.key = key
|
||||
}
|
||||
17
AltStoreCore/Extensions/UIApplication+AppExtension.swift
Normal file
17
AltStoreCore/Extensions/UIApplication+AppExtension.swift
Normal file
@@ -0,0 +1,17 @@
|
||||
//
|
||||
// UIApplication+AppExtension.swift
|
||||
// DeltaCore
|
||||
//
|
||||
// Created by Riley Testut on 6/14/18.
|
||||
// Copyright © 2018 Riley Testut. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
public extension UIApplication
|
||||
{
|
||||
// Cannot normally use UIApplication.shared from extensions, so we get around this by calling value(forKey:).
|
||||
class var alt_shared: UIApplication? {
|
||||
return UIApplication.value(forKey: "sharedApplication") as? UIApplication
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
import UIKit
|
||||
|
||||
extension UIColor
|
||||
public extension UIColor
|
||||
{
|
||||
// Borrowed from https://stackoverflow.com/a/26341062
|
||||
var hexString: String {
|
||||
@@ -10,7 +10,7 @@ import Foundation
|
||||
|
||||
import Roxas
|
||||
|
||||
extension UserDefaults
|
||||
public extension UserDefaults
|
||||
{
|
||||
@NSManaged var firstLaunch: Date?
|
||||
|
||||
22
AltStoreCore/Info.plist
Normal file
22
AltStoreCore/Info.plist
Normal file
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -12,9 +12,9 @@ import CoreData
|
||||
import AltSign
|
||||
|
||||
@objc(Account)
|
||||
class Account: NSManagedObject, Fetchable
|
||||
public class Account: NSManagedObject, Fetchable
|
||||
{
|
||||
var localizedName: String {
|
||||
public var localizedName: String {
|
||||
var components = PersonNameComponents()
|
||||
components.givenName = self.firstName
|
||||
components.familyName = self.lastName
|
||||
@@ -24,30 +24,30 @@ class Account: NSManagedObject, Fetchable
|
||||
}
|
||||
|
||||
/* Properties */
|
||||
@NSManaged var appleID: String
|
||||
@NSManaged var identifier: String
|
||||
@NSManaged public var appleID: String
|
||||
@NSManaged public var identifier: String
|
||||
|
||||
@NSManaged var firstName: String
|
||||
@NSManaged var lastName: String
|
||||
@NSManaged public var firstName: String
|
||||
@NSManaged public var lastName: String
|
||||
|
||||
@NSManaged var isActiveAccount: Bool
|
||||
@NSManaged public var isActiveAccount: Bool
|
||||
|
||||
/* Relationships */
|
||||
@NSManaged var teams: Set<Team>
|
||||
@NSManaged public var teams: Set<Team>
|
||||
|
||||
private override init(entity: NSEntityDescription, insertInto context: NSManagedObjectContext?)
|
||||
{
|
||||
super.init(entity: entity, insertInto: context)
|
||||
}
|
||||
|
||||
init(_ account: ALTAccount, context: NSManagedObjectContext)
|
||||
public init(_ account: ALTAccount, context: NSManagedObjectContext)
|
||||
{
|
||||
super.init(entity: Account.entity(), insertInto: context)
|
||||
|
||||
self.update(account: account)
|
||||
}
|
||||
|
||||
func update(account: ALTAccount)
|
||||
public func update(account: ALTAccount)
|
||||
{
|
||||
self.appleID = account.appleID
|
||||
self.identifier = account.identifier
|
||||
@@ -57,7 +57,7 @@ class Account: NSManagedObject, Fetchable
|
||||
}
|
||||
}
|
||||
|
||||
extension Account
|
||||
public extension Account
|
||||
{
|
||||
@nonobjc class func fetchRequest() -> NSFetchRequest<Account>
|
||||
{
|
||||
@@ -12,24 +12,24 @@ import CoreData
|
||||
import AltSign
|
||||
|
||||
@objc(AppID)
|
||||
class AppID: NSManagedObject, Fetchable
|
||||
public class AppID: NSManagedObject, Fetchable
|
||||
{
|
||||
/* Properties */
|
||||
@NSManaged var name: String
|
||||
@NSManaged var identifier: String
|
||||
@NSManaged var bundleIdentifier: String
|
||||
@NSManaged var features: [ALTFeature: Any]
|
||||
@NSManaged var expirationDate: Date?
|
||||
@NSManaged public var name: String
|
||||
@NSManaged public var identifier: String
|
||||
@NSManaged public var bundleIdentifier: String
|
||||
@NSManaged public var features: [ALTFeature: Any]
|
||||
@NSManaged public var expirationDate: Date?
|
||||
|
||||
/* Relationships */
|
||||
@NSManaged private(set) var team: Team?
|
||||
@NSManaged public private(set) var team: Team?
|
||||
|
||||
private override init(entity: NSEntityDescription, insertInto context: NSManagedObjectContext?)
|
||||
{
|
||||
super.init(entity: entity, insertInto: context)
|
||||
}
|
||||
|
||||
init(_ appID: ALTAppID, team: Team, context: NSManagedObjectContext)
|
||||
public init(_ appID: ALTAppID, team: Team, context: NSManagedObjectContext)
|
||||
{
|
||||
super.init(entity: AppID.entity(), insertInto: context)
|
||||
|
||||
@@ -43,7 +43,7 @@ class AppID: NSManagedObject, Fetchable
|
||||
}
|
||||
}
|
||||
|
||||
extension AppID
|
||||
public extension AppID
|
||||
{
|
||||
@nonobjc class func fetchRequest() -> NSFetchRequest<AppID>
|
||||
{
|
||||
@@ -9,7 +9,7 @@
|
||||
import CoreData
|
||||
import UIKit
|
||||
|
||||
extension ALTAppPermissionType
|
||||
public extension ALTAppPermissionType
|
||||
{
|
||||
var localizedShortName: String? {
|
||||
switch self
|
||||
@@ -43,14 +43,14 @@ extension ALTAppPermissionType
|
||||
}
|
||||
|
||||
@objc(AppPermission)
|
||||
class AppPermission: NSManagedObject, Decodable, Fetchable
|
||||
public class AppPermission: NSManagedObject, Decodable, Fetchable
|
||||
{
|
||||
/* Properties */
|
||||
@NSManaged var type: ALTAppPermissionType
|
||||
@NSManaged var usageDescription: String
|
||||
@NSManaged public var type: ALTAppPermissionType
|
||||
@NSManaged public var usageDescription: String
|
||||
|
||||
/* Relationships */
|
||||
@NSManaged private(set) var app: StoreApp!
|
||||
@NSManaged public private(set) var app: StoreApp!
|
||||
|
||||
private override init(entity: NSEntityDescription, insertInto context: NSManagedObjectContext?)
|
||||
{
|
||||
@@ -63,7 +63,7 @@ class AppPermission: NSManagedObject, Decodable, Fetchable
|
||||
case usageDescription
|
||||
}
|
||||
|
||||
required init(from decoder: Decoder) throws
|
||||
public required init(from decoder: Decoder) throws
|
||||
{
|
||||
guard let context = decoder.managedObjectContext else { preconditionFailure("Decoder must have non-nil NSManagedObjectContext.") }
|
||||
|
||||
@@ -89,7 +89,7 @@ class AppPermission: NSManagedObject, Decodable, Fetchable
|
||||
}
|
||||
}
|
||||
|
||||
extension AppPermission
|
||||
public extension AppPermission
|
||||
{
|
||||
@nonobjc class func fetchRequest() -> NSFetchRequest<AppPermission>
|
||||
{
|
||||
@@ -23,7 +23,7 @@ public class DatabaseManager
|
||||
|
||||
private init()
|
||||
{
|
||||
self.persistentContainer = RSTPersistentContainer(name: "AltStore")
|
||||
self.persistentContainer = RSTPersistentContainer(name: "AltStore", bundle: Bundle(for: DatabaseManager.self))
|
||||
self.persistentContainer.preferredMergePolicy = MergePolicy()
|
||||
}
|
||||
}
|
||||
@@ -98,7 +98,7 @@ public extension DatabaseManager
|
||||
}
|
||||
}
|
||||
|
||||
extension DatabaseManager
|
||||
public extension DatabaseManager
|
||||
{
|
||||
func activeAccount(in context: NSManagedObjectContext = DatabaseManager.shared.viewContext) -> Account?
|
||||
{
|
||||
@@ -12,9 +12,9 @@ import CoreData
|
||||
import AltSign
|
||||
|
||||
// Free developer accounts are limited to only 3 active sideloaded apps at a time as of iOS 13.3.1.
|
||||
let ALTActiveAppsLimit = 3
|
||||
public let ALTActiveAppsLimit = 3
|
||||
|
||||
protocol InstalledAppProtocol: Fetchable
|
||||
public protocol InstalledAppProtocol: Fetchable
|
||||
{
|
||||
var name: String { get }
|
||||
var bundleIdentifier: String { get }
|
||||
@@ -27,36 +27,36 @@ protocol InstalledAppProtocol: Fetchable
|
||||
}
|
||||
|
||||
@objc(InstalledApp)
|
||||
class InstalledApp: NSManagedObject, InstalledAppProtocol
|
||||
public class InstalledApp: NSManagedObject, InstalledAppProtocol
|
||||
{
|
||||
/* Properties */
|
||||
@NSManaged var name: String
|
||||
@NSManaged var bundleIdentifier: String
|
||||
@NSManaged var resignedBundleIdentifier: String
|
||||
@NSManaged var version: String
|
||||
@NSManaged public var name: String
|
||||
@NSManaged public var bundleIdentifier: String
|
||||
@NSManaged public var resignedBundleIdentifier: String
|
||||
@NSManaged public var version: String
|
||||
|
||||
@NSManaged var refreshedDate: Date
|
||||
@NSManaged var expirationDate: Date
|
||||
@NSManaged var installedDate: Date
|
||||
@NSManaged public var refreshedDate: Date
|
||||
@NSManaged public var expirationDate: Date
|
||||
@NSManaged public var installedDate: Date
|
||||
|
||||
@NSManaged var isActive: Bool
|
||||
@NSManaged public var isActive: Bool
|
||||
|
||||
@NSManaged var certificateSerialNumber: String?
|
||||
@NSManaged public var certificateSerialNumber: String?
|
||||
|
||||
/* Relationships */
|
||||
@NSManaged var storeApp: StoreApp?
|
||||
@NSManaged var team: Team?
|
||||
@NSManaged var appExtensions: Set<InstalledExtension>
|
||||
@NSManaged public var storeApp: StoreApp?
|
||||
@NSManaged public var team: Team?
|
||||
@NSManaged public var appExtensions: Set<InstalledExtension>
|
||||
|
||||
var isSideloaded: Bool {
|
||||
public var isSideloaded: Bool {
|
||||
return self.storeApp == nil
|
||||
}
|
||||
|
||||
var appIDCount: Int {
|
||||
public var appIDCount: Int {
|
||||
return 1 + self.appExtensions.count
|
||||
}
|
||||
|
||||
var requiredActiveSlots: Int {
|
||||
public var requiredActiveSlots: Int {
|
||||
let requiredActiveSlots = UserDefaults.standard.activeAppLimitIncludesExtensions ? self.appIDCount : 1
|
||||
return requiredActiveSlots
|
||||
}
|
||||
@@ -66,7 +66,7 @@ class InstalledApp: NSManagedObject, InstalledAppProtocol
|
||||
super.init(entity: entity, insertInto: context)
|
||||
}
|
||||
|
||||
init(resignedApp: ALTApplication, originalBundleIdentifier: String, certificateSerialNumber: String?, context: NSManagedObjectContext)
|
||||
public init(resignedApp: ALTApplication, originalBundleIdentifier: String, certificateSerialNumber: String?, context: NSManagedObjectContext)
|
||||
{
|
||||
super.init(entity: InstalledApp.entity(), insertInto: context)
|
||||
|
||||
@@ -80,7 +80,7 @@ class InstalledApp: NSManagedObject, InstalledAppProtocol
|
||||
self.update(resignedApp: resignedApp, certificateSerialNumber: certificateSerialNumber)
|
||||
}
|
||||
|
||||
func update(resignedApp: ALTApplication, certificateSerialNumber: String?)
|
||||
public func update(resignedApp: ALTApplication, certificateSerialNumber: String?)
|
||||
{
|
||||
self.name = resignedApp.name
|
||||
|
||||
@@ -95,14 +95,14 @@ class InstalledApp: NSManagedObject, InstalledAppProtocol
|
||||
}
|
||||
}
|
||||
|
||||
func update(provisioningProfile: ALTProvisioningProfile)
|
||||
public func update(provisioningProfile: ALTProvisioningProfile)
|
||||
{
|
||||
self.refreshedDate = provisioningProfile.creationDate
|
||||
self.expirationDate = provisioningProfile.expirationDate
|
||||
}
|
||||
}
|
||||
|
||||
extension InstalledApp
|
||||
public extension InstalledApp
|
||||
{
|
||||
@nonobjc class func fetchRequest() -> NSFetchRequest<InstalledApp>
|
||||
{
|
||||
@@ -199,7 +199,7 @@ extension InstalledApp
|
||||
}
|
||||
}
|
||||
|
||||
extension InstalledApp
|
||||
public extension InstalledApp
|
||||
{
|
||||
var openAppURL: URL {
|
||||
let openAppURL = URL(string: "altstore-" + self.bundleIdentifier + "://")!
|
||||
@@ -213,7 +213,7 @@ extension InstalledApp
|
||||
}
|
||||
}
|
||||
|
||||
extension InstalledApp
|
||||
public extension InstalledApp
|
||||
{
|
||||
class var appsDirectoryURL: URL {
|
||||
let appsDirectoryURL = FileManager.default.applicationSupportDirectory.appendingPathComponent("Apps")
|
||||
@@ -12,27 +12,27 @@ import CoreData
|
||||
import AltSign
|
||||
|
||||
@objc(InstalledExtension)
|
||||
class InstalledExtension: NSManagedObject, InstalledAppProtocol
|
||||
public class InstalledExtension: NSManagedObject, InstalledAppProtocol
|
||||
{
|
||||
/* Properties */
|
||||
@NSManaged var name: String
|
||||
@NSManaged var bundleIdentifier: String
|
||||
@NSManaged var resignedBundleIdentifier: String
|
||||
@NSManaged var version: String
|
||||
@NSManaged public var name: String
|
||||
@NSManaged public var bundleIdentifier: String
|
||||
@NSManaged public var resignedBundleIdentifier: String
|
||||
@NSManaged public var version: String
|
||||
|
||||
@NSManaged var refreshedDate: Date
|
||||
@NSManaged var expirationDate: Date
|
||||
@NSManaged var installedDate: Date
|
||||
@NSManaged public var refreshedDate: Date
|
||||
@NSManaged public var expirationDate: Date
|
||||
@NSManaged public var installedDate: Date
|
||||
|
||||
/* Relationships */
|
||||
@NSManaged var parentApp: InstalledApp?
|
||||
@NSManaged public var parentApp: InstalledApp?
|
||||
|
||||
private override init(entity: NSEntityDescription, insertInto context: NSManagedObjectContext?)
|
||||
{
|
||||
super.init(entity: entity, insertInto: context)
|
||||
}
|
||||
|
||||
init(resignedAppExtension: ALTApplication, originalBundleIdentifier: String, context: NSManagedObjectContext)
|
||||
public init(resignedAppExtension: ALTApplication, originalBundleIdentifier: String, context: NSManagedObjectContext)
|
||||
{
|
||||
super.init(entity: InstalledExtension.entity(), insertInto: context)
|
||||
|
||||
@@ -46,7 +46,7 @@ class InstalledExtension: NSManagedObject, InstalledAppProtocol
|
||||
self.update(resignedAppExtension: resignedAppExtension)
|
||||
}
|
||||
|
||||
func update(resignedAppExtension: ALTApplication)
|
||||
public func update(resignedAppExtension: ALTApplication)
|
||||
{
|
||||
self.name = resignedAppExtension.name
|
||||
|
||||
@@ -59,14 +59,14 @@ class InstalledExtension: NSManagedObject, InstalledAppProtocol
|
||||
}
|
||||
}
|
||||
|
||||
func update(provisioningProfile: ALTProvisioningProfile)
|
||||
public func update(provisioningProfile: ALTProvisioningProfile)
|
||||
{
|
||||
self.refreshedDate = provisioningProfile.creationDate
|
||||
self.expirationDate = provisioningProfile.expirationDate
|
||||
}
|
||||
}
|
||||
|
||||
extension InstalledExtension
|
||||
public extension InstalledExtension
|
||||
{
|
||||
@nonobjc class func fetchRequest() -> NSFetchRequest<InstalledExtension>
|
||||
{
|
||||
@@ -10,27 +10,27 @@ import UIKit
|
||||
import CoreData
|
||||
|
||||
@objc(NewsItem)
|
||||
class NewsItem: NSManagedObject, Decodable, Fetchable
|
||||
public class NewsItem: NSManagedObject, Decodable, Fetchable
|
||||
{
|
||||
/* Properties */
|
||||
@NSManaged var identifier: String
|
||||
@NSManaged var date: Date
|
||||
@NSManaged public var identifier: String
|
||||
@NSManaged public var date: Date
|
||||
|
||||
@NSManaged var title: String
|
||||
@NSManaged var caption: String
|
||||
@NSManaged var tintColor: UIColor
|
||||
@NSManaged var sortIndex: Int32
|
||||
@NSManaged var isSilent: Bool
|
||||
@NSManaged public var title: String
|
||||
@NSManaged public var caption: String
|
||||
@NSManaged public var tintColor: UIColor
|
||||
@NSManaged public var sortIndex: Int32
|
||||
@NSManaged public var isSilent: Bool
|
||||
|
||||
@NSManaged var imageURL: URL?
|
||||
@NSManaged var externalURL: URL?
|
||||
@NSManaged public var imageURL: URL?
|
||||
@NSManaged public var externalURL: URL?
|
||||
|
||||
@NSManaged var appID: String?
|
||||
@NSManaged var sourceIdentifier: String?
|
||||
@NSManaged public var appID: String?
|
||||
@NSManaged public var sourceIdentifier: String?
|
||||
|
||||
/* Relationships */
|
||||
@NSManaged var storeApp: StoreApp?
|
||||
@NSManaged var source: Source?
|
||||
@NSManaged public var storeApp: StoreApp?
|
||||
@NSManaged public var source: Source?
|
||||
|
||||
private enum CodingKeys: String, CodingKey
|
||||
{
|
||||
@@ -50,7 +50,7 @@ class NewsItem: NSManagedObject, Decodable, Fetchable
|
||||
super.init(entity: entity, insertInto: context)
|
||||
}
|
||||
|
||||
required init(from decoder: Decoder) throws
|
||||
public required init(from decoder: Decoder) throws
|
||||
{
|
||||
guard let context = decoder.managedObjectContext else { preconditionFailure("Decoder must have non-nil NSManagedObjectContext.") }
|
||||
|
||||
@@ -82,7 +82,7 @@ class NewsItem: NSManagedObject, Decodable, Fetchable
|
||||
}
|
||||
}
|
||||
|
||||
extension NewsItem
|
||||
public extension NewsItem
|
||||
{
|
||||
@nonobjc class func fetchRequest() -> NSFetchRequest<NewsItem>
|
||||
{
|
||||
@@ -30,14 +30,14 @@ extension PatreonAPI
|
||||
}
|
||||
|
||||
@objc(PatreonAccount)
|
||||
class PatreonAccount: NSManagedObject, Fetchable
|
||||
public class PatreonAccount: NSManagedObject, Fetchable
|
||||
{
|
||||
@NSManaged var identifier: String
|
||||
@NSManaged public var identifier: String
|
||||
|
||||
@NSManaged var name: String
|
||||
@NSManaged var firstName: String?
|
||||
@NSManaged public var name: String
|
||||
@NSManaged public var firstName: String?
|
||||
|
||||
@NSManaged var isPatron: Bool
|
||||
@NSManaged public var isPatron: Bool
|
||||
|
||||
private override init(entity: NSEntityDescription, insertInto context: NSManagedObjectContext?)
|
||||
{
|
||||
@@ -64,7 +64,7 @@ class PatreonAccount: NSManagedObject, Fetchable
|
||||
}
|
||||
}
|
||||
|
||||
extension PatreonAccount
|
||||
public extension PatreonAccount
|
||||
{
|
||||
@nonobjc class func fetchRequest() -> NSFetchRequest<PatreonAccount>
|
||||
{
|
||||
@@ -9,20 +9,20 @@
|
||||
import CoreData
|
||||
|
||||
@objc(RefreshAttempt)
|
||||
class RefreshAttempt: NSManagedObject, Fetchable
|
||||
public class RefreshAttempt: NSManagedObject, Fetchable
|
||||
{
|
||||
@NSManaged var identifier: String
|
||||
@NSManaged var date: Date
|
||||
@NSManaged public var identifier: String
|
||||
@NSManaged public var date: Date
|
||||
|
||||
@NSManaged var isSuccess: Bool
|
||||
@NSManaged var errorDescription: String?
|
||||
@NSManaged public var isSuccess: Bool
|
||||
@NSManaged public var errorDescription: String?
|
||||
|
||||
private override init(entity: NSEntityDescription, insertInto context: NSManagedObjectContext?)
|
||||
{
|
||||
super.init(entity: entity, insertInto: context)
|
||||
}
|
||||
|
||||
init(identifier: String, result: Result<[String: Result<InstalledApp, Error>], Error>, context: NSManagedObjectContext)
|
||||
public init(identifier: String, result: Result<[String: Result<InstalledApp, Error>], Error>, context: NSManagedObjectContext)
|
||||
{
|
||||
super.init(entity: RefreshAttempt.entity(), insertInto: context)
|
||||
|
||||
@@ -50,7 +50,7 @@ class RefreshAttempt: NSManagedObject, Fetchable
|
||||
}
|
||||
}
|
||||
|
||||
extension RefreshAttempt
|
||||
public extension RefreshAttempt
|
||||
{
|
||||
@nonobjc class func fetchRequest() -> NSFetchRequest<RefreshAttempt>
|
||||
{
|
||||
@@ -9,11 +9,11 @@
|
||||
import Foundation
|
||||
|
||||
@objc(ALTSecureValueTransformer)
|
||||
final class SecureValueTransformer: NSSecureUnarchiveFromDataTransformer
|
||||
public final class SecureValueTransformer: NSSecureUnarchiveFromDataTransformer
|
||||
{
|
||||
static let name = NSValueTransformerName(rawValue: "ALTSecureValueTransformer")
|
||||
public static let name = NSValueTransformerName(rawValue: "ALTSecureValueTransformer")
|
||||
|
||||
override static var allowedTopLevelClasses: [AnyClass] {
|
||||
public override static var allowedTopLevelClasses: [AnyClass] {
|
||||
let allowedClasses = super.allowedTopLevelClasses + [NSError.self]
|
||||
return allowedClasses
|
||||
}
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
import CoreData
|
||||
|
||||
extension Source
|
||||
public extension Source
|
||||
{
|
||||
#if ALPHA
|
||||
static let altStoreIdentifier = "com.rileytestut.AltStore.Alpha"
|
||||
@@ -36,23 +36,23 @@ extension Source
|
||||
}
|
||||
|
||||
@objc(Source)
|
||||
class Source: NSManagedObject, Fetchable, Decodable
|
||||
public class Source: NSManagedObject, Fetchable, Decodable
|
||||
{
|
||||
/* Properties */
|
||||
@NSManaged var name: String
|
||||
@NSManaged var identifier: String
|
||||
@NSManaged var sourceURL: URL
|
||||
@NSManaged public var name: String
|
||||
@NSManaged public var identifier: String
|
||||
@NSManaged public var sourceURL: URL
|
||||
|
||||
@NSManaged var error: NSError?
|
||||
@NSManaged public var error: NSError?
|
||||
|
||||
/* Non-Core Data Properties */
|
||||
var userInfo: [ALTSourceUserInfoKey: String]?
|
||||
public var userInfo: [ALTSourceUserInfoKey: String]?
|
||||
|
||||
/* Relationships */
|
||||
@objc(apps) @NSManaged private(set) var _apps: NSOrderedSet
|
||||
@objc(newsItems) @NSManaged private(set) var _newsItems: NSOrderedSet
|
||||
@objc(apps) @NSManaged public private(set) var _apps: NSOrderedSet
|
||||
@objc(newsItems) @NSManaged public private(set) var _newsItems: NSOrderedSet
|
||||
|
||||
@nonobjc var apps: [StoreApp] {
|
||||
@nonobjc public var apps: [StoreApp] {
|
||||
get {
|
||||
return self._apps.array as! [StoreApp]
|
||||
}
|
||||
@@ -61,7 +61,7 @@ class Source: NSManagedObject, Fetchable, Decodable
|
||||
}
|
||||
}
|
||||
|
||||
@nonobjc var newsItems: [NewsItem] {
|
||||
@nonobjc public var newsItems: [NewsItem] {
|
||||
get {
|
||||
return self._newsItems.array as! [NewsItem]
|
||||
}
|
||||
@@ -85,7 +85,7 @@ class Source: NSManagedObject, Fetchable, Decodable
|
||||
super.init(entity: entity, insertInto: context)
|
||||
}
|
||||
|
||||
required init(from decoder: Decoder) throws
|
||||
public required init(from decoder: Decoder) throws
|
||||
{
|
||||
guard let context = decoder.managedObjectContext else { preconditionFailure("Decoder must have non-nil NSManagedObjectContext.") }
|
||||
guard let sourceURL = decoder.sourceURL else { preconditionFailure("Decoder must have non-nil sourceURL.") }
|
||||
@@ -147,7 +147,7 @@ class Source: NSManagedObject, Fetchable, Decodable
|
||||
}
|
||||
}
|
||||
|
||||
extension Source
|
||||
public extension Source
|
||||
{
|
||||
@nonobjc class func fetchRequest() -> NSFetchRequest<Source>
|
||||
{
|
||||
@@ -12,7 +12,7 @@ import CoreData
|
||||
import Roxas
|
||||
import AltSign
|
||||
|
||||
extension StoreApp
|
||||
public extension StoreApp
|
||||
{
|
||||
#if ALPHA
|
||||
static let altstoreAppID = "com.rileytestut.AltStore.Alpha"
|
||||
@@ -29,40 +29,40 @@ extension StoreApp
|
||||
}
|
||||
|
||||
@objc(StoreApp)
|
||||
class StoreApp: NSManagedObject, Decodable, Fetchable
|
||||
public class StoreApp: NSManagedObject, Decodable, Fetchable
|
||||
{
|
||||
/* Properties */
|
||||
@NSManaged private(set) var name: String
|
||||
@NSManaged private(set) var bundleIdentifier: String
|
||||
@NSManaged private(set) var subtitle: String?
|
||||
@NSManaged public private(set) var name: String
|
||||
@NSManaged public private(set) var bundleIdentifier: String
|
||||
@NSManaged public private(set) var subtitle: String?
|
||||
|
||||
@NSManaged private(set) var developerName: String
|
||||
@NSManaged private(set) var localizedDescription: String
|
||||
@NSManaged private(set) var size: Int32
|
||||
@NSManaged public private(set) var developerName: String
|
||||
@NSManaged public private(set) var localizedDescription: String
|
||||
@NSManaged public private(set) var size: Int32
|
||||
|
||||
@NSManaged private(set) var iconURL: URL
|
||||
@NSManaged private(set) var screenshotURLs: [URL]
|
||||
@NSManaged public private(set) var iconURL: URL
|
||||
@NSManaged public private(set) var screenshotURLs: [URL]
|
||||
|
||||
@NSManaged var version: String
|
||||
@NSManaged private(set) var versionDate: Date
|
||||
@NSManaged private(set) var versionDescription: String?
|
||||
@NSManaged public var version: String
|
||||
@NSManaged public private(set) var versionDate: Date
|
||||
@NSManaged public private(set) var versionDescription: String?
|
||||
|
||||
@NSManaged private(set) var downloadURL: URL
|
||||
@NSManaged private(set) var tintColor: UIColor?
|
||||
@NSManaged private(set) var isBeta: Bool
|
||||
@NSManaged public private(set) var downloadURL: URL
|
||||
@NSManaged public private(set) var tintColor: UIColor?
|
||||
@NSManaged public private(set) var isBeta: Bool
|
||||
|
||||
@NSManaged var sourceIdentifier: String?
|
||||
@NSManaged public var sourceIdentifier: String?
|
||||
|
||||
@NSManaged var sortIndex: Int32
|
||||
@NSManaged public var sortIndex: Int32
|
||||
|
||||
/* Relationships */
|
||||
@NSManaged var installedApp: InstalledApp?
|
||||
@NSManaged var newsItems: Set<NewsItem>
|
||||
@NSManaged public var installedApp: InstalledApp?
|
||||
@NSManaged public var newsItems: Set<NewsItem>
|
||||
|
||||
@NSManaged @objc(source) var _source: Source?
|
||||
@NSManaged @objc(permissions) var _permissions: NSOrderedSet
|
||||
@NSManaged @objc(source) public var _source: Source?
|
||||
@NSManaged @objc(permissions) public var _permissions: NSOrderedSet
|
||||
|
||||
@nonobjc var source: Source? {
|
||||
@nonobjc public var source: Source? {
|
||||
set {
|
||||
self._source = newValue
|
||||
self.sourceIdentifier = newValue?.identifier
|
||||
@@ -72,7 +72,7 @@ class StoreApp: NSManagedObject, Decodable, Fetchable
|
||||
}
|
||||
}
|
||||
|
||||
@nonobjc var permissions: [AppPermission] {
|
||||
@nonobjc public var permissions: [AppPermission] {
|
||||
return self._permissions.array as! [AppPermission]
|
||||
}
|
||||
|
||||
@@ -100,7 +100,7 @@ class StoreApp: NSManagedObject, Decodable, Fetchable
|
||||
case isBeta = "beta"
|
||||
}
|
||||
|
||||
required init(from decoder: Decoder) throws
|
||||
public required init(from decoder: Decoder) throws
|
||||
{
|
||||
guard let context = decoder.managedObjectContext else { preconditionFailure("Decoder must have non-nil NSManagedObjectContext.") }
|
||||
|
||||
@@ -153,7 +153,7 @@ class StoreApp: NSManagedObject, Decodable, Fetchable
|
||||
}
|
||||
}
|
||||
|
||||
extension StoreApp
|
||||
public extension StoreApp
|
||||
{
|
||||
@nonobjc class func fetchRequest() -> NSFetchRequest<StoreApp>
|
||||
{
|
||||
@@ -11,7 +11,7 @@ import CoreData
|
||||
|
||||
import AltSign
|
||||
|
||||
extension ALTTeamType
|
||||
public extension ALTTeamType
|
||||
{
|
||||
var localizedDescription: String {
|
||||
switch self
|
||||
@@ -25,34 +25,34 @@ extension ALTTeamType
|
||||
}
|
||||
}
|
||||
|
||||
extension Team
|
||||
public extension Team
|
||||
{
|
||||
static let maximumFreeAppIDs = 10
|
||||
}
|
||||
|
||||
@objc(Team)
|
||||
class Team: NSManagedObject, Fetchable
|
||||
public class Team: NSManagedObject, Fetchable
|
||||
{
|
||||
/* Properties */
|
||||
@NSManaged var name: String
|
||||
@NSManaged var identifier: String
|
||||
@NSManaged var type: ALTTeamType
|
||||
@NSManaged public var name: String
|
||||
@NSManaged public var identifier: String
|
||||
@NSManaged public var type: ALTTeamType
|
||||
|
||||
@NSManaged var isActiveTeam: Bool
|
||||
@NSManaged public var isActiveTeam: Bool
|
||||
|
||||
/* Relationships */
|
||||
@NSManaged private(set) var account: Account!
|
||||
@NSManaged var installedApps: Set<InstalledApp>
|
||||
@NSManaged private(set) var appIDs: Set<AppID>
|
||||
@NSManaged public private(set) var account: Account!
|
||||
@NSManaged public var installedApps: Set<InstalledApp>
|
||||
@NSManaged public private(set) var appIDs: Set<AppID>
|
||||
|
||||
var altTeam: ALTTeam?
|
||||
public var altTeam: ALTTeam?
|
||||
|
||||
private override init(entity: NSEntityDescription, insertInto context: NSManagedObjectContext?)
|
||||
{
|
||||
super.init(entity: entity, insertInto: context)
|
||||
}
|
||||
|
||||
init(_ team: ALTTeam, account: Account, context: NSManagedObjectContext)
|
||||
public init(_ team: ALTTeam, account: Account, context: NSManagedObjectContext)
|
||||
{
|
||||
super.init(entity: Team.entity(), insertInto: context)
|
||||
|
||||
@@ -61,7 +61,7 @@ class Team: NSManagedObject, Fetchable
|
||||
self.update(team: team)
|
||||
}
|
||||
|
||||
func update(team: ALTTeam)
|
||||
public func update(team: ALTTeam)
|
||||
{
|
||||
self.altTeam = team
|
||||
|
||||
@@ -71,7 +71,7 @@ class Team: NSManagedObject, Fetchable
|
||||
}
|
||||
}
|
||||
|
||||
extension Team
|
||||
public extension Team
|
||||
{
|
||||
@nonobjc class func fetchRequest() -> NSFetchRequest<Team>
|
||||
{
|
||||
@@ -16,9 +16,9 @@ extension PatreonAPI
|
||||
}
|
||||
}
|
||||
|
||||
struct Benefit: Hashable
|
||||
public struct Benefit: Hashable
|
||||
{
|
||||
var type: ALTPatreonBenefitType
|
||||
public var type: ALTPatreonBenefitType
|
||||
|
||||
init(response: PatreonAPI.BenefitResponse)
|
||||
{
|
||||
@@ -16,9 +16,9 @@ extension PatreonAPI
|
||||
}
|
||||
}
|
||||
|
||||
struct Campaign
|
||||
public struct Campaign
|
||||
{
|
||||
var identifier: String
|
||||
public var identifier: String
|
||||
|
||||
init(response: PatreonAPI.CampaignResponse)
|
||||
{
|
||||
@@ -71,11 +71,11 @@ extension PatreonAPI
|
||||
}
|
||||
}
|
||||
|
||||
class PatreonAPI: NSObject
|
||||
public class PatreonAPI: NSObject
|
||||
{
|
||||
static let shared = PatreonAPI()
|
||||
public static let shared = PatreonAPI()
|
||||
|
||||
var isAuthenticated: Bool {
|
||||
public var isAuthenticated: Bool {
|
||||
return Keychain.shared.patreonAccessToken != nil
|
||||
}
|
||||
|
||||
@@ -90,7 +90,7 @@ class PatreonAPI: NSObject
|
||||
}
|
||||
}
|
||||
|
||||
extension PatreonAPI
|
||||
public extension PatreonAPI
|
||||
{
|
||||
func authenticate(completion: @escaping (Result<PatreonAccount, Swift.Error>) -> Void)
|
||||
{
|
||||
@@ -412,8 +412,8 @@ private extension PatreonAPI
|
||||
@available(iOS 13.0, *)
|
||||
extension PatreonAPI: ASWebAuthenticationPresentationContextProviding
|
||||
{
|
||||
func presentationAnchor(for session: ASWebAuthenticationSession) -> ASPresentationAnchor
|
||||
public func presentationAnchor(for session: ASWebAuthenticationSession) -> ASPresentationAnchor
|
||||
{
|
||||
return UIApplication.shared.keyWindow ?? UIWindow()
|
||||
return UIApplication.alt_shared?.keyWindow ?? UIWindow()
|
||||
}
|
||||
}
|
||||
@@ -43,7 +43,7 @@ extension PatreonAPI
|
||||
|
||||
extension Patron
|
||||
{
|
||||
enum Status: String, Decodable
|
||||
public enum Status: String, Decodable
|
||||
{
|
||||
case active = "active_patron"
|
||||
case declined = "declined_patron"
|
||||
@@ -52,14 +52,14 @@ extension Patron
|
||||
}
|
||||
}
|
||||
|
||||
class Patron
|
||||
public class Patron
|
||||
{
|
||||
var name: String
|
||||
var identifier: String
|
||||
public var name: String
|
||||
public var identifier: String
|
||||
|
||||
var status: Status
|
||||
public var status: Status
|
||||
|
||||
var benefits: Set<Benefit> = []
|
||||
public var benefits: Set<Benefit> = []
|
||||
|
||||
init(response: PatreonAPI.PatronResponse)
|
||||
{
|
||||
@@ -34,12 +34,12 @@ extension PatreonAPI
|
||||
}
|
||||
}
|
||||
|
||||
struct Tier
|
||||
public struct Tier
|
||||
{
|
||||
var name: String
|
||||
var identifier: String
|
||||
public var name: String
|
||||
public var identifier: String
|
||||
|
||||
var benefits: [Benefit] = []
|
||||
public var benefits: [Benefit] = []
|
||||
|
||||
init(response: PatreonAPI.TierResponse)
|
||||
{
|
||||
@@ -9,7 +9,7 @@
|
||||
import Foundation
|
||||
import AltSign
|
||||
|
||||
protocol AppProtocol
|
||||
public protocol AppProtocol
|
||||
{
|
||||
var name: String { get }
|
||||
var bundleIdentifier: String { get }
|
||||
@@ -18,21 +18,21 @@ protocol AppProtocol
|
||||
|
||||
extension ALTApplication: AppProtocol
|
||||
{
|
||||
var url: URL {
|
||||
public var url: URL {
|
||||
return self.fileURL
|
||||
}
|
||||
}
|
||||
|
||||
extension StoreApp: AppProtocol
|
||||
{
|
||||
var url: URL {
|
||||
public var url: URL {
|
||||
return self.downloadURL
|
||||
}
|
||||
}
|
||||
|
||||
extension InstalledApp: AppProtocol
|
||||
{
|
||||
var url: URL {
|
||||
public var url: URL {
|
||||
return self.fileURL
|
||||
}
|
||||
}
|
||||
@@ -8,13 +8,13 @@
|
||||
|
||||
import CoreData
|
||||
|
||||
typealias FetchRequest = NSFetchRequest<NSFetchRequestResult>
|
||||
public typealias FetchRequest = NSFetchRequest<NSFetchRequestResult>
|
||||
|
||||
protocol Fetchable: NSManagedObject
|
||||
public protocol Fetchable: NSManagedObject
|
||||
{
|
||||
}
|
||||
|
||||
extension Fetchable
|
||||
public extension Fetchable
|
||||
{
|
||||
static func first(satisfying predicate: NSPredicate? = nil, sortedBy sortDescriptors: [NSSortDescriptor]? = nil, in context: NSManagedObjectContext,
|
||||
requestProperties: [PartialKeyPath<FetchRequest>: Any?] = [:]) -> Self?
|
||||
14
Podfile
14
Podfile
@@ -3,10 +3,9 @@ inhibit_all_warnings!
|
||||
target 'AltStore' do
|
||||
platform :ios, '12.0'
|
||||
|
||||
use_modular_headers!
|
||||
use_frameworks!
|
||||
|
||||
# Pods for AltStore
|
||||
pod 'KeychainAccess', '~> 3.2.0'
|
||||
pod 'Nuke', '~> 7.0'
|
||||
pod 'AppCenter', '~> 3.1.0'
|
||||
pod 'Roxas', :path => 'Dependencies/Roxas'
|
||||
@@ -24,6 +23,17 @@ target 'AltServer' do
|
||||
|
||||
end
|
||||
|
||||
target 'AltStoreCore' do
|
||||
platform :ios, '12.0'
|
||||
|
||||
use_frameworks!
|
||||
|
||||
# Pods for AltServer
|
||||
pod 'KeychainAccess', '~> 3.2.0'
|
||||
pod 'Roxas', :path => 'Dependencies/Roxas'
|
||||
|
||||
end
|
||||
|
||||
target 'AltDaemon' do
|
||||
platform :ios, '12.0'
|
||||
|
||||
|
||||
@@ -47,6 +47,6 @@ SPEC CHECKSUMS:
|
||||
Sparkle: 3f75576db8b0265adef36c43249d747f22d0b708
|
||||
STPrivilegedTask: 56c3397238a1ec07720fb877a044898373cd2c68
|
||||
|
||||
PODFILE CHECKSUM: 8e139db2a0c0a1d2f4affc7b615b6ca0720633ed
|
||||
PODFILE CHECKSUM: f76f10e8f2823d859ce9672d0b5d7054a5c24504
|
||||
|
||||
COCOAPODS: 1.9.3
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
../../../Target Support Files/KeychainAccess/KeychainAccess-umbrella.h
|
||||
@@ -1 +0,0 @@
|
||||
../../../Target Support Files/KeychainAccess/KeychainAccess.modulemap
|
||||
1
Pods/Headers/Public/Nuke/Nuke-umbrella.h
generated
1
Pods/Headers/Public/Nuke/Nuke-umbrella.h
generated
@@ -1 +0,0 @@
|
||||
../../../Target Support Files/Nuke/Nuke-umbrella.h
|
||||
1
Pods/Headers/Public/Nuke/Nuke.modulemap
generated
1
Pods/Headers/Public/Nuke/Nuke.modulemap
generated
@@ -1 +0,0 @@
|
||||
../../../Target Support Files/Nuke/Nuke.modulemap
|
||||
1
Pods/Headers/Public/Roxas/Roxas-library-umbrella.h
generated
Symbolic link
1
Pods/Headers/Public/Roxas/Roxas-library-umbrella.h
generated
Symbolic link
@@ -0,0 +1 @@
|
||||
../../../Target Support Files/Roxas-library/Roxas-library-umbrella.h
|
||||
1
Pods/Headers/Public/Roxas/Roxas-library.modulemap
generated
Symbolic link
1
Pods/Headers/Public/Roxas/Roxas-library.modulemap
generated
Symbolic link
@@ -0,0 +1 @@
|
||||
../../../Target Support Files/Roxas-library/Roxas-library.modulemap
|
||||
1
Pods/Headers/Public/Roxas/Roxas-umbrella.h
generated
1
Pods/Headers/Public/Roxas/Roxas-umbrella.h
generated
@@ -1 +0,0 @@
|
||||
../../../Target Support Files/Roxas/Roxas-umbrella.h
|
||||
1
Pods/Headers/Public/Roxas/Roxas.modulemap
generated
1
Pods/Headers/Public/Roxas/Roxas.modulemap
generated
@@ -1 +0,0 @@
|
||||
../../../Target Support Files/Roxas/Roxas.modulemap
|
||||
2
Pods/Manifest.lock
generated
2
Pods/Manifest.lock
generated
@@ -47,6 +47,6 @@ SPEC CHECKSUMS:
|
||||
Sparkle: 3f75576db8b0265adef36c43249d747f22d0b708
|
||||
STPrivilegedTask: 56c3397238a1ec07720fb877a044898373cd2c68
|
||||
|
||||
PODFILE CHECKSUM: 8e139db2a0c0a1d2f4affc7b615b6ca0720633ed
|
||||
PODFILE CHECKSUM: f76f10e8f2823d859ce9672d0b5d7054a5c24504
|
||||
|
||||
COCOAPODS: 1.9.3
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user