Dependency updates

This commit is contained in:
Syer10
2021-05-24 19:45:22 -04:00
parent 1d79ccf80d
commit c8bbad12f8
13 changed files with 80 additions and 22 deletions

View File

@@ -5,12 +5,13 @@ import org.jmailen.gradle.kotlinter.tasks.FormatTask
import org.jmailen.gradle.kotlinter.tasks.LintTask import org.jmailen.gradle.kotlinter.tasks.LintTask
plugins { plugins {
kotlin("jvm") version "1.4.32" kotlin("jvm") version "1.5.0"
kotlin("kapt") version "1.4.32" kotlin("kapt") version "1.5.0"
kotlin("plugin.serialization") version "1.4.32" kotlin("plugin.serialization") version "1.5.0"
id("org.jetbrains.compose") version "0.4.0-build198" id("org.jetbrains.compose") version "0.4.0-build209"
id("de.fuerstenau.buildconfig") version "1.1.8" id("de.fuerstenau.buildconfig") version "1.1.8"
id("org.jmailen.kotlinter") version "3.4.0" id("org.jmailen.kotlinter") version "3.4.4"
id("com.github.ben-manes.versions") version "0.38.0"
} }
group = "ca.gosyer" group = "ca.gosyer"
@@ -20,7 +21,6 @@ repositories {
mavenCentral() mavenCentral()
maven { url = uri("https://maven.pkg.jetbrains.space/public/p/compose/dev") } maven { url = uri("https://maven.pkg.jetbrains.space/public/p/compose/dev") }
maven { url = uri("https://jitpack.io") }
} }
dependencies { dependencies {
@@ -34,17 +34,17 @@ dependencies {
implementation("com.github.weisj:darklaf-core:2.5.5") implementation("com.github.weisj:darklaf-core:2.5.5")
// Threading // Threading
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.3") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0")
// Json // Json
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.1.0") implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.2.1")
// Dependency Injection // Dependency Injection
implementation("com.github.stephanenicolas.toothpick:ktp:3.1.0") implementation("com.github.stephanenicolas.toothpick:ktp:3.1.0")
kapt("com.github.stephanenicolas.toothpick:toothpick-compiler:3.1.0") kapt("com.github.stephanenicolas.toothpick:toothpick-compiler:3.1.0")
// Http client // Http client
val ktorVersion = "1.5.2" val ktorVersion = "1.5.4"
implementation("io.ktor:ktor-client-core:$ktorVersion") implementation("io.ktor:ktor-client-core:$ktorVersion")
implementation("io.ktor:ktor-client-okhttp:$ktorVersion") implementation("io.ktor:ktor-client-okhttp:$ktorVersion")
implementation("io.ktor:ktor-client-serialization:$ktorVersion") implementation("io.ktor:ktor-client-serialization:$ktorVersion")
@@ -55,13 +55,13 @@ dependencies {
implementation("org.apache.logging.log4j:log4j-api:$log4jVersion") implementation("org.apache.logging.log4j:log4j-api:$log4jVersion")
implementation("org.apache.logging.log4j:log4j-core:$log4jVersion") implementation("org.apache.logging.log4j:log4j-core:$log4jVersion")
implementation("org.apache.logging.log4j:log4j-slf4j-impl:$log4jVersion") implementation("org.apache.logging.log4j:log4j-slf4j-impl:$log4jVersion")
implementation("io.github.microutils:kotlin-logging-jvm:2.0.5") implementation("io.github.microutils:kotlin-logging-jvm:2.0.6")
// User storage // User storage
implementation("net.harawata:appdirs:1.2.1") implementation("net.harawata:appdirs:1.2.1")
// Preferences // Preferences
val multiplatformSettingsVersion = "0.7.4" val multiplatformSettingsVersion = "0.7.7"
implementation("com.russhwolf:multiplatform-settings-jvm:$multiplatformSettingsVersion") implementation("com.russhwolf:multiplatform-settings-jvm:$multiplatformSettingsVersion")
implementation("com.russhwolf:multiplatform-settings-serialization-jvm:$multiplatformSettingsVersion") implementation("com.russhwolf:multiplatform-settings-serialization-jvm:$multiplatformSettingsVersion")
implementation("com.russhwolf:multiplatform-settings-coroutines-jvm:$multiplatformSettingsVersion") implementation("com.russhwolf:multiplatform-settings-coroutines-jvm:$multiplatformSettingsVersion")
@@ -71,7 +71,7 @@ dependencies {
// Testing // Testing
testImplementation(kotlin("test-junit5")) testImplementation(kotlin("test-junit5"))
testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.4.3") testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.5.0")
} }
tasks { tasks {
@@ -131,6 +131,8 @@ compose.desktop {
"java.management", "java.management",
"java.naming", "java.naming",
"java.prefs", "java.prefs",
"java.rmi",
"java.scripting",
"java.sql", "java.sql",
"jdk.unsupported" "jdk.unsupported"
) )

View File

@@ -84,7 +84,7 @@ internal class JvmPreference<T>(
override fun changes(): Flow<T> { override fun changes(): Flow<T> {
return callbackFlow { return callbackFlow {
val listener = preferences.addListener(key) { val listener = preferences.addListener(key) {
offer(get()) trySend(get())
} }
awaitClose { listener.deactivate() } awaitClose { listener.deactivate() }
} }

View File

@@ -9,6 +9,7 @@ package ca.gosyer.data.server
import ca.gosyer.BuildConfig import ca.gosyer.BuildConfig
import ca.gosyer.util.system.CKLogger import ca.gosyer.util.system.CKLogger
import ca.gosyer.util.system.userDataDir import ca.gosyer.util.system.userDataDir
import kotlinx.coroutines.DelicateCoroutinesApi
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
@@ -24,6 +25,7 @@ import java.util.jar.JarInputStream
import javax.inject.Inject import javax.inject.Inject
import kotlin.concurrent.thread import kotlin.concurrent.thread
@OptIn(DelicateCoroutinesApi::class)
class ServerService @Inject constructor( class ServerService @Inject constructor(
val serverPreferences: ServerPreferences val serverPreferences: ServerPreferences
) { ) {

View File

@@ -25,9 +25,11 @@ import ca.gosyer.data.server.Http
import ca.gosyer.util.compose.imageFromUrl import ca.gosyer.util.compose.imageFromUrl
import kotlinx.coroutines.CancellationException import kotlinx.coroutines.CancellationException
import kotlinx.coroutines.CoroutineExceptionHandler import kotlinx.coroutines.CoroutineExceptionHandler
import kotlinx.coroutines.DelicateCoroutinesApi
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@OptIn(DelicateCoroutinesApi::class)
@Composable @Composable
fun KtorImage( fun KtorImage(
imageUrl: String, imageUrl: String,

View File

@@ -46,6 +46,7 @@ import ca.gosyer.BuildConfig
import ca.gosyer.ui.base.vm.viewModel import ca.gosyer.ui.base.vm.viewModel
import ca.gosyer.util.compose.ThemedWindow import ca.gosyer.util.compose.ThemedWindow
import kotlinx.coroutines.CoroutineExceptionHandler import kotlinx.coroutines.CoroutineExceptionHandler
import kotlinx.coroutines.DelicateCoroutinesApi
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import mu.KotlinLogging import mu.KotlinLogging
@@ -57,6 +58,7 @@ fun openCategoriesMenu(notifyFinished: (() -> Unit)? = null) {
} }
} }
@OptIn(DelicateCoroutinesApi::class)
@Composable @Composable
fun CategoriesMenu(notifyFinished: (() -> Unit)? = null, windowEvents: WindowEvents) { fun CategoriesMenu(notifyFinished: (() -> Unit)? = null, windowEvents: WindowEvents) {
val vm = viewModel<CategoriesMenuViewModel>() val vm = viewModel<CategoriesMenuViewModel>()

View File

@@ -46,6 +46,7 @@ import ca.gosyer.ui.base.components.LoadingScreen
import ca.gosyer.ui.base.components.Toolbar import ca.gosyer.ui.base.components.Toolbar
import ca.gosyer.ui.base.vm.viewModel import ca.gosyer.ui.base.vm.viewModel
import ca.gosyer.util.compose.ThemedWindow import ca.gosyer.util.compose.ThemedWindow
import java.util.Locale
fun openExtensionsMenu() { fun openExtensionsMenu() {
ThemedWindow(title = "TachideskJUI - Extensions", size = IntSize(550, 700)) { ThemedWindow(title = "TachideskJUI - Extensions", size = IntSize(550, 700)) {
@@ -126,7 +127,7 @@ fun ExtensionItem(
} }
Text(title, fontSize = 26.sp, color = MaterialTheme.colors.onBackground) Text(title, fontSize = 26.sp, color = MaterialTheme.colors.onBackground)
Row { Row {
Text(extension.lang.toUpperCase(), fontSize = 14.sp, color = MaterialTheme.colors.onBackground) Text(extension.lang.uppercase(Locale.getDefault()), fontSize = 14.sp, color = MaterialTheme.colors.onBackground)
if (extension.nsfw) { if (extension.nsfw) {
Spacer(Modifier.width(4.dp)) Spacer(Modifier.width(4.dp))
Text("18+", fontSize = 14.sp, color = Color.Red) Text("18+", fontSize = 14.sp, color = Color.Red)

View File

@@ -28,6 +28,7 @@ import com.github.weisj.darklaf.theme.IntelliJTheme
import com.github.zsoltk.compose.backpress.BackPressHandler import com.github.zsoltk.compose.backpress.BackPressHandler
import com.github.zsoltk.compose.backpress.LocalBackPressHandler import com.github.zsoltk.compose.backpress.LocalBackPressHandler
import com.github.zsoltk.compose.savedinstancestate.Bundle import com.github.zsoltk.compose.savedinstancestate.Bundle
import kotlinx.coroutines.DelicateCoroutinesApi
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.launchIn
import org.apache.logging.log4j.core.config.Configurator import org.apache.logging.log4j.core.config.Configurator
@@ -36,6 +37,7 @@ import toothpick.ktp.KTP
import toothpick.ktp.extension.getInstance import toothpick.ktp.extension.getInstance
import javax.swing.SwingUtilities import javax.swing.SwingUtilities
@OptIn(DelicateCoroutinesApi::class)
fun main() { fun main() {
val clazz = MainViewModel::class.java val clazz = MainViewModel::class.java
Configurator.initialize( Configurator.initialize(

View File

@@ -36,8 +36,8 @@ class ChapterLoader(
val pages = loader.getPages() val pages = loader.getPages()
pages.drop(1).take(1).onEach { pages -> pages.drop(1).take(1).onEach { newPages ->
if (pages.isEmpty()) { if (newPages.isEmpty()) {
chapter.state = ReaderChapter.State.Error(Exception("No pages found")) chapter.state = ReaderChapter.State.Error(Exception("No pages found"))
} }
}.launchIn(chapter.scope) }.launchIn(chapter.scope)

View File

@@ -18,6 +18,7 @@ import ca.gosyer.ui.base.prefs.SwitchPreference
import ca.gosyer.ui.base.vm.ViewModel import ca.gosyer.ui.base.vm.ViewModel
import ca.gosyer.ui.base.vm.viewModel import ca.gosyer.ui.base.vm.viewModel
import ca.gosyer.ui.main.Route import ca.gosyer.ui.main.Route
import ca.gosyer.util.lang.capitalize
import com.github.zsoltk.compose.router.BackStack import com.github.zsoltk.compose.router.BackStack
import java.text.DateFormat import java.text.DateFormat
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
@@ -39,7 +40,9 @@ class SettingsGeneralViewModel @Inject constructor(
@Composable @Composable
fun getLanguageChoices(): Map<String, String> { fun getLanguageChoices(): Map<String, String> {
val currentLocaleDisplayName = val currentLocaleDisplayName =
Locale.getDefault().let { it.getDisplayName(it).capitalize() } Locale.getDefault().let { locale ->
locale.getDisplayName(locale).capitalize()
}
return mapOf( return mapOf(
"" to "System Default ($currentLocaleDisplayName)" "" to "System Default ($currentLocaleDisplayName)"
) )

View File

@@ -32,6 +32,7 @@ import androidx.compose.ui.unit.dp
import ca.gosyer.data.models.Source import ca.gosyer.data.models.Source
import ca.gosyer.ui.base.components.KtorImage import ca.gosyer.ui.base.components.KtorImage
import ca.gosyer.ui.base.components.LoadingScreen import ca.gosyer.ui.base.components.LoadingScreen
import java.util.Locale
@Composable @Composable
fun SourceHomeScreen( fun SourceHomeScreen(
@@ -80,7 +81,7 @@ fun SourceCategory(
) { ) {
Column { Column {
Surface(elevation = 1.dp, modifier = Modifier.fillMaxWidth()) { Surface(elevation = 1.dp, modifier = Modifier.fillMaxWidth()) {
Text(lang.toUpperCase(), modifier = Modifier.align(Alignment.CenterHorizontally), color = MaterialTheme.colors.onBackground) Text(lang.uppercase(Locale.getDefault()), modifier = Modifier.align(Alignment.CenterHorizontally), color = MaterialTheme.colors.onBackground)
} }
LazyVerticalGrid(GridCells.Adaptive(120.dp), state = state) { LazyVerticalGrid(GridCells.Adaptive(120.dp), state = state) {
items(sources) { source -> items(sources) { source ->

View File

@@ -13,14 +13,14 @@ import javax.swing.JPopupMenu
import javax.swing.JSeparator import javax.swing.JSeparator
class ContextMenu internal constructor() { class ContextMenu internal constructor() {
internal val list = mutableListOf<Pair<Any, (() -> Unit)?>>() internal val items = mutableListOf<Pair<Any, (() -> Unit)?>>()
internal fun popupMenu() = JPopupMenu().apply { internal fun popupMenu() = JPopupMenu().apply {
fun (() -> Unit)?.andClose() { fun (() -> Unit)?.andClose() {
isVisible = false isVisible = false
this?.invoke() this?.invoke()
} }
list.forEach { (item, block) -> items.forEach { (item, block) ->
when (item) { when (item) {
is JMenuItem -> add(item).apply { is JMenuItem -> add(item).apply {
addActionListener { addActionListener {
@@ -33,10 +33,10 @@ class ContextMenu internal constructor() {
} }
fun menuItem(name: String, icon: Icon? = null, builder: JMenuItem.() -> Unit = {}, action: () -> Unit) { fun menuItem(name: String, icon: Icon? = null, builder: JMenuItem.() -> Unit = {}, action: () -> Unit) {
list += JMenuItem(name, icon).apply(builder) to action items += JMenuItem(name, icon).apply(builder) to action
} }
fun separator() { fun separator() {
list += JSeparator() to null items += JSeparator() to null
} }
} }

View File

@@ -0,0 +1,32 @@
/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package ca.gosyer.util.lang
import kotlin.time.DurationUnit
import kotlin.time.toDuration
val Int.nanoseconds get() = toDuration(DurationUnit.NANOSECONDS)
val Long.nanoseconds get() = toDuration(DurationUnit.NANOSECONDS)
val Double.nanoseconds get() = toDuration(DurationUnit.NANOSECONDS)
val Int.microseconds get() = toDuration(DurationUnit.MICROSECONDS)
val Long.microseconds get() = toDuration(DurationUnit.MICROSECONDS)
val Double.microseconds get() = toDuration(DurationUnit.MICROSECONDS)
val Int.milliseconds get() = toDuration(DurationUnit.MILLISECONDS)
val Long.milliseconds get() = toDuration(DurationUnit.MILLISECONDS)
val Double.milliseconds get() = toDuration(DurationUnit.MILLISECONDS)
val Int.seconds get() = toDuration(DurationUnit.SECONDS)
val Long.seconds get() = toDuration(DurationUnit.SECONDS)
val Double.seconds get() = toDuration(DurationUnit.SECONDS)
val Int.minutes get() = toDuration(DurationUnit.MINUTES)
val Long.minutes get() = toDuration(DurationUnit.MINUTES)
val Double.minutes get() = toDuration(DurationUnit.MINUTES)
val Int.hours get() = toDuration(DurationUnit.HOURS)
val Long.hours get() = toDuration(DurationUnit.HOURS)
val Double.hours get() = toDuration(DurationUnit.HOURS)
val Int.days get() = toDuration(DurationUnit.DAYS)
val Long.days get() = toDuration(DurationUnit.DAYS)
val Double.days get() = toDuration(DurationUnit.DAYS)

View File

@@ -0,0 +1,11 @@
/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package ca.gosyer.util.lang
import java.util.Locale
fun String.capitalize() = replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString() }