59
.gitee/ISSUE_TEMPLATE/bug.yml
Normal file
@ -0,0 +1,59 @@
|
||||
name: 🐞 Bug 报告
|
||||
title: '[bug] '
|
||||
description: 报告 bug
|
||||
labels: ['bug']
|
||||
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
## First of all
|
||||
1. 请先搜索 [现有问题](https://gitee.com/nongyehong/HuLa-IM-Tauri/issues?q=is%3Aissue) 关于此问题。
|
||||
2. 确保 rustc 和所有相关的 HuLa-IM-Tauri 包都是最新的。
|
||||
3. 确保这是 HuLa-IM-Tauri 的问题,而不是你正在使用的其他东西。
|
||||
4. 请记住遵循我们的社区准则并保持友好。
|
||||
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: 描述 bug
|
||||
description: 对 bug 的明确描述。如果适用,请包括屏幕截图。
|
||||
placeholder: Bug 描述
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: reproduction
|
||||
attributes:
|
||||
label: 步骤
|
||||
description: 指向 reproduction 存储库的链接或重现行为的步骤。
|
||||
placeholder: |
|
||||
请提供最小复制或复制步骤,请参阅本指南 https://stackoverflow.com/help/minimal-reproducible-example
|
||||
为什么需要复制?请参阅此文章 https://antfu.me/posts/why-reproductions-are-required
|
||||
|
||||
- type: textarea
|
||||
id: expected-behavior
|
||||
attributes:
|
||||
label: 预期行为
|
||||
description: 清楚地描述您期望发生的事情。
|
||||
|
||||
- type: textarea
|
||||
id: info
|
||||
attributes:
|
||||
label: 完整的 'tauri info' 输出
|
||||
description: '“npm run tauri info”或“cargo tauri info”的输出'
|
||||
render: text
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: logs
|
||||
attributes:
|
||||
label: 堆栈跟踪
|
||||
render: text
|
||||
|
||||
- type: textarea
|
||||
id: context
|
||||
attributes:
|
||||
label: 其他上下文
|
||||
description: 在此处添加有关问题的任何其他上下文。
|
35
.gitee/ISSUE_TEMPLATE/feature.yml
Normal file
@ -0,0 +1,35 @@
|
||||
name: 💡 功能请求
|
||||
title: '[功能建议] '
|
||||
description: 提出想法
|
||||
labels: ['enhancement']
|
||||
|
||||
body:
|
||||
- type: textarea
|
||||
id: problem
|
||||
attributes:
|
||||
label: 描述问题
|
||||
description: 明确描述此功能将解决的问题
|
||||
placeholder: "我总是感到困扰..."
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: solution
|
||||
attributes:
|
||||
label: "描述您想要的解决方案"
|
||||
description: 明确说明您希望做出的改变
|
||||
placeholder: '我想...'
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: alternatives
|
||||
attributes:
|
||||
label: 考虑的替代方案
|
||||
description: "您考虑过的任何替代解决方案"
|
||||
|
||||
- type: textarea
|
||||
id: context
|
||||
attributes:
|
||||
label: 其他上下文
|
||||
description: 在此处添加有关问题的任何其他上下文。
|
59
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
@ -0,0 +1,59 @@
|
||||
name: 🐞 Bug Report
|
||||
title: '[bug] '
|
||||
description: Report a bug
|
||||
labels: ['type: bug', 'status: needs triage']
|
||||
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
## First of all
|
||||
1. Please search for [existing issues](https://github.com/nongyehong/HuLa-IM-Tauri/issues?q=is%3Aissue) about this problem first.
|
||||
2. Make sure `rustc` and all relevant HuLa-IM-Tauri packages are up to date.
|
||||
3. Make sure it's an issue with HuLa-IM-Tauri and not something else you are using.
|
||||
4. Remember to follow our community guidelines and be friendly.
|
||||
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Describe the bug
|
||||
description: A clear description of what the bug is. Include screenshots if applicable.
|
||||
placeholder: Bug description
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: reproduction
|
||||
attributes:
|
||||
label: Reproduction
|
||||
description: A link to a reproduction repo or steps to reproduce the behaviour.
|
||||
placeholder: |
|
||||
Please provide a minimal reproduction or steps to reproduce, see this guide https://stackoverflow.com/help/minimal-reproducible-example
|
||||
Why reproduction is required? see this article https://antfu.me/posts/why-reproductions-are-required
|
||||
|
||||
- type: textarea
|
||||
id: expected-behavior
|
||||
attributes:
|
||||
label: Expected behavior
|
||||
description: A clear description of what you expected to happen.
|
||||
|
||||
- type: textarea
|
||||
id: info
|
||||
attributes:
|
||||
label: Full `tauri info` output
|
||||
description: 'Output of `npm run tauri info` or `cargo tauri info`'
|
||||
render: text
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: logs
|
||||
attributes:
|
||||
label: Stack trace
|
||||
render: text
|
||||
|
||||
- type: textarea
|
||||
id: context
|
||||
attributes:
|
||||
label: Additional context
|
||||
description: Add any other context about the problem here.
|
35
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
Normal file
@ -0,0 +1,35 @@
|
||||
name: 💡 Feature Request
|
||||
title: '[feat] '
|
||||
description: Suggest an idea
|
||||
labels: ['type: feature request']
|
||||
|
||||
body:
|
||||
- type: textarea
|
||||
id: problem
|
||||
attributes:
|
||||
label: Describe the problem
|
||||
description: A clear description of the problem this feature would solve
|
||||
placeholder: "I'm always frustrated when..."
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: solution
|
||||
attributes:
|
||||
label: "Describe the solution you'd like"
|
||||
description: A clear description of what change you would like
|
||||
placeholder: 'I would like to...'
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: alternatives
|
||||
attributes:
|
||||
label: Alternatives considered
|
||||
description: "Any alternative solutions you've considered"
|
||||
|
||||
- type: textarea
|
||||
id: context
|
||||
attributes:
|
||||
label: Additional context
|
||||
description: Add any other context about the problem here.
|
BIN
public/logo.png
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 9.5 KiB |
Before Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 9.5 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 55 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 85 KiB |
Before Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 7.6 KiB |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 6.9 KiB |
Before Width: | Height: | Size: 6.9 KiB |
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 273 KiB |
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 6.5 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 19 KiB |
BIN
src-tauri/icons/macos/128x128.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
src-tauri/icons/macos/128x128@2x.png
Normal file
After Width: | Height: | Size: 31 KiB |
BIN
src-tauri/icons/macos/32x32.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
src-tauri/icons/macos/Square107x107Logo.png
Normal file
After Width: | Height: | Size: 9.1 KiB |
BIN
src-tauri/icons/macos/Square142x142Logo.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
src-tauri/icons/macos/Square150x150Logo.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
src-tauri/icons/macos/Square284x284Logo.png
Normal file
After Width: | Height: | Size: 37 KiB |
BIN
src-tauri/icons/macos/Square30x30Logo.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
src-tauri/icons/macos/Square310x310Logo.png
Normal file
After Width: | Height: | Size: 42 KiB |
BIN
src-tauri/icons/macos/Square44x44Logo.png
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
src-tauri/icons/macos/Square71x71Logo.png
Normal file
After Width: | Height: | Size: 5.5 KiB |
BIN
src-tauri/icons/macos/Square89x89Logo.png
Normal file
After Width: | Height: | Size: 7.3 KiB |
BIN
src-tauri/icons/macos/StoreLogo.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
BIN
src-tauri/icons/macos/icon.icns
Normal file
BIN
src-tauri/icons/macos/icon.ico
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
src-tauri/icons/macos/icon.png
Normal file
After Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 6.4 KiB |
Before Width: | Height: | Size: 8.5 KiB After Width: | Height: | Size: 8.5 KiB |
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 109 KiB After Width: | Height: | Size: 109 KiB |
@ -2,7 +2,6 @@
|
||||
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
|
||||
mod tray;
|
||||
mod user_cmd;
|
||||
use tauri::{LogicalSize, Manager};
|
||||
use user_cmd::{get_user_info, save_user_info, default_window_icon, screenshot, audio};
|
||||
use tauri_plugin_autostart::MacosLauncher;
|
||||
|
||||
@ -21,19 +20,6 @@ fn main() {
|
||||
.setup(move |app| {
|
||||
app.handle().plugin(tauri_plugin_global_shortcut::Builder::new().build())?;
|
||||
tray::create_tray(app.handle())?;
|
||||
|
||||
let os = std::env::consts::OS;
|
||||
match os {
|
||||
"windows" => {
|
||||
// 如果是 Windows,找到 label 为 "login" 的窗口并设置 decorations 为 false
|
||||
let window = app.get_webview_window("login").expect("Failed to get window");
|
||||
window.set_decorations(false).expect("Failed to set decorations");
|
||||
let new_size = LogicalSize { width: 320.0, height: 448.0 };
|
||||
window.set_size(new_size).expect("Failed to set size");
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
})
|
||||
.invoke_handler(tauri::generate_handler![get_user_info, save_user_info, default_window_icon, screenshot, audio])
|
||||
|
@ -13,59 +13,13 @@
|
||||
"tray"
|
||||
],
|
||||
"active": true,
|
||||
"targets": "all",
|
||||
"icon": [
|
||||
"icons/32x32.png",
|
||||
"icons/128x128.png",
|
||||
"icons/128x128@2x.png",
|
||||
"icons/icon.icns",
|
||||
"icons/icon.ico"
|
||||
],
|
||||
"windows": {
|
||||
"wix": {
|
||||
"language": "zh-CN"
|
||||
}
|
||||
}
|
||||
"icon": [],
|
||||
"windows": {},
|
||||
"macOS": {}
|
||||
},
|
||||
"app": {
|
||||
"withGlobalTauri": true,
|
||||
"windows": [
|
||||
{
|
||||
"label": "login",
|
||||
"url": "/login",
|
||||
"fullscreen": false,
|
||||
"resizable": false,
|
||||
"center": true,
|
||||
"width": 320,
|
||||
"height": 448,
|
||||
"skipTaskbar": false,
|
||||
"transparent": false,
|
||||
"titleBarStyle": "Overlay",
|
||||
"hiddenTitle": true
|
||||
},
|
||||
{
|
||||
"label": "tray",
|
||||
"url": "/tray",
|
||||
"resizable": false,
|
||||
"center": false,
|
||||
"visible": false,
|
||||
"width": 130,
|
||||
"height": 44,
|
||||
"alwaysOnTop": true,
|
||||
"skipTaskbar": true,
|
||||
"decorations": false
|
||||
},
|
||||
{
|
||||
"label": "capture",
|
||||
"url": "/capture",
|
||||
"fullscreen": false,
|
||||
"transparent": true,
|
||||
"resizable": false,
|
||||
"skipTaskbar": false,
|
||||
"decorations": false,
|
||||
"visible": false
|
||||
}
|
||||
],
|
||||
"windows": [],
|
||||
"security": {
|
||||
"csp": null
|
||||
},
|
||||
|
100
src-tauri/tauri.macos.conf.json
Normal file
@ -0,0 +1,100 @@
|
||||
{
|
||||
"productName": "HuLa",
|
||||
"version": "2.1.0",
|
||||
"identifier": "com.tauri.build",
|
||||
"build": {
|
||||
"beforeDevCommand": "pnpm dev",
|
||||
"beforeBuildCommand": "pnpm build",
|
||||
"frontendDist": "../dist",
|
||||
"devUrl": "http://127.0.0.1:6130"
|
||||
},
|
||||
"bundle": {
|
||||
"resources": [
|
||||
"tray"
|
||||
],
|
||||
"active": true,
|
||||
"targets": ["dmg"],
|
||||
"icon": [
|
||||
"icons/macos/32x32.png",
|
||||
"icons/macos/128x128.png",
|
||||
"icons/macos/128x128@2x.png",
|
||||
"icons/macos/icon.icns",
|
||||
"icons/macos/icon.ico",
|
||||
"icons/macos/icon.png",
|
||||
"icons/macos/Square30x30Logo.png",
|
||||
"icons/macos/Square44x44Logo.png",
|
||||
"icons/macos/Square71x71Logo.png",
|
||||
"icons/macos/Square89x89Logo.png",
|
||||
"icons/macos/Square107x107Logo.png",
|
||||
"icons/macos/Square142x142Logo.png",
|
||||
"icons/macos/Square150x150Logo.png",
|
||||
"icons/macos/Square284x284Logo.png",
|
||||
"icons/macos/Square310x310Logo.png",
|
||||
"icons/macos/StoreLogo.png"
|
||||
],
|
||||
"macOS": {
|
||||
"dmg": {
|
||||
"appPosition": {
|
||||
"x": 180,
|
||||
"y": 170
|
||||
},
|
||||
"applicationFolderPosition": {
|
||||
"x": 480,
|
||||
"y": 170
|
||||
},
|
||||
"windowSize": {
|
||||
"height": 400,
|
||||
"width": 660
|
||||
}
|
||||
},
|
||||
"files": {},
|
||||
"hardenedRuntime": true,
|
||||
"minimumSystemVersion": "10.13"
|
||||
}
|
||||
},
|
||||
"app": {
|
||||
"withGlobalTauri": true,
|
||||
"windows": [
|
||||
{
|
||||
"label": "login",
|
||||
"url": "/login",
|
||||
"fullscreen": false,
|
||||
"resizable": false,
|
||||
"center": true,
|
||||
"width": 320,
|
||||
"height": 448,
|
||||
"skipTaskbar": false,
|
||||
"transparent": false,
|
||||
"visible": false,
|
||||
"titleBarStyle": "Overlay",
|
||||
"hiddenTitle": true
|
||||
},
|
||||
{
|
||||
"label": "tray",
|
||||
"url": "/tray",
|
||||
"resizable": false,
|
||||
"center": false,
|
||||
"visible": false,
|
||||
"width": 130,
|
||||
"height": 44,
|
||||
"alwaysOnTop": true,
|
||||
"skipTaskbar": true,
|
||||
"decorations": false
|
||||
},
|
||||
{
|
||||
"label": "capture",
|
||||
"url": "/capture",
|
||||
"fullscreen": false,
|
||||
"transparent": true,
|
||||
"resizable": false,
|
||||
"skipTaskbar": false,
|
||||
"decorations": false,
|
||||
"visible": false
|
||||
}
|
||||
],
|
||||
"security": {
|
||||
"csp": null
|
||||
},
|
||||
"macOSPrivateApi": true
|
||||
}
|
||||
}
|
85
src-tauri/tauri.windows.conf.json
Normal file
@ -0,0 +1,85 @@
|
||||
{
|
||||
"productName": "HuLa",
|
||||
"version": "2.1.0",
|
||||
"identifier": "com.tauri.build",
|
||||
"build": {
|
||||
"beforeDevCommand": "pnpm dev",
|
||||
"beforeBuildCommand": "pnpm build",
|
||||
"frontendDist": "../dist",
|
||||
"devUrl": "http://127.0.0.1:6130"
|
||||
},
|
||||
"bundle": {
|
||||
"resources": [
|
||||
"tray"
|
||||
],
|
||||
"active": true,
|
||||
"targets": ["msi"],
|
||||
"icon": [
|
||||
"icons/windows/32x32.png",
|
||||
"icons/windows/128x128.png",
|
||||
"icons/windows/128x128@2x.png",
|
||||
"icons/windows/icon.icns",
|
||||
"icons/windows/icon.ico",
|
||||
"icons/windows/icon.png",
|
||||
"icons/windows/Square30x30Logo.png",
|
||||
"icons/windows/Square44x44Logo.png",
|
||||
"icons/windows/Square71x71Logo.png",
|
||||
"icons/windows/Square89x89Logo.png",
|
||||
"icons/windows/Square107x107Logo.png",
|
||||
"icons/windows/Square142x142Logo.png",
|
||||
"icons/windows/Square150x150Logo.png",
|
||||
"icons/windows/Square284x284Logo.png",
|
||||
"icons/windows/Square310x310Logo.png",
|
||||
"icons/windows/StoreLogo.png"
|
||||
],
|
||||
"windows": {
|
||||
"wix": {
|
||||
"language": "zh-CN"
|
||||
}
|
||||
}
|
||||
},
|
||||
"app": {
|
||||
"withGlobalTauri": true,
|
||||
"windows": [
|
||||
{
|
||||
"label": "login",
|
||||
"url": "/login",
|
||||
"fullscreen": false,
|
||||
"resizable": false,
|
||||
"center": true,
|
||||
"width": 320,
|
||||
"height": 448,
|
||||
"skipTaskbar": false,
|
||||
"transparent": false,
|
||||
"visible": false,
|
||||
"decorations": false
|
||||
},
|
||||
{
|
||||
"label": "tray",
|
||||
"url": "/tray",
|
||||
"resizable": false,
|
||||
"center": false,
|
||||
"visible": false,
|
||||
"width": 130,
|
||||
"height": 44,
|
||||
"alwaysOnTop": true,
|
||||
"skipTaskbar": true,
|
||||
"decorations": false
|
||||
},
|
||||
{
|
||||
"label": "capture",
|
||||
"url": "/capture",
|
||||
"fullscreen": false,
|
||||
"transparent": true,
|
||||
"resizable": false,
|
||||
"skipTaskbar": false,
|
||||
"decorations": false,
|
||||
"visible": false
|
||||
}
|
||||
],
|
||||
"security": {
|
||||
"csp": null
|
||||
},
|
||||
"macOSPrivateApi": true
|
||||
}
|
||||
}
|
45
src/App.vue
@ -10,7 +10,6 @@
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { setting } from '@/stores/setting.ts'
|
||||
import { storeToRefs } from 'pinia'
|
||||
import { StoresEnum, ThemeEnum } from '@/enums'
|
||||
import { onlineStatus } from '@/stores/onlineStatus.ts'
|
||||
import LockScreen from '@/views/LockScreen.vue'
|
||||
@ -52,7 +51,23 @@ watch(
|
||||
{ immediate: true }
|
||||
)
|
||||
|
||||
onMounted(() => {
|
||||
/** 控制变化主题 */
|
||||
watch(
|
||||
() => themes.value.versatile,
|
||||
async (val, oldVal) => {
|
||||
await import(`@/styles/scss/theme/${val}.scss`)
|
||||
// 然后给最顶层的div设置val的类样式
|
||||
const app = document.querySelector('#app')?.classList as DOMTokenList
|
||||
app.remove(oldVal as string)
|
||||
await nextTick(() => {
|
||||
app.add(val)
|
||||
})
|
||||
},
|
||||
{ immediate: true }
|
||||
)
|
||||
|
||||
onMounted(async () => {
|
||||
await import(`@/styles/scss/theme/${themes.value.versatile}.scss`)
|
||||
// initWebSocket()
|
||||
// /**! 使用msi或者其他安装包安装后才会显示应用的名字和图标 */
|
||||
// sendNotification({ title: 'TAURI', body: 'Tauri is awesome!' })
|
||||
@ -66,19 +81,19 @@ onMounted(() => {
|
||||
}
|
||||
document.documentElement.dataset.theme = themes.value.content
|
||||
window.addEventListener('dragstart', preventDrag)
|
||||
// /** 开发环境不禁止 */
|
||||
// if (process.env.NODE_ENV !== 'development') {
|
||||
// /** 禁用浏览器默认的快捷键 */
|
||||
// window.addEventListener('keydown', (e) => {
|
||||
// // 排除ctrl+c ctrl+v ctrl+enter
|
||||
// if (e.ctrlKey && (e.key === 'c' || e.key === 'v' || e.key === 'Enter')) return
|
||||
// if (e.ctrlKey || e.metaKey || e.altKey) {
|
||||
// e.preventDefault()
|
||||
// }
|
||||
// })
|
||||
// }
|
||||
// /** 禁止右键菜单 */
|
||||
// window.addEventListener('contextmenu', (e) => e.preventDefault(), false)
|
||||
/** 开发环境不禁止 */
|
||||
if (process.env.NODE_ENV !== 'development') {
|
||||
/** 禁用浏览器默认的快捷键 */
|
||||
window.addEventListener('keydown', (e) => {
|
||||
// 排除ctrl+c ctrl+v ctrl+enter
|
||||
if (e.ctrlKey && (e.key === 'c' || e.key === 'v' || e.key === 'Enter')) return
|
||||
if (e.ctrlKey || e.metaKey || e.altKey) {
|
||||
e.preventDefault()
|
||||
}
|
||||
})
|
||||
/** 禁止右键菜单 */
|
||||
window.addEventListener('contextmenu', (e) => e.preventDefault(), false)
|
||||
}
|
||||
})
|
||||
|
||||
onUnmounted(() => {
|
||||
|
BIN
src/assets/img/hula-bg-h.png
Normal file
After Width: | Height: | Size: 5.6 KiB |
Before Width: | Height: | Size: 8.2 KiB |
7
src/assets/img/hula_bg_d.svg
Normal file
After Width: | Height: | Size: 9.7 KiB |
@ -21,7 +21,6 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { setting } from '@/stores/setting.ts'
|
||||
import { storeToRefs } from 'pinia'
|
||||
import { dateZhCN, darkTheme, lightTheme, GlobalThemeOverrides, zhCN } from 'naive-ui'
|
||||
import { ThemeEnum } from '@/enums'
|
||||
|
||||
|
@ -113,7 +113,6 @@ import Mitt from '@/utils/Bus.ts'
|
||||
import { CacheUserItem, MockItem } from '@/services/types.ts'
|
||||
import { emit, listen } from '@tauri-apps/api/event'
|
||||
import { setting } from '@/stores/setting.ts'
|
||||
import { storeToRefs } from 'pinia'
|
||||
import { sendOptions } from '@/views/homeWindow/more/settings/config.ts'
|
||||
import { useMsgInput } from '@/hooks/useMsgInput.ts'
|
||||
import { useCommon } from '@/hooks/useCommon.ts'
|
||||
|
@ -1,6 +1,7 @@
|
||||
<template>
|
||||
<!-- 底部栏 -->
|
||||
<main class="size-full relative z-10 bg-[--right-bg-color] border-t-(1px solid [--line-color]) color-[--icon-color]">
|
||||
<main
|
||||
class="size-full relative z-10 bg-transparent backdrop-blur-2xl border-t-(1px solid [--line-color]) color-[--icon-color]">
|
||||
<!-- 输入框顶部选项栏 -->
|
||||
<n-flex align="center" justify="space-between" class="p-[10px_22px_5px] select-none">
|
||||
<n-flex align="center" :size="0" class="input-options">
|
||||
|
@ -349,7 +349,6 @@ import { VirtualListInst } from 'naive-ui'
|
||||
import { delay } from 'lodash-es'
|
||||
import { useCommon } from '@/hooks/useCommon.ts'
|
||||
import { setting } from '@/stores/setting.ts'
|
||||
import { storeToRefs } from 'pinia'
|
||||
import { formatTimestamp } from '@/utils/ComputedTime.ts'
|
||||
import { useUserInfo, useBadgeInfo } from '@/hooks/useCached.ts'
|
||||
import { useChatStore } from '@/stores/chat.ts'
|
||||
|
@ -16,7 +16,6 @@ import { MockItem } from '@/services/types.ts'
|
||||
import { listen } from '@tauri-apps/api/event'
|
||||
import { WebviewWindow } from '@tauri-apps/api/webviewWindow'
|
||||
import { setting } from '@/stores/setting.ts'
|
||||
import { storeToRefs } from 'pinia'
|
||||
|
||||
const settingStore = setting()
|
||||
const { page } = storeToRefs(settingStore)
|
||||
|
@ -84,7 +84,6 @@ import { useAlwaysOnTopStore } from '@/stores/alwaysOnTop.ts'
|
||||
import { setting } from '@/stores/setting.ts'
|
||||
import { emit, listen } from '@tauri-apps/api/event'
|
||||
import { CloseBxEnum, EventEnum, MittEnum } from '@/enums'
|
||||
import { storeToRefs } from 'pinia'
|
||||
import { PersistedStateOptions } from 'pinia-plugin-persistedstate'
|
||||
import { exit } from '@tauri-apps/plugin-process'
|
||||
import { type } from '@tauri-apps/plugin-os'
|
||||
|
@ -3,7 +3,6 @@ import { Ref } from 'vue'
|
||||
import { createFileOrVideoDom } from '@/utils/CreateDom.ts'
|
||||
import { RegExp } from '@/utils/RegExp.ts'
|
||||
import { setting } from '@/stores/setting.ts'
|
||||
import { storeToRefs } from 'pinia'
|
||||
|
||||
/** 常用工具类 */
|
||||
export const useCommon = () => {
|
||||
|
@ -6,7 +6,6 @@ import { MockItem, SessionItem } from '@/services/types.ts'
|
||||
import { delay } from 'lodash-es'
|
||||
import { MockList } from '@/mock'
|
||||
import { setting } from '@/stores/setting.ts'
|
||||
import { storeToRefs } from 'pinia'
|
||||
|
||||
const { createWebviewWindow, checkWinExist } = useWindow()
|
||||
/** 建议把此状态存入localStorage中 */
|
||||
|
@ -2,7 +2,6 @@ import { LimitEnum, MittEnum, MsgEnum } from '@/enums'
|
||||
import { Ref } from 'vue'
|
||||
import { CacheUserItem } from '@/services/types.ts'
|
||||
import { setting } from '@/stores/setting.ts'
|
||||
import { storeToRefs } from 'pinia'
|
||||
import { useDebounceFn } from '@vueuse/core'
|
||||
import Mitt from '@/utils/Bus.ts'
|
||||
import { useCommon } from './useCommon.ts'
|
||||
|
@ -47,7 +47,8 @@ export const useWindow = () => {
|
||||
decorations: type() !== 'windows',
|
||||
transparent: false,
|
||||
titleBarStyle: 'overlay', // mac覆盖标签栏
|
||||
hiddenTitle: true // mac隐藏标题栏
|
||||
hiddenTitle: true, // mac隐藏标题栏
|
||||
visible: false
|
||||
})
|
||||
|
||||
await webview.once('tauri://created', async () => {
|
||||
|
@ -21,9 +21,11 @@ export const useWindowState = (label: string) => {
|
||||
})
|
||||
|
||||
onMounted(async () => {
|
||||
const isShow = await win?.isVisible()
|
||||
if (isShow) {
|
||||
await emit(EventEnum.WIN_SHOW, label)
|
||||
}
|
||||
await nextTick(async () => {
|
||||
const isShow = await win?.isVisible()
|
||||
if (isShow) {
|
||||
await emit(EventEnum.WIN_SHOW, label)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
@ -44,7 +44,7 @@
|
||||
<!-- 添加面板 -->
|
||||
<n-popover
|
||||
v-model:show="addPanels.show"
|
||||
style="padding: 0; background: transparent"
|
||||
style="padding: 0; background: transparent; user-select: none"
|
||||
:show-arrow="false"
|
||||
trigger="click">
|
||||
<template #trigger>
|
||||
@ -83,7 +83,6 @@ import { MittEnum } from '@/enums'
|
||||
import { WebviewWindow } from '@tauri-apps/api/webviewWindow'
|
||||
import { useWindowSize } from '@vueuse/core'
|
||||
import { setting } from '@/stores/setting.ts'
|
||||
import { storeToRefs } from 'pinia'
|
||||
|
||||
const settingStore = setting()
|
||||
const { page } = storeToRefs(settingStore)
|
||||
|
@ -1,13 +1,13 @@
|
||||
<template>
|
||||
<div ref="actionList" class="flex-1 mt-20px flex-col-x-center justify-between" data-tauri-drag-region>
|
||||
<!-- 上部分操作栏 -->
|
||||
<header ref="header" class="flex-col-x-center gap-10px color-[--icon-color]">
|
||||
<header ref="header" class="flex-col-x-center gap-10px color-[--left-icon-color]">
|
||||
<div
|
||||
v-for="(item, index) in menuTop"
|
||||
:key="index"
|
||||
:class="[
|
||||
{ active: activeUrl === item.url && item.url !== 'dynamic' },
|
||||
openWindowsList.has(item.url) ? 'p-[6px_8px] color-#13987f' : 'top-action'
|
||||
openWindowsList.has(item.url) ? 'p-[6px_8px] color-[--left-win-icon-color]' : 'top-action'
|
||||
]"
|
||||
@click="pageJumps(item.url, item.title, item.size, item.window)">
|
||||
<!-- 已经打开窗口时展示 -->
|
||||
@ -80,11 +80,11 @@
|
||||
</header>
|
||||
|
||||
<!-- 下部分操作栏 -->
|
||||
<footer class="flex-col-x-center gap-10px color-[--icon-color]">
|
||||
<footer class="flex-col-x-center gap-10px color-[--left-icon-color] select-none">
|
||||
<div
|
||||
v-for="(item, index) in itemsBottom"
|
||||
:key="index"
|
||||
:class="openWindowsList.has(item.url) ? 'p-[6px_8px] color-#13987f' : 'bottom-action'"
|
||||
:class="openWindowsList.has(item.url) ? 'p-[6px_8px] color-[--left-win-icon-color]' : 'bottom-action'"
|
||||
@click="pageJumps(item.url, item.title, item.size, item.window)">
|
||||
<!-- 已经打开窗口时展示 -->
|
||||
<n-popover :show-arrow="false" v-if="openWindowsList.has(item.url)" trigger="hover" placement="right">
|
||||
@ -125,12 +125,12 @@
|
||||
<!-- 更多选项面板 -->
|
||||
<n-popover
|
||||
v-model:show="settingShow"
|
||||
style="padding: 0; background: transparent"
|
||||
style="padding: 0; background: transparent; user-select: none"
|
||||
:show-arrow="false"
|
||||
trigger="click">
|
||||
<template #trigger>
|
||||
<svg
|
||||
:class="{ 'color-#13987f': settingShow }"
|
||||
:class="{ 'color--[--left-active-hover]': settingShow }"
|
||||
class="more size-22px relative"
|
||||
@click="settingShow = !settingShow">
|
||||
<use :href="settingShow ? '#hamburger-button-action' : '#hamburger-button'"></use>
|
||||
|
@ -11,7 +11,7 @@
|
||||
<n-avatar :color="'#fff'" :size="34" :src="login.accountInfo.avatar" fallback-src="/logo.png" round />
|
||||
|
||||
<div
|
||||
class="bg-[--bg-avatar] text-10px rounded-50% size-12px absolute bottom--2px right--2px border-(2px solid [--bg-avatar])"
|
||||
class="bg-[--left-bg-color] text-10px rounded-50% size-12px absolute bottom--2px right--2px border-(2px solid [--left-bg-color])"
|
||||
@click.stop="openContent('在线状态', 'onlineStatus', 320, 480)">
|
||||
<img :src="url" alt="" class="rounded-50% size-full" />
|
||||
</div>
|
||||
|
@ -136,7 +136,6 @@ import { PluginEnum } from '@/enums'
|
||||
import { setting } from '@/stores/setting.ts'
|
||||
import { usePluginsStore } from '@/stores/plugins.ts'
|
||||
import { useMenuTopStore } from '@/stores/menuTop.ts'
|
||||
import { storeToRefs } from 'pinia'
|
||||
|
||||
const settingStore = setting()
|
||||
const { updatePlugins, plugins } = usePluginsStore()
|
||||
|
@ -58,7 +58,7 @@
|
||||
justify="center"
|
||||
align="center"
|
||||
:size="8"
|
||||
class="box bg-[--left-active-color]">
|
||||
class="box bg-[--left-active-bg-color]">
|
||||
<!-- 在下载中进度条 -->
|
||||
<n-flex
|
||||
@click="handleState(plugin)"
|
||||
|
@ -67,7 +67,6 @@
|
||||
<script setup lang="ts">
|
||||
import { type } from '@tauri-apps/plugin-os'
|
||||
import { usePluginsStore } from '@/stores/plugins.ts'
|
||||
import { storeToRefs } from 'pinia'
|
||||
import Card from './Card.vue'
|
||||
import List from './List.vue'
|
||||
|
||||
|
@ -117,7 +117,7 @@ const pluginsList = ref<STO.Plugins<PluginEnum>[]>([
|
||||
title: 'ChatBot',
|
||||
tip: 'ChatBot新应用上线',
|
||||
state: PluginEnum.NOT_INSTALLED,
|
||||
version: 'v2.0.0-Bate',
|
||||
version: 'v2.0.0-Beta',
|
||||
isAdd: false,
|
||||
dot: true,
|
||||
progress: 0,
|
||||
|
@ -2,7 +2,6 @@ import { useWindow } from '@/hooks/useWindow.ts'
|
||||
import { setting } from '@/stores/setting.ts'
|
||||
import { useUserStore } from '@/stores/user.ts'
|
||||
import { useCachedStore } from '@/stores/cached.ts'
|
||||
import { storeToRefs } from 'pinia'
|
||||
import { onlineStatus } from '@/stores/onlineStatus.ts'
|
||||
import { EventEnum, IsYetEnum, MittEnum, MsgEnum, ThemeEnum } from '@/enums'
|
||||
import { BadgeType, UserInfoType } from '@/services/types.ts'
|
||||
|
@ -1,18 +1,20 @@
|
||||
<template>
|
||||
<main
|
||||
class="left rounded-l-8px min-w-64px h-full p-[30px_6px_15px] box-border flex-col-center select-none"
|
||||
data-tauri-drag-region>
|
||||
<p class="text-(16px [--text-color]) cursor-default select-none m-[4px_0_16px_0]">HuLa</p>
|
||||
<!-- 头像模块 -->
|
||||
<LeftAvatar />
|
||||
<!-- 导航选项按钮模块 -->
|
||||
<ActionList />
|
||||
<!-- 编辑资料弹窗 -->
|
||||
<InfoPopover />
|
||||
<div style="background: rgba(30, 30, 30, 0.8)">
|
||||
<main
|
||||
class="left rounded-l-8px min-w-64px h-full p-[30px_6px_15px] box-border flex-col-center select-none"
|
||||
data-tauri-drag-region>
|
||||
<p class="text-(16px [--left-text-color]) cursor-default select-none m-[4px_0_16px_0]">HuLa</p>
|
||||
<!-- 头像模块 -->
|
||||
<LeftAvatar />
|
||||
<!-- 导航选项按钮模块 -->
|
||||
<ActionList />
|
||||
<!-- 编辑资料弹窗 -->
|
||||
<InfoPopover />
|
||||
|
||||
<!-- 弹出框 -->
|
||||
<component :is="componentMap" />
|
||||
</main>
|
||||
<!-- 弹出框 -->
|
||||
<component :is="componentMap" />
|
||||
</main>
|
||||
</div>
|
||||
</template>
|
||||
<script lang="tsx" setup>
|
||||
import LeftAvatar from './components/LeftAvatar.vue'
|
||||
|
@ -14,7 +14,6 @@ import {
|
||||
} from 'naive-ui'
|
||||
import { FormInst } from 'naive-ui'
|
||||
import { setting } from '@/stores/setting.ts'
|
||||
import { storeToRefs } from 'pinia'
|
||||
import { emit } from '@tauri-apps/api/event'
|
||||
import { EventEnum } from '@/enums'
|
||||
import pkg from '~/package.json'
|
||||
@ -321,9 +320,9 @@ export const CheckUpdate = defineComponent(() => {
|
||||
<NScrollbar class="max-h-460px p-[0_10px] box-border">
|
||||
{newCommitLog.value.length > 0 ? (
|
||||
<>
|
||||
<span class="p-[4px_8px] mb-10px w-fit bg-#f6dfe3ff rounded-6px text-(12px #ce304f)">
|
||||
<div class="p-[4px_8px] mt-4px w-fit bg-#f6dfe3ff rounded-6px text-(12px #ce304f)">
|
||||
{newVersion.value}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<NTimeline class="p-16px box-border">
|
||||
{newCommitLog.value.map((log, index) => (
|
||||
@ -341,7 +340,7 @@ export const CheckUpdate = defineComponent(() => {
|
||||
|
||||
<NFlex>
|
||||
<NFlex vertical size={20}>
|
||||
<svg class="m-[10px_40px] w-24px h-24px select-none rotate-270 color-#ccc">
|
||||
<svg class="m-[4px_40px] w-24px h-24px select-none rotate-270 color-#ccc">
|
||||
<use href={'#RightArrow'}></use>
|
||||
</svg>
|
||||
|
||||
|