feat: add debug logging toggle

This commit is contained in:
naturecodevoid
2023-04-09 13:34:57 -07:00
parent 44fe0c5686
commit af2cdd48d6
5 changed files with 21 additions and 2 deletions

View File

@@ -345,6 +345,8 @@ internal enum L10n {
internal static let credits = L10n.tr("Localizable", "SettingsView.credits", fallback: "Credits")
/// Debug
internal static let debug = L10n.tr("Localizable", "SettingsView.debug", fallback: "Debug")
/// Debug Logging
internal static let debugLogging = L10n.tr("Localizable", "SettingsView.debugLogging", fallback: "Debug Logging")
/// Export Logs
internal static let exportLogs = L10n.tr("Localizable", "SettingsView.exportLogs", fallback: "Export Logs")
/// Refreshing Apps

View File

@@ -159,6 +159,7 @@ final class LaunchViewController: RSTLaunchViewController, UIDocumentPickerDeleg
try! FileManager.default.removeItem(at: FileManager.default.documentsDirectory.appendingPathComponent("\(pairingFileName)"))
displayError("minimuxer failed to start, please restart SideStore. \(minimuxerToOperationError(error).failureReason ?? "UNKNOWN ERROR!!!!!! REPORT TO GITHUB ISSUES!")")
}
set_debug(UserDefaults.shared.isDebugLoggingEnabled)
start_auto_mounter(documentsDirectory)
}
}

View File

@@ -62,6 +62,7 @@
"SettingsView.title" = "Settings";
"SettingsView.refreshingAppsFooter" = "Enable Background Refresh to automatically refresh apps in the background when connected to WiFi and with Wireguard active.";
"SettingsView.exportLogs" = "Export Logs";
"SettingsView.debugLogging" = "Debug Logging";
/* ConnectAppleIDView */
"ConnectAppleIDView.startWithSignIn" = "Sign in with your Apple ID to get started.";

View File

@@ -12,6 +12,7 @@ import SFSafeSymbols
import LocalConsole
import AltStoreCore
import Intents
import minimuxer
struct SettingsView: View {
@ObservedObject private var iO = Inject.observer
@@ -30,6 +31,9 @@ struct SettingsView: View {
@AppStorage("isDevModeEnabled")
var isDevModeEnabled: Bool = false
@AppStorage("isDebugLoggingEnabled")
var isDebugLoggingEnabled: Bool = false
@State var isShowingConnectAppleIDView = false
@State var isShowingResetPairingFileConfirmation = false
@State var isShowingDevModePrompt = false
@@ -167,6 +171,12 @@ struct SettingsView: View {
AdvancedSettingsView()
}
Toggle(L10n.SettingsView.debugLogging, isOn: self.$isDebugLoggingEnabled)
.onChange(of: self.isDebugLoggingEnabled) { value in
UserDefaults.shared.isDebugLoggingEnabled = value
set_debug(value)
}
AsyncFallibleButton(action: self.exportLogs, label: { execute in Text(L10n.SettingsView.exportLogs) })
if MailComposeView.canSendMail {
@@ -325,10 +335,10 @@ struct SettingsView: View {
}
func exportLogs() throws {
guard let path = FileManager.default.altstoreSharedDirectory?.appendingPathComponent("logs.txt") else { throw NSError(domain: "Failed to get path.", code: 1) }
let path = FileManager.default.documentsDirectory.appendingPathComponent("sidestore.log")
var text = LCManager.shared.currentText
// TODO: add more potentially sensitive info to this array like UDID
// TODO: add more potentially sensitive info to this array
var remove = [String]()
if let connectedAppleID = connectedTeams.first {
remove.append(connectedAppleID.name)
@@ -339,6 +349,9 @@ struct SettingsView: View {
remove.append(connectedAppleID.account.identifier)
remove.append(connectedAppleID.identifier)
}
if let udid = fetch_udid() {
remove.append(udid.toString())
}
for toRemove in remove {
text = text.replacingOccurrences(of: toRemove, with: "[removed]")

View File

@@ -28,6 +28,7 @@ public extension UserDefaults
@NSManaged var isDevModeEnabled: Bool
@NSManaged var isConsoleEnabled: Bool
@NSManaged var isDebugLoggingEnabled: Bool
@NSManaged var isBackgroundRefreshEnabled: Bool
@NSManaged var isDebugModeEnabled: Bool
@@ -75,6 +76,7 @@ public extension UserDefaults
let defaults = [
#keyPath(UserDefaults.isDevModeEnabled): false,
#keyPath(UserDefaults.isConsoleEnabled): false,
#keyPath(UserDefaults.isDebugLoggingEnabled): false,
#keyPath(UserDefaults.isBackgroundRefreshEnabled): true,
#keyPath(UserDefaults.isLegacyDeactivationSupported): isLegacyDeactivationSupported,
#keyPath(UserDefaults.activeAppLimitIncludesExtensions): activeAppLimitIncludesExtensions,