Fix audio input mode persistence

This commit is contained in:
Beingpax 2025-06-15 18:49:41 +05:45
parent 8bdd4f5d3b
commit 7aef8f04a6
2 changed files with 18 additions and 9 deletions

View File

@ -7,8 +7,8 @@
objects = { objects = {
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
E1362A1D2DF893B600E86C6E /* whisper.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = E136D0102DA3EE57000E1E8A /* whisper.xcframework */; }; E131EA9E2DFEF894009E79D8 /* whisper.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = E11CB51D2DB1F8AF00F9F3ED /* whisper.xcframework */; };
E1362A1E2DF893B600E86C6E /* whisper.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = E136D0102DA3EE57000E1E8A /* whisper.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; E131EA9F2DFEF894009E79D8 /* whisper.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = E11CB51D2DB1F8AF00F9F3ED /* whisper.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
E1A261122CC143AC00B233D1 /* KeyboardShortcuts in Frameworks */ = {isa = PBXBuildFile; productRef = E1A261112CC143AC00B233D1 /* KeyboardShortcuts */; }; E1A261122CC143AC00B233D1 /* KeyboardShortcuts in Frameworks */ = {isa = PBXBuildFile; productRef = E1A261112CC143AC00B233D1 /* KeyboardShortcuts */; };
E1ADD45A2CC5352A00303ECB /* LaunchAtLogin in Frameworks */ = {isa = PBXBuildFile; productRef = E1ADD4592CC5352A00303ECB /* LaunchAtLogin */; }; E1ADD45A2CC5352A00303ECB /* LaunchAtLogin in Frameworks */ = {isa = PBXBuildFile; productRef = E1ADD4592CC5352A00303ECB /* LaunchAtLogin */; };
E1ADD45F2CC544F100303ECB /* Sparkle in Frameworks */ = {isa = PBXBuildFile; productRef = E1ADD45E2CC544F100303ECB /* Sparkle */; }; E1ADD45F2CC544F100303ECB /* Sparkle in Frameworks */ = {isa = PBXBuildFile; productRef = E1ADD45E2CC544F100303ECB /* Sparkle */; };
@ -33,13 +33,13 @@
/* End PBXContainerItemProxy section */ /* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */ /* Begin PBXCopyFilesBuildPhase section */
E1362A1F2DF893B600E86C6E /* Embed Frameworks */ = { E131EAA02DFEF894009E79D8 /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase; isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
dstPath = ""; dstPath = "";
dstSubfolderSpec = 10; dstSubfolderSpec = 10;
files = ( files = (
E1362A1E2DF893B600E86C6E /* whisper.xcframework in Embed Frameworks */, E131EA9F2DFEF894009E79D8 /* whisper.xcframework in Embed Frameworks */,
); );
name = "Embed Frameworks"; name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
@ -80,7 +80,7 @@
E1ADD45A2CC5352A00303ECB /* LaunchAtLogin in Frameworks */, E1ADD45A2CC5352A00303ECB /* LaunchAtLogin in Frameworks */,
E1ADD45F2CC544F100303ECB /* Sparkle in Frameworks */, E1ADD45F2CC544F100303ECB /* Sparkle in Frameworks */,
E1A261122CC143AC00B233D1 /* KeyboardShortcuts in Frameworks */, E1A261122CC143AC00B233D1 /* KeyboardShortcuts in Frameworks */,
E1362A1D2DF893B600E86C6E /* whisper.xcframework in Frameworks */, E131EA9E2DFEF894009E79D8 /* whisper.xcframework in Frameworks */,
E1F5FA7A2DA6CBF900B1FD8A /* Zip in Frameworks */, E1F5FA7A2DA6CBF900B1FD8A /* Zip in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
@ -142,7 +142,7 @@
E11473AC2CBE0F0A00318EE4 /* Sources */, E11473AC2CBE0F0A00318EE4 /* Sources */,
E11473AD2CBE0F0A00318EE4 /* Frameworks */, E11473AD2CBE0F0A00318EE4 /* Frameworks */,
E11473AE2CBE0F0A00318EE4 /* Resources */, E11473AE2CBE0F0A00318EE4 /* Resources */,
E1362A1F2DF893B600E86C6E /* Embed Frameworks */, E131EAA02DFEF894009E79D8 /* Embed Frameworks */,
); );
buildRules = ( buildRules = (
); );

View File

@ -86,8 +86,13 @@ class AudioDeviceManager: ObservableObject {
} }
private func fallbackToDefaultDevice() { private func fallbackToDefaultDevice() {
selectInputMode(.systemDefault) logger.info("Temporarily falling back to system default input device user preference remains intact.")
logger.info("Switched to system default audio input mode due to fallback.")
if let currentID = selectedDeviceID, !isDeviceAvailable(currentID) {
selectedDeviceID = nil
}
notifyDeviceChange()
} }
func loadAvailableDevices(completion: (() -> Void)? = nil) { func loadAvailableDevices(completion: (() -> Void)? = nil) {
@ -244,7 +249,11 @@ class AudioDeviceManager: ObservableObject {
case .systemDefault: case .systemDefault:
return fallbackDeviceID ?? 0 return fallbackDeviceID ?? 0
case .custom: case .custom:
return selectedDeviceID ?? fallbackDeviceID ?? 0 if let id = selectedDeviceID, isDeviceAvailable(id) {
return id
} else {
return fallbackDeviceID ?? 0
}
case .prioritized: case .prioritized:
let sortedDevices = prioritizedDevices.sorted { $0.priority < $1.priority } let sortedDevices = prioritizedDevices.sorted { $0.priority < $1.priority }
for device in sortedDevices { for device in sortedDevices {