simplify loading pinned clips

we don't need to read a file any more
also makes sure pinned clips are initially loaded before fetching the primary clip
This commit is contained in:
Helium314 2024-04-20 23:24:14 +02:00
parent a58a7cc932
commit 290944635f
2 changed files with 10 additions and 23 deletions

View file

@ -9,6 +9,7 @@ import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import helium314.keyboard.compat.ClipboardManagerCompat
import helium314.keyboard.latin.settings.Settings
import helium314.keyboard.latin.utils.DeviceProtectedUtils
import kotlin.collections.ArrayList
class ClipboardHistoryManager(
@ -23,20 +24,10 @@ class ClipboardHistoryManager(
clipboardManager.addPrimaryClipChangedListener(this)
if (historyEntries.isEmpty())
loadPinnedClips()
if (latinIME.mSettings.current?.mClipboardHistoryEnabled == true)
if (Settings.readClipboardHistoryEnabled(DeviceProtectedUtils.getSharedPreferences(latinIME)))
fetchPrimaryClip()
}
fun onPinnedClipsAvailable(pinnedClips: List<ClipboardHistoryEntry>) {
historyEntries.addAll(pinnedClips)
sortHistoryEntries()
if (onHistoryChangeListener != null) {
pinnedClips.forEach {
onHistoryChangeListener?.onClipboardHistoryEntryAdded(historyEntries.indexOf(it))
}
}
}
fun onDestroy() {
clipboardManager.removePrimaryClipChangedListener(this)
}
@ -145,7 +136,13 @@ class ClipboardHistoryManager(
val pinnedClipString = Settings.readPinnedClipString(latinIME)
if (pinnedClipString.isEmpty()) return
val pinnedClips: List<ClipboardHistoryEntry> = Json.decodeFromString(pinnedClipString)
latinIME.mHandler.postUpdateClipboardPinnedClips(pinnedClips)
historyEntries.addAll(pinnedClips)
sortHistoryEntries()
if (onHistoryChangeListener != null) {
pinnedClips.forEach {
onHistoryChangeListener?.onClipboardHistoryEntryAdded(historyEntries.indexOf(it))
}
}
}
private fun savePinnedClips() {