fix(config): 🐛 fix some configuration issues on windows
fixed group list height issue
This commit is contained in:
@@ -49,7 +49,7 @@
|
||||
<!-- 🛠️ Tech Stack -->
|
||||
<div align="center">
|
||||
<h3>🛠️ Tech Stack</h3>
|
||||
|
||||
|
||||
<p>
|
||||
<img src="https://img.shields.io/badge/Vue3-35495E?logo=vue.js&logoColor=4FC08D">
|
||||
<img src="https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=fff">
|
||||
@@ -229,7 +229,7 @@ HuLa is an instant messaging system built with Tauri, Vite 7, Vue 3, and TypeScr
|
||||
| 🪟 | Multi-window Management |  |
|
||||
| 🔔 | System Tray Notifications |  |
|
||||
| 📷 | Image Viewer |  |
|
||||
| ✂️ | Screenshot Feature |  |
|
||||
| ✂️ | Screenshot Feature |  |
|
||||
| 📁 | File Upload (Qiniu Cloud) |  |
|
||||
| 🔄 | Auto-update System |  |
|
||||
|
||||
@@ -237,7 +237,7 @@ HuLa is an instant messaging system built with Tauri, Vite 7, Vue 3, and TypeScr
|
||||
| Feature | Description | Status |
|
||||
|---------|-------------|--------|
|
||||
| 💻 | Windows/macOS/Linux |  |
|
||||
| 📱 | iOS/Android Adaptation |  |
|
||||
| 📱 | iOS/Android Adaptation | -ee9f20?style=flat&labelColor=fef7e6&color=ee9f20) |
|
||||
|
||||
### 🤖 AI Integration
|
||||
| Feature | Description | Status |
|
||||
@@ -407,4 +407,4 @@ Execute **pnpm run commit** to invoke _git commit_ interaction, complete informa
|
||||
<p>
|
||||
<strong>Let's build a better instant messaging experience together 🚀</strong>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
<!-- 🛠️ 技术栈 -->
|
||||
<div align="center">
|
||||
<h3>🛠️ 技术栈</h3>
|
||||
|
||||
|
||||
<p>
|
||||
<img src="https://img.shields.io/badge/Vue3-35495E?logo=vue.js&logoColor=4FC08D">
|
||||
<img src="https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=fff">
|
||||
@@ -230,7 +230,7 @@ HuLa 是一款基于 Tauri、Vite 7、Vue 3 和 TypeScript 构建的即时通讯
|
||||
| 🪟 | 多窗口管理 |  |
|
||||
| 🔔 | 系统托盘通知 |  |
|
||||
| 📷 | 图片查看器 |  |
|
||||
| ✂️ | 截图功能 |  |
|
||||
| ✂️ | 截图功能 |  |
|
||||
| 📁 | 文件上传(七牛云) |  |
|
||||
| 🔄 | 自动更新系统 |  |
|
||||
|
||||
@@ -238,7 +238,7 @@ HuLa 是一款基于 Tauri、Vite 7、Vue 3 和 TypeScript 构建的即时通讯
|
||||
| 功能 | 描述 | 状态 |
|
||||
|------|------|------|
|
||||
| 💻 | Windows/macOS/Linux |  |
|
||||
| 📱 | iOS/Android 适配 |  |
|
||||
| 📱 | iOS/Android 适配 | -ee9f20?style=flat&labelColor=fef7e6&color=ee9f20) |
|
||||
|
||||
### 🤖 AI 集成
|
||||
| 功能 | 描述 | 状态 |
|
||||
|
||||
1
biome.json
vendored
1
biome.json
vendored
@@ -10,6 +10,7 @@
|
||||
"!src/typings/*.d.ts",
|
||||
"!src-tauri/*",
|
||||
"!node_modules/*",
|
||||
"!tauri-plugin-hula/*",
|
||||
"!dist/*"
|
||||
]
|
||||
},
|
||||
|
||||
12
scripts/interactive-build-inquirer.js
vendored
12
scripts/interactive-build-inquirer.js
vendored
@@ -250,7 +250,7 @@ function getDebugOptions() {
|
||||
}
|
||||
|
||||
// 执行打包命令
|
||||
async function executeBuild(command, description, isDebug = false) {
|
||||
async function executeBuild(command, isDebug = false) {
|
||||
// 如果是调试模式,添加 --debug 参数
|
||||
const finalCommand = isDebug ? `${command} --debug` : command
|
||||
const [cmd, ...args] = finalCommand.split(' ')
|
||||
@@ -324,7 +324,7 @@ async function selectDebugMode() {
|
||||
}
|
||||
|
||||
// 选择包格式的函数
|
||||
async function selectBundle(selectedPlatform, platformOptions) {
|
||||
async function selectBundle(selectedPlatform) {
|
||||
const bundleOptions = getBundleOptions(selectedPlatform)
|
||||
|
||||
if (bundleOptions.length === 0) {
|
||||
@@ -360,16 +360,14 @@ async function selectBundle(selectedPlatform, platformOptions) {
|
||||
|
||||
async function main() {
|
||||
try {
|
||||
const currentPlatform = getCurrentPlatform()
|
||||
|
||||
// 主循环
|
||||
while (true) {
|
||||
// 第一步:选择平台
|
||||
const { selectedPlatform, platformOptions } = await selectPlatform()
|
||||
const { selectedPlatform } = await selectPlatform()
|
||||
|
||||
// 第二步:选择包格式
|
||||
while (true) {
|
||||
const bundleResult = await selectBundle(selectedPlatform, platformOptions)
|
||||
const bundleResult = await selectBundle(selectedPlatform)
|
||||
|
||||
// 如果返回 'back',返回平台选择
|
||||
if (bundleResult === 'back') {
|
||||
@@ -387,7 +385,7 @@ async function main() {
|
||||
|
||||
// 执行打包命令
|
||||
try {
|
||||
const exitCode = await executeBuild(bundleResult.command, bundleResult.name, debugResult)
|
||||
const exitCode = await executeBuild(bundleResult.command, debugResult)
|
||||
process.exit(exitCode)
|
||||
} catch (error) {
|
||||
console.error(`\n❌ 执行错误: ${error.message}`)
|
||||
|
||||
14
src-tauri/Cargo.lock
generated
14
src-tauri/Cargo.lock
generated
@@ -2894,19 +2894,21 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "hyper"
|
||||
version = "1.6.0"
|
||||
version = "1.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80"
|
||||
checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e"
|
||||
dependencies = [
|
||||
"atomic-waker",
|
||||
"bytes",
|
||||
"futures-channel",
|
||||
"futures-util",
|
||||
"futures-core",
|
||||
"h2 0.4.12",
|
||||
"http 1.3.1",
|
||||
"http-body 1.0.1",
|
||||
"httparse",
|
||||
"itoa",
|
||||
"pin-project-lite",
|
||||
"pin-utils",
|
||||
"smallvec",
|
||||
"tokio",
|
||||
"want",
|
||||
@@ -2933,7 +2935,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58"
|
||||
dependencies = [
|
||||
"http 1.3.1",
|
||||
"hyper 1.6.0",
|
||||
"hyper 1.7.0",
|
||||
"hyper-util",
|
||||
"rustls 0.23.31",
|
||||
"rustls-pki-types",
|
||||
@@ -2956,7 +2958,7 @@ dependencies = [
|
||||
"futures-util",
|
||||
"http 1.3.1",
|
||||
"http-body 1.0.1",
|
||||
"hyper 1.6.0",
|
||||
"hyper 1.7.0",
|
||||
"ipnet",
|
||||
"libc",
|
||||
"percent-encoding",
|
||||
@@ -5533,7 +5535,7 @@ dependencies = [
|
||||
"http 1.3.1",
|
||||
"http-body 1.0.1",
|
||||
"http-body-util",
|
||||
"hyper 1.6.0",
|
||||
"hyper 1.7.0",
|
||||
"hyper-rustls 0.27.7",
|
||||
"hyper-util",
|
||||
"js-sys",
|
||||
|
||||
2
src-tauri/gen/schemas/acl-manifests.json
vendored
2
src-tauri/gen/schemas/acl-manifests.json
vendored
File diff suppressed because one or more lines are too long
@@ -121,6 +121,7 @@ import { join } from '@tauri-apps/api/path'
|
||||
import { WebviewWindow } from '@tauri-apps/api/webviewWindow'
|
||||
import { open } from '@tauri-apps/plugin-dialog'
|
||||
import { copyFile, readFile } from '@tauri-apps/plugin-fs'
|
||||
import { type } from '@tauri-apps/plugin-os'
|
||||
import {
|
||||
CHAT_HEADER_HEIGHT,
|
||||
CHAT_MAIN_MIN_HEIGHT,
|
||||
@@ -544,10 +545,8 @@ const handleCap = async () => {
|
||||
await captureWindow.setPosition(new LogicalPosition(0, 0))
|
||||
|
||||
// 在 macOS 上设置窗口级别以覆盖菜单栏
|
||||
try {
|
||||
if (type() === 'macos') {
|
||||
await invoke('set_window_level_above_menubar', { windowLabel: 'capture' })
|
||||
} catch (error) {
|
||||
console.warn('设置窗口级别失败,但继续执行:', error)
|
||||
}
|
||||
|
||||
await captureWindow.show()
|
||||
|
||||
@@ -3,6 +3,7 @@ import { LogicalPosition, LogicalSize } from '@tauri-apps/api/dpi'
|
||||
import { emitTo, listen } from '@tauri-apps/api/event'
|
||||
import { WebviewWindow } from '@tauri-apps/api/webviewWindow'
|
||||
import { register, unregister } from '@tauri-apps/plugin-global-shortcut'
|
||||
import { type } from '@tauri-apps/plugin-os'
|
||||
import { useTauriListener } from '@/hooks/useTauriListener'
|
||||
import { useSettingStore } from '@/stores/setting.ts'
|
||||
|
||||
@@ -81,7 +82,9 @@ export const useGlobalShortcut = () => {
|
||||
await captureWindow.setPosition(new LogicalPosition(0, 0))
|
||||
|
||||
// 在 macOS 上设置窗口级别以覆盖菜单栏
|
||||
await invoke('set_window_level_above_menubar', { windowLabel: 'capture' })
|
||||
if (type() === 'macos') {
|
||||
await invoke('set_window_level_above_menubar', { windowLabel: 'capture' })
|
||||
}
|
||||
|
||||
await captureWindow.show()
|
||||
await captureWindow.setFocus()
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { onMounted, onUnmounted } from 'vue'
|
||||
import { type } from '@tauri-apps/plugin-os'
|
||||
import { useMobileStore } from '@/stores/mobile'
|
||||
import { onMounted, onUnmounted } from 'vue'
|
||||
import type { IKeyboardDidShowDetail } from '@/mobile/mobile-client/interface/adapter'
|
||||
import { useMobileStore } from '@/stores/mobile'
|
||||
|
||||
export function useMobile() {
|
||||
const mobileStore = useMobileStore()
|
||||
|
||||
@@ -46,7 +46,6 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, nextTick, onMounted } from 'vue'
|
||||
import { useMobileStore } from '@/stores/mobile'
|
||||
|
||||
// ==== 类型声明(让 send 有类型提示)====
|
||||
@@ -96,7 +95,7 @@ const handleSend = async () => {
|
||||
|
||||
// 关键:同步 useMsgInput 的 msgInput.value
|
||||
if ('msgInput' in msgInput) {
|
||||
// @ts-ignore
|
||||
// @ts-expect-error
|
||||
msgInput.msgInput.value = messageInputDom.value.innerHTML
|
||||
}
|
||||
|
||||
|
||||
@@ -138,6 +138,7 @@ import { ref } from 'vue'
|
||||
import PullToRefresh from '#/components/PullToRefresh.vue'
|
||||
import addFriendIcon from '@/assets/mobile/chat-home/add-friend.webp'
|
||||
import groupChatIcon from '@/assets/mobile/chat-home/group-chat.webp'
|
||||
import { useMessage } from '@/hooks/useMessage.ts'
|
||||
import SafeAreaPlaceholder from '@/mobile/components/placeholders/SafeAreaPlaceholder.vue'
|
||||
import NavBar from '@/mobile/layout/navBar/index.vue'
|
||||
import { IsAllUserEnum } from '@/services/types.ts'
|
||||
@@ -145,7 +146,6 @@ import { useChatStore } from '@/stores/chat.ts'
|
||||
import { useUserStore } from '@/stores/user.ts'
|
||||
import { AvatarUtils } from '@/utils/AvatarUtils'
|
||||
import { formatTimestamp } from '@/utils/ComputedTime.ts'
|
||||
import { useMessage } from '@/hooks/useMessage.ts'
|
||||
|
||||
const chatStore = useChatStore()
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
<template #header-extra>
|
||||
<span class="text-(10px #707070)">{{ onlineCount }}/{{ contactStore.contactsList.length }}</span>
|
||||
</template>
|
||||
<n-scrollbar style="max-height: calc(100vh - 220px)">
|
||||
<n-scrollbar style="max-height: calc(100vh - 270px)">
|
||||
<!-- 用户框 多套一层div来移除默认的右键事件然后覆盖掉因为margin空隙而导致右键可用 -->
|
||||
<div @contextmenu.stop="$event.preventDefault()">
|
||||
<n-flex
|
||||
@@ -91,7 +91,7 @@
|
||||
<template #header-extra>
|
||||
<span class="text-(10px #707070)">{{ groupChatList.length }}</span>
|
||||
</template>
|
||||
<n-scrollbar style="max-height: calc(100vh - 220px)">
|
||||
<n-scrollbar style="max-height: calc(100vh - 270px)">
|
||||
<div
|
||||
@click="handleClick(item.roomId, RoomTypeEnum.GROUP)"
|
||||
:class="{ active: activeItem === item.roomId }"
|
||||
|
||||
Reference in New Issue
Block a user