146 lines
4.2 KiB
Vue
146 lines
4.2 KiB
Vue
<script lang="ts" setup>
|
|
import {computed, defineComponent, onMounted, onUnmounted, ref} from "vue";
|
|
import {ipcRenderer} from "electron";
|
|
import {Icon} from "@iconify/vue";
|
|
import Breadcrumb from "@/layout/compoenets/Breadcrumb.vue";
|
|
import pkg from '../../../package.json';
|
|
import {ElMessage, ElMessageBox} from "element-plus";
|
|
|
|
|
|
/**
|
|
* 最后一个版本号
|
|
*/
|
|
const latestVersionInfo = ref(null);
|
|
|
|
const isLastVersion = computed(() => {
|
|
if (!latestVersionInfo.value) {
|
|
return true;
|
|
}
|
|
// tagName相对固定
|
|
const tagName = latestVersionInfo.value['tag_name']
|
|
console.log(tagName, latestVersionInfo.value, 'tagName')
|
|
if (!tagName) {
|
|
return true;
|
|
}
|
|
// 最后版本号
|
|
const lastVersion = tagName.replace('v', '').toString();
|
|
const currVersion = pkg.version;
|
|
console.log(lastVersion, currVersion, currVersion >= lastVersion, "isLast")
|
|
// console.log()
|
|
return currVersion >= lastVersion;
|
|
// return false;
|
|
})
|
|
/**
|
|
* 打开github issues
|
|
*/
|
|
const handleOpenGitHubIssues = () => {
|
|
ipcRenderer.send("common.openUrl", "https://github.com/luckjiawei/frpc-desktop/issues")
|
|
}
|
|
|
|
/**
|
|
* 打开github主页
|
|
*/
|
|
const handleOpenGitHub = () => {
|
|
ipcRenderer.send("common.openUrl", "https://github.com/luckjiawei/frpc-desktop")
|
|
}
|
|
|
|
/**
|
|
* 获取最后一个版本
|
|
*/
|
|
const handleGetLastVersion = () => {
|
|
|
|
ipcRenderer.send("github.getFrpcDesktopLastVersions")
|
|
}
|
|
|
|
const handleOpenNewVersion = () => {
|
|
ipcRenderer.send("common.openUrl", latestVersionInfo.value['html_url'])
|
|
}
|
|
|
|
onMounted(() => {
|
|
ipcRenderer.on("github.getFrpcDesktopLastVersionsHook", (event, args) => {
|
|
latestVersionInfo.value = args;
|
|
console.log(latestVersionInfo.value, '1')
|
|
if (!isLastVersion.value) {
|
|
let content = latestVersionInfo.value.body
|
|
content = content.replaceAll('\n', '<br/>')
|
|
ElMessageBox.alert(content, `🎉 发现新版本 ${args.name}`, {
|
|
showCancelButton: true,
|
|
cancelButtonText: "关闭",
|
|
dangerouslyUseHTMLString: true,
|
|
confirmButtonText: "去下载"
|
|
}).then(() => {
|
|
handleOpenNewVersion()
|
|
})
|
|
} else {
|
|
ElMessage({
|
|
message: "当前已是最新版本",
|
|
type: "success"
|
|
})
|
|
}
|
|
});
|
|
|
|
handleGetLastVersion();
|
|
})
|
|
|
|
onUnmounted(() => {
|
|
ipcRenderer.removeAllListeners("github.getFrpcDesktopLastVersionsHook");
|
|
})
|
|
|
|
defineComponent({
|
|
name: "About"
|
|
});
|
|
|
|
</script>
|
|
|
|
<template>
|
|
<div class="main">
|
|
<breadcrumb/>
|
|
<div class="app-container-breadcrumb">
|
|
<div
|
|
class="w-full h-full bg-white p-4 rounded drop-shadow-lg overflow-y-auto flex justify-center items-center flex-col"
|
|
>
|
|
<img src="/logo/pack/1024x1024.png"
|
|
class="w-[95px] h-[95px] mt-[-50px] animate__animated animate__flip" alt="Logo"/>
|
|
<div class="mt-[8px] text-2xl">Frpc Desktop</div>
|
|
<div class="mt-[8px] text-neutral-400 flex items-center">
|
|
<el-link
|
|
:class="!isLastVersion? 'line-through': ''"
|
|
class="ml-2 font-bold">v{{ pkg.version }}
|
|
</el-link>
|
|
<el-link v-if="!isLastVersion && latestVersionInfo"
|
|
@click="handleOpenNewVersion"
|
|
class="ml-2 text-[#67C23A] font-bold"
|
|
type="success">v{{ latestVersionInfo.name }}
|
|
</el-link>
|
|
<IconifyIconOffline class="ml-1.5 cursor-pointer check-update" icon="refresh-rounded"
|
|
@click="handleGetLastVersion"/>
|
|
</div>
|
|
<div class="mt-[8px] text-sm text-center">
|
|
<p>
|
|
🎉 {{ pkg.description }}
|
|
</p>
|
|
<p>
|
|
开机自启 / 可视化配置 / 免费开源
|
|
</p>
|
|
</div>
|
|
<div class="mt-[12px]">
|
|
<el-button plain type="primary" @click="handleOpenGitHub">
|
|
<Icon class="cursor-pointer mr-2" icon="logos:github-icon"/>
|
|
仓库地址
|
|
</el-button>
|
|
<el-button type="danger" plain @click="handleOpenGitHubIssues">
|
|
<IconifyIconOffline class="cursor-pointer mr-2" icon="question-mark"/>
|
|
反馈问题
|
|
</el-button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<style lang="scss" scoped>
|
|
.check-update:hover {
|
|
color: #5F3BB0;
|
|
}
|
|
</style>
|