feat: improve export/import service to handle custom emojis and power mode configurations
This commit is contained in:
parent
8024146b61
commit
b13aecca76
@ -89,7 +89,7 @@ struct EmojiPickerView: View {
|
|||||||
.foregroundColor(inputFeedbackMessage == "Emoji already exists!" || inputFeedbackMessage == "Invalid emoji." ? .red : .secondary)
|
.foregroundColor(inputFeedbackMessage == "Emoji already exists!" || inputFeedbackMessage == "Invalid emoji." ? .red : .secondary)
|
||||||
.transition(.opacity)
|
.transition(.opacity)
|
||||||
}
|
}
|
||||||
Text("Tip: Use ⌃⌘Space for emoji keyboard.")
|
Text("Tip: Use ⌃⌘Space for emoji picker.")
|
||||||
.font(.caption2)
|
.font(.caption2)
|
||||||
.foregroundColor(.secondary)
|
.foregroundColor(.secondary)
|
||||||
.padding(.top, 2)
|
.padding(.top, 2)
|
||||||
|
|||||||
@ -27,6 +27,7 @@ struct VoiceInkExportedSettings: Codable {
|
|||||||
let dictionaryItems: [DictionaryItem]?
|
let dictionaryItems: [DictionaryItem]?
|
||||||
let wordReplacements: [String: String]?
|
let wordReplacements: [String: String]?
|
||||||
let generalSettings: GeneralSettings?
|
let generalSettings: GeneralSettings?
|
||||||
|
let customEmojis: [String]?
|
||||||
}
|
}
|
||||||
|
|
||||||
class ImportExportService {
|
class ImportExportService {
|
||||||
@ -57,6 +58,7 @@ class ImportExportService {
|
|||||||
@MainActor
|
@MainActor
|
||||||
func exportSettings(enhancementService: AIEnhancementService, whisperPrompt: WhisperPrompt, hotkeyManager: HotkeyManager, menuBarManager: MenuBarManager, mediaController: MediaController, soundManager: SoundManager, whisperState: WhisperState) {
|
func exportSettings(enhancementService: AIEnhancementService, whisperPrompt: WhisperPrompt, hotkeyManager: HotkeyManager, menuBarManager: MenuBarManager, mediaController: MediaController, soundManager: SoundManager, whisperState: WhisperState) {
|
||||||
let powerModeManager = PowerModeManager.shared
|
let powerModeManager = PowerModeManager.shared
|
||||||
|
let emojiManager = EmojiManager.shared
|
||||||
|
|
||||||
let exportablePrompts = enhancementService.customPrompts.filter { !$0.isPredefined }
|
let exportablePrompts = enhancementService.customPrompts.filter { !$0.isPredefined }
|
||||||
|
|
||||||
@ -86,21 +88,22 @@ class ImportExportService {
|
|||||||
isSystemMuteEnabled: mediaController.isSystemMuteEnabled
|
isSystemMuteEnabled: mediaController.isSystemMuteEnabled
|
||||||
)
|
)
|
||||||
|
|
||||||
let settingsToExport = VoiceInkExportedSettings(
|
let exportedSettings = VoiceInkExportedSettings(
|
||||||
version: currentSettingsVersion,
|
version: currentSettingsVersion,
|
||||||
customPrompts: exportablePrompts,
|
customPrompts: exportablePrompts,
|
||||||
powerModeConfigs: powerConfigs,
|
powerModeConfigs: powerConfigs,
|
||||||
defaultPowerModeConfig: defaultPowerConfig,
|
defaultPowerModeConfig: defaultPowerConfig,
|
||||||
dictionaryItems: exportedDictionaryItems,
|
dictionaryItems: exportedDictionaryItems,
|
||||||
wordReplacements: exportedWordReplacements,
|
wordReplacements: exportedWordReplacements,
|
||||||
generalSettings: generalSettingsToExport
|
generalSettings: generalSettingsToExport,
|
||||||
|
customEmojis: emojiManager.customEmojis
|
||||||
)
|
)
|
||||||
|
|
||||||
let encoder = JSONEncoder()
|
let encoder = JSONEncoder()
|
||||||
encoder.outputFormatting = .prettyPrinted
|
encoder.outputFormatting = .prettyPrinted
|
||||||
|
|
||||||
do {
|
do {
|
||||||
let jsonData = try encoder.encode(settingsToExport)
|
let jsonData = try encoder.encode(exportedSettings)
|
||||||
|
|
||||||
let savePanel = NSSavePanel()
|
let savePanel = NSSavePanel()
|
||||||
savePanel.allowedContentTypes = [UTType.json]
|
savePanel.allowedContentTypes = [UTType.json]
|
||||||
@ -162,6 +165,13 @@ class ImportExportService {
|
|||||||
powerModeManager.saveConfigurations()
|
powerModeManager.saveConfigurations()
|
||||||
powerModeManager.updateConfiguration(powerModeManager.defaultConfig)
|
powerModeManager.updateConfiguration(powerModeManager.defaultConfig)
|
||||||
|
|
||||||
|
if let customEmojis = importedSettings.customEmojis {
|
||||||
|
let emojiManager = EmojiManager.shared
|
||||||
|
for emoji in customEmojis {
|
||||||
|
_ = emojiManager.addCustomEmoji(emoji)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if let itemsToImport = importedSettings.dictionaryItems {
|
if let itemsToImport = importedSettings.dictionaryItems {
|
||||||
Task {
|
Task {
|
||||||
await whisperPrompt.saveDictionaryItems(itemsToImport)
|
await whisperPrompt.saveDictionaryItems(itemsToImport)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user