From 784f4971483e1baee3962c405eafbcc63f5bd150 Mon Sep 17 00:00:00 2001 From: Stephen B <158498287+StephenDev0@users.noreply.github.com> Date: Sat, 12 Jul 2025 23:42:21 -0400 Subject: [PATCH] Disable scripts when advanced options off --- StikJIT/JSSupport/ScriptListView.swift | 7 ++++++- StikJIT/Views/HomeView.swift | 17 ++++++++++++----- StikJIT/Views/InstalledAppsListView.swift | 19 +++++++++++++------ 3 files changed, 31 insertions(+), 12 deletions(-) diff --git a/StikJIT/JSSupport/ScriptListView.swift b/StikJIT/JSSupport/ScriptListView.swift index abfb1ed0..e9936e14 100644 --- a/StikJIT/JSSupport/ScriptListView.swift +++ b/StikJIT/JSSupport/ScriptListView.swift @@ -15,12 +15,17 @@ struct ScriptListView: View { @State private var showImporter = false @AppStorage("DefaultScriptName") private var defaultScriptName = "attachDetach.js" - var onSelectScript: ((URL) -> Void)? = nil + var onSelectScript: ((URL?) -> Void)? = nil var body: some View { NavigationStack { List { Section { + if let onSelectScript { + Button("None") { + onSelectScript(nil) + } + } ForEach(scripts, id: \.self) { script in if let onSelectScript { Button { diff --git a/StikJIT/Views/HomeView.swift b/StikJIT/Views/HomeView.swift index 03ed864f..918f0238 100644 --- a/StikJIT/Views/HomeView.swift +++ b/StikJIT/Views/HomeView.swift @@ -440,9 +440,15 @@ struct HomeView: View { LogManager.shared.addInfoLog("Starting Debug for \(bundleID)") DispatchQueue.global(qos: .background).async { - let mapping = UserDefaults.standard.dictionary(forKey: "BundleScriptMap") as? [String: String] - let mappedScript = mapping?[bundleID] - let callback = mappedScript != nil ? getJsCallback(for: mappedScript) : (useDefaultScript ? getJsCallback() : nil) + var callback: DebugAppCallback? = nil + if enableAdvancedOptions { + let mapping = UserDefaults.standard.dictionary(forKey: "BundleScriptMap") as? [String: String] + if let script = mapping?[bundleID] { + callback = getJsCallback(for: script) + } else if useDefaultScript { + callback = getJsCallback() + } + } let success = JITEnableContext.shared.debugApp(withBundleID: bundleID, logger: { message in if let message = message { @@ -466,13 +472,14 @@ struct HomeView: View { DispatchQueue.global(qos: .background).async { + let jsCallback: DebugAppCallback? = (enableAdvancedOptions && useDefaultScript) ? getJsCallback() : nil let success = JITEnableContext.shared.debugApp(withPID: Int32(pid), logger: { message in - + if let message = message { // Log messages from the JIT process LogManager.shared.addInfoLog(message) } - }, jsCallback: useDefaultScript ? getJsCallback() : nil) + }, jsCallback: jsCallback) DispatchQueue.main.async { LogManager.shared.addInfoLog("JIT process completed for \(pid)") diff --git a/StikJIT/Views/InstalledAppsListView.swift b/StikJIT/Views/InstalledAppsListView.swift index 5654ed6d..1fa195e7 100644 --- a/StikJIT/Views/InstalledAppsListView.swift +++ b/StikJIT/Views/InstalledAppsListView.swift @@ -137,6 +137,7 @@ struct AppButton: View { @Binding var favoriteApps: [String] @Binding var appIcons: [String: UIImage] @AppStorage("loadAppIconsOnJIT") private var loadAppIconsOnJIT = true + @AppStorage("enableAdvancedOptions") private var enableAdvancedOptions = false var onSelectApp: (String) -> Void let sharedDefaults: UserDefaults @@ -163,10 +164,12 @@ struct AppButton: View { Button { UIPasteboard.general.string = bundleID } label: { Label("Copy Bundle ID", systemImage: "doc.on.doc") } - Button { - showScriptPicker = true - } label: { - Label("Assign Script", systemImage: "chevron.left.slash.chevron.right") + if enableAdvancedOptions { + Button { + showScriptPicker = true + } label: { + Label("Assign Script", systemImage: "chevron.left.slash.chevron.right") + } } } .sheet(isPresented: $showScriptPicker) { @@ -235,9 +238,13 @@ struct AppButton: View { WidgetCenter.shared.reloadAllTimelines() } - private func assignScript(_ url: URL) { + private func assignScript(_ url: URL?) { var mapping = UserDefaults.standard.dictionary(forKey: "BundleScriptMap") as? [String: String] ?? [:] - mapping[bundleID] = url.lastPathComponent + if let url { + mapping[bundleID] = url.lastPathComponent + } else { + mapping.removeValue(forKey: bundleID) + } UserDefaults.standard.set(mapping, forKey: "BundleScriptMap") }