Disable scripts when advanced options off (#225)

This commit is contained in:
Stephen B 2025-07-12 23:44:23 -04:00 • committed by GitHub
parent 1441520ba0
commit f7cd3444bf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 31 additions and 12 deletions

View file

@ -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 {

View file

@ -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)")

View file

@ -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")
}