From a776c88cabed1d30f9641268f7042fdd127701d3 Mon Sep 17 00:00:00 2001 From: John Costa Date: Sun, 5 Oct 2025 20:34:23 +0100 Subject: [PATCH] fix: more swift stuff --- .../Haystack/.ShareViewController.swift.swp | Bin 12288 -> 0 bytes .../Base.lproj/MainInterface.storyboard | 24 --- .../gen/apple/Haystack/Haystack.entitlements | 10 - .../src-tauri/gen/apple/Haystack/Info.plist | 39 ---- .../apple/Haystack/ShareViewController.swift | 196 ------------------ .../apple/Sharing/ShareViewController.swift | 4 +- frontend/src/network/index.ts | 4 +- 7 files changed, 4 insertions(+), 273 deletions(-) delete mode 100644 frontend/src-tauri/gen/apple/Haystack/.ShareViewController.swift.swp delete mode 100644 frontend/src-tauri/gen/apple/Haystack/Base.lproj/MainInterface.storyboard delete mode 100644 frontend/src-tauri/gen/apple/Haystack/Haystack.entitlements delete mode 100644 frontend/src-tauri/gen/apple/Haystack/Info.plist delete mode 100644 frontend/src-tauri/gen/apple/Haystack/ShareViewController.swift diff --git a/frontend/src-tauri/gen/apple/Haystack/.ShareViewController.swift.swp b/frontend/src-tauri/gen/apple/Haystack/.ShareViewController.swift.swp deleted file mode 100644 index 6cfc8ac8809d86960cde2614f9527f6e1abd5943..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2v2Pqj6voH2ArK`Mh@j`BNFw=m&qgld0x391xfn-L&NfAqVs7`HcjUR5%gpRu zPAE_&3LORi07#Tj(L+gtgy?Dc2cQCpZ`XH;V_QO^KtjCLecqeBnR)O1=3QakH|Xy5 zw&{Ads&JiC>buV_R7($6)z7~w6^w75{_S+#s~i&_0j2i`M0-NfwR zt>uu#sTrn|LFI`M5CU@oXVp7vtKDXB`O-37IKL}ogn$qb0zyCt2mv7=1cZPP_#Y8S z<0bV8>V0Ki^V{?L(y{w|C^sP>1cZPP5CTF#2nYcoAOwVf5D)@F;6F$}mr6Z5qtu(P zB6FQzq#_hLTZUDpzLbY?S z?3Q*VY{(nrjJ~!pb*D6CpDh>ZE<&u(v@%6SQ`1Z_BV%>I+C@EW zD$mPpXf^d7f;^h|PGyixY$I_=dWb~YwROZBKts4lO~8z9`omAg*6Xr4yLMNXcCa&n zOzs2S>A!!BF&YA<@2a(fpLUQhRfRJ=adPvPOrhqZnIoHtwx*nS<3Grz?X6Q<%fz-l zT-s~)KWr=5-ffdwVRejjiZy-XNGEfcnBtgqy;*F~=pj+x7Y5e(`DnMdWngK~bG(Q) s1M7r?7|aNcd)i_iGU40SUCq1e`C4~vJzGp&*y-DKr(`rY%VXoe06qMdL;wH) diff --git a/frontend/src-tauri/gen/apple/Haystack/Base.lproj/MainInterface.storyboard b/frontend/src-tauri/gen/apple/Haystack/Base.lproj/MainInterface.storyboard deleted file mode 100644 index 286a508..0000000 --- a/frontend/src-tauri/gen/apple/Haystack/Base.lproj/MainInterface.storyboard +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/frontend/src-tauri/gen/apple/Haystack/Haystack.entitlements b/frontend/src-tauri/gen/apple/Haystack/Haystack.entitlements deleted file mode 100644 index 847b16e..0000000 --- a/frontend/src-tauri/gen/apple/Haystack/Haystack.entitlements +++ /dev/null @@ -1,10 +0,0 @@ - - - - - com.apple.security.application-groups - - group.com.haystack.app - - - diff --git a/frontend/src-tauri/gen/apple/Haystack/Info.plist b/frontend/src-tauri/gen/apple/Haystack/Info.plist deleted file mode 100644 index 65187a3..0000000 --- a/frontend/src-tauri/gen/apple/Haystack/Info.plist +++ /dev/null @@ -1,39 +0,0 @@ - - - - - CFBundleDisplayName - Haystack - NSExtension - - NSExtensionAttributes - - NSExtensionActivationRule - - NSExtensionActivationSupportsImage - - NSExtensionActivationSupportsMovie - - NSExtensionActivationSupportsText - - NSExtensionActivationSupportsURL - - NSExtensionActivationSupportsWebPageWithText - - NSExtensionActivationSupportsAttachmentsWithMaxCount - 0 - NSExtensionActivationSupportsAttachmentsWithMinCount - 1 - - NSExtensionMainStoryboard - MainInterface - NSExtensionPointIdentifier - com.apple.share-services - - NSExtensionPointIdentifier - com.apple.ui-services - NSExtensionPrincipalClass - Haystack.ShareViewController - - - diff --git a/frontend/src-tauri/gen/apple/Haystack/ShareViewController.swift b/frontend/src-tauri/gen/apple/Haystack/ShareViewController.swift deleted file mode 100644 index ed608ab..0000000 --- a/frontend/src-tauri/gen/apple/Haystack/ShareViewController.swift +++ /dev/null @@ -1,196 +0,0 @@ -// -//  ShareViewController.swift -//  Haystack -// -//  Created by Rio Keefe on 03/05/2025. -// - -import UIKit -import Social -import MobileCoreServices - -class ShareViewController: SLComposeServiceViewController { - - let appGroupName = "group.com.haystack.app" // Replace with your actual App Group identifier - let tokenKey = "sharedAuthToken" // This key holds the refresh token. - let uploadURL = URL(string: "https://haystack.johncosta.tech/images/")! - - var refreshToken: String? - private var imageItemProvider: NSItemProvider? - private var extractedImageName: String = "image" // Default name - - override func viewDidLoad() { - super.viewDidLoad() - - if let sharedDefaults = UserDefaults(suiteName: appGroupName) { - refreshToken = sharedDefaults.string(forKey: tokenKey) - print("Retrieved refresh token: \(refreshToken ?? "nil")") - } else { - print("Error accessing App Group UserDefaults.") - } - - // Store the item provider, but don't load the data synchronously yet - if let item = extensionContext?.inputItems.first as? NSExtensionItem, - let provider = item.attachments?.first as? NSItemProvider { - if provider.hasItemConformingToTypeIdentifier(kUTTypeImage as String) { - self.imageItemProvider = provider - // Attempt to get a suggested name early if available - extractedImageName = provider.suggestedName ?? "image" - if let dotRange = extractedImageName.range(of: ".", options: .backwards) { - extractedImageName = String(extractedImageName[.. Bool { - // Content is valid only if we have an item provider for an image AND a bearer token - return imageItemProvider != nil && bearerToken != nil - } - - 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) - 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 } - - if let error = error { - print("Error loading image data for upload: \(error.localizedDescription)") - // Inform the user about the failure - self.extensionContext!.cancelRequest(withError: error) - return - } - - var rawImageData: Data? - var finalImageName = self.extractedImageName // Use the name extracted earlier - - if let url = item as? URL, let data = try? Data(contentsOf: url) { - rawImageData = data - // Refine the name extraction here if necessary, though doing it in viewDidLoad is also an option - finalImageName = url.lastPathComponent - if let dotRange = finalImageName.range(of: ".", options: .backwards) { - finalImageName = String(finalImageName[.. Void) { - let url = URL(string: "https://haystack.johncosta.tech/auth/refresh")! - var request = URLRequest(url: url) - request.httpMethod = "POST" - request.setValue("application/json", forHTTPHeaderField: "Content-Type") - - 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 } - - 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() - } - - task.resume() - } - - override func configurationItems() -> [Any]! { - // You can add items here if you want to allow the user to enter additional info - // e.g., a text field for a caption. - // This example only handles image upload, so no config items are needed. - return [] - } -} diff --git a/frontend/src-tauri/gen/apple/Sharing/ShareViewController.swift b/frontend/src-tauri/gen/apple/Sharing/ShareViewController.swift index ed608ab..37abe17 100644 --- a/frontend/src-tauri/gen/apple/Sharing/ShareViewController.swift +++ b/frontend/src-tauri/gen/apple/Sharing/ShareViewController.swift @@ -49,8 +49,8 @@ class ShareViewController: SLComposeServiceViewController { } override func isContentValid() -> Bool { - // Content is valid only if we have an item provider for an image AND a bearer token - return imageItemProvider != nil && bearerToken != nil + // Content is valid only if we have an item provider for an image AND a refresh token + return imageItemProvider != nil && refreshToken != nil } override func didSelectPost() { diff --git a/frontend/src/network/index.ts b/frontend/src/network/index.ts index f0dadae..a0943e4 100644 --- a/frontend/src/network/index.ts +++ b/frontend/src/network/index.ts @@ -23,8 +23,8 @@ type BaseRequestParams = Partial<{ method: "GET" | "POST" | "DELETE"; }>; -export const base = "https://haystack.johncosta.tech"; -// export const base = "http://192.168.1.199:3040"; +// export const base = "https://haystack.johncosta.tech"; +export const base = "http://192.168.1.199:3040"; const getBaseRequest = ({ path, body, method }: BaseRequestParams): Request => { return new Request(`${base}/${path}`, {