LMMgr // Lazy-reload UserPhrasesData when writing phrases.

- Make loadUserPhrasesData() more precise.
This commit is contained in:
ShikiSuen 2022-12-03 23:53:17 +08:00
parent ae4efede82
commit e499437f2c
1 changed files with 40 additions and 18 deletions

View File

@ -57,9 +57,6 @@ public enum LMMgr {
// LMMgr loadUserPhrases dataFolderPath
//
//
if PrefMgr.shared.associatedPhrasesEnabled { Self.loadUserAssociatesData() }
if PrefMgr.shared.phraseReplacementEnabled { Self.loadUserPhraseReplacement() }
if PrefMgr.shared.useSCPCTypingMode { Self.loadUserSCPCSequencesData() }
Self.loadUserPhrasesData()
}
@ -200,7 +197,8 @@ public enum LMMgr {
vChewingLM.LMInstantiator.loadCassetteData(path: cassettePath())
}
public static func loadUserPhrasesData() {
public static func loadUserPhrasesData(type: vChewingLM.ReplacableUserDataType? = nil) {
guard let type = type else {
Self.lmCHT.loadUserPhrasesData(
path: userPhrasesDataURL(.imeModeCHT).path,
filterPath: userFilteredDataURL(.imeModeCHT).path
@ -212,10 +210,34 @@ public enum LMMgr {
Self.lmCHT.loadUserSymbolData(path: userSymbolDataURL(.imeModeCHT).path)
Self.lmCHS.loadUserSymbolData(path: userSymbolDataURL(.imeModeCHS).path)
if PrefMgr.shared.associatedPhrasesEnabled { Self.loadUserAssociatesData() }
if PrefMgr.shared.phraseReplacementEnabled { Self.loadUserPhraseReplacement() }
if PrefMgr.shared.useSCPCTypingMode { Self.loadUserSCPCSequencesData() }
Self.uomCHT.loadData(fromURL: userOverrideModelDataURL(.imeModeCHT))
Self.uomCHS.loadData(fromURL: userOverrideModelDataURL(.imeModeCHS))
CandidateNode.load(url: Self.userSymbolMenuDataURL())
return
}
switch type {
case .thePhrases, .theFilter:
Self.lmCHT.loadUserPhrasesData(
path: userPhrasesDataURL(.imeModeCHT).path,
filterPath: userFilteredDataURL(.imeModeCHT).path
)
Self.lmCHS.loadUserPhrasesData(
path: userPhrasesDataURL(.imeModeCHS).path,
filterPath: userFilteredDataURL(.imeModeCHS).path
)
case .theReplacements:
if PrefMgr.shared.phraseReplacementEnabled { Self.loadUserPhraseReplacement() }
case .theAssociates:
if PrefMgr.shared.associatedPhrasesEnabled { Self.loadUserAssociatesData() }
case .theSymbols:
Self.lmCHT.loadUserSymbolData(path: userSymbolDataURL(.imeModeCHT).path)
Self.lmCHS.loadUserSymbolData(path: userSymbolDataURL(.imeModeCHS).path)
}
}
public static func loadUserAssociatesData() {
@ -587,7 +609,7 @@ public enum LMMgr {
// The new FolderMonitor module does NOT monitor cases that files are modified
// by the current application itself, requiring additional manual loading process here.
// if !PrefMgr.shared.shouldAutoReloadUserDataFiles {}
loadUserPhrasesData()
loadUserPhrasesData(type: .thePhrases)
return true
}
return false