From 5e7d019e2f7ebc099aedf148ba91927f562378b9 Mon Sep 17 00:00:00 2001 From: eoao Date: Wed, 28 Jan 2026 22:13:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=8F=AF=E8=83=BD=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E6=94=B6=E4=BB=B6=E5=A4=B1=E8=B4=A5=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E5=9B=9E=E9=80=80=E4=BC=98=E5=8C=96=E8=87=AA=E5=8A=A8=E5=88=B7?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mail-vue/.env.eo | 4 -- mail-vue/src/views/all-email/index.vue | 9 +-- mail-vue/src/views/email/index.vue | 8 +-- mail-vue/src/views/sys-setting/index.vue | 6 +- mail-worker/src/init/init.js | 12 +++- mail-worker/src/service/email-service.js | 72 +++++++++--------------- 6 files changed, 52 insertions(+), 59 deletions(-) delete mode 100644 mail-vue/.env.eo diff --git a/mail-vue/.env.eo b/mail-vue/.env.eo deleted file mode 100644 index 62f44f2..0000000 --- a/mail-vue/.env.eo +++ /dev/null @@ -1,4 +0,0 @@ -NODE_ENV = 'eo' -VITE_APP_TITLE = 'eo环境' -VITE_BASE_URL = '' -VITE_PWA_NAME = 'Cloud Mail' diff --git a/mail-vue/src/views/all-email/index.vue b/mail-vue/src/views/all-email/index.vue index a047f8b..b7b2b51 100644 --- a/mail-vue/src/views/all-email/index.vue +++ b/mail-vue/src/views/all-email/index.vue @@ -102,7 +102,6 @@ import {Icon} from "@iconify/vue"; import router from "@/router/index.js"; import {useI18n} from 'vue-i18n'; import {toUtc} from "@/utils/day.js"; -import {AutoRefreshEnum} from "@/enums/setting-enum.js"; import {sleep} from "@/utils/time-utils.js"; import {useSettingStore} from "@/store/setting.js"; import { useRoute } from 'vue-router' @@ -297,11 +296,13 @@ async function latest() { while (true) { - await sleep(1000) + let autoRefresh = settingStore.settings.autoRefresh; + + await sleep(autoRefresh > 1 ? autoRefresh * 1000 : 3000); const latestId = sysEmailScroll.value.latestEmail?.emailId - if (settingStore.settings.autoRefresh === AutoRefreshEnum.DISABLED) { + if (autoRefresh < 2) { continue } @@ -345,7 +346,7 @@ async function latest() { } catch (e) { if (e.code === 401 || e.code === 403) { - settingStore.settings.autoRefresh = AutoRefreshEnum.DISABLED; + settingStore.settings.autoRefresh = 0; } console.error(e) } diff --git a/mail-vue/src/views/email/index.vue b/mail-vue/src/views/email/index.vue index 68a0336..474dca8 100644 --- a/mail-vue/src/views/email/index.vue +++ b/mail-vue/src/views/email/index.vue @@ -34,7 +34,6 @@ import {sleep} from "@/utils/time-utils.js"; import router from "@/router/index.js"; import {Icon} from "@iconify/vue"; import { useRoute } from 'vue-router' -import {AutoRefreshEnum} from "@/enums/setting-enum.js"; defineOptions({ name: 'email' @@ -78,7 +77,8 @@ const existIds = new Set(); async function latest() { while (true) { - await sleep(1000) + let autoRefresh = settingStore.settings.autoRefresh; + await sleep(autoRefresh > 1 ? autoRefresh * 1000 : 3000); if (route.name !== 'email') { continue; @@ -86,7 +86,7 @@ async function latest() { const latestId = scroll.value.latestEmail?.emailId - if (!scroll.value.firstLoad && settingStore.settings.autoRefresh === AutoRefreshEnum.ENABLED) { + if (!scroll.value.firstLoad && autoRefresh > 1) { try { const accountId = accountStore.currentAccountId const allReceive = scroll.value.latestEmail?.allReceive @@ -122,7 +122,7 @@ async function latest() { } } catch (e) { if (e.code === 401 || e.code === 403) { - settingStore.settings.autoRefresh = AutoRefreshEnum.DISABLED; + settingStore.settings.autoRefresh = 0; } console.error(e) } diff --git a/mail-vue/src/views/sys-setting/index.vue b/mail-vue/src/views/sys-setting/index.vue index addd180..945064f 100644 --- a/mail-vue/src/views/sys-setting/index.vue +++ b/mail-vue/src/views/sys-setting/index.vue @@ -829,7 +829,11 @@ const regKeyOptions = computed(() => [ const authRefreshOptions = computed(() => [ {label: t('disable'), value: 0}, - {label: t('enable'), value: 1}, + {label: '3s', value: 3}, + {label: '5s', value: 5}, + {label: '10s', value: 10}, + {label: '15s', value: 15}, + {label: '20s', value: 20}, ]) const tgChatId = ref([]) diff --git a/mail-worker/src/init/init.js b/mail-worker/src/init/init.js index 28f8759..f5ec4c3 100644 --- a/mail-worker/src/init/init.js +++ b/mail-worker/src/init/init.js @@ -27,10 +27,19 @@ const dbInit = { await this.v2_6DB(c); await this.v2_7DB(c); await this.v2_8DB(c); + await this.v2_9DB(c); await settingService.refresh(c); return c.text('success'); }, + async v2_9DB(c) { + try { + await c.env.db.prepare(`UPDATE setting SET auto_refresh = 5 WHERE auto_refresh = 1;`).run(); + } catch (e) { + console.warn(`跳过字段:${e.message}`); + } + }, + async v2_8DB(c) { try { await c.env.db.batch([ @@ -44,8 +53,7 @@ const dbInit = { async v2_7DB(c) { try { await c.env.db.batch([ - c.env.db.prepare(`ALTER TABLE setting RENAME COLUMN auto_refresh_time TO auto_refresh;`), - c.env.db.prepare(`UPDATE setting SET auto_refresh = 1 WHERE auto_refresh != 0;`) + c.env.db.prepare(`ALTER TABLE setting RENAME COLUMN auto_refresh_time TO auto_refresh;`) ]); } catch (e) { console.warn(`跳过字段:${e.message}`); diff --git a/mail-worker/src/service/email-service.js b/mail-worker/src/service/email-service.js index 0c7bc8c..f1fb1df 100644 --- a/mail-worker/src/service/email-service.js +++ b/mail-worker/src/service/email-service.js @@ -446,30 +446,22 @@ const emailService = { allReceive = accountRow.allReceive; } - let count = 0 - let list = [] - - while ((count < 6) && list.length === 0) { - list = await orm(c).select({...email}).from(email) - .leftJoin( - account, - eq(account.accountId, email.accountId) - ) - .where( - and( - gt(email.emailId, emailId), - eq(email.userId, userId), - eq(email.isDel, isDel.NORMAL), - eq(account.isDel, isDel.NORMAL), - allReceive ? eq(1,1) : eq(email.accountId, accountId), - eq(email.type, emailConst.type.RECEIVE) - )) - .orderBy(desc(email.emailId)) - .limit(20); - - await sleep(5000); - count++ - } + let list = await orm(c).select({...email}).from(email) + .leftJoin( + account, + eq(account.accountId, email.accountId) + ) + .where( + and( + gt(email.emailId, emailId), + eq(email.userId, userId), + eq(email.isDel, isDel.NORMAL), + eq(account.isDel, isDel.NORMAL), + allReceive ? eq(1,1) : eq(email.accountId, accountId), + eq(email.type, emailConst.type.RECEIVE) + )) + .orderBy(desc(email.emailId)) + .limit(20); await this.emailAddAtt(c, list); @@ -630,24 +622,16 @@ const emailService = { const { emailId } = params; - let count = 0 - let list = [] - - while ((count < 6) && list.length === 0) { - list = await orm(c).select({...email, userEmail: user.email}).from(email) - .leftJoin(user, eq(email.userId, user.userId)) - .where( - and( - gt(email.emailId, emailId), - eq(email.type, emailConst.type.RECEIVE), - ne(email.status, emailConst.status.SAVING) - )) - .orderBy(desc(email.emailId)) - .limit(20); - - await sleep(5000); - count++ - } + let list = await orm(c).select({...email, userEmail: user.email}).from(email) + .leftJoin(user, eq(email.userId, user.userId)) + .where( + and( + gt(email.emailId, emailId), + eq(email.type, emailConst.type.RECEIVE), + ne(email.status, emailConst.status.SAVING) + )) + .orderBy(desc(email.emailId)) + .limit(20); await this.emailAddAtt(c, list); @@ -660,10 +644,10 @@ const emailService = { if (emailIds.length > 0) { - const attsList = await attService.selectByEmailIds(c, emailIds); + const attList = await attService.selectByEmailIds(c, emailIds); list.forEach(emailRow => { - const atts = attsList.filter(attsRow => attsRow.emailId === emailRow.emailId); + const atts = attList.filter(attRow => attRow.emailId === emailRow.emailId); emailRow.attList = atts; }); }