add webview
This commit is contained in:
@@ -33,7 +33,7 @@ import ir.armor.tachidesk.impl.extension.Extension.uninstallExtension
|
||||
import ir.armor.tachidesk.impl.extension.Extension.updateExtension
|
||||
import ir.armor.tachidesk.impl.extension.ExtensionsList.getExtensionList
|
||||
import ir.armor.tachidesk.server.impl_internal.About.getAbout
|
||||
import ir.armor.tachidesk.server.util.openInBrowser
|
||||
import ir.armor.tachidesk.server.util.Browser.openInBrowser
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.SupervisorJob
|
||||
@@ -87,8 +87,12 @@ object JavalinSetup {
|
||||
}
|
||||
)
|
||||
|
||||
if (hasWebUiBundled && serverConfig.initialOpenInBrowserEnabled) {
|
||||
openInBrowser()
|
||||
app.events { event ->
|
||||
event.serverStarted {
|
||||
if (hasWebUiBundled && serverConfig.initialOpenInBrowserEnabled) {
|
||||
openInBrowser()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
app.exception(NullPointerException::class.java) { e, ctx ->
|
||||
|
||||
@@ -10,7 +10,7 @@ package ir.armor.tachidesk.server
|
||||
import eu.kanade.tachiyomi.App
|
||||
import ir.armor.tachidesk.model.database.databaseUp
|
||||
import ir.armor.tachidesk.server.util.AppMutex.handleAppMutex
|
||||
import ir.armor.tachidesk.server.util.systemTray
|
||||
import ir.armor.tachidesk.server.util.SystemTray.systemTray
|
||||
import mu.KotlinLogging
|
||||
import org.kodein.di.DI
|
||||
import org.kodein.di.bind
|
||||
|
||||
@@ -13,6 +13,7 @@ import ir.armor.tachidesk.server.serverConfig
|
||||
import ir.armor.tachidesk.server.util.AppMutex.AppMutexStat.Clear
|
||||
import ir.armor.tachidesk.server.util.AppMutex.AppMutexStat.OtherApplicationRunning
|
||||
import ir.armor.tachidesk.server.util.AppMutex.AppMutexStat.TachideskInstanceRunning
|
||||
import ir.armor.tachidesk.server.util.Browser.openInBrowser
|
||||
import mu.KotlinLogging
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.Request.Builder
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
package ir.armor.tachidesk.server.util
|
||||
|
||||
/*
|
||||
* Copyright (C) Contributors to the Suwayomi project
|
||||
*
|
||||
* 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/. */
|
||||
|
||||
import ca.weblite.webview.WebView
|
||||
import dorkbox.util.Desktop
|
||||
import ir.armor.tachidesk.server.serverConfig
|
||||
|
||||
object Browser {
|
||||
private val appIP = if (serverConfig.ip == "0.0.0.0") "127.0.0.1" else serverConfig.ip
|
||||
private val appBaseUrl = "http://$appIP:${serverConfig.port}"
|
||||
|
||||
private val webViewInstances = mutableListOf<WebView>()
|
||||
|
||||
private fun createWebView() = WebView()
|
||||
.size(800, 600)
|
||||
.title("Tachidesk")
|
||||
.resizable(true)
|
||||
.url(appBaseUrl)
|
||||
.also {
|
||||
WebView::class.java.getDeclaredField("fullscreen").setBoolean(it, true)
|
||||
}.also {
|
||||
webViewInstances.add(it)
|
||||
}
|
||||
|
||||
fun openInBrowser() {
|
||||
|
||||
val openInWebView = System.getProperty("ir.armor.tachidesk.openInWebview")?.toBoolean()
|
||||
|
||||
if (openInWebView == true) {
|
||||
try {
|
||||
createWebView().show()
|
||||
} catch (e: Throwable) { // cover both java.lang.Exception and java.lang.Error
|
||||
e.printStackTrace()
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
Desktop.browseURL(appBaseUrl)
|
||||
} catch (e: Throwable) { // cover both java.lang.Exception and java.lang.Error
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -10,56 +10,49 @@ package ir.armor.tachidesk.server.util
|
||||
import dorkbox.systemTray.MenuItem
|
||||
import dorkbox.systemTray.SystemTray
|
||||
import dorkbox.util.CacheUtil
|
||||
import dorkbox.util.Desktop
|
||||
import ir.armor.tachidesk.server.BuildConfig
|
||||
import ir.armor.tachidesk.server.ServerConfig
|
||||
import ir.armor.tachidesk.server.serverConfig
|
||||
import ir.armor.tachidesk.server.util.Browser.openInBrowser
|
||||
import ir.armor.tachidesk.server.util.ExitCode.Success
|
||||
|
||||
fun openInBrowser() {
|
||||
val appIP = if (serverConfig.ip == "0.0.0.0") "127.0.0.1" else serverConfig.ip
|
||||
try {
|
||||
Desktop.browseURL("http://$appIP:${serverConfig.port}")
|
||||
} catch (e: Throwable) { // cover both java.lang.Exception and java.lang.Error
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
|
||||
fun systemTray(): SystemTray? {
|
||||
try {
|
||||
// ref: https://github.com/dorkbox/SystemTray/blob/master/test/dorkbox/TestTray.java
|
||||
SystemTray.DEBUG = serverConfig.debugLogsEnabled
|
||||
|
||||
CacheUtil.clear(BuildConfig.name)
|
||||
|
||||
val systemTray = SystemTray.get(BuildConfig.name) ?: return null
|
||||
val mainMenu = systemTray.menu
|
||||
|
||||
mainMenu.add(
|
||||
MenuItem(
|
||||
"Open Tachidesk"
|
||||
) {
|
||||
openInBrowser()
|
||||
}
|
||||
)
|
||||
|
||||
val icon = ServerConfig::class.java.getResource("/icon/faviconlogo.png")
|
||||
|
||||
// systemTray.setTooltip("Tachidesk")
|
||||
systemTray.setImage(icon)
|
||||
// systemTray.status = "No Mail"
|
||||
|
||||
mainMenu.add(
|
||||
MenuItem("Quit") {
|
||||
shutdownApp(Success)
|
||||
}
|
||||
)
|
||||
|
||||
systemTray.installShutdownHook()
|
||||
|
||||
return systemTray
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
return null
|
||||
object SystemTray {
|
||||
fun systemTray(): SystemTray? {
|
||||
try {
|
||||
// ref: https://github.com/dorkbox/SystemTray/blob/master/test/dorkbox/TestTray.java
|
||||
SystemTray.DEBUG = serverConfig.debugLogsEnabled
|
||||
|
||||
CacheUtil.clear(BuildConfig.name)
|
||||
|
||||
val systemTray = SystemTray.get(BuildConfig.name) ?: return null
|
||||
val mainMenu = systemTray.menu
|
||||
|
||||
mainMenu.add(
|
||||
MenuItem(
|
||||
"Open Tachidesk"
|
||||
) {
|
||||
openInBrowser()
|
||||
}
|
||||
)
|
||||
|
||||
val icon = ServerConfig::class.java.getResource("/icon/faviconlogo.png")
|
||||
|
||||
// systemTray.setTooltip("Tachidesk")
|
||||
systemTray.setImage(icon)
|
||||
// systemTray.status = "No Mail"
|
||||
|
||||
mainMenu.add(
|
||||
MenuItem("Quit") {
|
||||
shutdownApp(Success)
|
||||
}
|
||||
)
|
||||
|
||||
systemTray.installShutdownHook()
|
||||
|
||||
return systemTray
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
return null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user