Skip to content

Commit e38cf61

Browse files
committed
make sure clips have unique values
1 parent 89cf0ea commit e38cf61

File tree

6 files changed

+28
-4
lines changed

6 files changed

+28
-4
lines changed

app/src/main/kotlin/com/simplemobiletools/keyboard/adapters/ClipsActivityAdapter.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import com.simplemobiletools.commons.views.bottomactionmenu.BottomActionMenuView
2020
import com.simplemobiletools.keyboard.R
2121
import com.simplemobiletools.keyboard.dialogs.AddOrEditClipDialog
2222
import com.simplemobiletools.keyboard.extensions.clipsDB
23+
import com.simplemobiletools.keyboard.helpers.ClipsHelper
2324
import com.simplemobiletools.keyboard.models.Clip
2425
import kotlinx.android.synthetic.main.item_clip_in_activity.view.*
2526
import java.util.*
@@ -80,7 +81,7 @@ class ClipsActivityAdapter(
8081
activity.clipsDB.deleteAll()
8182
items.forEach { clip ->
8283
clip.id = null
83-
clip.id = activity.clipsDB.insertOrUpdate(clip)
84+
clip.id = ClipsHelper(activity).insertClip(clip)
8485
}
8586
}
8687

app/src/main/kotlin/com/simplemobiletools/keyboard/adapters/ClipsKeyboardAdapter.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import com.simplemobiletools.keyboard.R
1818
import com.simplemobiletools.keyboard.extensions.clipsDB
1919
import com.simplemobiletools.keyboard.extensions.config
2020
import com.simplemobiletools.keyboard.extensions.getCurrentClip
21+
import com.simplemobiletools.keyboard.helpers.ClipsHelper
2122
import com.simplemobiletools.keyboard.helpers.ITEM_CLIP
2223
import com.simplemobiletools.keyboard.helpers.ITEM_SECTION_LABEL
2324
import com.simplemobiletools.keyboard.interfaces.RefreshClipsListener
@@ -99,7 +100,7 @@ class ClipsKeyboardAdapter(
99100
ensureBackgroundThread {
100101
val currentClip = context.getCurrentClip() ?: return@ensureBackgroundThread
101102
val clip = Clip(null, currentClip)
102-
context.clipsDB.insertOrUpdate(clip)
103+
ClipsHelper(context).insertClip(clip)
103104
refreshClipsListener.refreshClips()
104105
context.toast(R.string.text_pinned)
105106
if (context.config.vibrateOnKeypress) {

app/src/main/kotlin/com/simplemobiletools/keyboard/dialogs/AddOrEditClipDialog.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import com.simplemobiletools.commons.extensions.value
99
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
1010
import com.simplemobiletools.keyboard.R
1111
import com.simplemobiletools.keyboard.extensions.clipsDB
12+
import com.simplemobiletools.keyboard.helpers.ClipsHelper
1213
import com.simplemobiletools.keyboard.models.Clip
1314
import kotlinx.android.synthetic.main.dialog_add_or_edit_clip.view.*
1415

@@ -39,7 +40,7 @@ class AddOrEditClipDialog(val activity: BaseSimpleActivity, val originalClip: Cl
3940
}
4041

4142
ensureBackgroundThread {
42-
activity.clipsDB.insertOrUpdate(clip)
43+
ClipsHelper(activity).insertClip(clip)
4344
activity.runOnUiThread {
4445
callback()
4546
dismiss()
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.simplemobiletools.keyboard.helpers
2+
3+
import android.content.Context
4+
import com.simplemobiletools.keyboard.extensions.clipsDB
5+
import com.simplemobiletools.keyboard.models.Clip
6+
7+
class ClipsHelper(val context: Context) {
8+
9+
// make sure clips have unique values
10+
fun insertClip(clip: Clip): Long {
11+
clip.value = clip.value.trim()
12+
return if (context.clipsDB.getClipWithValue(clip.value) == null) {
13+
context.clipsDB.insertOrUpdate(clip)
14+
} else {
15+
-1
16+
}
17+
}
18+
}

app/src/main/kotlin/com/simplemobiletools/keyboard/interfaces/ClipsDao.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ interface ClipsDao {
1111
@Query("SELECT * FROM clips ORDER BY id")
1212
fun getClips(): List<Clip>
1313

14+
@Query("SELECT id FROM clips WHERE value = :value COLLATE NOCASE")
15+
fun getClipWithValue(value: String): Long?
16+
1417
@Insert(onConflict = OnConflictStrategy.REPLACE)
1518
fun insertOrUpdate(clip: Clip): Long
1619

app/src/main/res/values-tr/strings.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
<!-- Short description has to have less than 80 chars -->
3737
<string name="app_short_description">Her türlü metin, özel karakter ve sayı girmek için kolay klavye</string>
3838
<string name="app_long_description">
39-
39+
4040
</string>
4141
<!--
4242
Haven't found some strings? There's more at

0 commit comments

Comments
 (0)