Skip to content

Commit 093fbd6

Browse files
authored
Merge pull request #183 from rosuH/dev
🐛
2 parents d015ad5 + 0fb8855 commit 093fbd6

15 files changed

Lines changed: 54 additions & 33 deletions

File tree

app/src/main/java/me/rosuh/easywatermark/data/repo/TemplateRepository.kt

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,35 @@ package me.rosuh.easywatermark.data.repo
22

33
import kotlinx.coroutines.Dispatchers
44
import kotlinx.coroutines.flow.Flow
5+
import kotlinx.coroutines.flow.flow
56
import kotlinx.coroutines.withContext
67
import me.rosuh.easywatermark.data.db.dao.TemplateDao
78
import me.rosuh.easywatermark.data.model.entity.Template
89
import javax.inject.Inject
910

1011
class TemplateRepository @Inject constructor(
11-
private val templateDao: TemplateDao
12+
private val templateDao: TemplateDao?
1213
) {
1314

15+
fun checkIfIsDaoNull(): Boolean {
16+
return templateDao == null
17+
}
18+
1419
fun getAllTemplate(): Flow<List<Template>> {
15-
return templateDao.getAllTemplate()
20+
return templateDao?.getAllTemplate() ?: flow {
21+
emit(listOf())
22+
}
1623
}
1724

1825
suspend fun insertTemplate(template: Template) = withContext(Dispatchers.IO) {
19-
templateDao.insertTemplate(template)
26+
templateDao?.insertTemplate(template)
2027
}
2128

2229
suspend fun deleteTemplate(template: Template) = withContext(Dispatchers.IO) {
23-
templateDao.deleteTemplate(template)
30+
templateDao?.deleteTemplate(template)
2431
}
2532

2633
suspend fun updateTemplate(template: Template) = withContext(Dispatchers.IO) {
27-
templateDao.updateTemplate(template)
34+
templateDao?.updateTemplate(template)
2835
}
2936
}

app/src/main/java/me/rosuh/easywatermark/di/AppModule.kt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,23 @@ object AppModule {
1919
@Provides
2020
fun provideYourDatabase(
2121
@ApplicationContext app: Context
22-
): AppDatabase {
22+
): AppDatabase? {
2323
val builder = Room.databaseBuilder(
2424
app,
2525
AppDatabase::class.java,
2626
"ewm-db"
2727
)
2828
val isCh = Locale.getDefault().language.contains("zh")
2929
builder.createFromAsset(if (isCh) "ewm-db-ch.db" else "ewm-db-eng.db")
30-
return builder.build()
30+
try {
31+
return builder.build()
32+
} catch (e: Exception) {
33+
e.printStackTrace()
34+
}
35+
return null
3136
}
3237

3338
@Singleton
3439
@Provides
35-
fun provideTemplateDao(db: AppDatabase) = db.templateDao()
40+
fun provideTemplateDao(db: AppDatabase?) = db?.templateDao()
3641
}

app/src/main/java/me/rosuh/easywatermark/di/RepositoryModule.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ object RepositoryModule {
4040
}
4141

4242
@Provides
43-
fun provideTemplateRepository(dao: TemplateDao): TemplateRepository {
43+
fun provideTemplateRepository(dao: TemplateDao?): TemplateRepository {
4444
return TemplateRepository(dao)
4545
}
4646
}

app/src/main/java/me/rosuh/easywatermark/ui/MainViewModel.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,12 @@ class MainViewModel @Inject constructor(
114114
)
115115

116116
fun addTemplate(content: String) {
117+
if (templateRepo.checkIfIsDaoNull()) {
118+
launch {
119+
uiState.emit(UiState.DatabaseError)
120+
}
121+
return
122+
}
117123
viewModelScope.launch {
118124
val template = Template(
119125
0,

app/src/main/java/me/rosuh/easywatermark/ui/UiState.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@ sealed class UiState {
88
object GoEdit : UiState()
99
object GoEditDialog : UiState()
1010
object None : UiState()
11+
object DatabaseError : UiState()
1112
}

app/src/main/java/me/rosuh/easywatermark/ui/dialog/EditTemplateContentFragment.kt

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -38,36 +38,14 @@ class EditTemplateContentFragment : BaseBindBSDFragment<DialogEditTemplateBindin
3838
binding.tvTitle.text = if (isEdit) "编辑模板" else "添加模板"
3939
binding.etWaterText.apply {
4040
setText(template?.content)
41-
addTextChangedListener(object : TextWatcher {
42-
override fun afterTextChanged(s: Editable?) {
43-
}
44-
45-
override fun beforeTextChanged(
46-
s: CharSequence?,
47-
start: Int,
48-
count: Int,
49-
after: Int
50-
) {
51-
}
52-
53-
override fun onTextChanged(
54-
s: CharSequence?,
55-
start: Int,
56-
before: Int,
57-
count: Int
58-
) {
59-
template?.let { shareViewModel.updateTemplate(it) }
60-
}
61-
})
62-
6341
post {
6442
setSelection(text?.length ?: 0)
6543
requestFocus()
6644
}
6745
}
6846
binding.btnConfirm.apply {
6947
setOnClickListener {
70-
val msg = binding.etWaterText.text.toString()
48+
val msg = binding.etWaterText.text.toString().trim()
7149
if (msg.isBlank()) {
7250
Toast.makeText(requireContext(), "不能为空", Toast.LENGTH_LONG).show()
7351
return@setOnClickListener

app/src/main/java/me/rosuh/easywatermark/ui/dialog/TextContentTemplateListFragment.kt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import android.os.Bundle
44
import android.view.LayoutInflater
55
import android.view.View
66
import android.view.ViewGroup
7+
import android.widget.Toast
78
import androidx.fragment.app.FragmentActivity
89
import androidx.lifecycle.Lifecycle
910
import androidx.lifecycle.flowWithLifecycle
@@ -14,6 +15,7 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder
1415
import kotlinx.coroutines.launch
1516
import me.rosuh.easywatermark.R
1617
import me.rosuh.easywatermark.databinding.DialogEditTextTemplateListBinding
18+
import me.rosuh.easywatermark.ui.UiState
1719
import me.rosuh.easywatermark.ui.adapter.TextContentTemplateListAdapter
1820
import me.rosuh.easywatermark.ui.base.BaseBindFragment
1921
import me.rosuh.easywatermark.utils.ktx.commitWithAnimation
@@ -90,6 +92,21 @@ class TextContentTemplateListFragment : BaseBindFragment<DialogEditTextTemplateL
9092
binding?.tvEmpty?.visibility = if (it.isEmpty()) View.VISIBLE else View.GONE
9193
}
9294
}
95+
96+
lifecycleScope.launch {
97+
shareViewModel.uiStateFlow.flowWithLifecycle(
98+
viewLifecycleOwner.lifecycle,
99+
Lifecycle.State.STARTED
100+
).collect {
101+
if (it is UiState.DatabaseError) {
102+
Toast.makeText(
103+
requireContext(),
104+
getString(R.string.tips_database_init_error),
105+
Toast.LENGTH_SHORT
106+
).show()
107+
}
108+
}
109+
}
93110
}
94111

95112

app/src/main/res/values-de-rDE/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,5 +120,6 @@
120120
<string name="recovery_mode_tips">Ups, Sie scheinen mehrere Abstürze erlebt zu haben. Sie sind nun automatisch in den Wiederherstellungsmodus versetzt worden. Nachstehend finden Sie Ihre Geräte- und Absturzinformationen. Es wäre sehr hilfreich, wenn Sie diese kopieren und uns über die folgenden Methoden kontaktieren könnten. Ich danke Ihnen!</string>
121121
<string name="tips_use_this_template">Sind Sie sicher, dass Sie diese Vorlage verwenden möchten?</string>
122122
<string name="tips_delete_template">Sind Sie sicher, dass Sie diesen Eintrag löschen wollen?</string>
123+
<string name="tips_database_init_error">Datenbankinitialisierung misslungen</string>
123124

124125
</resources>

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,5 +120,6 @@
120120
<string name="recovery_mode_tips">Oops, parece que has experimentado múltiples caídas. Ahora se ha puesto automáticamente en modo de recuperación. A continuación encontrará la información de su dispositivo y la información de la colisión, sería muy útil si pudiera copiarla y ponerse en contacto con nosotros a través de los siguientes métodos. Gracias.</string>
121121
<string name="tips_use_this_template">¿Seguro que quieres usar esta plantilla?</string>
122122
<string name="tips_delete_template">¿Estás seguro de que quieres eliminar esta entrada?</string>
123+
<string name="tips_database_init_error">Fallo en la inicialización de la base de datos</string>
123124

124125
</resources>

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,5 +109,6 @@
109109
<string name="recovery_mode_tips">Ops, sembra che si siano verificati più arresti anomali. A questo punto è stata attivata automaticamente la modalità di ripristino. Di seguito sono riportati i dati del dispositivo e le informazioni sull\'incidente; sarebbe molto utile se poteste copiarli e contattarci tramite i seguenti metodi. Grazie!</string>
110110
<string name="tips_use_this_template">Siete sicuri di voler utilizzare questo modello?</string>
111111
<string name="tips_delete_template">È sicuro di voler cancellare questa voce?</string>
112+
<string name="tips_database_init_error">Inizializzazione del database fallita</string>
112113

113114
</resources>

0 commit comments

Comments
 (0)