Skip to content

Commit de49877

Browse files
committed
Fix crash and foreign key issue
1 parent 450daf1 commit de49877

File tree

4 files changed

+24
-9
lines changed

4 files changed

+24
-9
lines changed

app/build.gradle

+4-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ android {
1515
minSdkVersion 21
1616
targetSdkVersion 29
1717
versionCode gitCommits
18-
versionName '0.1.3'
18+
versionName '0.1.4'
1919

2020
buildConfigField 'String', 'GIT_BRANCH', "\"${gitBranch}\""
2121

@@ -36,6 +36,9 @@ android {
3636
buildTypes {
3737
debug {
3838
applicationIdSuffix = '.debug'
39+
minifyEnabled true
40+
shrinkResources true
41+
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
3942
}
4043
release {
4144
minifyEnabled true

app/src/main/java/org/koitharu/kotatsu/domain/MangaDataRepository.kt

+11-6
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,18 @@ class MangaDataRepository : KoinComponent {
1414

1515
private val db: MangaDatabase by inject()
1616

17-
suspend fun savePreferences(mangaId: Long, mode: ReaderMode) {
18-
db.preferencesDao().upsert(
19-
MangaPrefsEntity(
20-
mangaId = mangaId,
21-
mode = mode.id
17+
suspend fun savePreferences(manga: Manga, mode: ReaderMode) {
18+
val tags = manga.tags.map(TagEntity.Companion::fromMangaTag)
19+
db.withTransaction {
20+
db.tagsDao().upsert(tags)
21+
db.mangaDao().upsert(MangaEntity.from(manga), tags)
22+
db.preferencesDao().upsert(
23+
MangaPrefsEntity(
24+
mangaId = manga.id,
25+
mode = mode.id
26+
)
2227
)
23-
)
28+
}
2429
}
2530

2631
suspend fun getReaderMode(mangaId: Long): ReaderMode? {

app/src/main/java/org/koitharu/kotatsu/ui/main/list/MangaListFragment.kt

+3
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,9 @@ abstract class MangaListFragment<E> : BaseFragment(R.layout.fragment_list), Mang
182182
}
183183

184184
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences, key: String) {
185+
if (context == null) {
186+
return
187+
}
185188
when (key) {
186189
getString(R.string.key_list_mode) -> initListMode(settings.listMode)
187190
getString(R.string.key_grid_size) -> UiUtils.SpanCountResolver.update(recyclerView)

app/src/main/java/org/koitharu/kotatsu/ui/reader/ReaderPresenter.kt

+6-2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import moxy.presenterScope
88
import okhttp3.OkHttpClient
99
import okhttp3.Request
1010
import org.koin.core.get
11+
import org.koitharu.kotatsu.BuildConfig
1112
import org.koitharu.kotatsu.core.model.Manga
1213
import org.koitharu.kotatsu.core.model.MangaPage
1314
import org.koitharu.kotatsu.core.prefs.ReaderMode
@@ -39,7 +40,7 @@ class ReaderPresenter : BasePresenter<ReaderView>() {
3940
mode = MangaUtils.determineReaderMode(pages)
4041
if (mode != null) {
4142
prefs.savePreferences(
42-
mangaId = manga.id,
43+
manga = manga,
4344
mode = mode
4445
)
4546
}
@@ -49,6 +50,9 @@ class ReaderPresenter : BasePresenter<ReaderView>() {
4950
viewState.onInitReader(manga, mode)
5051
} catch (_: CancellationException) {
5152
} catch (e: Throwable) {
53+
if (BuildConfig.DEBUG) {
54+
e.printStackTrace()
55+
}
5256
viewState.onError(e)
5357
} finally {
5458
viewState.onLoadingStateChanged(isLoading = false)
@@ -59,7 +63,7 @@ class ReaderPresenter : BasePresenter<ReaderView>() {
5963
fun setMode(manga: Manga, mode: ReaderMode) {
6064
presenterScope.launch(Dispatchers.IO) {
6165
MangaDataRepository().savePreferences(
62-
mangaId = manga.id,
66+
manga = manga,
6367
mode = mode
6468
)
6569
}

0 commit comments

Comments
 (0)