Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion StikJIT/JSSupport/ScriptListView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
17 changes: 12 additions & 5 deletions StikJIT/Views/HomeView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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)")
Expand Down
19 changes: 13 additions & 6 deletions StikJIT/Views/InstalledAppsListView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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) {
Expand Down Expand Up @@ -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")
}

Expand Down