diff --git a/frontend/src-tauri/gen/apple/Sharing/ShareViewController.swift b/frontend/src-tauri/gen/apple/Sharing/ShareViewController.swift index 37abe17..0cbd7f3 100644 --- a/frontend/src-tauri/gen/apple/Sharing/ShareViewController.swift +++ b/frontend/src-tauri/gen/apple/Sharing/ShareViewController.swift @@ -54,9 +54,13 @@ class ShareViewController: SLComposeServiceViewController { } override func didSelectPost() { - refreshToken { - // This method is called when the user taps the "Post" button. - // Start the asynchronous operation here. + refreshToken { accessToken in + guard let token = accessToken else { + // Inform the user about the authentication failure + let error = NSError(domain: "ShareExtension", code: -1, userInfo: [NSLocalizedDescriptionKey: "Authentication failed. Please log in again."]) + self.extensionContext!.cancelRequest(withError: error) + return + } guard let provider = self.imageItemProvider else { print("Error: No image item provider found when posting.") @@ -65,13 +69,6 @@ class ShareViewController: SLComposeServiceViewController { return } - guard let token = self.bearerToken else { - print("Error: Bearer token is missing when posting.") - // Inform the user or log an error - self.extensionContext!.completeRequest(returningItems: [], completionHandler: nil) - return - } - // Load the image data asynchronously provider.loadItem(forTypeIdentifier: kUTTypeImage as String, options: nil) { [weak self] (item, error) in guard let self = self else { return } @@ -116,9 +113,6 @@ class ShareViewController: SLComposeServiceViewController { // Now perform the upload asynchronously self.uploadRawData(dataToUpload, imageName: finalImageName, bearerToken: token) } - - // Do not complete the request here. - // The request will be completed in the uploadRawData completion handler. } } @@ -159,7 +153,12 @@ class ShareViewController: SLComposeServiceViewController { task.resume() } - func refreshToken(completion: @escaping () -> Void) { + func refreshToken(completion: @escaping (String?) -> Void) { + guard let refreshToken = self.refreshToken else { + completion(nil) + return + } + let url = URL(string: "https://haystack.johncosta.tech/auth/refresh")! var request = URLRequest(url: url) request.httpMethod = "POST" @@ -168,20 +167,14 @@ class ShareViewController: SLComposeServiceViewController { let body = ["refresh": refreshToken] request.httpBody = try? JSONSerialization.data(withJSONObject: body, options: []) - let task = URLSession.shared.dataTask(with: request) { [weak self] (data, response, error) in - guard let self = self else { return } - + let task = URLSession.shared.dataTask(with: request) { (data, response, error) in if let data = data, let json = try? JSONSerialization.jsonObject(with: data, options: []) as? [String: Any], let accessToken = json["access"] as? String { - - if let sharedDefaults = UserDefaults(suiteName: self.appGroupName) { - sharedDefaults.set(accessToken, forKey: self.tokenKey) - self.bearerToken = accessToken - } + completion(accessToken) + } else { + completion(nil) } - - completion() } task.resume()