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