From 68724752f82feecd5987d10d08a561e15e6fc07b Mon Sep 17 00:00:00 2001 From: len Date: Sun, 26 Mar 2017 11:24:39 +0200 Subject: [PATCH] Separate some changes unrelated to backup from PR --- .../database/mappers/HistoryTypeMapping.kt | 3 ++- .../tachiyomi/data/database/models/History.kt | 16 +++++------ .../data/database/models/HistoryImpl.kt | 27 +++++++++++++++++++ .../data/database/queries/ChapterQueries.kt | 10 +++++++ .../data/database/queries/HistoryQueries.kt | 9 +++++++ .../data/database/queries/MangaQueries.kt | 6 +++++ .../data/database/queries/RawQueries.kt | 8 ++++++ .../data/notification/NotificationHandler.kt | 4 +-- .../data/notification/NotificationReceiver.kt | 9 ++++--- .../tachiyomi/util/ContextExtensions.kt | 4 +-- app/src/main/res/xml/provider_paths.xml | 5 ++-- 11 files changed, 80 insertions(+), 21 deletions(-) create mode 100644 app/src/main/java/eu/kanade/tachiyomi/data/database/models/HistoryImpl.kt diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/mappers/HistoryTypeMapping.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/mappers/HistoryTypeMapping.kt index 6d34d3eff6..fdd96f69ad 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/mappers/HistoryTypeMapping.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/mappers/HistoryTypeMapping.kt @@ -10,6 +10,7 @@ import com.pushtorefresh.storio.sqlite.queries.DeleteQuery import com.pushtorefresh.storio.sqlite.queries.InsertQuery import com.pushtorefresh.storio.sqlite.queries.UpdateQuery import eu.kanade.tachiyomi.data.database.models.History +import eu.kanade.tachiyomi.data.database.models.HistoryImpl import eu.kanade.tachiyomi.data.database.tables.HistoryTable.COL_CHAPTER_ID import eu.kanade.tachiyomi.data.database.tables.HistoryTable.COL_ID import eu.kanade.tachiyomi.data.database.tables.HistoryTable.COL_LAST_READ @@ -44,7 +45,7 @@ open class HistoryPutResolver : DefaultPutResolver() { class HistoryGetResolver : DefaultGetResolver() { - override fun mapFromCursor(cursor: Cursor): History = History().apply { + override fun mapFromCursor(cursor: Cursor): History = HistoryImpl().apply { id = cursor.getLong(cursor.getColumnIndex(COL_ID)) chapter_id = cursor.getLong(cursor.getColumnIndex(COL_CHAPTER_ID)) last_read = cursor.getLong(cursor.getColumnIndex(COL_LAST_READ)) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/History.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/History.kt index 5d5c89c353..30f50972c5 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/History.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/History.kt @@ -5,27 +5,27 @@ import java.io.Serializable /** * Object containing the history statistics of a chapter */ -class History : Serializable { +interface History : Serializable { /** * Id of history object. */ - var id: Long? = null + var id: Long? /** * Chapter id of history object. */ - var chapter_id: Long = 0 + var chapter_id: Long /** * Last time chapter was read in time long format */ - var last_read: Long = 0 + var last_read: Long /** * Total time chapter was read - todo not yet implemented */ - var time_read: Long = 0 + var time_read: Long companion object { @@ -35,10 +35,8 @@ class History : Serializable { * @param chapter chapter object * @return history object */ - fun create(chapter: Chapter): History { - val history = History() - history.chapter_id = chapter.id!! - return history + fun create(chapter: Chapter): History = HistoryImpl().apply { + this.chapter_id = chapter.id!! } } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/HistoryImpl.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/HistoryImpl.kt new file mode 100644 index 0000000000..94efcf2666 --- /dev/null +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/HistoryImpl.kt @@ -0,0 +1,27 @@ +package eu.kanade.tachiyomi.data.database.models + +/** + * Object containing the history statistics of a chapter + */ +class HistoryImpl : History { + + /** + * Id of history object. + */ + override var id: Long? = null + + /** + * Chapter id of history object. + */ + override var chapter_id: Long = 0 + + /** + * Last time chapter was read in time long format + */ + override var last_read: Long = 0 + + /** + * Total time chapter was read - todo not yet implemented + */ + override var time_read: Long = 0 +} diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/ChapterQueries.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/ChapterQueries.kt index 1d263d8822..7cc999088d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/ChapterQueries.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/ChapterQueries.kt @@ -42,6 +42,16 @@ interface ChapterQueries : DbProvider { .build()) .prepare() + fun getChapter(url: String) = db.get() + .`object`(Chapter::class.java) + .withQuery(Query.builder() + .table(ChapterTable.TABLE) + .where("${ChapterTable.COL_URL} = ?") + .whereArgs(url) + .build()) + .prepare() + + fun insertChapter(chapter: Chapter) = db.put().`object`(chapter).prepare() fun insertChapters(chapters: List) = db.put().objects(chapters).prepare() diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/HistoryQueries.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/HistoryQueries.kt index 627c3b236c..340e14adb1 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/HistoryQueries.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/HistoryQueries.kt @@ -40,6 +40,15 @@ interface HistoryQueries : DbProvider { .build()) .prepare() + fun getHistoryByChapterUrl(chapterUrl: String) = db.get() + .`object`(History::class.java) + .withQuery(RawQuery.builder() + .query(getHistoryByChapterUrl()) + .args(chapterUrl) + .observesTables(HistoryTable.TABLE) + .build()) + .prepare() + /** * Updates the history last read. * Inserts history object if not yet in database diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/MangaQueries.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/MangaQueries.kt index b22a2fa33e..1c51f80922 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/MangaQueries.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/MangaQueries.kt @@ -84,6 +84,12 @@ interface MangaQueries : DbProvider { .build()) .prepare() + fun deleteMangas() = db.delete() + .byQuery(DeleteQuery.builder() + .table(MangaTable.TABLE) + .build()) + .prepare() + fun getLastReadManga() = db.get() .listOfObjects(Manga::class.java) .withQuery(RawQuery.builder() diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/RawQueries.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/RawQueries.kt index d7736919da..cac21db3f9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/RawQueries.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/RawQueries.kt @@ -73,6 +73,14 @@ fun getHistoryByMangaId() = """ WHERE ${Chapter.TABLE}.${Chapter.COL_MANGA_ID} = ? AND ${History.TABLE}.${History.COL_CHAPTER_ID} = ${Chapter.TABLE}.${Chapter.COL_ID} """ +fun getHistoryByChapterUrl() = """ + SELECT ${History.TABLE}.* + FROM ${History.TABLE} + JOIN ${Chapter.TABLE} + ON ${History.TABLE}.${History.COL_CHAPTER_ID} = ${Chapter.TABLE}.${Chapter.COL_ID} + WHERE ${Chapter.TABLE}.${Chapter.COL_URL} = ? AND ${History.TABLE}.${History.COL_CHAPTER_ID} = ${Chapter.TABLE}.${Chapter.COL_ID} +""" + fun getLastReadMangaQuery() = """ SELECT ${Manga.TABLE}.*, MAX(${History.TABLE}.${History.COL_LAST_READ}) AS max FROM ${Manga.TABLE} diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationHandler.kt b/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationHandler.kt index ae160492ef..5067341604 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationHandler.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationHandler.kt @@ -3,8 +3,6 @@ package eu.kanade.tachiyomi.data.notification import android.app.PendingIntent import android.content.Context import android.content.Intent -import android.support.v4.content.FileProvider -import eu.kanade.tachiyomi.BuildConfig import eu.kanade.tachiyomi.ui.download.DownloadActivity import eu.kanade.tachiyomi.util.getUriCompat import java.io.File @@ -33,7 +31,7 @@ object NotificationHandler { */ internal fun openImagePendingActivity(context: Context, file: File): PendingIntent { val intent = Intent(Intent.ACTION_VIEW).apply { - val uri = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".provider", file) + val uri = file.getUriCompat(context) setDataAndType(uri, "image/*") flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_GRANT_READ_URI_PERMISSION } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt b/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt index 18007bd85d..17767d3226 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt @@ -14,7 +14,10 @@ import eu.kanade.tachiyomi.data.download.DownloadManager import eu.kanade.tachiyomi.data.download.DownloadService import eu.kanade.tachiyomi.data.library.LibraryUpdateService import eu.kanade.tachiyomi.ui.reader.ReaderActivity -import eu.kanade.tachiyomi.util.* +import eu.kanade.tachiyomi.util.DiskUtil +import eu.kanade.tachiyomi.util.getUriCompat +import eu.kanade.tachiyomi.util.notificationManager +import eu.kanade.tachiyomi.util.toast import uy.kohesive.injekt.injectLazy import java.io.File import eu.kanade.tachiyomi.BuildConfig.APPLICATION_ID as ID @@ -118,7 +121,7 @@ class NotificationReceiver : BroadcastReceiver() { // Delete file val file = File(path) - file.deleteIfExists() + file.delete() DiskUtil.scanMedia(context, file) } @@ -274,4 +277,4 @@ class NotificationReceiver : BroadcastReceiver() { return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT) } } -} \ No newline at end of file +} diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/ContextExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/ContextExtensions.kt index 7fd84a3d8a..b0daa653ba 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/ContextExtensions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/ContextExtensions.kt @@ -122,7 +122,7 @@ fun Context.sendLocalBroadcastSync(intent: Intent) { * * @param receiver receiver that gets registered. */ -fun Context.registerLocalReceiver(receiver: BroadcastReceiver, filter: IntentFilter ){ +fun Context.registerLocalReceiver(receiver: BroadcastReceiver, filter: IntentFilter) { LocalBroadcastManager.getInstance(this).registerReceiver(receiver, filter) } @@ -131,7 +131,7 @@ fun Context.registerLocalReceiver(receiver: BroadcastReceiver, filter: IntentFil * * @param receiver receiver that gets unregistered. */ -fun Context.unregisterLocalReceiver(receiver: BroadcastReceiver){ +fun Context.unregisterLocalReceiver(receiver: BroadcastReceiver) { LocalBroadcastManager.getInstance(this).unregisterReceiver(receiver) } diff --git a/app/src/main/res/xml/provider_paths.xml b/app/src/main/res/xml/provider_paths.xml index 62e0d1893f..2d828b7ed6 100644 --- a/app/src/main/res/xml/provider_paths.xml +++ b/app/src/main/res/xml/provider_paths.xml @@ -1,7 +1,6 @@ + - + \ No newline at end of file