improved UI
This commit is contained in:
1 parent
02a40c2589
commit
d8b39057d5
8 files changed
+460
-16
No files matched your search
@@ -3,13 +3,17 @@ package net.sergeych.toread
|
||||
import androidx.compose.ui.graphics.ImageBitmap
|
||||
import androidx.compose.ui.graphics.toComposeImageBitmap
|
||||
import net.sergeych.toread.fb2.Fb2Binary
|
||||
import net.sergeych.toread.storage.LibraryFileRecord
|
||||
import net.sergeych.toread.storage.BookReadingStatus
|
||||
import net.sergeych.toread.storage.ContentAnchor
|
||||
import net.sergeych.toread.storage.LibraryFileRecord
|
||||
import net.sergeych.toread.storage.ReadingStateRecord
|
||||
import net.sergeych.toread.storage.jdbc.H2LibraryDatabase
|
||||
import net.sergeych.toread.storage.jdbc.LibraryScanner
|
||||
import org.jetbrains.skia.Image
|
||||
import java.io.File
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Date
|
||||
import java.util.Locale
|
||||
import java.util.concurrent.atomic.AtomicBoolean
|
||||
import java.util.concurrent.TimeUnit
|
||||
import javax.swing.JFileChooser
|
||||
@@ -129,6 +133,7 @@ actual suspend fun saveLibraryReadingPosition(fileId: String, position: ReadingP
|
||||
openLibraryDatabase().useLibrary { db ->
|
||||
val file = db.files.get(fileId) ?: return@useLibrary
|
||||
val clusterId = file.bodyClusterId ?: return@useLibrary
|
||||
val now = System.currentTimeMillis()
|
||||
db.readingStates.upsert(
|
||||
ReadingStateRecord(
|
||||
id = "state-$clusterId",
|
||||
@@ -138,9 +143,16 @@ actual suspend fun saveLibraryReadingPosition(fileId: String, position: ReadingP
|
||||
progress = position.itemIndex.toDouble(),
|
||||
formatHintsJson = position.toFormatHintsJson(),
|
||||
),
|
||||
updatedAt = System.currentTimeMillis(),
|
||||
updatedAt = now,
|
||||
),
|
||||
)
|
||||
db.files.touchLastReadAt(fileId, now)
|
||||
}
|
||||
}
|
||||
|
||||
actual suspend fun markLibraryReadingStatus(fileId: String, status: BookReadingStatus): Boolean = withContext(Dispatchers.IO) {
|
||||
openLibraryDatabase().useLibrary { db ->
|
||||
db.files.updateReadingStatus(fileId, status)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -249,6 +261,9 @@ actual fun watchPlatformDarkTheme(onChange: (Boolean) -> Unit): () -> Unit {
|
||||
|
||||
actual fun libraryLogPath(): String? = libraryLogFile().absolutePath
|
||||
|
||||
actual fun formatLibraryLastReadTime(millis: Long): String =
|
||||
SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.getDefault()).format(Date(millis))
|
||||
|
||||
private fun openLibraryDatabase(): H2LibraryDatabase {
|
||||
val libraryDir = File(System.getProperty("user.home"), ".toread/library")
|
||||
val dbDir = File(libraryDir, "db")
|
||||
@@ -290,6 +305,8 @@ private fun LibraryFileRecord.toLibraryItem(): LibraryItem =
|
||||
sizeBytes = sizeBytes,
|
||||
storageUri = storageUri,
|
||||
lastSeenAt = lastSeenAt,
|
||||
readingStatus = readingStatus,
|
||||
lastReadAt = lastReadAt,
|
||||
)
|
||||
|
||||
private fun libraryLogFile(): File =
|
||||
|
||||
Reference in new issue
Block a user