make sure clips have unique values

This commit is contained in:
tibbi 2022-01-31 10:05:59 +01:00
parent 89cf0ea426
commit e38cf617b7
6 changed files with 28 additions and 4 deletions

View File

@ -20,6 +20,7 @@ import com.simplemobiletools.commons.views.bottomactionmenu.BottomActionMenuView
import com.simplemobiletools.keyboard.R
import com.simplemobiletools.keyboard.dialogs.AddOrEditClipDialog
import com.simplemobiletools.keyboard.extensions.clipsDB
import com.simplemobiletools.keyboard.helpers.ClipsHelper
import com.simplemobiletools.keyboard.models.Clip
import kotlinx.android.synthetic.main.item_clip_in_activity.view.*
import java.util.*
@ -80,7 +81,7 @@ class ClipsActivityAdapter(
activity.clipsDB.deleteAll()
items.forEach { clip ->
clip.id = null
clip.id = activity.clipsDB.insertOrUpdate(clip)
clip.id = ClipsHelper(activity).insertClip(clip)
}
}

View File

@ -18,6 +18,7 @@ import com.simplemobiletools.keyboard.R
import com.simplemobiletools.keyboard.extensions.clipsDB
import com.simplemobiletools.keyboard.extensions.config
import com.simplemobiletools.keyboard.extensions.getCurrentClip
import com.simplemobiletools.keyboard.helpers.ClipsHelper
import com.simplemobiletools.keyboard.helpers.ITEM_CLIP
import com.simplemobiletools.keyboard.helpers.ITEM_SECTION_LABEL
import com.simplemobiletools.keyboard.interfaces.RefreshClipsListener
@ -99,7 +100,7 @@ class ClipsKeyboardAdapter(
ensureBackgroundThread {
val currentClip = context.getCurrentClip() ?: return@ensureBackgroundThread
val clip = Clip(null, currentClip)
context.clipsDB.insertOrUpdate(clip)
ClipsHelper(context).insertClip(clip)
refreshClipsListener.refreshClips()
context.toast(R.string.text_pinned)
if (context.config.vibrateOnKeypress) {

View File

@ -9,6 +9,7 @@ import com.simplemobiletools.commons.extensions.value
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
import com.simplemobiletools.keyboard.R
import com.simplemobiletools.keyboard.extensions.clipsDB
import com.simplemobiletools.keyboard.helpers.ClipsHelper
import com.simplemobiletools.keyboard.models.Clip
import kotlinx.android.synthetic.main.dialog_add_or_edit_clip.view.*
@ -39,7 +40,7 @@ class AddOrEditClipDialog(val activity: BaseSimpleActivity, val originalClip: Cl
}
ensureBackgroundThread {
activity.clipsDB.insertOrUpdate(clip)
ClipsHelper(activity).insertClip(clip)
activity.runOnUiThread {
callback()
dismiss()

View File

@ -0,0 +1,18 @@
package com.simplemobiletools.keyboard.helpers
import android.content.Context
import com.simplemobiletools.keyboard.extensions.clipsDB
import com.simplemobiletools.keyboard.models.Clip
class ClipsHelper(val context: Context) {
// make sure clips have unique values
fun insertClip(clip: Clip): Long {
clip.value = clip.value.trim()
return if (context.clipsDB.getClipWithValue(clip.value) == null) {
context.clipsDB.insertOrUpdate(clip)
} else {
-1
}
}
}

View File

@ -11,6 +11,9 @@ interface ClipsDao {
@Query("SELECT * FROM clips ORDER BY id")
fun getClips(): List<Clip>
@Query("SELECT id FROM clips WHERE value = :value COLLATE NOCASE")
fun getClipWithValue(value: String): Long?
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insertOrUpdate(clip: Clip): Long

View File

@ -36,7 +36,7 @@
<!-- Short description has to have less than 80 chars -->
<string name="app_short_description">Her türlü metin, özel karakter ve sayı girmek için kolay klavye</string>
<string name="app_long_description">
</string>
<!--
Haven't found some strings? There's more at