mirror of
https://github.com/SideStore/SideStore.git
synced 2026-02-09 06:43:25 +01:00
Fix enum to objc core data for app permission
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 53;
|
||||
objectVersion = 55;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
@@ -29,6 +29,8 @@
|
||||
B34AFC1329B032DF000F318E /* WidgetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B34AFC0B29B032DF000F318E /* WidgetView.swift */; };
|
||||
B34AFC1429B032DF000F318E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B34AFC0D29B032DF000F318E /* Assets.xcassets */; };
|
||||
B34AFC1629B032DF000F318E /* SideWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = B34AFC1029B032DF000F318E /* SideWidget.swift */; };
|
||||
B34BA8E629B0FE8D0055A710 /* AppDelegate+BackgroundFetch.swift in Sources */ = {isa = PBXBuildFile; fileRef = B34BA8E529B0FE8D0055A710 /* AppDelegate+BackgroundFetch.swift */; };
|
||||
B34BA8EC29B332FF0055A710 /* SideStoreAppKit in Frameworks */ = {isa = PBXBuildFile; productRef = B34BA8EB29B332FF0055A710 /* SideStoreAppKit */; };
|
||||
B3C40F5229B05B4200C93D50 /* SideWidget in Frameworks */ = {isa = PBXBuildFile; productRef = B3C40F5129B05B4200C93D50 /* SideWidget */; };
|
||||
B3C40F5329B06A0000C93D50 /* PatchApp.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B34AFBD929B0324C000F318E /* PatchApp.storyboard */; };
|
||||
B3C40F5429B06A2B00C93D50 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B34AFBE629B0324C000F318E /* LaunchScreen.storyboard */; };
|
||||
@@ -88,6 +90,7 @@
|
||||
B34AFC1029B032DF000F318E /* SideWidget.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SideWidget.swift; sourceTree = "<group>"; };
|
||||
B34AFC1929B04EBB000F318E /* Dangerfile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Dangerfile.swift; sourceTree = "<group>"; };
|
||||
B34AFC1A29B04EBB000F318E /* Project.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Project.swift; sourceTree = "<group>"; };
|
||||
B34BA8E529B0FE8D0055A710 /* AppDelegate+BackgroundFetch.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AppDelegate+BackgroundFetch.swift"; sourceTree = "<group>"; };
|
||||
B39575F4284F29E20080B4FF /* Roxas.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Roxas.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
B3C39606284F4C8400DA9E2F /* CodeSigning.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = CodeSigning.xcconfig; sourceTree = "<group>"; };
|
||||
B3C39607284F4C8400DA9E2F /* Build.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Build.xcconfig; sourceTree = "<group>"; };
|
||||
@@ -113,6 +116,7 @@
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
B34BA8EC29B332FF0055A710 /* SideStoreAppKit in Frameworks */,
|
||||
B3C40F5229B05B4200C93D50 /* SideWidget in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
@@ -134,6 +138,7 @@
|
||||
children = (
|
||||
B34AFBD729B0324C000F318E /* Resources */,
|
||||
B34AFBF529B0324C000F318E /* AppDelegate.swift */,
|
||||
B34BA8E529B0FE8D0055A710 /* AppDelegate+BackgroundFetch.swift */,
|
||||
B34AFBF629B0324C000F318E /* LaunchViewController.swift */,
|
||||
B34AFBF729B0324C000F318E /* SceneDelegate.swift */,
|
||||
);
|
||||
@@ -315,6 +320,7 @@
|
||||
name = SideWidgetExtension;
|
||||
packageProductDependencies = (
|
||||
B3C40F5129B05B4200C93D50 /* SideWidget */,
|
||||
B34BA8EB29B332FF0055A710 /* SideStoreAppKit */,
|
||||
);
|
||||
productName = AltWidgetExtension;
|
||||
productReference = BF989167250AABF3002ACF50 /* SideWidgetExtension.appex */;
|
||||
@@ -371,7 +377,7 @@
|
||||
};
|
||||
};
|
||||
buildConfigurationList = BFD247652284B9A500981D42 /* Build configuration list for PBXProject "SideStore" */;
|
||||
compatibilityVersion = "Xcode 9.3";
|
||||
compatibilityVersion = "Xcode 13.0";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
@@ -445,6 +451,7 @@
|
||||
B34AFBFA29B03251000F318E /* AppDelegate.swift in Sources */,
|
||||
B34AFBF829B03251000F318E /* LaunchViewController.swift in Sources */,
|
||||
B34AFBF929B03251000F318E /* SceneDelegate.swift in Sources */,
|
||||
B34BA8E629B0FE8D0055A710 /* AppDelegate+BackgroundFetch.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -674,7 +681,7 @@
|
||||
CODE_SIGN_ENTITLEMENTS = SideStoreApp/Sources/SideStore/Resources/SideStore.entitlements;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = "$(DEVELOPMENT_TEAM)";
|
||||
DEVELOPMENT_TEAM = S32Z3HMYVQ;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = SideStoreApp/Sources/SideStore/Resources/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
|
||||
@@ -702,7 +709,7 @@
|
||||
CODE_SIGN_ENTITLEMENTS = SideStoreApp/Sources/SideStore/Resources/SideStore.entitlements;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = "$(DEVELOPMENT_TEAM)";
|
||||
DEVELOPMENT_TEAM = S32Z3HMYVQ;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = SideStoreApp/Sources/SideStore/Resources/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
|
||||
@@ -757,6 +764,10 @@
|
||||
isa = XCSwiftPackageProductDependency;
|
||||
productName = SideStoreAppKit;
|
||||
};
|
||||
B34BA8EB29B332FF0055A710 /* SideStoreAppKit */ = {
|
||||
isa = XCSwiftPackageProductDependency;
|
||||
productName = SideStoreAppKit;
|
||||
};
|
||||
B3C40F5129B05B4200C93D50 /* SideWidget */ = {
|
||||
isa = XCSwiftPackageProductDependency;
|
||||
productName = SideWidget;
|
||||
|
||||
@@ -291,6 +291,7 @@ let package = Package(
|
||||
.target(
|
||||
name: "SideWidget",
|
||||
dependencies: [
|
||||
"SideStoreAppKit",
|
||||
"Shared",
|
||||
"SideStoreCore",
|
||||
"AltSign",
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
//
|
||||
// AppDelegate+BackgroundFetch.swift
|
||||
// SideStore
|
||||
//
|
||||
// Created by Joseph Mattiello on 3/2/23.
|
||||
// Copyright © 2023 SideStore. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
@@ -10,13 +10,13 @@ import AVFoundation
|
||||
import Intents
|
||||
import UIKit
|
||||
import UserNotifications
|
||||
import os.log
|
||||
|
||||
import AltSign
|
||||
import SideStoreCore
|
||||
import SideStoreAppKit
|
||||
import EmotionalDamage
|
||||
import RoxasUIKit
|
||||
import os.log
|
||||
|
||||
@UIApplicationMain
|
||||
final class AppDelegate: SideStoreAppDelegate {
|
||||
@@ -53,6 +53,8 @@ final class AppDelegate: SideStoreAppDelegate {
|
||||
os_log("Failed to start DatabaseManager. Error: %@", type: .error , error.localizedDescription)
|
||||
} else {
|
||||
os_log("Started DatabaseManager.", type: .info)
|
||||
let transformer = ALTAppPermissionTypeTransformer()
|
||||
ValueTransformer.setValueTransformer(transformer, forName: NSValueTransformerName(rawValue: "ALTAppPermissionTypeTransformer"))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
<dict>
|
||||
<key>aps-environment</key>
|
||||
<string>development</string>
|
||||
<key>com.apple.developer.kernel.increased-memory-limit</key>
|
||||
<true/>
|
||||
<key>com.apple.developer.siri</key>
|
||||
<true/>
|
||||
<key>com.apple.security.application-groups</key>
|
||||
|
||||
@@ -3,16 +3,18 @@
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>application-identifier</key>
|
||||
<string>A72ZC8AJ5X.com.SideStore.SideStore</string>
|
||||
<string>S32Z3HMYVQ.com.SideStore.SideStore</string>
|
||||
<key>aps-environment</key>
|
||||
<string>development</string>
|
||||
<key>com.apple.developer.siri</key>
|
||||
<true/>
|
||||
<key>com.apple.developer.kernel.increased-memory-limit</key>
|
||||
<true/>
|
||||
<key>com.apple.developer.team-identifier</key>
|
||||
<string>A72ZC8AJ5X</string>
|
||||
<key>com.apple.security.application-groups</key>
|
||||
<array>
|
||||
<string>group.com.SideStore.SideStore</string>
|
||||
<string>group.$(APP_GROUP_IDENTIFIER)</string>
|
||||
</array>
|
||||
<key>get-task-allow</key>
|
||||
<true/>
|
||||
|
||||
@@ -10,7 +10,9 @@ import UIKit
|
||||
|
||||
import RoxasUIKit
|
||||
|
||||
@objc
|
||||
final class NavigationBar: UINavigationBar {
|
||||
@objc
|
||||
@IBInspectable var automaticallyAdjustsItemPositions: Bool = true
|
||||
|
||||
private let backgroundColorView = UIView()
|
||||
|
||||
@@ -68,9 +68,30 @@ public extension ALTAppPermissionType {
|
||||
}
|
||||
|
||||
@objc(AppPermission)
|
||||
public class AppPermission: NSManagedObject, Decodable, Fetchable {
|
||||
public class AppPermission: NSManagedObject, Decodable, Fetchable, NSKeyValueObservingCustomization {
|
||||
public static func keyPathsAffectingValue(for key: AnyKeyPath) -> Set<AnyKeyPath> {
|
||||
print("keyPathsAffectingValue: \(String(describing: key))")
|
||||
return Set<AnyKeyPath>([key])
|
||||
}
|
||||
|
||||
public static func automaticallyNotifiesObservers(for key: AnyKeyPath) -> Bool {
|
||||
print("automaticallyNotifiesObservers: \(String(describing: key))")
|
||||
return true
|
||||
}
|
||||
|
||||
/* Properties */
|
||||
@NSManaged public var type: ALTAppPermissionType
|
||||
@objc(type)
|
||||
@NSManaged public var _type: String
|
||||
@nonobjc
|
||||
public var type: ALTAppPermissionType {
|
||||
get {
|
||||
ALTAppPermissionType(rawValue: _type)
|
||||
}
|
||||
set {
|
||||
_type = newValue.stringValue
|
||||
}
|
||||
}
|
||||
|
||||
@NSManaged public var usageDescription: String
|
||||
|
||||
/* Relationships */
|
||||
@@ -95,11 +116,13 @@ public class AppPermission: NSManagedObject, Decodable, Fetchable {
|
||||
usageDescription = try container.decode(String.self, forKey: .usageDescription)
|
||||
|
||||
let rawType = try container.decode(String.self, forKey: .type)
|
||||
guard let type = ALTAppPermissionType(rawValue: rawType) else {
|
||||
throw DecodingError.dataCorrupted(
|
||||
DecodingError.Context(codingPath: [CodingKeys.type],
|
||||
debugDescription: "Invalid value for `ALTAppPermissionType` \"\(rawType)\""))
|
||||
}
|
||||
// guard
|
||||
let type = ALTAppPermissionType(rawValue: rawType)
|
||||
// else {
|
||||
// throw DecodingError.dataCorrupted(
|
||||
// DecodingError.Context(codingPath: [CodingKeys.type],
|
||||
// debugDescription: "Invalid value for `ALTAppPermissionType` \"\(rawType)\""))
|
||||
// }
|
||||
self.type = type
|
||||
} catch {
|
||||
if let context = managedObjectContext {
|
||||
|
||||
@@ -27,8 +27,9 @@ public enum ALTAppPermissionType: Int, CaseIterable {
|
||||
case faceID
|
||||
case siri
|
||||
case motion
|
||||
case null
|
||||
|
||||
public init?(rawValue: String) {
|
||||
public init(rawValue: String) {
|
||||
switch rawValue {
|
||||
case "photos": self = .photos
|
||||
case "camera": self = .camera
|
||||
@@ -47,7 +48,7 @@ public enum ALTAppPermissionType: Int, CaseIterable {
|
||||
case "faceID", "faceid": self = .faceID
|
||||
case "siri": self = .siri
|
||||
case "motion": self = .motion
|
||||
default: return nil
|
||||
default: self = .null
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,6 +88,21 @@ public enum ALTAppPermissionType: Int, CaseIterable {
|
||||
return "siri"
|
||||
case .motion:
|
||||
return "motion"
|
||||
case .null:
|
||||
return ""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@objc
|
||||
public final class ALTAppPermissionTypeTransformer: ValueTransformer {
|
||||
public override func transformedValue(_ value: Any?) -> Any? {
|
||||
guard let enumValue = value as? ALTAppPermissionType else { return "" }
|
||||
return enumValue.rawValue
|
||||
}
|
||||
|
||||
public override func reverseTransformedValue(_ value: Any?) -> Any? {
|
||||
guard let rawValue = value as? String else { return ALTAppPermissionType.null }
|
||||
return ALTAppPermissionType(rawValue: rawValue)
|
||||
}
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
@@ -23,6 +23,11 @@
|
||||
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>$(MARKETING_VERSION)</string>
|
||||
<key>INIntentsSupported</key>
|
||||
<array>
|
||||
<string>RefreshAllIntent</string>
|
||||
<string>ViewAppIntent</string>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>NSExtension</key>
|
||||
|
||||
Reference in New Issue
Block a user