fix: swift stuff

This commit is contained in:
2025-10-05 20:35:49 +01:00
parent a776c88cab
commit d534779fad

View File

@ -54,19 +54,16 @@ class ShareViewController: SLComposeServiceViewController {
}
override func didSelectPost() {
refreshToken {
// This method is called when the user taps the "Post" button.
// Start the asynchronous operation here.
guard let provider = self.imageItemProvider else {
print("Error: No image item provider found when posting.")
// Inform the user or log an error
self.extensionContext!.completeRequest(returningItems: [], completionHandler: nil)
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 token = self.bearerToken else {
print("Error: Bearer token is missing when posting.")
guard let provider = self.imageItemProvider else {
print("Error: No image item provider found when posting.")
// Inform the user or log an error
self.extensionContext!.completeRequest(returningItems: [], completionHandler: nil)
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,22 +167,16 @@ 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()
}