MainAssembly // Reload filter when necessary.

This commit is contained in:
ShikiSuen 2023-09-07 03:38:48 +08:00
parent 60b9f28fa3
commit 9cbf087d95
4 changed files with 29 additions and 5 deletions

View File

@ -141,7 +141,7 @@ public extension vChewingLM {
// Async LMMgr Async GCD
public func loadUserPhrasesData(path: String, filterPath: String) {
public func loadUserPhrasesData(path: String, filterPath: String?) {
DispatchQueue.main.async {
if FileManager.default.isReadableFile(atPath: path) {
self.lmUserPhrases.clear()
@ -151,6 +151,7 @@ public extension vChewingLM {
vCLog("lmUserPhrases: File access failure: \(path)")
}
}
guard let filterPath = filterPath else { return }
DispatchQueue.main.async {
if FileManager.default.isReadableFile(atPath: filterPath) {
self.lmFiltered.clear()
@ -162,6 +163,17 @@ public extension vChewingLM {
}
}
/// GCD
public func reloadUserFilterDirectly(path: String) {
if FileManager.default.isReadableFile(atPath: path) {
lmFiltered.clear()
lmFiltered.open(path)
vCLog("lmFiltered: \(lmFiltered.count) entries of data loaded from: \(path)")
} else {
vCLog("lmFiltered: File access failure: \(path)")
}
}
public func loadUserSymbolData(path: String) {
DispatchQueue.main.async {
if FileManager.default.isReadableFile(atPath: path) {

View File

@ -220,15 +220,22 @@ public class LMMgr {
return
}
switch type {
case .thePhrases, .theFilter:
case .thePhrases:
Self.lmCHT.loadUserPhrasesData(
path: userDictDataURL(mode: .imeModeCHT, type: .thePhrases).path,
filterPath: userDictDataURL(mode: .imeModeCHT, type: .theFilter).path
filterPath: nil
)
Self.lmCHS.loadUserPhrasesData(
path: userDictDataURL(mode: .imeModeCHS, type: .thePhrases).path,
filterPath: userDictDataURL(mode: .imeModeCHS, type: .theFilter).path
filterPath: nil
)
case .theFilter:
DispatchQueue.main.async {
Self.reloadUserFilterDirectly(mode: IMEApp.currentInputMode)
}
DispatchQueue.main.async {
Self.reloadUserFilterDirectly(mode: IMEApp.currentInputMode.reversed)
}
case .theReplacements:
if PrefMgr.shared.phraseReplacementEnabled { Self.loadUserPhraseReplacement() }
case .theAssociates:
@ -270,6 +277,10 @@ public class LMMgr {
)
}
public static func reloadUserFilterDirectly(mode: Shared.InputMode) {
Self.getLM(mode: mode).reloadUserFilterDirectly(path: userDictDataURL(mode: mode, type: .theFilter).path)
}
public static func checkIfPhrasePairExists(
userPhrase: String,
mode: Shared.InputMode,

View File

@ -185,6 +185,7 @@ public extension LMMgr {
fileHandle.seek(toFileOffset: currentWorkingOffset)
fileHandle.write(blankData)
}
LMMgr.reloadUserFilterDirectly(mode: inputMode)
return true
}
}

View File

@ -282,7 +282,7 @@ public extension LMMgr {
if PrefMgr.shared.phraseEditorAutoReloadExternalModifications {
Broadcaster.shared.eventForReloadingPhraseEditor = .init()
}
loadUserPhrasesData(type: .thePhrases)
loadUserPhrasesData(type: areWeFiltering ? .theFilter : .thePhrases)
}
// MARK: - 使