mirror of
https://github.com/dreamhunter2333/cloudflare_temp_email.git
synced 2026-09-05 07:27:27 +08:00
feat: PWA (#40)
This commit is contained in:
@@ -28,3 +28,4 @@ coverage
|
|||||||
*.sw?
|
*.sw?
|
||||||
|
|
||||||
.env.*
|
.env.*
|
||||||
|
*-dist/
|
||||||
|
|||||||
+3
-1
@@ -3,9 +3,11 @@
|
|||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<link rel="icon" href="/favicon.ico">
|
<link rel="icon" href="/logo.svg">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Temp Email</title>
|
<title>Temp Email</title>
|
||||||
|
<link rel="icon" href="/logo.svg" sizes="any">
|
||||||
|
<link rel="apple-touch-icon" href="/logo.svg">
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
|||||||
@@ -6,19 +6,20 @@
|
|||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
"build": "vite build -m prod --emptyOutDir",
|
"build": "vite build -m prod --emptyOutDir",
|
||||||
"preview": "vite preview",
|
"preview": "vite preview",
|
||||||
"deploy": "wrangler pages deploy ../dist --branch production"
|
"deploy": "npm run build && wrangler pages deploy ../dist --branch production"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@vueuse/core": "^10.1.2",
|
"@vueuse/core": "^10.7.0",
|
||||||
"axios": "^1.6.2",
|
"axios": "^1.6.2",
|
||||||
"naive-ui": "^2.34.3",
|
"naive-ui": "^2.35.0",
|
||||||
"vue": "^3.3.4",
|
"vue": "^3.3.11",
|
||||||
"vue-clipboard3": "^2.0.0",
|
"vue-clipboard3": "^2.0.0",
|
||||||
"vue-i18n": "9",
|
"vue-i18n": "^9.8.0",
|
||||||
"vue-router": "^4.2.5"
|
"vue-router": "^4.2.5"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@vitejs/plugin-vue": "^4.2.3",
|
"@vitejs/plugin-vue": "^4.5.2",
|
||||||
"vite": "^4.4.6"
|
"vite-plugin-pwa": "^0.17.4",
|
||||||
|
"vite": "^4.5.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
+2995
-233
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 50 KiB |
@@ -43,6 +43,8 @@ const { t } = useI18n({
|
|||||||
deleteTip: 'Are you sure to delete this email?',
|
deleteTip: 'Are you sure to delete this email?',
|
||||||
refresh: 'Refresh',
|
refresh: 'Refresh',
|
||||||
emails: 'Emails',
|
emails: 'Emails',
|
||||||
|
itemCount: 'itemCount',
|
||||||
|
query: 'Query',
|
||||||
},
|
},
|
||||||
zh: {
|
zh: {
|
||||||
title: '临时邮件 Admin',
|
title: '临时邮件 Admin',
|
||||||
@@ -58,6 +60,8 @@ const { t } = useI18n({
|
|||||||
deleteTip: '确定要删除这个邮箱吗?',
|
deleteTip: '确定要删除这个邮箱吗?',
|
||||||
refresh: '刷新',
|
refresh: '刷新',
|
||||||
emails: '邮件',
|
emails: '邮件',
|
||||||
|
itemCount: '总数',
|
||||||
|
query: '查询',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -270,7 +274,11 @@ const fetchMailUnknowData = async () => {
|
|||||||
<n-tab-pane name="account" tab="account">
|
<n-tab-pane name="account" tab="account">
|
||||||
<div style="display: inline-block;">
|
<div style="display: inline-block;">
|
||||||
<n-pagination v-model:page="page" v-model:page-size="pageSize" :item-count="count" :page-sizes="[20, 50, 100]"
|
<n-pagination v-model:page="page" v-model:page-size="pageSize" :item-count="count" :page-sizes="[20, 50, 100]"
|
||||||
show-size-picker />
|
show-size-picker>
|
||||||
|
<template #prefix="{ itemCount }">
|
||||||
|
{{ t('itemCount') }}: {{ itemCount }}
|
||||||
|
</template>
|
||||||
|
</n-pagination>
|
||||||
</div>
|
</div>
|
||||||
<n-button tertiary @click="fetchData" type="primary">
|
<n-button tertiary @click="fetchData" type="primary">
|
||||||
{{ t('refresh') }}
|
{{ t('refresh') }}
|
||||||
@@ -286,7 +294,11 @@ const fetchMailUnknowData = async () => {
|
|||||||
</n-input-group>
|
</n-input-group>
|
||||||
<n-list hoverable clickable>
|
<n-list hoverable clickable>
|
||||||
<div style="display: inline-block; margin-bottom: 10px;">
|
<div style="display: inline-block; margin-bottom: 10px;">
|
||||||
<n-pagination v-model:page="mailPage" v-model:page-size="mailPageSize" :item-count="mailCount" simple />
|
<n-pagination v-model:page="mailPage" v-model:page-size="mailPageSize" :item-count="mailCount" simple>
|
||||||
|
<template #prefix="{ itemCount }">
|
||||||
|
{{ t('itemCount') }}: {{ itemCount }}
|
||||||
|
</template>
|
||||||
|
</n-pagination>
|
||||||
</div>
|
</div>
|
||||||
<n-list-item v-for="row in mailData" v-bind:key="row.id">
|
<n-list-item v-for="row in mailData" v-bind:key="row.id">
|
||||||
<n-thing class="center" :title="row.subject">
|
<n-thing class="center" :title="row.subject">
|
||||||
@@ -307,12 +319,16 @@ const fetchMailUnknowData = async () => {
|
|||||||
</n-tab-pane>
|
</n-tab-pane>
|
||||||
<n-tab-pane name="unknow" tab="unknown">
|
<n-tab-pane name="unknow" tab="unknown">
|
||||||
<n-button @click="fetchMailUnknowData" type="primary" ghost>
|
<n-button @click="fetchMailUnknowData" type="primary" ghost>
|
||||||
{{ t('refresh') }}
|
{{ t('query') }}
|
||||||
</n-button>
|
</n-button>
|
||||||
<n-list hoverable clickable>
|
<n-list hoverable clickable>
|
||||||
<div style="display: inline-block; margin-bottom: 10px;">
|
<div style="display: inline-block; margin-bottom: 10px;">
|
||||||
<n-pagination v-model:page="mailUnknowPage" v-model:page-size="mailUnknowPageSize"
|
<n-pagination v-model:page="mailUnknowPage" v-model:page-size="mailUnknowPageSize"
|
||||||
:item-count="mailUnknowCount" simple />
|
:item-count="mailUnknowCount" simple>
|
||||||
|
<template #prefix="{ itemCount }">
|
||||||
|
{{ t('itemCount') }}: {{ itemCount }}
|
||||||
|
</template>
|
||||||
|
</n-pagination>
|
||||||
</div>
|
</div>
|
||||||
<n-list-item v-for="row in mailUnknowData" v-bind:key="row.id">
|
<n-list-item v-for="row in mailUnknowData" v-bind:key="row.id">
|
||||||
<n-thing class="center" :title="row.subject">
|
<n-thing class="center" :title="row.subject">
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import { fileURLToPath, URL } from 'node:url'
|
|||||||
|
|
||||||
import { defineConfig } from 'vite'
|
import { defineConfig } from 'vite'
|
||||||
import vue from '@vitejs/plugin-vue'
|
import vue from '@vitejs/plugin-vue'
|
||||||
|
import { VitePWA } from 'vite-plugin-pwa'
|
||||||
|
|
||||||
// https://vitejs.dev/config/
|
// https://vitejs.dev/config/
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
@@ -10,6 +11,24 @@ export default defineConfig({
|
|||||||
},
|
},
|
||||||
plugins: [
|
plugins: [
|
||||||
vue(),
|
vue(),
|
||||||
|
VitePWA({
|
||||||
|
registerType: 'autoUpdate',
|
||||||
|
devOptions: {
|
||||||
|
enabled: true
|
||||||
|
},
|
||||||
|
manifest: {
|
||||||
|
name: 'Temp Email',
|
||||||
|
short_name: 'Temp Email',
|
||||||
|
description: 'Temp Email - Temporary Email',
|
||||||
|
icons: [
|
||||||
|
{
|
||||||
|
src: '/logo.svg',
|
||||||
|
sizes: '192x192',
|
||||||
|
type: 'image/svg+xml'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
})
|
||||||
],
|
],
|
||||||
resolve: {
|
resolve: {
|
||||||
alias: {
|
alias: {
|
||||||
|
|||||||
+3
-3
@@ -7,12 +7,12 @@
|
|||||||
"start": "wrangler dev"
|
"start": "wrangler dev"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"wrangler": "^3.5.1"
|
"wrangler": "^3.19.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"hono": "^3.4.3",
|
"hono": "^3.11.4",
|
||||||
"mailparser": "^3.6.5",
|
"mailparser": "^3.6.5",
|
||||||
"postal-mime": "^1.0.16"
|
"postal-mime": "^1.1.0"
|
||||||
},
|
},
|
||||||
"pnpm": {
|
"pnpm": {
|
||||||
"patchedDependencies": {
|
"patchedDependencies": {
|
||||||
|
|||||||
Generated
+167
-415
File diff suppressed because it is too large
Load Diff
@@ -179,7 +179,7 @@ api.get('/admin/mails_unknow', async (c) => {
|
|||||||
let count = 0;
|
let count = 0;
|
||||||
if (offset == 0) {
|
if (offset == 0) {
|
||||||
const { count: mailCount } = await c.env.DB.prepare(`
|
const { count: mailCount } = await c.env.DB.prepare(`
|
||||||
SELECT count(*) FROM mails
|
SELECT count(*) as count FROM mails
|
||||||
where address NOT IN
|
where address NOT IN
|
||||||
(select concat('${c.env.PREFIX}', name) from address)`
|
(select concat('${c.env.PREFIX}', name) from address)`
|
||||||
).first();
|
).first();
|
||||||
|
|||||||
Reference in New Issue
Block a user