Fixed opening universal links

This commit is contained in:
Selim Mustafaev 2025-03-09 13:48:48 +03:00
parent fffd101f85
commit 593deaf6f6
4 changed files with 11 additions and 50 deletions

View File

@ -1785,7 +1785,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = AutoCat/AutoCat.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 151;
CURRENT_PROJECT_VERSION = 152;
DEVELOPMENT_TEAM = 46DTTB8X4S;
INFOPLIST_FILE = AutoCat/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = AutoCat;
@ -1812,7 +1812,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = AutoCat/AutoCat.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 151;
CURRENT_PROJECT_VERSION = 152;
DEVELOPMENT_TEAM = 46DTTB8X4S;
INFOPLIST_FILE = AutoCat/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = AutoCat;

View File

@ -3,19 +3,9 @@ import RealmSwift
import PKHUD
import AutoCatCore
enum QuickAction {
case none
case check
case checkNumber(String, VehicleEventDto?)
case addVoiceRecord
case openReport(String)
}
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
var quickAction: QuickAction = .none
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let config = Realm.Configuration(
@ -94,18 +84,6 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
// Called when a new scene session is being created.
// Use this method to select a configuration to create the new scene with.
#if !targetEnvironment(macCatalyst)
if let shortcutItem = options.shortcutItem {
if shortcutItem.type == "CheckNumberAction" {
self.quickAction = .check
} else if shortcutItem.type == "AddVoiceRecordAction" {
self.quickAction = .addVoiceRecord
}
}
#endif
return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
}

View File

@ -38,26 +38,6 @@ class RecordsController: UIViewController, UITableViewDelegate {
self.tableView.delegate = self
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.handleQuickActions()
}
func handleQuickActions() {
guard let ad = UIApplication.shared.delegate as? AppDelegate else { return }
switch ad.quickAction {
case .addVoiceRecord:
ad.quickAction = .none
if let addButton = self.navigationItem.rightBarButtonItem {
self.onAddVoiceRecord(addButton)
}
break
default:
break
}
}
func donateUserActivity() {
let activityId = "pro.aliencat.autocat.addVoiceRecord"
let activity = NSUserActivity(activityType: activityId)
@ -327,8 +307,7 @@ class RecordsController: UIViewController, UITableViewDelegate {
}
func check(number: String, event: VehicleEventDto?) {
guard let ad = UIApplication.shared.delegate as? AppDelegate else { return }
ad.quickAction = .checkNumber(number, event)
// TODO: Implement checking number without quick action
self.tabBarController?.selectedIndex = 0
}

View File

@ -14,14 +14,15 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
// Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
// If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
// This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
guard let ad = UIApplication.shared.delegate as? AppDelegate else { return }
var number: String?
if let activity = connectionOptions.userActivities.first {
if let url = activity.webpageURL {
if let param = URLComponents(url: url, resolvingAgainstBaseURL: false)?.queryItems?.first, let token = param.value {
if let jwt = JWT<NumberPayload>(string: token) {
ad.quickAction = .openReport(jwt.payload.plateNumber)
number = jwt.payload.plateNumber
}
}
}
@ -29,7 +30,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
Task {
try? await registerServices()
setupRootController(scene: scene)
setupRootController(scene: scene, openReport: number)
}
}
@ -61,7 +62,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
container.register(VehicleServiceProtocol.self, instance: vehicleService)
}
func setupRootController(scene: UIScene) {
func setupRootController(scene: UIScene, openReport number: String?) {
guard let windowScene = (scene as? UIWindowScene) else {
return
}
@ -75,6 +76,9 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
self.window?.rootViewController = storyboard.instantiateViewController(identifier: "AuthController")
} else {
self.window?.rootViewController = storyboard.instantiateViewController(identifier: "MainSplitController")
if let number {
Task { await openReport(with: number) }
}
}
#if targetEnvironment(macCatalyst)