Compare commits

..

10 Commits

Author SHA1 Message Date
BTMuli
2807ce48a6 🚸 统一UIGF导出交互,导出前选择导出路径 2026-03-22 00:40:41 +08:00
BTMuli
f9b64c5c6a 🚸 管理员模式下侧边栏启动仍然为启动游戏 2026-03-22 00:38:51 +08:00
BTMuli
1038c9cdb7 ⬆️ 更新依赖 2026-03-22 00:38:04 +08:00
BTMuli
87f9df80a5 💫 添加交互效果 2026-03-17 21:39:03 +08:00
BTMuli
d8f4a4c2bf 🚸 调整参数,处理点击事件 2026-03-14 13:25:34 +08:00
BTMuli
3537751d65 添加用户个人页面跳转功能 2026-03-14 12:23:31 +08:00
BTMuli
66f77da754 🐛 修复角色生日判断逻辑,优化返回结果 2026-03-14 00:14:32 +08:00
BTMuli
7da01c117d 🩹 补充首页mini参数&组件参数处理 2026-03-13 20:27:48 +08:00
BTMuli
722b5598fe 🐛 调整snackbar层级,修复兑换码浮窗分享异常 2026-03-13 20:20:49 +08:00
BTMuli
ba962ae4c6 ⬆️ 更新依赖,使用vite8 2026-03-13 20:19:40 +08:00
32 changed files with 1091 additions and 890 deletions

View File

@@ -3,7 +3,7 @@
"version": "0.9.8",
"description": "Game Tool for GenshinImpact player",
"private": true,
"packageManager": "pnpm@10.32.0",
"packageManager": "pnpm@10.32.1",
"type": "module",
"scripts": {
"build": "tsx scripts/auto-build.ts",
@@ -72,9 +72,9 @@
"dependencies": {
"@date-fns/tz": "^1.4.1",
"@mdi/font": "7.4.47",
"@sentry/core": "^10.43.0",
"@sentry/core": "^10.45.0",
"@sentry/vite-plugin": "^5.1.1",
"@sentry/vue": "^10.43.0",
"@sentry/vue": "^10.45.0",
"@skipperndt/plugin-machine-uid": "^0.1.3",
"@tauri-apps/api": "^2.10.1",
"@tauri-apps/plugin-cli": "^2.4.1",
@@ -107,8 +107,8 @@
"vue": "^3.5.30",
"vue-echarts": "^8.0.1",
"vue-json-pretty": "^2.6.0",
"vue-router": "^5.0.3",
"vuetify": "^4.0.2",
"vue-router": "^5.0.4",
"vuetify": "^4.0.3",
"wcag-color": "^1.1.1"
},
"devDependencies": {
@@ -120,9 +120,9 @@
"@types/fs-extra": "^11.0.4",
"@types/js-md5": "^0.8.0",
"@types/json-bigint": "^1.0.4",
"@types/node": "^25.4.0",
"@typescript-eslint/parser": "^8.57.0",
"@typescript/native-preview": "7.0.0-dev.20260222.1",
"@types/node": "^25.5.0",
"@typescript-eslint/parser": "^8.57.1",
"@typescript/native-preview": "7.0.0-dev.20260321.1",
"@vitejs/plugin-vue": "^6.0.5",
"app-root-path": "^3.1.0",
"concurrently": "^9.2.1",
@@ -138,27 +138,27 @@
"globals": "^17.4.0",
"husky": "^9.1.7",
"jsonc-eslint-parser": "^3.1.0",
"lint-staged": "16.3.3",
"oxlint": "^1.54.0",
"lint-staged": "16.4.0",
"oxlint": "^1.56.0",
"postcss-preset-env": "^11.2.0",
"prettier": "3.8.1",
"stylelint": "^17.4.0",
"stylelint": "^17.5.0",
"stylelint-config-idiomatic-order": "^10.0.0",
"stylelint-config-standard-scss": "^17.0.0",
"stylelint-config-standard-vue": "^1.0.0",
"stylelint-declaration-block-no-ignored-properties": "^3.0.0",
"stylelint-high-performance-animation": "^2.0.0",
"stylelint-order": "^8.0.0",
"stylelint-order": "^8.1.1",
"stylelint-prettier": "^5.0.3",
"stylelint-scss": "^7.0.0",
"tsx": "^4.21.0",
"typescript": "^5.9.3",
"typescript-eslint": "^8.57.0",
"vite": "npm:rolldown-vite@^7.3.1",
"vite-plugin-vue-devtools": "^8.0.7",
"typescript-eslint": "^8.57.1",
"vite": "^8.0.1",
"vite-plugin-vue-devtools": "^8.1.0",
"vite-plugin-vuetify": "^2.1.3",
"vue-eslint-parser": "^10.4.0",
"vue-tsc": "^3.2.5",
"vue-tsc": "^3.2.6",
"yaml-eslint-parser": "^2.0.0"
}
}

1204
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

355
src-tauri/Cargo.lock generated
View File

@@ -293,9 +293,9 @@ dependencies = [
[[package]]
name = "anstream"
version = "0.6.21"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a"
checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d"
dependencies = [
"anstyle",
"anstyle-parse",
@@ -308,15 +308,15 @@ dependencies = [
[[package]]
name = "anstyle"
version = "1.0.13"
version = "1.0.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78"
checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000"
[[package]]
name = "anstyle-parse"
version = "0.2.7"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2"
checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e"
dependencies = [
"utf8parse",
]
@@ -720,19 +720,20 @@ dependencies = [
[[package]]
name = "borsh"
version = "1.6.0"
version = "1.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f"
checksum = "cfd1e3f8955a5d7de9fab72fc8373fade9fb8a703968cb200ae3dc6cf08e185a"
dependencies = [
"borsh-derive",
"bytes",
"cfg_aliases",
]
[[package]]
name = "borsh-derive"
version = "1.6.0"
version = "1.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0686c856aa6aac0c4498f936d7d6a02df690f614c03e4d906d1018062b5c5e2c"
checksum = "bfcfdc083699101d5a7965e49925975f2f55060f94f9a05e7187be95d530ca59"
dependencies = [
"once_cell",
"proc-macro-crate 3.5.0",
@@ -913,9 +914,9 @@ dependencies = [
[[package]]
name = "cc"
version = "1.2.56"
version = "1.2.57"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2"
checksum = "7a0dd1ca384932ff3641c8718a02769f1698e7563dc6974ffd03346116310423"
dependencies = [
"find-msvc-tools",
"jobserver",
@@ -978,18 +979,18 @@ dependencies = [
[[package]]
name = "clap"
version = "4.5.60"
version = "4.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2797f34da339ce31042b27d23607e051786132987f595b02ba4f6a6dffb7030a"
checksum = "b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351"
dependencies = [
"clap_builder",
]
[[package]]
name = "clap_builder"
version = "4.5.60"
version = "4.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24a241312cea5059b13574bb9b3861cabf758b879c15190b37b6d6fd63ab6876"
checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f"
dependencies = [
"anstream",
"anstyle",
@@ -999,9 +1000,9 @@ dependencies = [
[[package]]
name = "clap_lex"
version = "1.0.0"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3a822ea5bc7590f9d40f1ba12c0dc3c2760f3482c6984db1573ad11031420831"
checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9"
[[package]]
name = "color_quant"
@@ -1011,9 +1012,9 @@ checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b"
[[package]]
name = "colorchoice"
version = "1.0.4"
version = "1.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75"
checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570"
[[package]]
name = "combine"
@@ -1307,9 +1308,9 @@ dependencies = [
[[package]]
name = "darling"
version = "0.21.3"
version = "0.23.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0"
checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d"
dependencies = [
"darling_core",
"darling_macro",
@@ -1317,11 +1318,10 @@ dependencies = [
[[package]]
name = "darling_core"
version = "0.21.3"
version = "0.23.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4"
checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0"
dependencies = [
"fnv",
"ident_case",
"proc-macro2",
"quote",
@@ -1331,9 +1331,9 @@ dependencies = [
[[package]]
name = "darling_macro"
version = "0.21.3"
version = "0.23.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81"
checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d"
dependencies = [
"darling_core",
"quote",
@@ -1363,7 +1363,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb"
dependencies = [
"const-oid",
"pem-rfc7468",
"pem-rfc7468 0.7.0",
"zeroize",
]
[[package]]
name = "der"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "71fd89660b2dc699704064e59e9dba0147b903e85319429e131620d022be411b"
dependencies = [
"pem-rfc7468 1.0.0",
"zeroize",
]
@@ -1512,17 +1522,17 @@ dependencies = [
[[package]]
name = "dom_query"
version = "0.25.1"
version = "0.27.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4d9c2e7f1d22d0f2ce07626d259b8a55f4a47cb0938d4006dd8ae037f17d585e"
checksum = "521e380c0c8afb8d9a1e83a1822ee03556fc3e3e7dbc1fd30be14e37f9cb3f89"
dependencies = [
"bit-set",
"cssparser 0.36.0",
"foldhash 0.2.0",
"html5ever 0.36.1",
"html5ever 0.38.0",
"precomputed-hash",
"selectors 0.35.0",
"tendril",
"selectors 0.36.1",
"tendril 0.5.0",
]
[[package]]
@@ -1578,9 +1588,9 @@ dependencies = [
[[package]]
name = "embed-resource"
version = "3.0.6"
version = "3.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "55a075fc573c64510038d7ee9abc7990635863992f83ebc52c8b433b8411a02e"
checksum = "47ec73ddcf6b7f23173d5c3c5a32b5507dc0a734de7730aa14abc5d5e296bb5f"
dependencies = [
"cc",
"memchr",
@@ -2500,12 +2510,12 @@ dependencies = [
[[package]]
name = "html5ever"
version = "0.36.1"
version = "0.38.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6452c4751a24e1b99c3260d505eaeee76a050573e61f30ac2c924ddc7236f01e"
checksum = "1054432bae2f14e0061e33d23402fbaa67a921d319d56adc6bcf887ddad1cbc2"
dependencies = [
"log",
"markup5ever 0.36.1",
"markup5ever 0.38.0",
]
[[package]]
@@ -2794,9 +2804,9 @@ dependencies = [
[[package]]
name = "image"
version = "0.25.9"
version = "0.25.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6506c6c10786659413faa717ceebcb8f70731c0a60cbae39795fdf114519c1a"
checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104"
dependencies = [
"bytemuck",
"byteorder-lite",
@@ -2812,8 +2822,8 @@ dependencies = [
"rayon",
"rgb",
"tiff",
"zune-core 0.5.1",
"zune-jpeg 0.5.12",
"zune-core",
"zune-jpeg",
]
[[package]]
@@ -2933,9 +2943,9 @@ dependencies = [
[[package]]
name = "itoa"
version = "1.0.17"
version = "1.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2"
checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
[[package]]
name = "javascriptcore-rs"
@@ -3250,17 +3260,17 @@ dependencies = [
"phf_codegen 0.11.3",
"string_cache 0.8.9",
"string_cache_codegen 0.5.4",
"tendril",
"tendril 0.4.3",
]
[[package]]
name = "markup5ever"
version = "0.36.1"
version = "0.38.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c3294c4d74d0742910f8c7b466f44dda9eb2d5742c1e430138df290a1e8451c"
checksum = "8983d30f2915feeaaab2d6babdd6bc7e9ed1a00b66b5e6d74df19aa9c0e91862"
dependencies = [
"log",
"tendril",
"tendril 0.5.0",
"web_atoms",
]
@@ -3346,9 +3356,9 @@ dependencies = [
[[package]]
name = "moxcms"
version = "0.7.11"
version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac9557c559cd6fc9867e122e20d2cbefc9ca29d80d027a8e39310920ed2f0a97"
checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b"
dependencies = [
"num-traits",
"pxfm",
@@ -3561,9 +3571,9 @@ dependencies = [
[[package]]
name = "num_enum"
version = "0.7.5"
version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c"
checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26"
dependencies = [
"num_enum_derive",
"rustversion",
@@ -3571,9 +3581,9 @@ dependencies = [
[[package]]
name = "num_enum_derive"
version = "0.7.5"
version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7"
checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8"
dependencies = [
"proc-macro-crate 3.5.0",
"proc-macro2",
@@ -3797,9 +3807,9 @@ dependencies = [
[[package]]
name = "once_cell"
version = "1.21.3"
version = "1.21.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
[[package]]
name = "once_cell_polyfill"
@@ -3821,9 +3831,9 @@ dependencies = [
[[package]]
name = "openssl"
version = "0.10.75"
version = "0.10.76"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328"
checksum = "951c002c75e16ea2c65b8c7e4d3d51d5530d8dfa7d060b4776828c88cfb18ecf"
dependencies = [
"bitflags 2.11.0",
"cfg-if",
@@ -3853,9 +3863,9 @@ checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe"
[[package]]
name = "openssl-sys"
version = "0.9.111"
version = "0.9.112"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321"
checksum = "57d55af3b3e226502be1526dfdba67ab0e9c96fc293004e79576b2b9edb0dbdb"
dependencies = [
"cc",
"libc",
@@ -3986,6 +3996,15 @@ dependencies = [
"base64ct",
]
[[package]]
name = "pem-rfc7468"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a6305423e0e7738146434843d1694d621cce767262b2a86910beab705e4493d9"
dependencies = [
"base64ct",
]
[[package]]
name = "percent-encoding"
version = "2.3.2"
@@ -4208,7 +4227,7 @@ version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f"
dependencies = [
"der",
"der 0.7.10",
"pkcs8",
"spki",
]
@@ -4219,7 +4238,7 @@ version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
dependencies = [
"der",
"der 0.7.10",
"spki",
]
@@ -4354,7 +4373,7 @@ version = "3.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f"
dependencies = [
"toml_edit 0.25.4+spec-1.1.0",
"toml_edit 0.25.5+spec-1.1.0",
]
[[package]]
@@ -4751,9 +4770,9 @@ dependencies = [
[[package]]
name = "ravif"
version = "0.12.0"
version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef69c1990ceef18a116855938e74793a5f7496ee907562bd0857b6ac734ab285"
checksum = "e52310197d971b0f5be7fe6b57530dcd27beb35c1b013f29d66c1ad73fbbcc45"
dependencies = [
"avif-serialize",
"imgref",
@@ -4894,21 +4913,17 @@ dependencies = [
"cookie",
"cookie_store",
"encoding_rs",
"futures-channel",
"futures-core",
"futures-util",
"h2",
"http 1.4.0",
"http-body",
"http-body-util",
"hyper",
"hyper-rustls",
"hyper-tls",
"hyper-util",
"js-sys",
"log",
"mime",
"native-tls",
"percent-encoding",
"pin-project-lite",
"quinn",
@@ -4919,7 +4934,6 @@ dependencies = [
"serde_urlencoded",
"sync_wrapper",
"tokio",
"tokio-native-tls",
"tokio-rustls",
"tower",
"tower-http",
@@ -4939,21 +4953,28 @@ checksum = "ab3f43e3283ab1488b624b44b0e988d0acea0b3214e694730a055cb6b2efa801"
dependencies = [
"base64 0.22.1",
"bytes",
"futures-channel",
"futures-core",
"futures-util",
"h2",
"http 1.4.0",
"http-body",
"http-body-util",
"hyper",
"hyper-rustls",
"hyper-tls",
"hyper-util",
"js-sys",
"log",
"native-tls",
"percent-encoding",
"pin-project-lite",
"rustls-pki-types",
"serde",
"serde_json",
"sync_wrapper",
"tokio",
"tokio-native-tls",
"tokio-util",
"tower",
"tower-http",
@@ -5144,9 +5165,9 @@ dependencies = [
[[package]]
name = "rustls-webpki"
version = "0.103.9"
version = "0.103.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53"
checksum = "df33b2b81ac578cabaf06b89b0631153a3f416b0a886e8a7a1707fb51abbd1ef"
dependencies = [
"ring",
"rustls-pki-types",
@@ -5289,9 +5310,9 @@ dependencies = [
[[package]]
name = "selectors"
version = "0.35.0"
version = "0.36.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "93fdfed56cd634f04fe8b9ddf947ae3dc493483e819593d2ba17df9ad05db8b2"
checksum = "c5d9c0c92a92d33f08817311cf3f2c29a3538a8240e94a6a3c622ce652d7e00c"
dependencies = [
"bitflags 2.11.0",
"cssparser 0.36.0",
@@ -5318,14 +5339,14 @@ dependencies = [
[[package]]
name = "sentry"
version = "0.46.2"
version = "0.47.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d92d893ba7469d361a6958522fa440e4e2bc8bf4c5803cd1bf40b9af63f8f9a8"
checksum = "eb25f439f97d26fea01d717fa626167ceffcd981addaa670001e70505b72acbb"
dependencies = [
"cfg_aliases",
"httpdate",
"native-tls",
"reqwest 0.12.28",
"reqwest 0.13.2",
"sentry-actix",
"sentry-backtrace",
"sentry-contexts",
@@ -5339,9 +5360,9 @@ dependencies = [
[[package]]
name = "sentry-actix"
version = "0.46.2"
version = "0.47.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56cb150fd6b55b3023714a3aaa1e3bdadfd44f164efc54fad69efc69aac36887"
checksum = "9453d18fc9a45d841636004aad50288d80cc07c34a9e88cd4397cb66e6356f67"
dependencies = [
"actix-http",
"actix-web",
@@ -5352,9 +5373,9 @@ dependencies = [
[[package]]
name = "sentry-backtrace"
version = "0.46.2"
version = "0.47.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f8784d0a27b5cd4b5f75769ffc84f0b7580e3c35e1af9cd83cb90b612d769cc"
checksum = "46a8c2c1bd5c1f735e84f28b48e7d72efcaafc362b7541bc8253e60e8fcdffc6"
dependencies = [
"backtrace",
"regex",
@@ -5363,9 +5384,9 @@ dependencies = [
[[package]]
name = "sentry-contexts"
version = "0.46.2"
version = "0.47.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e5eb42f4cd4f9fdfec9e3b07b25a4c9769df83d218a7e846658984d5948ad3e"
checksum = "9b88a90baa654d7f0e1f4b667f6b434293d9f72c71bef16b197c76af5b7d5803"
dependencies = [
"hostname",
"libc",
@@ -5377,9 +5398,9 @@ dependencies = [
[[package]]
name = "sentry-core"
version = "0.46.2"
version = "0.47.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b0b1e7ca40f965db239da279bf278d87b7407469b98835f27f0c8e59ed189b06"
checksum = "0ac170a5bba8bec6e3339c90432569d89641fa7a3d3e4f44987d24f0762e6adf"
dependencies = [
"rand 0.9.2",
"sentry-types",
@@ -5390,9 +5411,9 @@ dependencies = [
[[package]]
name = "sentry-debug-images"
version = "0.46.2"
version = "0.47.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "002561e49ea3a9de316e2efadc40fae553921b8ff41448f02ea85fd135a778d6"
checksum = "dd9646a972b57896d4a92ed200cf76139f8e30b3cfd03b6662ae59926d26633c"
dependencies = [
"findshlibs",
"sentry-core",
@@ -5400,9 +5421,9 @@ dependencies = [
[[package]]
name = "sentry-panic"
version = "0.46.2"
version = "0.47.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8906f8be87aea5ac7ef937323fb655d66607427f61007b99b7cb3504dc5a156c"
checksum = "6127d3d304ba5ce0409401e85aae538e303a569f8dbb031bf64f9ba0f7174346"
dependencies = [
"sentry-backtrace",
"sentry-core",
@@ -5410,9 +5431,9 @@ dependencies = [
[[package]]
name = "sentry-tracing"
version = "0.46.2"
version = "0.47.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b07eefe04486316c57aba08ab53dd44753c25102d1d3fe05775cc93a13262d9"
checksum = "27701acc51e68db5281802b709010395bfcbcb128b1d0a4e5873680d3b47ff0c"
dependencies = [
"bitflags 2.11.0",
"sentry-backtrace",
@@ -5423,9 +5444,9 @@ dependencies = [
[[package]]
name = "sentry-types"
version = "0.46.2"
version = "0.47.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "567711f01f86a842057e1fc17779eba33a336004227e1a1e7e6cc2599e22e259"
checksum = "56780cb5597d676bf22e6c11d1f062eb4def46390ea3bfb047bcbcf7dfd19bdb"
dependencies = [
"debugid",
"hex",
@@ -5547,9 +5568,9 @@ dependencies = [
[[package]]
name = "serde_with"
version = "3.17.0"
version = "3.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "381b283ce7bc6b476d903296fb59d0d36633652b633b27f64db4fb46dcbfc3b9"
checksum = "dd5414fad8e6907dbdd5bc441a50ae8d6e26151a03b1de04d89a5576de61d01f"
dependencies = [
"base64 0.22.1",
"chrono",
@@ -5566,9 +5587,9 @@ dependencies = [
[[package]]
name = "serde_with_macros"
version = "3.17.0"
version = "3.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a6d4e30573c8cb306ed6ab1dca8423eec9a463ea0e155f45399455e0368b27e0"
checksum = "d3db8978e608f1fe7357e211969fd9abdcae80bac1ba7a3369bb7eb6b404eb65"
dependencies = [
"darling",
"proc-macro2",
@@ -5841,7 +5862,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d"
dependencies = [
"base64ct",
"der",
"der 0.7.10",
]
[[package]]
@@ -6413,7 +6434,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-cli"
version = "2.4.1"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#ab037b70d6fb54f1ad07d5fe21c41bd1997b34dd"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#99c3e37b54c115e8712f67c2b53ed1f2f0b4aae6"
dependencies = [
"clap",
"log",
@@ -6427,7 +6448,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-deep-link"
version = "2.4.7"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#ab037b70d6fb54f1ad07d5fe21c41bd1997b34dd"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#99c3e37b54c115e8712f67c2b53ed1f2f0b4aae6"
dependencies = [
"dunce",
"plist",
@@ -6447,7 +6468,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-dialog"
version = "2.6.0"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#ab037b70d6fb54f1ad07d5fe21c41bd1997b34dd"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#99c3e37b54c115e8712f67c2b53ed1f2f0b4aae6"
dependencies = [
"log",
"raw-window-handle",
@@ -6464,7 +6485,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-fs"
version = "2.4.5"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#ab037b70d6fb54f1ad07d5fe21c41bd1997b34dd"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#99c3e37b54c115e8712f67c2b53ed1f2f0b4aae6"
dependencies = [
"anyhow",
"dunce",
@@ -6487,7 +6508,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-http"
version = "2.5.7"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#ab037b70d6fb54f1ad07d5fe21c41bd1997b34dd"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#99c3e37b54c115e8712f67c2b53ed1f2f0b4aae6"
dependencies = [
"bytes",
"cookie_store",
@@ -6510,7 +6531,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-log"
version = "2.8.0"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#ab037b70d6fb54f1ad07d5fe21c41bd1997b34dd"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#99c3e37b54c115e8712f67c2b53ed1f2f0b4aae6"
dependencies = [
"android_logger",
"byte-unit",
@@ -6546,7 +6567,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-notification"
version = "2.3.3"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#ab037b70d6fb54f1ad07d5fe21c41bd1997b34dd"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#99c3e37b54c115e8712f67c2b53ed1f2f0b4aae6"
dependencies = [
"log",
"notify-rust",
@@ -6564,7 +6585,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-opener"
version = "2.5.3"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#ab037b70d6fb54f1ad07d5fe21c41bd1997b34dd"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#99c3e37b54c115e8712f67c2b53ed1f2f0b4aae6"
dependencies = [
"dunce",
"glob",
@@ -6585,7 +6606,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-os"
version = "2.3.2"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#ab037b70d6fb54f1ad07d5fe21c41bd1997b34dd"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#99c3e37b54c115e8712f67c2b53ed1f2f0b4aae6"
dependencies = [
"gethostname",
"log",
@@ -6602,7 +6623,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-process"
version = "2.3.1"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#ab037b70d6fb54f1ad07d5fe21c41bd1997b34dd"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#99c3e37b54c115e8712f67c2b53ed1f2f0b4aae6"
dependencies = [
"tauri",
"tauri-plugin",
@@ -6611,7 +6632,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-single-instance"
version = "2.4.0"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#ab037b70d6fb54f1ad07d5fe21c41bd1997b34dd"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#99c3e37b54c115e8712f67c2b53ed1f2f0b4aae6"
dependencies = [
"serde",
"serde_json",
@@ -6625,7 +6646,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-sql"
version = "2.3.2"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#ab037b70d6fb54f1ad07d5fe21c41bd1997b34dd"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#99c3e37b54c115e8712f67c2b53ed1f2f0b4aae6"
dependencies = [
"futures-core",
"indexmap 2.13.0",
@@ -6771,9 +6792,9 @@ dependencies = [
[[package]]
name = "tempfile"
version = "3.26.0"
version = "3.27.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "82a72c767771b47409d2345987fda8628641887d5466101319899796367354a0"
checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
dependencies = [
"fastrand",
"getrandom 0.4.2",
@@ -6793,6 +6814,16 @@ dependencies = [
"utf-8",
]
[[package]]
name = "tendril"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c4790fc369d5a530f4b544b094e31388b9b3a37c0f4652ade4505945f5660d24"
dependencies = [
"new_debug_unreachable",
"utf-8",
]
[[package]]
name = "thiserror"
version = "1.0.69"
@@ -6835,16 +6866,16 @@ dependencies = [
[[package]]
name = "tiff"
version = "0.10.3"
version = "0.11.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af9605de7fee8d9551863fd692cce7637f548dbd9db9180fcc07ccc6d26c336f"
checksum = "b63feaf3343d35b6ca4d50483f94843803b0f51634937cc2ec519fc32232bc52"
dependencies = [
"fax",
"flate2",
"half",
"quick-error",
"weezl",
"zune-jpeg 0.4.21",
"zune-jpeg",
]
[[package]]
@@ -6901,9 +6932,9 @@ dependencies = [
[[package]]
name = "tinyvec"
version = "1.10.0"
version = "1.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa"
checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3"
dependencies = [
"tinyvec_macros",
]
@@ -7033,9 +7064,9 @@ dependencies = [
[[package]]
name = "toml_datetime"
version = "1.0.0+spec-1.1.0"
version = "1.0.1+spec-1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e"
checksum = "9b320e741db58cac564e26c607d3cc1fdc4a88fd36c879568c07856ed83ff3e9"
dependencies = [
"serde_core",
]
@@ -7066,30 +7097,30 @@ dependencies = [
[[package]]
name = "toml_edit"
version = "0.25.4+spec-1.1.0"
version = "0.25.5+spec-1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7193cbd0ce53dc966037f54351dbbcf0d5a642c7f0038c382ef9e677ce8c13f2"
checksum = "8ca1a40644a28bce036923f6a431df0b34236949d111cc07cb6dca830c9ef2e1"
dependencies = [
"indexmap 2.13.0",
"toml_datetime 1.0.0+spec-1.1.0",
"toml_datetime 1.0.1+spec-1.1.0",
"toml_parser",
"winnow 0.7.15",
"winnow 1.0.0",
]
[[package]]
name = "toml_parser"
version = "1.0.9+spec-1.1.0"
version = "1.0.10+spec-1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4"
checksum = "7df25b4befd31c4816df190124375d5a20c6b6921e2cad937316de3fccd63420"
dependencies = [
"winnow 0.7.15",
"winnow 1.0.0",
]
[[package]]
name = "toml_writer"
version = "1.0.6+spec-1.1.0"
version = "1.0.7+spec-1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607"
checksum = "f17aaa1c6e3dc22b1da4b6bba97d066e354c7945cac2f7852d4e4e7ca7a6b56d"
[[package]]
name = "tower"
@@ -7171,9 +7202,9 @@ dependencies = [
[[package]]
name = "tracing-subscriber"
version = "0.3.22"
version = "0.3.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e"
checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319"
dependencies = [
"tracing-core",
]
@@ -7220,9 +7251,9 @@ checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb"
[[package]]
name = "uds_windows"
version = "1.2.0"
version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "51b70b87d15e91f553711b40df3048faf27a7a04e01e0ddc0cf9309f0af7c2ca"
checksum = "f2f6fb2847f6742cd76af783a2a2c49e9375d0a111c7bef6f71cd9e738c72d6e"
dependencies = [
"memoffset",
"tempfile",
@@ -7326,26 +7357,26 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
[[package]]
name = "ureq"
version = "3.2.0"
version = "3.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fdc97a28575b85cfedf2a7e7d3cc64b3e11bd8ac766666318003abbacc7a21fc"
checksum = "dea7109cdcd5864d4eeb1b58a1648dc9bf520360d7af16ec26d0a9354bafcfc0"
dependencies = [
"base64 0.22.1",
"der",
"der 0.8.0",
"log",
"native-tls",
"percent-encoding",
"rustls-pki-types",
"ureq-proto",
"utf-8",
"utf8-zero",
"webpki-root-certs",
]
[[package]]
name = "ureq-proto"
version = "0.5.3"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d81f9efa9df032be5934a46a068815a10a042b494b6a58cb0a1a97bb5467ed6f"
checksum = "e994ba84b0bd1b1b0cf92878b7ef898a5c1760108fe7b6010327e274917a808c"
dependencies = [
"base64 0.22.1",
"http 1.4.0",
@@ -7390,6 +7421,12 @@ version = "0.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1292c0d970b54115d14f2492fe0170adf21d68a1de108eebc51c1df4f346a091"
[[package]]
name = "utf8-zero"
version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b8c0a043c9540bae7c578c88f91dda8bd82e59ae27c21baca69c8b191aaf5a6e"
[[package]]
name = "utf8_iter"
version = "1.0.4"
@@ -8328,6 +8365,15 @@ dependencies = [
"memchr",
]
[[package]]
name = "winnow"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a90e88e4667264a994d34e6d1ab2d26d398dcdca8b7f52bec8668957517fc7d8"
dependencies = [
"memchr",
]
[[package]]
name = "winreg"
version = "0.55.0"
@@ -8434,9 +8480,9 @@ checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9"
[[package]]
name = "wry"
version = "0.54.3"
version = "0.54.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a24eda84b5d488f99344e54b807138896cee8df0b2d16c793f1f6b80e6d8df1f"
checksum = "e5a8135d8676225e5744de000d4dff5a082501bf7db6a1c1495034f8c314edbc"
dependencies = [
"base64 0.22.1",
"block2",
@@ -8598,18 +8644,18 @@ dependencies = [
[[package]]
name = "zerocopy"
version = "0.8.42"
version = "0.8.47"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2578b716f8a7a858b7f02d5bd870c14bf4ddbbcf3a4c05414ba6503640505e3"
checksum = "efbb2a062be311f2ba113ce66f697a4dc589f85e78a4aea276200804cea0ed87"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
version = "0.8.42"
version = "0.8.47"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7e6cc098ea4d3bd6246687de65af3f920c430e236bee1e3bf2e441463f08a02f"
checksum = "0e8bc7269b54418e7aeeef514aa68f8690b8c0489a06b0136e5f57c4c5ccab89"
dependencies = [
"proc-macro2",
"quote",
@@ -8682,12 +8728,6 @@ version = "1.0.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
[[package]]
name = "zune-core"
version = "0.4.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a"
[[package]]
name = "zune-core"
version = "0.5.1"
@@ -8705,20 +8745,11 @@ dependencies = [
[[package]]
name = "zune-jpeg"
version = "0.4.21"
version = "0.5.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "29ce2c8a9384ad323cf564b67da86e21d3cfdff87908bc1223ed5c99bc792713"
checksum = "0b7a1c0af6e5d8d1363f4994b7a091ccf963d8b694f7da5b0b9cceb82da2c0a6"
dependencies = [
"zune-core 0.4.12",
]
[[package]]
name = "zune-jpeg"
version = "0.5.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "410e9ecef634c709e3831c2cfdb8d9c32164fae1c67496d5b68fff728eec37fe"
dependencies = [
"zune-core 0.5.1",
"zune-core",
]
[[package]]

View File

@@ -21,11 +21,11 @@ tauri-build = { version = "2.5.6", features = [] }
[dependencies]
chrono = "0.4.44"
image = "0.25.9"
image = "0.25.10"
log = "0.4.29"
prost = "=0.14.1"
prost-types = "=0.14.1"
sentry = { version = "0.46.2", features = ["backtrace", "panic"] }
sentry = { version = "0.47.0", features = ["backtrace", "panic"] }
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.149"
tauri = { version = "2.10.3", features = ["tray-icon"] }

View File

@@ -1,6 +1,6 @@
/**
* 全局样式文件
* @since Beta v0.9.6
* @since Beta v0.9.9
*/
@use "fonts/index";
@@ -54,7 +54,7 @@
--tgi-geetest: 100;
--tgi-loading: 100;
--tgi-hyperlink: 100;
--tgi-snackbar: 999;
--tgi-snackbar: 9999;
}
/**

View File

@@ -1,8 +1,8 @@
<!-- 版块组件项 -->
<template>
<div class="tgni-box" :title="props.label">
<div :title="props.label" class="tgni-box">
<slot name="icon"></slot>
<span ref="TgniLabelRef">{{ props.label }}</span>
<span v-show="!props.mini" ref="TgniLabelRef">{{ props.label }}</span>
</div>
</template>
<script lang="ts" setup>

View File

@@ -45,8 +45,16 @@ async function switchPin(): Promise<void> {
justify-content: center;
border-radius: 50%;
cursor: pointer;
transition:
transform 0.2s ease,
box-shadow 0.2s ease;
&:active {
transform: scale(0.92);
}
&.active {
animation: pin-pulse 0.3s ease;
background: var(--tgc-btn-1);
box-shadow: 1px 3px 6px var(--common-shadow-2);
color: var(--btn-text);
@@ -54,6 +62,21 @@ async function switchPin(): Promise<void> {
&:hover:not(.active) {
background: var(--common-shadow-1);
transform: scale(1.05);
}
}
@keyframes pin-pulse {
0% {
transform: scale(1);
}
50% {
transform: scale(1.15);
}
100% {
transform: scale(1);
}
}

View File

@@ -42,8 +42,16 @@ function switchPostWidth(): void {
justify-content: center;
border-radius: 50%;
cursor: pointer;
transition:
transform 0.2s ease,
box-shadow 0.2s ease;
&:active {
transform: scale(0.92);
}
&.active {
animation: width-pulse 0.3s ease;
background: var(--tgc-btn-1);
box-shadow: 1px 3px 6px var(--common-shadow-2);
color: var(--btn-text);
@@ -51,6 +59,21 @@ function switchPostWidth(): void {
&:hover:not(.active) {
background: var(--common-shadow-1);
transform: scale(1.05);
}
}
@keyframes width-pulse {
0% {
transform: scale(1);
}
50% {
transform: scale(1.15);
}
100% {
transform: scale(1);
}
}

View File

@@ -19,23 +19,18 @@
</div>
</div>
<div
v-else-if="props.modelValue.post.images.length > 1"
:title="`图片数:${props.modelValue.post.images.length}`"
v-else-if="props.post.post.images.length > 1"
:title="`图片数:${props.post.post.images.length}`"
class="tpc-image-cnt"
>
<v-icon size="10">mdi-folder-multiple-image</v-icon>
<span>{{ props.modelValue.post.images.length }}</span>
<span>{{ props.post.post.images.length }}</span>
</div>
</div>
<div :title="card.title" class="tpc-title" @click="shareCard()">{{ card.title }}</div>
</div>
<div v-if="card.user !== null" class="tpc-mid">
<TpAvatar
:data="card.user"
:style="{ cursor: props.userClick ? 'pointer' : 'default' }"
position="left"
@click="onUserClick()"
/>
<TpAvatar :data="card.user" position="left" @click="onUserClick()" />
</div>
<div class="tpc-bottom">
<div class="tpc-tags">
@@ -104,9 +99,9 @@
@click.stop="trySelect()"
/>
<div v-else class="tpc-info-id" @click="shareCard()">
<span>{{ props.modelValue.post.post_id }}</span>
<span>{{ props.post.post.post_id }}</span>
<template v-if="isDevEnv">
<span data-html2canvas-ignore>[{{ props.modelValue.post.view_type }}]</span>
<span data-html2canvas-ignore>[{{ props.post.post.view_type }}]</span>
</template>
</div>
</div>
@@ -126,10 +121,12 @@ import { storeToRefs } from "pinia";
import { computed, onMounted, ref, shallowRef, watch } from "vue";
import { useRoute, useRouter } from "vue-router";
/** 帖子卡片参数 */
type TPostCardProps = {
modelValue: TGApp.BBS.Post.FullData;
/** 帖子数据 */
post: TGApp.BBS.Post.FullData;
/** 是否开启选择模式 */
selectMode?: boolean;
userClick?: boolean;
};
type TPostCardEmits = {
(e: "onSelected", v: string): void;
@@ -178,17 +175,17 @@ const cardBg = computed<string>(() => {
const forumBg = computed<string>(() =>
str2Color(`${card.value?.forum?.id}${card.value?.forum?.icon}${card.value?.forum?.name}`, -60),
);
const idBg = computed<string>(() => str2Color(`${props.modelValue.post.post_id}`, 0));
const idBg = computed<string>(() => str2Color(`${props.post.post.post_id}`, 0));
onMounted(async () => (card.value = getPostCard(props.modelValue)));
onMounted(async () => (card.value = getPostCard(props.post)));
watch(
() => props.modelValue,
async () => (card.value = getPostCard(props.modelValue)),
() => props.post,
async () => (card.value = getPostCard(props.post)),
);
function trySelect(): void {
if (props.selectMode) emits("onSelected", props.modelValue.post.post_id);
if (props.selectMode) emits("onSelected", props.post.post.post_id);
isSelected.value = !isSelected.value;
}
@@ -293,20 +290,20 @@ async function shareCard(): Promise<void> {
async function toTopic(topic: TGApp.BBS.Post.Topic): Promise<void> {
if (props.selectMode) return;
const gid = props.modelValue.post.game_id;
const gid = props.post.post.game_id;
await emit("active_deep_link", `router?path=/posts/topic/${gid}/${topic.id}`);
}
async function toForum(forum: RenderForum): Promise<void> {
if (props.selectMode) return;
const gid = props.modelValue.post.game_id;
const gid = props.post.post.game_id;
await emit("active_deep_link", `router?path=/posts/forum/${gid}/${forum.id}`);
}
function onUserClick(): void {
if (props.selectMode) return;
if (!card.value || card.value.user === null) return;
emits("onUserClick", card.value.user, props.modelValue.post.game_id);
emits("onUserClick", card.value.user, props.post.post.game_id);
}
</script>
<style lang="scss" scoped>

View File

@@ -55,6 +55,16 @@ async function shareContent(): Promise<void> {
box-shadow: 1px 3px 6px var(--common-shadow-2);
color: var(--btn-text);
cursor: pointer;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
.share-box:hover {
box-shadow: 2px 4px 12px var(--common-shadow-4);
transform: scale(1.15);
}
.share-box:active {
transform: scale(0.95);
}
.dark .share-box {

View File

@@ -1,6 +1,6 @@
<!-- 应用侧边栏 -->
<template>
<v-navigation-drawer :width="160" :permanent="true" :rail="rail" class="tsb-box">
<v-navigation-drawer :permanent="true" :rail="rail" :width="160" class="tsb-box">
<v-list :nav="true" class="side-list" density="compact">
<v-list-item
:append-icon="!rail ? 'mdi-chevron-left' : undefined"
@@ -332,7 +332,6 @@ import { invoke } from "@tauri-apps/api/core";
import type { Event, UnlistenFn } from "@tauri-apps/api/event";
import { readDir } from "@tauri-apps/plugin-fs";
import mhyClient from "@utils/TGClient.js";
import { isRunInAdmin, tryCopyYae, tryReadGameVer, YAE_GAME_VER } from "@utils/TGGame.js";
import TGLogger from "@utils/TGLogger.js";
import { storeToRefs } from "pinia";
import { computed, onMounted, onUnmounted, ref, shallowRef } from "vue";
@@ -750,34 +749,13 @@ async function tryLaunchGame(): Promise<void> {
await TGLogger.Error(`[sidebar][tryLaunchGame] resp: ${JSON.stringify(resp)}`);
return;
}
const isInAdmin = await isRunInAdmin();
const gameVer = await tryReadGameVer(gameDir.value);
if (!isInAdmin || !gameVer || gameVer !== YAE_GAME_VER) {
showSnackbar.success(`成功获取ticket:${resp},正在启动应用...`);
try {
await invoke("launch_game", { path: gamePath, ticket: resp });
} catch (error) {
showSnackbar.error(`${error}`);
}
return;
}
const isMsix = await invoke<boolean>("is_msix");
if (isMsix) {
const copy = await tryCopyYae();
if (!copy) return;
}
showSnackbar.success(`成功获取ticket:${resp},正在启动应用...`);
try {
await invoke("call_yae_dll", {
gamePath: gamePath,
uid: account.value.gameUid,
ticket: resp,
isMsix: isMsix,
});
} catch (err) {
showSnackbar.error(`调用Yae DLL失败: ${err}`);
await TGLogger.Error(`[pageAchi][toYae]调用Yae DLL失败: ${err}`);
return;
await invoke("launch_game", { path: gamePath, ticket: resp });
} catch (error) {
showSnackbar.error(`${error}`);
}
return;
}
</script>
<style lang="scss" scoped>
@@ -816,6 +794,7 @@ async function tryLaunchGame(): Promise<void> {
width: 24px;
height: 24px;
border-radius: 4px;
transition: transform 0.2s ease;
&.paimon {
position: relative;
@@ -824,6 +803,10 @@ async function tryLaunchGame(): Promise<void> {
height: 32px;
border-radius: 50%;
}
&:hover {
transform: scale(1.15);
}
}
.side-list-menu {

View File

@@ -1,6 +1,6 @@
<template>
<div class="switch-box" :title="isDefault ? '切换到深色模式' : '切换到浅色模式'">
<div class="switch-btn" @click="switchTheme()">
<div class="switch-btn" :class="{ 'is-dark': !isDefault }" @click="switchTheme()">
<v-icon size="20">
{{ isDefault ? "mdi-weather-night" : "mdi-weather-sunny" }}
</v-icon>
@@ -57,6 +57,12 @@ onUnmounted(() => {
box-shadow: 1px 3px 6px var(--common-shadow-2);
color: var(--btn-text);
cursor: pointer;
transition: all 0.3s ease;
}
.switch-box:hover {
box-shadow: 1px 3px 10px var(--common-shadow-4);
transform: scale(1.1);
}
.dark .switch-box {
@@ -72,5 +78,10 @@ onUnmounted(() => {
height: 20px;
align-items: center;
justify-content: center;
transition: transform 0.5s cubic-bezier(0.68, -0.55, 0.265, 1.55);
}
.switch-btn.is-dark {
transform: rotate(360deg);
}
</style>

View File

@@ -1,23 +1,23 @@
<!-- 兑换码浮窗组件 -->
<template>
<TOverlay v-model="visible" class="tolc-overlay">
<div class="tolc-box">
<div ref="TolcRef" class="tolc-box">
<div class="tolc-title">
<span>{{ gameInfo?.name ?? "" }}兑换码</span>
<v-icon
data-html2canvas-ignore
icon="mdi-share-variant"
size="18px"
title="share"
@click="shareImg()"
icon="mdi-share-variant"
variant="outlined"
data-html2canvas-ignore
@click="shareImg()"
/>
</div>
<div class="tolc-info">ActID:{{ props.actId }}</div>
<div v-for="(item, index) in props.data" :key="index" class="tolc-list-box">
<div class="tolc-list-icon">
<img v-if="item.img === ''" src="/UI/app/empty.webp" alt="empty" />
<TMiImg :src="item.img" :ori="true" v-else alt="award" />
<img v-if="item.img === ''" alt="empty" src="/UI/app/empty.webp" />
<TMiImg v-else :ori="true" :src="item.img" alt="award" />
</div>
<div class="tolc-list-info">
<span>{{ item.code === "" ? "暂无兑换码" : item.code }}</span>
@@ -26,12 +26,12 @@
</div>
<div class="tolc-list-btn">
<v-btn
size="small"
:disabled="item.code === ''"
@click="copy(item.code)"
icon="mdi-content-copy"
variant="outlined"
data-html2canvas-ignore
icon="mdi-content-copy"
size="small"
variant="outlined"
@click="copy(item.code)"
/>
</div>
</div>
@@ -39,13 +39,13 @@
</div>
</TOverlay>
</template>
<script setup lang="ts">
<script lang="ts" setup>
import showSnackbar from "@comp/func/snackbar.js";
import useBBSStore from "@store/bbs.js";
import { generateShareImg } from "@utils/TGShare.js";
import { timestampToDate } from "@utils/toolFunc.js";
import { storeToRefs } from "pinia";
import { computed } from "vue";
import { computed, useTemplateRef } from "vue";
import TMiImg from "./t-mi-img.vue";
import TOverlay from "./t-overlay.vue";
@@ -66,6 +66,7 @@ const { gameList } = storeToRefs(useBBSStore());
const props = defineProps<ToLiveCodeProps>();
const visible = defineModel<boolean>({ default: false });
const tolcEl = useTemplateRef<HTMLDivElement>("TolcRef");
const gameInfo = computed<TGApp.BBS.Game.Item | undefined>(() =>
gameList.value.find((i) => i.id === props.gid),
);
@@ -80,23 +81,27 @@ async function copy(code: string): Promise<void> {
showSnackbar.success("已复制到剪贴板");
}
/**
* 生成分享图片
* @returns {Promise<void>}
*/
async function shareImg(): Promise<void> {
const element = document.querySelector<HTMLElement>(".tolc-box");
if (element === null) {
if (tolcEl.value === null) {
showSnackbar.warn("未获取到分享内容");
return;
}
const fileName = `LiveCode_${props.gid}_${props.actId}_${new Date().getTime()}`;
await generateShareImg(fileName, element, 4);
await generateShareImg(fileName, tolcEl.value, 4);
}
</script>
<style lang="css" scoped>
<style lang="scss" scoped>
/** 解决默认样式的上下 margin */
:deep(p) {
margin-block: 0;
}
.tolc-overlay {
position: fixed;
z-index: 1;
height: 100vh;
color: var(--app-page-content);
}
.tolc-box {

View File

@@ -176,9 +176,9 @@ defineExpose({ displayBox });
align-items: center;
justify-content: center;
padding: 10px;
border: #f4d8a8ff 1px solid;
border: var(--tgc-yellow-3) 1px solid;
border-radius: 5px;
color: #f4d8a8ff;
color: var(--tgc-yellow-2);
}
.loading-title {

View File

@@ -70,8 +70,10 @@ import { computed, onMounted, ref, shallowRef, watch } from "vue";
type UgoUidProps = {
/** 导入/导出 */
mode: "import" | "export";
/** filePathImport路径 */
/** filePathImport路径 */
fpi?: string;
/** filePathExport导出路径 */
fpe?: string;
};
/**
* UID项
@@ -107,7 +109,7 @@ onMounted(async () => {
});
watch(
() => [visible.value, props.mode, props.fpi],
() => [visible.value, props.mode, props.fpi, props.fpe],
async () => {
if (visible.value) await refreshData();
},
@@ -127,7 +129,7 @@ async function refreshData(): Promise<void> {
fp.value = props.fpi ?? fpEmptyText;
await refreshImport();
} else {
fp.value = await getDefaultSavePath();
fp.value = props.fpe ?? (await getDefaultSavePath());
await refreshExport();
}
}

View File

@@ -1,3 +1,4 @@
<!-- 头像组件 -->
<template>
<div class="tp-avatar-box">
<div class="tpa-img">
@@ -48,7 +49,7 @@ const levelColor = computed<string>(() => {
return "var(--tgc-od-white)";
});
</script>
<style lang="css" scoped>
<style lang="scss" scoped>
.tp-avatar-box {
display: flex;
overflow: hidden;
@@ -57,6 +58,7 @@ const levelColor = computed<string>(() => {
flex-direction: v-bind("props.position === 'left' ? 'row' : 'row-reverse'");
align-items: center;
justify-content: v-bind("props.position === 'left' ? 'flex-start' : 'flex-end'");
cursor: pointer;
}
.tpa-text {

View File

@@ -98,6 +98,7 @@ async function switchCollect(): Promise<void> {
justify-content: center;
border-radius: 50%;
cursor: pointer;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
&.active {
background: var(--tgc-btn-1);
@@ -108,6 +109,15 @@ async function switchCollect(): Promise<void> {
&:hover:not(.active) {
background: var(--common-shadow-1);
}
&:hover {
box-shadow: 2px 4px 12px var(--common-shadow-4);
transform: scale(1.15);
}
&:active {
transform: scale(0.95);
}
}
.dark .tbc-box {

View File

@@ -225,6 +225,16 @@ async function handleDebug(): Promise<void> {
box-shadow: 1px 3px 6px var(--common-shadow-2);
color: var(--btn-text);
cursor: pointer;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
.tpr-main-box:hover {
box-shadow: 2px 4px 12px var(--common-shadow-4);
transform: scale(1.15);
}
.tpr-main-box:active {
transform: scale(0.95);
}
.dark .tpr-main-box {

View File

@@ -11,10 +11,11 @@
<span>加载中...</span>
</div>
<TPostcard
v-for="(item, index) in postList"
v-for="(post, index) in postList"
:key="index"
:class="{ selected: index === props.collection.cur - 1 }"
:model-value="item"
:post
@onUserClick="toUserProfile"
class="tpoc-item"
/>
</div>
@@ -69,6 +70,13 @@ async function refreshPosts(): Promise<void> {
async function toOuterCollect(): Promise<void> {
await openUrl(`https://www.miyoushe.com/ys/collection/${props.collection.collection_id}`);
}
async function toUserProfile(user: TGApp.BBS.Post.User, gid: number): Promise<void> {
// TODO: 专门的个人页面
console.log(user, gid);
const profileUrl = `https://www.miyoushe.com/ys/accountCenter/postList?id=${user.uid}`;
await openUrl(profileUrl);
}
</script>
<style lang="scss" scoped>
.tpoc-box {

View File

@@ -3,32 +3,34 @@
<div class="vp-of-box">
<div class="vo-of-top">
<div class="vo-oft-left">
<img src="/platforms/mhy/mys.webp" alt="icon" />
<img alt="icon" src="/platforms/mhy/mys.webp" />
<span>关注动态</span>
</div>
<div class="vo-oft-right">已加载{{ posts.length }}</div>
</div>
<div class="vo-of-actions">
<v-btn class="vo-of-btn" @click="loadMore(true)" :loading="loading">刷新</v-btn>
<v-btn :loading="loading" class="vo-of-btn" @click="loadMore(true)">刷新</v-btn>
</div>
<div class="vp-of-list" ref="listRef">
<div ref="listRef" class="vp-of-list">
<TPostcard
v-for="post in posts"
:key="post.post.post_id"
:post
class="vp-of-list-item"
v-for="(item, index) in posts"
:key="index"
:model-value="item"
@onUserClick="toUserProfile"
/>
</div>
</div>
</TOverlay>
</template>
<script setup lang="ts">
<script lang="ts" setup>
import TOverlay from "@comp/app/t-overlay.vue";
import TPostcard from "@comp/app/t-postcard.vue";
import showSnackbar from "@comp/func/snackbar.js";
import { useBoxReachBottom } from "@hooks/reachBottom.js";
import painterReq from "@req/painterReq.js";
import useUserStore from "@store/user.js";
import { openUrl } from "@tauri-apps/plugin-opener";
import { storeToRefs } from "pinia";
import { ref, shallowRef, useTemplateRef, watch } from "vue";
@@ -87,6 +89,13 @@ async function loadMore(refresh: boolean = false): Promise<void> {
listEl.value.scrollTo({ top: 0, behavior: "smooth" });
}
}
async function toUserProfile(user: TGApp.BBS.Post.User, gid: number): Promise<void> {
// TODO: 专门的个人页面
console.log(user, gid);
const profileUrl = `https://www.miyoushe.com/ys/accountCenter/postList?id=${user.uid}`;
await openUrl(profileUrl);
}
</script>
<style lang="scss" scoped>
.vp-of-box {

View File

@@ -6,7 +6,7 @@
<span>{{ timeStatus }}</span>
</div>
<div class="tpol-info">
<TpAvatar :data="card.creator" position="left" />
<TpAvatar @click="toUserProfile(card.creator.uid)" :data="card.creator" position="left" />
<div>参与方式{{ upWay }}</div>
<div>奖品详情</div>
<div v-for="reward in card.rewards" :key="reward.name" class="tpol-info-reward">
@@ -41,6 +41,7 @@ import showSnackbar from "@comp/func/snackbar.js";
import TpAvatar from "@comp/viewPost/tp-avatar.vue";
import painterReq from "@req/painterReq.js";
import { emit } from "@tauri-apps/api/event";
import { openUrl } from "@tauri-apps/plugin-opener";
import { generateShareImg } from "@utils/TGShare.js";
import { stamp2LastTime } from "@utils/toolFunc.js";
import { onUnmounted, ref, shallowRef, watch } from "vue";
@@ -155,6 +156,12 @@ async function shareLottery(): Promise<void> {
await generateShareImg(fileName, shareDom, 2, true);
}
async function toUserProfile(uid: string): Promise<void> {
// TODO: 专门的个人页面
const profileUrl = `https://www.miyoushe.com/ys/accountCenter/postList?id=${uid}`;
await openUrl(profileUrl);
}
onUnmounted(() => {
if (timer !== undefined) {
clearInterval(timer);

View File

@@ -24,9 +24,10 @@
<div class="tops-divider" />
<div ref="listRef" class="tops-list">
<TPostCard
v-for="item in results"
:key="item.post.post_id"
:model-value="item"
v-for="post in results"
:key="post.post.post_id"
:post
@onUserClick="toUserProfile"
class="tops-item"
/>
</div>
@@ -40,6 +41,7 @@ import showSnackbar from "@comp/func/snackbar.js";
import { useBoxReachBottom } from "@hooks/reachBottom.js";
import postReq from "@req/postReq.js";
import useBBSStore from "@store/bbs.js";
import { openUrl } from "@tauri-apps/plugin-opener";
import { storeToRefs } from "pinia";
import { computed, onMounted, ref, shallowRef, useTemplateRef, watch } from "vue";
@@ -160,6 +162,13 @@ async function searchPosts(): Promise<void> {
if (!visible.value) visible.value = true;
showSnackbar.success(`成功加载${res.posts.length}条数据`);
}
async function toUserProfile(user: TGApp.BBS.Post.User, gid: number): Promise<void> {
// TODO: 专门的个人页面
console.log(user, gid);
const profileUrl = `https://www.miyoushe.com/ys/accountCenter/postList?id=${user.uid}`;
await openUrl(profileUrl);
}
</script>
<style lang="css" scoped>
.tops-box {

View File

@@ -30,9 +30,10 @@
<div class="vp-ou-divider" />
<div ref="listRef" class="vp-ou-list">
<TPostCard
v-for="item in results"
:key="item.post.post_id"
:model-value="item"
@onUserClick="toUserProfile()"
v-for="post in results"
:key="post.post.post_id"
:post
class="vp-ou-item"
/>
</div>

View File

@@ -140,7 +140,7 @@
</v-window-item>
</v-window>
</div>
<UgoUid v-model="ovShow" :fpi="ovFpi" :mode="ovMode" />
<UgoUid v-model="ovShow" :fpe="ovFpe" :fpi="ovFpi" :mode="ovMode" />
<UgoHutaoDu v-model="hutaoShow" :mode="htMode" @selected="handleHutaoDu" />
</template>
<script lang="ts" setup>
@@ -181,6 +181,7 @@ const { isLogin: isLoginHutao, accessToken, userName, userInfo } = storeToRefs(h
const ovMode = ref<"export" | "import">("import");
const ovShow = ref<boolean>(false);
const ovFpi = ref<string>();
const ovFpe = ref<string>();
const authkey = ref<string>("");
const uidCur = ref<string>();
@@ -654,7 +655,18 @@ async function exportUigf4(): Promise<void> {
showSnackbar.error("未获取到 UID");
return;
}
const tsNow = Math.floor(Date.now() / 1000);
const file = await save({
title: "导出祈愿数据",
filters: [{ name: "UIGF JSON", extensions: ["json"] }],
defaultPath: `${await path.downloadDir()}${path.sep()}UIGFv4.2_${tsNow}.json`,
});
if (!file) {
showSnackbar.cancel("已取消文件保存");
return;
}
await TGLogger.Info(`[UserGacha][${uidCur.value}][exportUigf4] 导出祈愿数据(v4)`);
ovFpe.value = file;
ovMode.value = "export";
ovShow.value = true;
}

View File

@@ -84,7 +84,7 @@
</v-window-item>
</v-window>
</div>
<UgoUid v-model="ovShow" :fpi="ovFpi" :mode="ovMode" />
<UgoUid v-model="ovShow" :fpe="ovFpe" :fpi="ovFpi" :mode="ovMode" />
</template>
<script lang="ts" setup>
import showDialog from "@comp/func/dialog.js";
@@ -99,7 +99,7 @@ import TSUserAccount from "@Sqlm/userAccount.js";
import TSUserGachaB from "@Sqlm/userGachaB.js";
import useUserStore from "@store/user.js";
import { path } from "@tauri-apps/api";
import { open } from "@tauri-apps/plugin-dialog";
import { open, save } from "@tauri-apps/plugin-dialog";
import TGLogger from "@utils/TGLogger.js";
import { storeToRefs } from "pinia";
import { onMounted, ref, shallowRef, watch } from "vue";
@@ -113,6 +113,7 @@ const { account, cookie } = storeToRefs(useUserStore());
const ovMode = ref<"export" | "import">("import");
const ovShow = ref<boolean>(false);
const ovFpi = ref<string>();
const ovFpe = ref<string>();
const authkey = ref<string>("");
const uidCur = ref<string>();
@@ -351,7 +352,18 @@ async function exportUigf(): Promise<void> {
showSnackbar.error("未获取到 UID");
return;
}
const tsNow = Math.floor(Date.now() / 1000);
const file = await save({
title: "导出祈愿数据",
filters: [{ name: "UIGF JSON", extensions: ["json"] }],
defaultPath: `${await path.downloadDir()}${path.sep()}UIGFv4.2_${tsNow}.json`,
});
if (!file) {
showSnackbar.cancel("已取消文件保存");
return;
}
await TGLogger.Info(`[UserGachaB][${uidCur.value}][exportUigf] 导出祈愿数据`);
ovFpe.value = file;
ovMode.value = "export";
ovShow.value = true;
}

View File

@@ -42,7 +42,7 @@
</div>
</template>
</v-select>
<TGameNav :gid="curGid" />
<TGameNav :gid="curGid" :mini="true" />
</div>
<div class="home-select">
<v-select

View File

@@ -103,11 +103,10 @@
</template>
</v-app-bar>
<div class="pc-posts">
<div v-for="item in curPosts" :key="item.post.post_id">
<div v-for="post in curPosts" :key="post.post.post_id">
<TPostCard
:model-value="item"
:post
:select-mode="selectedMode"
:user-click="true"
@onSelected="handleSelected"
@onUserClick="handleUserClick"
/>

View File

@@ -102,7 +102,7 @@
</v-app-bar>
<div class="posts-grid">
<div v-for="post in posts" :key="post.post.post_id">
<TPostCard :model-value="post" :user-click="true" @onUserClick="handleUserClick" />
<TPostCard :post @onUserClick="handleUserClick" />
</div>
</div>
<VpOverlaySearch v-model="showSearch" :gid="curGid" :keyword="search" />

View File

@@ -44,8 +44,8 @@
<v-window v-model="recentNewsType">
<v-window-item v-for="(value, index) in bbsEnum.post.newsTypeList" :key="index" :value="value">
<div class="pn-grid">
<div v-for="item in postData[value]" :key="item.post.post_id">
<TPostCard :model-value="item" />
<div v-for="post in postData[value]" :key="post.post.post_id">
<TPostCard :post />
</div>
</div>
</v-window-item>

View File

@@ -89,7 +89,7 @@
</v-app-bar>
<div class="post-topic-grid">
<div v-for="post in posts" :key="post.post.post_id">
<TPostCard :model-value="post" :user-click="true" @onUserClick="handleUserClick" />
<TPostCard :post @onUserClick="handleUserClick" />
</div>
</div>
<VpOverlaySearch v-model="showSearch" :gid="curGid" :keyword="search" />

View File

@@ -1,6 +1,6 @@
/**
* 角色生日模块
* @since Beta v0.9.1
* @since Beta v0.9.9
*/
import {
@@ -12,7 +12,7 @@ import {
/**
* 判断今天是不是角色生日
* @since Beta v0.4.6
* @since Beta v0.9.9
* @returns 角色生日
*/
function isAvatarBirth(): Array<TGApp.Archive.Birth.CalendarItem> {
@@ -20,19 +20,28 @@ function isAvatarBirth(): Array<TGApp.Archive.Birth.CalendarItem> {
const month = date.getMonth() + 1;
const day = date.getDate();
const days = ArcBirCalendar[month];
const find = days.filter((i) => i.role_birthday === `${month}/${day}`);
if (find.length > 0) {
for (const i of find) i.is_subscribe = true;
return find;
const resId = new Set<number>();
const res: Array<TGApp.Archive.Birth.CalendarItem> = [];
const rawFind = days.filter((i) => i.role_birthday === `${month}/${day}`);
if (rawFind.length > 0) {
res.push(...rawFind);
rawFind.map((i) => resId.add(i.role_id));
}
const find2 = AppCharacterData.filter((i) => i.birthday.toString() === [month, day].toString());
return find2.map((i) => ({
role_id: i.id,
name: i.name,
role_birthday: `${month}/${day}`,
head_icon: `/WIKI/character/${i.id}.webp`,
is_subscribe: false,
}));
const wikiFind = AppCharacterData.filter(
(i) => i.birthday.toString() === [month, day].toString(),
);
for (const i of wikiFind) {
if (resId.has(i.id)) continue;
res.push({
role_id: i.id,
name: i.name,
role_birthday: `${month}/${day}`,
head_icon: `/WIKI/character/${i.id}.webp`,
is_subscribe: false,
});
resId.add(i.id);
}
return res;
}
/**

View File

@@ -1,6 +1,6 @@
/**
* vite 配置文件
* @since Beta v0.9.6
* @since Beta v0.9.9
*/
import { sentryVitePlugin } from "@sentry/vite-plugin";