mirror of
https://github.com/keymanapp/keyman.git
synced 2026-09-21 15:17:40 +00:00
Only update user keyboards after new keyboard downloaded
This commit is contained in:
parent
a1a4a7de58
commit
389ca52ed7
2 changed files with 19 additions and 43 deletions
|
|
@ -194,7 +194,7 @@ class KeyboardPickerViewController: UITableViewController, UIAlertViewDelegate {
|
|||
|
||||
// Update keyboard version
|
||||
for keyboard in keyboards {
|
||||
Manager.shared.updateKeyboardVersion(forID: keyboard.id, newKeyboardVersion: keyboard.version)
|
||||
Manager.shared.updateUserKeyboards(with: keyboard)
|
||||
}
|
||||
|
||||
updateQueue!.remove(at: 0)
|
||||
|
|
|
|||
|
|
@ -170,8 +170,7 @@ KeyboardRepositoryDelegate {
|
|||
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillHide),
|
||||
name: .UIKeyboardWillHide, object: nil)
|
||||
|
||||
let kbVersion = latestKeyboardFileVersion(withID: Defaults.keyboard.id)
|
||||
updateKeyboardVersion(forID: Defaults.keyboard.id, newKeyboardVersion: kbVersion!)
|
||||
updateUserKeyboards(with: Defaults.keyboard)
|
||||
|
||||
keymanWeb = KeymanWebViewController(nibName: nil, bundle: nil)
|
||||
keymanWeb.frame = CGRect(origin: .zero, size: keyboardSize)
|
||||
|
|
@ -452,7 +451,6 @@ KeyboardRepositoryDelegate {
|
|||
}
|
||||
|
||||
public func keyboardRepositoryDidFetch(_ repository: KeyboardRepository) {
|
||||
updateUserKeyboardsList()
|
||||
NotificationCenter.default.post(name: Notifications.languagesUpdated, object: self, value: ())
|
||||
}
|
||||
|
||||
|
|
@ -631,37 +629,6 @@ KeyboardRepositoryDelegate {
|
|||
return .upToDate
|
||||
}
|
||||
|
||||
private func updateUserKeyboardsList() {
|
||||
let userData = activeUserDefaults()
|
||||
|
||||
let lastVersion = userData.string(forKey: Key.engineVersion) ?? "1.0"
|
||||
if compareVersions(lastVersion, Util.sdkVersion) == .orderedSame {
|
||||
return
|
||||
}
|
||||
userData.set(Util.sdkVersion, forKey: Key.engineVersion)
|
||||
|
||||
guard var userKbList = userData.userKeyboards else {
|
||||
kmLog("No user keyboards to update", checkDebugPrinting: true)
|
||||
return
|
||||
}
|
||||
|
||||
for i in userKbList.indices {
|
||||
let kbID = userKbList[i].id
|
||||
let langID = userKbList[i].languageID
|
||||
if var kb = repositoryKeyboard(withID: kbID, languageID: langID) {
|
||||
kb.version = latestKeyboardFileVersion(withID: kbID)!
|
||||
kb.isCustom = false
|
||||
userKbList[i] = kb
|
||||
} else {
|
||||
var kb = userKbList[i]
|
||||
kb.isCustom = true
|
||||
userKbList[i] = kb
|
||||
}
|
||||
}
|
||||
userData.userKeyboards = userKbList
|
||||
userData.synchronize()
|
||||
}
|
||||
|
||||
func keyboardIdForCurrentRequest() -> String? {
|
||||
if let currentRequest = currentRequest {
|
||||
let tmpStr = currentRequest.url.lastPathComponent
|
||||
|
|
@ -1310,7 +1277,9 @@ KeyboardRepositoryDelegate {
|
|||
return .orderedSame
|
||||
}
|
||||
|
||||
func updateKeyboardVersion(forID kbID: String, newKeyboardVersion kbVersion: String) {
|
||||
/// Updates the user's installed keyboards and current keyboard with information in newKeyboard.
|
||||
/// - Parameter newKeyboard: Info for updated keyboard.
|
||||
func updateUserKeyboards(with newKeyboard: InstallableKeyboard) {
|
||||
let userData = activeUserDefaults()
|
||||
guard var userKeyboards = userData.userKeyboards else {
|
||||
return
|
||||
|
|
@ -1319,8 +1288,12 @@ KeyboardRepositoryDelegate {
|
|||
// Set version in user keyboards list
|
||||
for i in userKeyboards.indices {
|
||||
var kb = userKeyboards[i]
|
||||
if kbID == kb.id {
|
||||
kb.version = kbVersion
|
||||
if kb.id == newKeyboard.id {
|
||||
if kb.languageID == newKeyboard.languageID {
|
||||
kb = newKeyboard
|
||||
} else {
|
||||
kb.version = newKeyboard.id
|
||||
}
|
||||
userKeyboards[i] = kb
|
||||
}
|
||||
}
|
||||
|
|
@ -1328,12 +1301,15 @@ KeyboardRepositoryDelegate {
|
|||
userData.synchronize()
|
||||
|
||||
// Set version for current keyboard
|
||||
// TODO: Move this UserDefaults into a function
|
||||
let currentUserData = Util.isSystemKeyboard ? UserDefaults.standard : activeUserDefaults()
|
||||
if var userKb = currentUserData.currentKeyboard {
|
||||
if kbID == userKb.id {
|
||||
userKb.version = kbVersion
|
||||
currentUserData.currentKeyboard = userKb
|
||||
if var kb = currentUserData.currentKeyboard {
|
||||
if kb.id == newKeyboard.id {
|
||||
if kb.languageID == newKeyboard.languageID {
|
||||
kb = newKeyboard
|
||||
} else {
|
||||
kb.version = newKeyboard.id
|
||||
}
|
||||
currentUserData.currentKeyboard = kb
|
||||
currentUserData.synchronize()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue