mirror of
https://github.com/EasyTier/EasyTier.git
synced 2026-05-07 02:09:06 +00:00
fix(gui): refresh service after core version upgrade (#2172)
This commit is contained in:
@@ -18,6 +18,7 @@ export interface ServiceMode extends WebClientConfig {
|
|||||||
rpc_portal: string
|
rpc_portal: string
|
||||||
file_log_level: 'off' | 'warn' | 'info' | 'debug' | 'trace'
|
file_log_level: 'off' | 'warn' | 'info' | 'debug' | 'trace'
|
||||||
file_log_dir: string
|
file_log_dir: string
|
||||||
|
installed_core_version?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface RemoteMode {
|
export interface RemoteMode {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import { useToast, useConfirm } from 'primevue'
|
|||||||
import { loadMode, saveMode, WebClientConfig, type Mode } from '~/composables/mode'
|
import { loadMode, saveMode, WebClientConfig, type Mode } from '~/composables/mode'
|
||||||
import { saveLastNetworkInstanceId, loadLastNetworkInstanceId } from '~/composables/config'
|
import { saveLastNetworkInstanceId, loadLastNetworkInstanceId } from '~/composables/config'
|
||||||
import ModeSwitcher from '~/components/ModeSwitcher.vue'
|
import ModeSwitcher from '~/components/ModeSwitcher.vue'
|
||||||
import { getServiceStatus } from '~/composables/backend'
|
import { getEasytierVersion, getServiceStatus } from '~/composables/backend'
|
||||||
|
|
||||||
const { t, locale } = useI18n()
|
const { t, locale } = useI18n()
|
||||||
const confirm = useConfirm()
|
const confirm = useConfirm()
|
||||||
@@ -85,6 +85,20 @@ async function onUninstallService() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function stripModeMetadata(mode: Mode) {
|
||||||
|
if (mode.mode !== 'service') {
|
||||||
|
return mode
|
||||||
|
}
|
||||||
|
|
||||||
|
const serviceConfig = { ...mode }
|
||||||
|
delete serviceConfig.installed_core_version
|
||||||
|
return serviceConfig
|
||||||
|
}
|
||||||
|
|
||||||
|
function modeConfigChanged(next: Mode) {
|
||||||
|
return JSON.stringify(stripModeMetadata(next)) !== JSON.stringify(stripModeMetadata(currentMode.value))
|
||||||
|
}
|
||||||
|
|
||||||
async function onStopService() {
|
async function onStopService() {
|
||||||
isModeSaving.value = true
|
isModeSaving.value = true
|
||||||
manualDisconnect.value = true
|
manualDisconnect.value = true
|
||||||
@@ -134,13 +148,14 @@ async function initWithMode(mode: Mode) {
|
|||||||
}
|
}
|
||||||
url = mode.remote_rpc_address
|
url = mode.remote_rpc_address
|
||||||
break;
|
break;
|
||||||
case 'service':
|
case 'service': {
|
||||||
if (!mode.config_dir || !mode.file_log_dir || !mode.file_log_level || !mode.rpc_portal) {
|
if (!mode.config_dir || !mode.file_log_dir || !mode.file_log_level || !mode.rpc_portal) {
|
||||||
toast.add({ severity: 'error', summary: t('error'), detail: t('mode.service_config_empty'), life: 10000 })
|
toast.add({ severity: 'error', summary: t('error'), detail: t('mode.service_config_empty'), life: 10000 })
|
||||||
return initWithMode({ ...mode, mode: 'normal' });
|
return initWithMode({ ...mode, mode: 'normal' });
|
||||||
}
|
}
|
||||||
let serviceStatus = await getServiceStatus()
|
let serviceStatus = await getServiceStatus()
|
||||||
if (serviceStatus === "NotInstalled" || JSON.stringify(mode) !== JSON.stringify(currentMode.value)) {
|
const coreVersion = await getEasytierVersion()
|
||||||
|
if (serviceStatus === "NotInstalled" || modeConfigChanged(mode) || mode.installed_core_version !== coreVersion) {
|
||||||
mode.config_server_url = mode.config_server_url || undefined
|
mode.config_server_url = mode.config_server_url || undefined
|
||||||
await initService({
|
await initService({
|
||||||
config_dir: mode.config_dir,
|
config_dir: mode.config_dir,
|
||||||
@@ -149,6 +164,7 @@ async function initWithMode(mode: Mode) {
|
|||||||
rpc_portal: mode.rpc_portal,
|
rpc_portal: mode.rpc_portal,
|
||||||
config_server: mode.config_server_url,
|
config_server: mode.config_server_url,
|
||||||
})
|
})
|
||||||
|
mode.installed_core_version = coreVersion
|
||||||
serviceStatus = await getServiceStatus()
|
serviceStatus = await getServiceStatus()
|
||||||
}
|
}
|
||||||
if (serviceStatus === "Stopped") {
|
if (serviceStatus === "Stopped") {
|
||||||
@@ -157,6 +173,7 @@ async function initWithMode(mode: Mode) {
|
|||||||
url = "tcp://" + mode.rpc_portal.replace("0.0.0.0", "127.0.0.1")
|
url = "tcp://" + mode.rpc_portal.replace("0.0.0.0", "127.0.0.1")
|
||||||
retrys = 5
|
retrys = 5
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case 'normal':
|
case 'normal':
|
||||||
url = mode.rpc_portal;
|
url = mode.rpc_portal;
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user