mirror of
https://github.com/EasyTier/EasytierGame.git
synced 2025-05-19 10:27:56 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e977c633d6 | ||
|
|
3cbfae072c | ||
|
|
9b856f31af | ||
|
|
7d6e93d796 | ||
|
|
0253d95597 | ||
|
|
5875b30c34 |
+23
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"plugins": ["prettier-plugin-tailwindcss"],
|
||||
"arrowParens": "avoid",
|
||||
"bracketSpacing": true,
|
||||
"endOfLine": "lf",
|
||||
"htmlWhitespaceSensitivity": "ignore",
|
||||
"insertPragma": false,
|
||||
"singleAttributePerLine": true,
|
||||
"bracketSameLine": false,
|
||||
"jsxBracketSameLine": false,
|
||||
"jsxSingleQuote": true,
|
||||
"printWidth": 150,
|
||||
"proseWrap": "preserve",
|
||||
"quoteProps": "as-needed",
|
||||
"requirePragma": false,
|
||||
"semi": true,
|
||||
"singleQuote": false,
|
||||
"tabWidth": 4,
|
||||
"trailingComma": "none",
|
||||
"useTabs": true,
|
||||
"embeddedLanguageFormatting": "auto",
|
||||
"vueIndentScriptAndStyle": true
|
||||
}
|
||||
+7
-1
@@ -9,7 +9,9 @@
|
||||
font-family: "Helvetica Neue", "Luxi Sans", "DejaVu Sans", Tahoma, "Hiragino Sans GB", STHeiti, "Microsoft YaHei";
|
||||
}
|
||||
} */
|
||||
|
||||
html {
|
||||
font-family: "Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;
|
||||
}
|
||||
html,
|
||||
body {
|
||||
height: 100%;
|
||||
@@ -46,4 +48,8 @@ html.dark body {
|
||||
align-items: flex-start;
|
||||
overflow: auto;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.el-table {
|
||||
font-size: 12px!important;
|
||||
}
|
||||
@@ -24,6 +24,7 @@ export const updateConfigJson = async (configJsonSeverUrl: Array<string> | strin
|
||||
serverUrl,
|
||||
port,
|
||||
enableCustomListener,
|
||||
enablePreventSleep,
|
||||
customListenerData,
|
||||
...otherConfig
|
||||
} = mainStore.config;
|
||||
|
||||
@@ -44,7 +44,7 @@ export const handleWinipBcStart = async () => {
|
||||
await getWinIpBroadcastPid();
|
||||
if (mainStore.winipBcPid <= 0) {
|
||||
mainStore.$patch({
|
||||
winIpBcAutoStart: true
|
||||
winIpBcAutoStart: false
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,9 @@ import pkg from "@/package.json";
|
||||
import { setTheme } from "~/composables/theme";
|
||||
import useMainStore from "@/stores/index";
|
||||
import { resourceDir as getResourceDir, join } from "@tauri-apps/api/path";
|
||||
import { invoke } from "@tauri-apps/api/core";
|
||||
// import { ElConfirmPrimary } from "~/utils/element";
|
||||
// import { open } from "@tauri-apps/plugin-shell";
|
||||
|
||||
const DEFAULT_TRAY_NAME = "main";
|
||||
|
||||
@@ -13,6 +16,7 @@ async function toggleVisibility() {
|
||||
await getCurrentWindow().hide();
|
||||
} else {
|
||||
await getCurrentWindow().show();
|
||||
await getCurrentWindow().unminimize();
|
||||
await getCurrentWindow().setFocus();
|
||||
}
|
||||
}
|
||||
@@ -140,3 +144,19 @@ export async function setTrayTooltip(tray: TrayIcon | null, tooltip?: string | n
|
||||
await tray.setTooltip(`EasyTierGame\n${pkg.version}`);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
export const checkNewVersion = async () => {
|
||||
let [tagName, downloadUrl] = await invoke<string[]>("fetch_game_releases");
|
||||
if(tagName && pkg.version !== tagName) {
|
||||
return true; //有新版
|
||||
// const [err] = await ElConfirmPrimary("有新版本是否下载?", "发现新版本", {
|
||||
// confirmButtonText: "下载",
|
||||
// cancelButtonText: "取消",
|
||||
// })
|
||||
// if(!err) {
|
||||
// open(downloadUrl);
|
||||
// }
|
||||
}
|
||||
return false; //没有新版
|
||||
}
|
||||
+9
-8
@@ -3,7 +3,7 @@
|
||||
"private": true,
|
||||
"author": "leizi97",
|
||||
"description": "A simple network initiator based on Easytier",
|
||||
"version": "1.2.9",
|
||||
"version": "1.3.1",
|
||||
"scripts": {
|
||||
"dev": "nuxt dev --dotenv env/.env.dev --host 0.0.0.0",
|
||||
"build": "nuxt generate --dotenv env/.env.prod",
|
||||
@@ -13,16 +13,15 @@
|
||||
"@element-plus/icons-vue": "^2.3.1",
|
||||
"@element-plus/nuxt": "^1.1.0",
|
||||
"@nuxtjs/tailwindcss": "^6.12.0",
|
||||
"@pinia/nuxt": "0.8.0",
|
||||
"@pinia/nuxt": "0.9.0",
|
||||
"@tauri-apps/api": "^2.1.1",
|
||||
"@tauri-apps/cli": "^2.1.0",
|
||||
"@tauri-apps/plugin-cli": "^2.0.0",
|
||||
"@tauri-apps/plugin-clipboard-manager": "^2.0.0",
|
||||
"@tauri-apps/plugin-fs": "~2",
|
||||
"@tauri-apps/plugin-http": "^2.0.1",
|
||||
"@tauri-apps/plugin-log": "^2.0.0",
|
||||
"@tauri-apps/plugin-shell": "~2",
|
||||
"@tauri-apps/plugin-window-state": "~2",
|
||||
"@tauri-apps/plugin-fs": "^2.2.0",
|
||||
"@tauri-apps/plugin-log": "^2.2.0",
|
||||
"@tauri-apps/plugin-shell": "^2.2.0",
|
||||
"@tauri-apps/plugin-window-state": "^2.2.0",
|
||||
"@types/lodash-es": "^4.17.12",
|
||||
"@vitejs/plugin-vue-jsx": "^4.1.0",
|
||||
"@vueuse/core": "12.0.0",
|
||||
@@ -31,9 +30,11 @@
|
||||
"less": "^4.2.0",
|
||||
"lodash-es": "^4.17.21",
|
||||
"nuxt": "^3.14.1592",
|
||||
"pinia": "^2.2.6",
|
||||
"pinia": "^2.3.0",
|
||||
"pinia-plugin-persistedstate": "^4.1.3",
|
||||
"postcss": "^8.4.38",
|
||||
"prettier": "^3.4.1",
|
||||
"prettier-plugin-tailwindcss": "^0.6.9",
|
||||
"typescript": "^5.6.3",
|
||||
"vue-clipboard3": "^2.0.0"
|
||||
}
|
||||
|
||||
@@ -58,6 +58,7 @@
|
||||
打开config.json目录
|
||||
</ElButton>
|
||||
</div>
|
||||
<div><ElCheckbox v-model="mainStore.config.enablePreventSleep">防止休眠</ElCheckbox></div>
|
||||
<ElDivider />
|
||||
<div class="flex items-center gap-[10px]">
|
||||
<ElCheckbox v-model="mainStore.config.disbleListenner">不监听任何端口,只连接到对等节点</ElCheckbox>
|
||||
|
||||
+35
-17
@@ -310,14 +310,17 @@
|
||||
增强工具
|
||||
</ElButton>
|
||||
</div>
|
||||
<ElLink
|
||||
class="ml-[8px] truncate pb-[2px] !text-[9px]"
|
||||
type="info"
|
||||
:underline="false"
|
||||
@click="open('https://github.com/EasyTier/EasytierGame')"
|
||||
>
|
||||
EasytierGame主页
|
||||
</ElLink>
|
||||
|
||||
<ElBadge badge-class="!text-[9px] cursor-pointer" :hidden="!data.hasNewVersion" :offset="[6, 7]" value="N">
|
||||
<!-- <ElTooltip :disabled="!data.hasNewVersion" content="有新版发布了!"> -->
|
||||
<ElLink
|
||||
class="ml-[8px] truncate pb-[2px] !text-[9px]"
|
||||
type="info"
|
||||
:underline="false"
|
||||
@click="open('https://github.com/EasyTier/EasytierGame')"
|
||||
>EasytierGame主页</ElLink>
|
||||
<!-- </ElTooltip> -->
|
||||
</ElBadge>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -343,7 +346,7 @@
|
||||
>
|
||||
刷新
|
||||
</ElButton>
|
||||
<ElTooltip content="打开内核缓存目录">
|
||||
<ElTooltip placement="top" content="打开内核缓存目录">
|
||||
<ElButton
|
||||
:icon="Folder"
|
||||
size="small"
|
||||
@@ -510,7 +513,7 @@
|
||||
Folder
|
||||
} from "@element-plus/icons-vue";
|
||||
import { reactive, onBeforeUnmount, onMounted, ref } from "vue";
|
||||
import { useTray, setTrayRunState, setTrayTooltip } from "~/composables/tray";
|
||||
import { useTray, setTrayRunState, setTrayTooltip, checkNewVersion } from "~/composables/tray";
|
||||
import { getMatches } from "@tauri-apps/plugin-cli";
|
||||
import { initStartWinIpBroadcast } from "~/composables/netcard";
|
||||
import useMainStore from "@/stores/index";
|
||||
@@ -523,7 +526,7 @@
|
||||
import { updateConfigJson } from "~/composables/configJson";
|
||||
import { writeText, readText } from "@tauri-apps/plugin-clipboard-manager";
|
||||
import { sortedUniq, uniq } from "lodash-es";
|
||||
import { bounce, addQQGroup, supportProtocols } from "~/utils";
|
||||
import { bounce, addQQGroup, supportProtocols, preventSleep, stopPreventSleep } from "~/utils";
|
||||
import { ElConfirmDanger, ElConfirmPrimary } from "~/utils/element";
|
||||
import { getServerArgs } from "@/composables/server";
|
||||
|
||||
@@ -548,6 +551,7 @@
|
||||
// console.error(config);
|
||||
const protocols = supportProtocols();
|
||||
const data = reactive<{ [key: string]: any; releaseList: Array<Array<string>> }>({
|
||||
hasNewVersion: false, //easytierGame有没有新版
|
||||
logVisible: false,
|
||||
cidrVisible: false,
|
||||
advanceVisible: false,
|
||||
@@ -592,7 +596,7 @@
|
||||
appWindow.onCloseRequested(async event => {
|
||||
// console.error(appWindow.label);
|
||||
if (!is_close) {
|
||||
// console.error(1);
|
||||
// console.error(1);s
|
||||
event.preventDefault();
|
||||
appWindow.hide();
|
||||
}
|
||||
@@ -668,9 +672,9 @@
|
||||
mainStore.config.ipv4 = configIpv4;
|
||||
}
|
||||
}
|
||||
if (event.payload.includes("peer connection removed")) {
|
||||
data.isSuccessGetIp = false;
|
||||
}
|
||||
// if (event.payload.includes("peer connection removed")) {
|
||||
// data.isSuccessGetIp = false;
|
||||
// }
|
||||
if (event.payload.includes("new peer connection added") && !data.isSuccessGetIp) {
|
||||
await setTrayRunState(tray, true);
|
||||
data.isSuccessGetIp = true;
|
||||
@@ -737,10 +741,15 @@
|
||||
async listenConfigStart() {
|
||||
const appWindow = getCurrentWindow();
|
||||
const unListen = await listen("config", event => {
|
||||
// console.error("config", event.payload);
|
||||
const ipv4 = config.ipv4;
|
||||
console.log(event.payload)
|
||||
mainStore.$patch(event.payload as any);
|
||||
config.ipv4 = ipv4;
|
||||
if(mainStore.config.enablePreventSleep) {
|
||||
preventSleep();
|
||||
}else {
|
||||
stopPreventSleep();
|
||||
}
|
||||
appWindow.emitTo({ kind: "Any" }, "global-main-store", { store: { ...mainStore.$state } });
|
||||
});
|
||||
const unListen2 = mainStore.$subscribe(() => {
|
||||
@@ -795,7 +804,7 @@
|
||||
const currentVersion = /(\d+\.\d+\.\d+)/g.exec(data.coreVersion || "")?.[1];
|
||||
if (version && currentVersion != version) {
|
||||
// console.error({ currentVersion, latestVersion });
|
||||
ElMessage.success(`更新 -> ${version}`);
|
||||
ElMessage.success(`变更为 -> ${version}`);
|
||||
return [true, downloadUrl, versionFileName];
|
||||
} else if (currentVersion === version) {
|
||||
ElMessage.success(`当前版本无需安装`);
|
||||
@@ -949,6 +958,12 @@
|
||||
}
|
||||
};
|
||||
|
||||
const initPreventSleep = async () => {
|
||||
if (mainStore.config.enablePreventSleep) {
|
||||
preventSleep();
|
||||
}
|
||||
}
|
||||
|
||||
const mountedShow = async () => {
|
||||
const args = await getMatches();
|
||||
if (!args.args?.["task-auto-start"]?.value) {
|
||||
@@ -974,8 +989,10 @@
|
||||
await initConfigDir();
|
||||
await initAutoStartServer();
|
||||
await initConnectAfterStart();
|
||||
initPreventSleep();
|
||||
mountedShow(); // 不需要await
|
||||
closePrevent();
|
||||
data.hasNewVersion = await checkNewVersion();
|
||||
});
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
@@ -986,6 +1003,7 @@
|
||||
listenObj.unListenStartStopServer && listenObj.unListenStartStopServer();
|
||||
logsTimer && clearInterval(logsTimer);
|
||||
serverLogsTimer && clearInterval(serverLogsTimer);
|
||||
stopPreventSleep();
|
||||
});
|
||||
|
||||
const getArgs = async () => {
|
||||
|
||||
+9
-6
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="overflow-auto h-full">
|
||||
<div class="w-[1200px]">
|
||||
<span v-if="!data.member || data.member.length <= 0">{{ "等待成员信息中..." }}</span>
|
||||
<ElText size="small" v-if="!data.member || data.member.length <= 0">{{ "等待成员信息中..." }}</ElText>
|
||||
<ElTable
|
||||
stripe
|
||||
border
|
||||
@@ -22,10 +22,11 @@
|
||||
sortable
|
||||
width="90"
|
||||
prop="cost"
|
||||
label="路由"
|
||||
label="方式"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<ElTag
|
||||
size="small"
|
||||
effect="dark"
|
||||
:type="row.cost == 'p2p' ? 'success' : 'info'"
|
||||
>
|
||||
@@ -42,12 +43,12 @@
|
||||
<ElTableColumn
|
||||
sortable
|
||||
prop="lat_ms"
|
||||
width="130"
|
||||
width="100"
|
||||
label="延迟/ms"
|
||||
></ElTableColumn>
|
||||
<ElTableColumn
|
||||
sortable
|
||||
width="120"
|
||||
width="100"
|
||||
prop="loss_rate"
|
||||
label="丢包率"
|
||||
>
|
||||
@@ -57,7 +58,7 @@
|
||||
</ElTableColumn>
|
||||
<ElTableColumn
|
||||
sortable
|
||||
width="120"
|
||||
width="110"
|
||||
label="NAT类型"
|
||||
prop="nat_type"
|
||||
>
|
||||
@@ -67,17 +68,19 @@
|
||||
</ElTableColumn>
|
||||
<ElTableColumn
|
||||
sortable
|
||||
width="120"
|
||||
width="122"
|
||||
prop="version"
|
||||
label="版本"
|
||||
></ElTableColumn>
|
||||
<ElTableColumn
|
||||
sortable
|
||||
width="100"
|
||||
prop="tunnel_proto"
|
||||
label="隧道协议"
|
||||
></ElTableColumn>
|
||||
<ElTableColumn
|
||||
sortable
|
||||
width="90"
|
||||
prop="rx_bytes"
|
||||
label="接收"
|
||||
></ElTableColumn>
|
||||
|
||||
Generated
+111
-50
@@ -18,8 +18,8 @@ importers:
|
||||
specifier: ^6.12.0
|
||||
version: 6.12.2(magicast@0.3.5)(rollup@4.25.0)
|
||||
'@pinia/nuxt':
|
||||
specifier: 0.8.0
|
||||
version: 0.8.0(magicast@0.3.5)(pinia@2.2.6(typescript@5.6.3)(vue@3.5.13(typescript@5.6.3)))(rollup@4.25.0)
|
||||
specifier: 0.9.0
|
||||
version: 0.9.0(magicast@0.3.5)(pinia@2.3.0(typescript@5.6.3)(vue@3.5.13(typescript@5.6.3)))(rollup@4.25.0)
|
||||
'@tauri-apps/api':
|
||||
specifier: ^2.1.1
|
||||
version: 2.1.1
|
||||
@@ -33,20 +33,17 @@ importers:
|
||||
specifier: ^2.0.0
|
||||
version: 2.0.0
|
||||
'@tauri-apps/plugin-fs':
|
||||
specifier: ~2
|
||||
version: 2.0.2
|
||||
'@tauri-apps/plugin-http':
|
||||
specifier: ^2.0.1
|
||||
version: 2.0.1
|
||||
specifier: ^2.2.0
|
||||
version: 2.2.0
|
||||
'@tauri-apps/plugin-log':
|
||||
specifier: ^2.0.0
|
||||
version: 2.0.0
|
||||
specifier: ^2.2.0
|
||||
version: 2.2.0
|
||||
'@tauri-apps/plugin-shell':
|
||||
specifier: ~2
|
||||
version: 2.0.1
|
||||
specifier: ^2.2.0
|
||||
version: 2.2.0
|
||||
'@tauri-apps/plugin-window-state':
|
||||
specifier: ~2
|
||||
version: 2.0.0
|
||||
specifier: ^2.2.0
|
||||
version: 2.2.0
|
||||
'@types/lodash-es':
|
||||
specifier: ^4.17.12
|
||||
version: 4.17.12
|
||||
@@ -72,14 +69,20 @@ importers:
|
||||
specifier: ^3.14.1592
|
||||
version: 3.14.1592(@parcel/watcher@2.5.0)(@types/node@22.9.0)(ioredis@5.4.1)(less@4.2.0)(magicast@0.3.5)(rollup@4.25.0)(terser@5.36.0)(typescript@5.6.3)(vite@5.4.11(@types/node@22.9.0)(less@4.2.0)(terser@5.36.0))
|
||||
pinia:
|
||||
specifier: ^2.2.6
|
||||
version: 2.2.6(typescript@5.6.3)(vue@3.5.13(typescript@5.6.3))
|
||||
specifier: ^2.3.0
|
||||
version: 2.3.0(typescript@5.6.3)(vue@3.5.13(typescript@5.6.3))
|
||||
pinia-plugin-persistedstate:
|
||||
specifier: ^4.1.3
|
||||
version: 4.1.3(@pinia/nuxt@0.8.0(magicast@0.3.5)(pinia@2.2.6(typescript@5.6.3)(vue@3.5.13(typescript@5.6.3)))(rollup@4.25.0))(magicast@0.3.5)(pinia@2.2.6(typescript@5.6.3)(vue@3.5.13(typescript@5.6.3)))(rollup@4.25.0)
|
||||
version: 4.1.3(@pinia/nuxt@0.9.0(magicast@0.3.5)(pinia@2.3.0(typescript@5.6.3)(vue@3.5.13(typescript@5.6.3)))(rollup@4.25.0))(magicast@0.3.5)(pinia@2.3.0(typescript@5.6.3)(vue@3.5.13(typescript@5.6.3)))(rollup@4.25.0)
|
||||
postcss:
|
||||
specifier: ^8.4.38
|
||||
version: 8.4.49
|
||||
prettier:
|
||||
specifier: ^3.4.1
|
||||
version: 3.4.1
|
||||
prettier-plugin-tailwindcss:
|
||||
specifier: ^0.6.9
|
||||
version: 0.6.9(prettier@3.4.1)
|
||||
typescript:
|
||||
specifier: ^5.6.3
|
||||
version: 5.6.3
|
||||
@@ -769,10 +772,10 @@ packages:
|
||||
resolution: {integrity: sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
|
||||
'@pinia/nuxt@0.8.0':
|
||||
resolution: {integrity: sha512-BWPUKOg3KGnRSgz54x9IUzCKTqUxZx4UJezPRbRwY5BVt18rfiP4Cqq8kxtR8WWDZa5PTRJpx0Jxz+qyUdLvjQ==}
|
||||
'@pinia/nuxt@0.9.0':
|
||||
resolution: {integrity: sha512-2yeRo7LeyCF68AbNeL3xu2h6uw0617RkcsYxmA8DJM0R0PMdz5wQHnc44KeENQxR/Mrq8T910XVT6buosqsjBQ==}
|
||||
peerDependencies:
|
||||
pinia: ^2.2.7
|
||||
pinia: ^2.3.0
|
||||
|
||||
'@pkgjs/parseargs@0.11.0':
|
||||
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
|
||||
@@ -1150,20 +1153,17 @@ packages:
|
||||
'@tauri-apps/plugin-clipboard-manager@2.0.0':
|
||||
resolution: {integrity: sha512-V1sXmbjnwfXt/r48RJMwfUmDMSaP/8/YbH4CLNxt+/sf1eHlIP8PRFdFDQwLN0cNQKu2rqQVbG/Wc/Ps6cDUhw==}
|
||||
|
||||
'@tauri-apps/plugin-fs@2.0.2':
|
||||
resolution: {integrity: sha512-4YZaX2j7ta81M5/DL8aN10kTnpUkEpkPo1FTYPT8Dd0ImHe3azM8i8MrtjrDGoyBYLPO3zFv7df/mSCYF8oA0Q==}
|
||||
'@tauri-apps/plugin-fs@2.2.0':
|
||||
resolution: {integrity: sha512-+08mApuONKI8/sCNEZ6AR8vf5vI9DXD4YfrQ9NQmhRxYKMLVhRW164vdW5BSLmMpuevftpQ2FVoL9EFkfG9Z+g==}
|
||||
|
||||
'@tauri-apps/plugin-http@2.0.1':
|
||||
resolution: {integrity: sha512-j6IA3pVBybSCwPpsihpX4z8bs6PluuGtr06ahL/xy4D8HunNBTmRmadJrFOQi0gOAbaig4MkQ15nzNLBLy8R1A==}
|
||||
'@tauri-apps/plugin-log@2.2.0':
|
||||
resolution: {integrity: sha512-g6CsQAR1lsm5ABSZZxpM/iCn86GrMDTTlhj7GPkZkYBRSm3+WczfOAl7SV7HDn77tOKCzhZffwI5uHfRoHutrw==}
|
||||
|
||||
'@tauri-apps/plugin-log@2.0.0':
|
||||
resolution: {integrity: sha512-C+NII9vzswqnOQE8k7oRtnaw0z5TZsMmnirRhXkCKDEhQQH9841Us/PC1WHtGiAaJ8za1A1JB2xXndEq/47X/w==}
|
||||
'@tauri-apps/plugin-shell@2.2.0':
|
||||
resolution: {integrity: sha512-iC3Ic1hLmasoboG7BO+7p+AriSoqAwKrIk+Hpk+S/bjTQdXqbl2GbdclghI4gM32X0bls7xHzIFqhRdrlvJeaA==}
|
||||
|
||||
'@tauri-apps/plugin-shell@2.0.1':
|
||||
resolution: {integrity: sha512-akU1b77sw3qHiynrK0s930y8zKmcdrSD60htjH+mFZqv5WaakZA/XxHR3/sF1nNv9Mgmt/Shls37HwnOr00aSw==}
|
||||
|
||||
'@tauri-apps/plugin-window-state@2.0.0':
|
||||
resolution: {integrity: sha512-O82iRlrh1BLgBI8CTc+NMTPxQhQo8II5admKq9mLvH45Us5i4Zcr74At6eM46nOflFd7R8bZsVNGy+PxOEqUmQ==}
|
||||
'@tauri-apps/plugin-window-state@2.2.0':
|
||||
resolution: {integrity: sha512-PFZ/vkZ6UPaRyuggEn8jWc/xwpiEw3Id8i6bin54zUR3vHY0MOK+ovvpvp6SEHKryCJbZMigYJz0OUT2eZ4YmQ==}
|
||||
|
||||
'@trysound/sax@0.2.0':
|
||||
resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
|
||||
@@ -2885,15 +2885,12 @@ packages:
|
||||
pinia:
|
||||
optional: true
|
||||
|
||||
pinia@2.2.6:
|
||||
resolution: {integrity: sha512-vIsR8JkDN5Ga2vAxqOE2cJj4VtsHnzpR1Fz30kClxlh0yCHfec6uoMeM3e/ddqmwFUejK3NlrcQa/shnpyT4hA==}
|
||||
pinia@2.3.0:
|
||||
resolution: {integrity: sha512-ohZj3jla0LL0OH5PlLTDMzqKiVw2XARmC1XYLdLWIPBMdhDW/123ZWr4zVAhtJm+aoSkFa13pYXskAvAscIkhQ==}
|
||||
peerDependencies:
|
||||
'@vue/composition-api': ^1.4.0
|
||||
typescript: '>=4.4.4'
|
||||
vue: ^2.6.14 || ^3.5.11
|
||||
vue: ^2.7.0 || ^3.5.11
|
||||
peerDependenciesMeta:
|
||||
'@vue/composition-api':
|
||||
optional: true
|
||||
typescript:
|
||||
optional: true
|
||||
|
||||
@@ -3125,6 +3122,66 @@ packages:
|
||||
resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==}
|
||||
engines: {node: ^10 || ^12 || >=14}
|
||||
|
||||
prettier-plugin-tailwindcss@0.6.9:
|
||||
resolution: {integrity: sha512-r0i3uhaZAXYP0At5xGfJH876W3HHGHDp+LCRUJrs57PBeQ6mYHMwr25KH8NPX44F2yGTvdnH7OqCshlQx183Eg==}
|
||||
engines: {node: '>=14.21.3'}
|
||||
peerDependencies:
|
||||
'@ianvs/prettier-plugin-sort-imports': '*'
|
||||
'@prettier/plugin-pug': '*'
|
||||
'@shopify/prettier-plugin-liquid': '*'
|
||||
'@trivago/prettier-plugin-sort-imports': '*'
|
||||
'@zackad/prettier-plugin-twig-melody': '*'
|
||||
prettier: ^3.0
|
||||
prettier-plugin-astro: '*'
|
||||
prettier-plugin-css-order: '*'
|
||||
prettier-plugin-import-sort: '*'
|
||||
prettier-plugin-jsdoc: '*'
|
||||
prettier-plugin-marko: '*'
|
||||
prettier-plugin-multiline-arrays: '*'
|
||||
prettier-plugin-organize-attributes: '*'
|
||||
prettier-plugin-organize-imports: '*'
|
||||
prettier-plugin-sort-imports: '*'
|
||||
prettier-plugin-style-order: '*'
|
||||
prettier-plugin-svelte: '*'
|
||||
peerDependenciesMeta:
|
||||
'@ianvs/prettier-plugin-sort-imports':
|
||||
optional: true
|
||||
'@prettier/plugin-pug':
|
||||
optional: true
|
||||
'@shopify/prettier-plugin-liquid':
|
||||
optional: true
|
||||
'@trivago/prettier-plugin-sort-imports':
|
||||
optional: true
|
||||
'@zackad/prettier-plugin-twig-melody':
|
||||
optional: true
|
||||
prettier-plugin-astro:
|
||||
optional: true
|
||||
prettier-plugin-css-order:
|
||||
optional: true
|
||||
prettier-plugin-import-sort:
|
||||
optional: true
|
||||
prettier-plugin-jsdoc:
|
||||
optional: true
|
||||
prettier-plugin-marko:
|
||||
optional: true
|
||||
prettier-plugin-multiline-arrays:
|
||||
optional: true
|
||||
prettier-plugin-organize-attributes:
|
||||
optional: true
|
||||
prettier-plugin-organize-imports:
|
||||
optional: true
|
||||
prettier-plugin-sort-imports:
|
||||
optional: true
|
||||
prettier-plugin-style-order:
|
||||
optional: true
|
||||
prettier-plugin-svelte:
|
||||
optional: true
|
||||
|
||||
prettier@3.4.1:
|
||||
resolution: {integrity: sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==}
|
||||
engines: {node: '>=14'}
|
||||
hasBin: true
|
||||
|
||||
pretty-bytes@6.1.1:
|
||||
resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==}
|
||||
engines: {node: ^14.13.1 || >=16.0.0}
|
||||
@@ -4720,10 +4777,10 @@ snapshots:
|
||||
'@parcel/watcher-win32-ia32': 2.5.0
|
||||
'@parcel/watcher-win32-x64': 2.5.0
|
||||
|
||||
'@pinia/nuxt@0.8.0(magicast@0.3.5)(pinia@2.2.6(typescript@5.6.3)(vue@3.5.13(typescript@5.6.3)))(rollup@4.25.0)':
|
||||
'@pinia/nuxt@0.9.0(magicast@0.3.5)(pinia@2.3.0(typescript@5.6.3)(vue@3.5.13(typescript@5.6.3)))(rollup@4.25.0)':
|
||||
dependencies:
|
||||
'@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@4.25.0)
|
||||
pinia: 2.2.6(typescript@5.6.3)(vue@3.5.13(typescript@5.6.3))
|
||||
pinia: 2.3.0(typescript@5.6.3)(vue@3.5.13(typescript@5.6.3))
|
||||
transitivePeerDependencies:
|
||||
- magicast
|
||||
- rollup
|
||||
@@ -4993,23 +5050,19 @@ snapshots:
|
||||
dependencies:
|
||||
'@tauri-apps/api': 2.1.1
|
||||
|
||||
'@tauri-apps/plugin-fs@2.0.2':
|
||||
'@tauri-apps/plugin-fs@2.2.0':
|
||||
dependencies:
|
||||
'@tauri-apps/api': 2.1.1
|
||||
|
||||
'@tauri-apps/plugin-http@2.0.1':
|
||||
'@tauri-apps/plugin-log@2.2.0':
|
||||
dependencies:
|
||||
'@tauri-apps/api': 2.1.1
|
||||
|
||||
'@tauri-apps/plugin-log@2.0.0':
|
||||
'@tauri-apps/plugin-shell@2.2.0':
|
||||
dependencies:
|
||||
'@tauri-apps/api': 2.1.1
|
||||
|
||||
'@tauri-apps/plugin-shell@2.0.1':
|
||||
dependencies:
|
||||
'@tauri-apps/api': 2.1.1
|
||||
|
||||
'@tauri-apps/plugin-window-state@2.0.0':
|
||||
'@tauri-apps/plugin-window-state@2.2.0':
|
||||
dependencies:
|
||||
'@tauri-apps/api': 2.1.1
|
||||
|
||||
@@ -7018,28 +7071,30 @@ snapshots:
|
||||
pify@4.0.1:
|
||||
optional: true
|
||||
|
||||
pinia-plugin-persistedstate@4.1.3(@pinia/nuxt@0.8.0(magicast@0.3.5)(pinia@2.2.6(typescript@5.6.3)(vue@3.5.13(typescript@5.6.3)))(rollup@4.25.0))(magicast@0.3.5)(pinia@2.2.6(typescript@5.6.3)(vue@3.5.13(typescript@5.6.3)))(rollup@4.25.0):
|
||||
pinia-plugin-persistedstate@4.1.3(@pinia/nuxt@0.9.0(magicast@0.3.5)(pinia@2.3.0(typescript@5.6.3)(vue@3.5.13(typescript@5.6.3)))(rollup@4.25.0))(magicast@0.3.5)(pinia@2.3.0(typescript@5.6.3)(vue@3.5.13(typescript@5.6.3)))(rollup@4.25.0):
|
||||
dependencies:
|
||||
'@nuxt/kit': 3.14.159(magicast@0.3.5)(rollup@4.25.0)
|
||||
deep-pick-omit: 1.2.1
|
||||
defu: 6.1.4
|
||||
destr: 2.0.3
|
||||
optionalDependencies:
|
||||
'@pinia/nuxt': 0.8.0(magicast@0.3.5)(pinia@2.2.6(typescript@5.6.3)(vue@3.5.13(typescript@5.6.3)))(rollup@4.25.0)
|
||||
pinia: 2.2.6(typescript@5.6.3)(vue@3.5.13(typescript@5.6.3))
|
||||
'@pinia/nuxt': 0.9.0(magicast@0.3.5)(pinia@2.3.0(typescript@5.6.3)(vue@3.5.13(typescript@5.6.3)))(rollup@4.25.0)
|
||||
pinia: 2.3.0(typescript@5.6.3)(vue@3.5.13(typescript@5.6.3))
|
||||
transitivePeerDependencies:
|
||||
- magicast
|
||||
- rollup
|
||||
- supports-color
|
||||
- webpack-sources
|
||||
|
||||
pinia@2.2.6(typescript@5.6.3)(vue@3.5.13(typescript@5.6.3)):
|
||||
pinia@2.3.0(typescript@5.6.3)(vue@3.5.13(typescript@5.6.3)):
|
||||
dependencies:
|
||||
'@vue/devtools-api': 6.6.4
|
||||
vue: 3.5.13(typescript@5.6.3)
|
||||
vue-demi: 0.14.10(vue@3.5.13(typescript@5.6.3))
|
||||
optionalDependencies:
|
||||
typescript: 5.6.3
|
||||
transitivePeerDependencies:
|
||||
- '@vue/composition-api'
|
||||
|
||||
pirates@4.0.6: {}
|
||||
|
||||
@@ -7257,6 +7312,12 @@ snapshots:
|
||||
picocolors: 1.1.1
|
||||
source-map-js: 1.2.1
|
||||
|
||||
prettier-plugin-tailwindcss@0.6.9(prettier@3.4.1):
|
||||
dependencies:
|
||||
prettier: 3.4.1
|
||||
|
||||
prettier@3.4.1: {}
|
||||
|
||||
pretty-bytes@6.1.1: {}
|
||||
|
||||
process-nextick-args@2.0.1: {}
|
||||
|
||||
Generated
+1
-1
@@ -1227,7 +1227,7 @@ checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125"
|
||||
|
||||
[[package]]
|
||||
name = "easytier-game"
|
||||
version = "1.2.9"
|
||||
version = "1.3.1"
|
||||
dependencies = [
|
||||
"log",
|
||||
"planif",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "easytier-game"
|
||||
version = "1.2.9"
|
||||
version = "1.3.1"
|
||||
homepage = "https://github.com/EasyTier/EasyTier"
|
||||
repository = "https://github.com/EasyTier/EasytierGame"
|
||||
description = "A simple network initiator based on Easytier"
|
||||
@@ -34,7 +34,7 @@ tauri = { version = "2.1.1", features = [
|
||||
tauri-plugin-log = "2.0.2"
|
||||
tauri-plugin-shell = "2.0.2"
|
||||
reqwest = { version = "0.12", features = ["json"] }
|
||||
zip = "2.2.0"
|
||||
zip = "2.2"
|
||||
sysinfo = '0.32.0'
|
||||
planif = { git = "https://github.com/mattrobineau/planif", tag = "1.0.1" }
|
||||
whoami = "1.5.2"
|
||||
@@ -47,7 +47,7 @@ tokio = { version = "1.41.1", features = ["process"] }
|
||||
|
||||
[dependencies.windows]
|
||||
version = "0.58.0"
|
||||
features = ["Win32_System_TaskScheduler"]
|
||||
features = ["Win32_System_TaskScheduler", "Win32_System_Power"]
|
||||
|
||||
[target."cfg(not(any(target_os = \"android\", target_os = \"ios\")))".dependencies]
|
||||
tauri-plugin-cli = "2"
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
"permissions": [
|
||||
"core:default",
|
||||
"core:window:allow-minimize",
|
||||
"core:window:allow-unminimize",
|
||||
"core:window:allow-hide",
|
||||
"core:window:allow-close",
|
||||
"core:window:allow-set-focus",
|
||||
|
||||
+83
-19
@@ -20,8 +20,30 @@ use windows::Win32::Foundation::VARIANT_BOOL;
|
||||
use windows::Win32::System::Com::*;
|
||||
use windows::Win32::System::TaskScheduler::*;
|
||||
|
||||
use windows::Win32::System::Power::SetThreadExecutionState;
|
||||
use windows::Win32::System::Power::{
|
||||
ES_CONTINUOUS, ES_DISPLAY_REQUIRED, ES_SYSTEM_REQUIRED, EXECUTION_STATE,
|
||||
};
|
||||
|
||||
use tokio::process::Command as tokioCommand;
|
||||
|
||||
#[tauri::command(rename_all = "snake_case")]
|
||||
fn prevent_sleep() -> bool {
|
||||
unsafe {
|
||||
let result =
|
||||
SetThreadExecutionState(ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED | ES_CONTINUOUS);
|
||||
result != EXECUTION_STATE(0)
|
||||
}
|
||||
}
|
||||
|
||||
#[tauri::command(rename_all = "snake_case")]
|
||||
fn allow_sleep() -> bool {
|
||||
unsafe {
|
||||
let result = SetThreadExecutionState(ES_CONTINUOUS);
|
||||
result != EXECUTION_STATE(0)
|
||||
}
|
||||
}
|
||||
|
||||
// 定义GitHub Release的结构体
|
||||
#[derive(Debug, Deserialize)]
|
||||
pub struct Release {
|
||||
@@ -56,9 +78,50 @@ pub async fn fetch_releases() -> Result<Vec<Release>, Error> {
|
||||
response.json::<Vec<Release>>().await
|
||||
}
|
||||
|
||||
#[tauri::command(rename_all = "snake_case")]
|
||||
async fn fetch_game_releases() -> [String; 2] {
|
||||
// 创建HTTP客户端
|
||||
let client = Client::new();
|
||||
// 构建请求的URL
|
||||
let url = format!("https://api.github.com/repos/Easytier/EasytierGame/releases",);
|
||||
|
||||
// 发送HTTP GET请求
|
||||
if let Ok(response) = client
|
||||
.get(&url)
|
||||
.header("User-Agent", "Tauri-fetch")
|
||||
.send()
|
||||
.await
|
||||
{
|
||||
// 反序列化响应体为Release列表
|
||||
match response.json::<Vec<Release>>().await {
|
||||
Ok(releases) => {
|
||||
if releases.len() <= 0 {
|
||||
return [String::from(""), String::from("")];
|
||||
}
|
||||
let release = releases.first().unwrap();
|
||||
let tag_name = release.tag_name.as_str();
|
||||
let browser_download_url = release
|
||||
.assets
|
||||
.first()
|
||||
.unwrap()
|
||||
.browser_download_url
|
||||
.as_str();
|
||||
[String::from(tag_name), String::from(browser_download_url)]
|
||||
}
|
||||
Err(_e) => {
|
||||
log::error!("game release {}", _e.to_string());
|
||||
[String::from(""), String::from("")]
|
||||
}
|
||||
}
|
||||
} else {
|
||||
log::error!("failed to get game release");
|
||||
[String::from(""), String::from("")]
|
||||
}
|
||||
}
|
||||
|
||||
#[tauri::command(rename_all = "snake_case")]
|
||||
fn get_core_version() -> String {
|
||||
let core_path = get_tool_exe_path(String::from("\\easytier\\easytier-core.exe"));
|
||||
let core_path = get_tool_exe_path("\\easytier\\easytier-core.exe");
|
||||
match Command::new(&core_path)
|
||||
.arg("--version")
|
||||
.creation_flags(0x08000000)
|
||||
@@ -78,7 +141,7 @@ fn get_core_version() -> String {
|
||||
// #[tauri::command(rename_all = "snake_case")]
|
||||
// #[warn(dead_code)]
|
||||
// fn get_cli_version() -> String {
|
||||
// let cli_path = get_tool_exe_path(String::from("\\easytier\\easytier-cli.exe"));
|
||||
// let cli_path = get_tool_exe_path("\\easytier\\easytier-cli.exe");
|
||||
// match Command::new(&cli_path)
|
||||
// .arg("--version")
|
||||
// .creation_flags(0x08000000)
|
||||
@@ -92,9 +155,10 @@ fn get_core_version() -> String {
|
||||
// }
|
||||
// }
|
||||
|
||||
fn get_tool_exe_path(path: String) -> String {
|
||||
fn get_tool_exe_path(path: &str) -> String {
|
||||
let cur_vec = get_exe_directory();
|
||||
let tool_path = cur_vec[1].to_string() + &path.to_string();
|
||||
let tool_path = format!("{}{}", cur_vec[1].as_str(), path);
|
||||
// log::error!("tool path: {}", tool_path);
|
||||
return tool_path;
|
||||
}
|
||||
|
||||
@@ -132,7 +196,7 @@ struct MyResponse {
|
||||
|
||||
#[tauri::command(rename_all = "snake_case")]
|
||||
async fn get_members_by_cli() -> String {
|
||||
let cli_path = get_tool_exe_path(String::from("\\easytier\\easytier-cli.exe"));
|
||||
let cli_path = get_tool_exe_path("\\easytier\\easytier-cli.exe");
|
||||
match tokioCommand::new(&cli_path)
|
||||
.arg("peer")
|
||||
.arg("list")
|
||||
@@ -159,7 +223,7 @@ async fn get_members_by_cli() -> String {
|
||||
|
||||
#[tauri::command(rename_all = "snake_case")]
|
||||
async fn download_easytier_zip(download_url: String, file_name: String) {
|
||||
let cache_dir_path = get_tool_exe_path(String::from("\\easytier\\cache"));
|
||||
let cache_dir_path = get_tool_exe_path("\\easytier\\cache");
|
||||
let cache_file_name = format!("{}\\{}", cache_dir_path, file_name);
|
||||
let cache_file_name_path = path::Path::new(&cache_file_name);
|
||||
if cache_file_name_path.exists() {
|
||||
@@ -171,7 +235,7 @@ async fn download_easytier_zip(download_url: String, file_name: String) {
|
||||
let response = reqwest::get(target)
|
||||
.await
|
||||
.expect("error to download easytier url");
|
||||
let easytier_path = get_tool_exe_path(String::from("\\easytier"));
|
||||
let easytier_path = get_tool_exe_path("\\easytier");
|
||||
let file_path = format!("{}\\{}", easytier_path, file_name);
|
||||
println!("download easytier to {}", file_path);
|
||||
|
||||
@@ -238,7 +302,7 @@ fn unzip(fname: &path::Path) {
|
||||
// fs::create_dir_all(p).unwrap();
|
||||
// }
|
||||
// }
|
||||
let easytier_path = get_tool_exe_path(String::from("\\easytier"));
|
||||
let easytier_path = get_tool_exe_path("\\easytier");
|
||||
let easytier_dir = path::Path::new(&easytier_path);
|
||||
// if !easytier_dir.exists() {
|
||||
// fs::create_dir_all(&easytier_dir).unwrap();
|
||||
@@ -270,7 +334,7 @@ fn run_command(app_handle: tauri::AppHandle, args: Vec<String>, is_server: Optio
|
||||
command_output_str = "server-command-output";
|
||||
}
|
||||
thread::spawn(move || {
|
||||
let core_path = get_tool_exe_path(String::from("\\easytier\\easytier-core.exe"));
|
||||
let core_path = get_tool_exe_path("\\easytier\\easytier-core.exe");
|
||||
// trace, debug, info, warn, error, off
|
||||
let mut child = Command::new(&core_path)
|
||||
.args(args)
|
||||
@@ -356,20 +420,17 @@ async fn fetch_easytier_list() -> Vec<Vec<[String; 3]>> {
|
||||
}
|
||||
release_list.push(assets_list);
|
||||
}
|
||||
return release_list;
|
||||
release_list
|
||||
} else {
|
||||
return Vec::new();
|
||||
Vec::new()
|
||||
}
|
||||
}
|
||||
|
||||
fn toggle_window_visibility<R: tauri::Runtime>(app: &tauri::AppHandle<R>) {
|
||||
if let Some(window) = app.get_webview_window("main") {
|
||||
if window.is_visible().unwrap_or_default() {
|
||||
let _ = window.hide();
|
||||
} else {
|
||||
let _ = window.show();
|
||||
let _ = window.set_focus();
|
||||
}
|
||||
let _ = window.show();
|
||||
let _ = window.unminimize();
|
||||
let _ = window.set_focus();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -573,7 +634,7 @@ pub fn run() {
|
||||
.setup(move |app| {
|
||||
// let args = args.clone();
|
||||
// if cfg!(debug_assertions) {
|
||||
let log_path = get_tool_exe_path(String::from("\\easytier\\guiLogs"));
|
||||
let log_path = get_tool_exe_path("\\easytier\\guiLogs");
|
||||
app.handle().plugin(
|
||||
tauri_plugin_log::Builder::default()
|
||||
.target(tauri_plugin_log::Target::new(
|
||||
@@ -621,12 +682,15 @@ pub fn run() {
|
||||
stop_command,
|
||||
get_core_version,
|
||||
fetch_easytier_list,
|
||||
fetch_game_releases,
|
||||
download_easytier_zip,
|
||||
get_members_by_cli,
|
||||
search_pid_by_pname,
|
||||
get_exe_directory,
|
||||
spawn_autostart,
|
||||
autostart_is_enabled
|
||||
autostart_is_enabled,
|
||||
prevent_sleep,
|
||||
allow_sleep
|
||||
])
|
||||
.run(context)
|
||||
.expect("error while running tauri application");
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "../node_modules/@tauri-apps/cli/config.schema.json",
|
||||
"productName": "easytier-game",
|
||||
"version": "1.2.9",
|
||||
"version": "1.3.1",
|
||||
"identifier": "com.tauri.easytier-game",
|
||||
|
||||
"build": {
|
||||
@@ -13,7 +13,7 @@
|
||||
"app": {
|
||||
"windows": [
|
||||
{
|
||||
"title": "easytier-game 1.2.9",
|
||||
"title": "easytier-game 1.3.1",
|
||||
"label": "main",
|
||||
"minWidth": 340,
|
||||
"width": 340,
|
||||
|
||||
+3
-1
@@ -34,7 +34,8 @@ export default defineStore("main", {
|
||||
enableCustonProtocol: false, //自定义默认协议
|
||||
customProtocol: "tcp", //自定义默认协议
|
||||
enableNetCardMetric: false, //启用网卡自定义跃点
|
||||
netCardMetricValue: 1 //自定义网卡跃点值
|
||||
netCardMetricValue: 1, //自定义网卡跃点值
|
||||
enablePreventSleep: false, //组织系统休眠
|
||||
},
|
||||
serverConfig: {
|
||||
enableWhiteList: true, // 是否启用白名单
|
||||
@@ -92,6 +93,7 @@ export default defineStore("main", {
|
||||
"config.customListenerData",
|
||||
"config.enableCustonProtocol",
|
||||
"config.customProtocol",
|
||||
"config.enablePreventSleep",
|
||||
|
||||
"serverConfig.autoStart",
|
||||
// 'serverConfig.enableListener',
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { invoke } from "@tauri-apps/api/core";
|
||||
import { open } from "@tauri-apps/plugin-shell";
|
||||
export const ENV = import.meta.env;
|
||||
|
||||
@@ -70,6 +71,21 @@ export const supportProtocols = () => {
|
||||
return _supportProtocols.slice();
|
||||
}
|
||||
|
||||
let _prevent_timer: NodeJS.Timeout| null = null;
|
||||
let _prevent_timer_count = 15; // 秒
|
||||
export const preventSleep = () => {
|
||||
_prevent_timer && clearInterval(_prevent_timer);
|
||||
_prevent_timer = setInterval(async () => {
|
||||
const result = await invoke('prevent_sleep');
|
||||
// console.log(`trigger prevent sleep ${result}`);
|
||||
}, _prevent_timer_count * 1000);
|
||||
}
|
||||
|
||||
export const stopPreventSleep = () => {
|
||||
_prevent_timer && clearInterval(_prevent_timer);
|
||||
_prevent_timer = null;
|
||||
}
|
||||
|
||||
export const parsePeerInfo = (content: string) => {
|
||||
if(!content) return [];
|
||||
// 将表格字符串分割成行
|
||||
|
||||
Reference in New Issue
Block a user