Compare commits

...

22 Commits

Author SHA1 Message Date
目棃
9bd9f60699 🚀 v0.4.6 2024-04-24 16:04:22 +08:00
目棃
070ab01b22 🍱 更新 4.6 版本资源
close #107
2024-04-24 15:30:17 +08:00
目棃
11bf4fea9b 💄 修复特定情况下y轴溢出 2024-04-24 01:01:59 +08:00
目棃
0b8fa6d8f6 🐛 修复特定情况下首页卡池异常 2024-04-24 00:37:13 +08:00
目棃
8917deb5db 🚨 修复qodana报错 2024-04-23 20:34:05 +08:00
目棃
065019cdc6 🎨 代码格式化 2024-04-23 19:00:28 +08:00
目棃
f802ee9a68 🔧 Eslint v9 2024-04-23 18:49:44 +08:00
目棃
971526d6ed ️ 侧边栏咨讯入口记忆类型 2024-04-20 00:44:45 +08:00
目棃
2c2914a028 🐛 修复返回数据为 [true] 2024-04-17 00:54:42 +08:00
目棃
214b828b10 🐛 调整 2024-04-13 01:21:24 +08:00
目棃
ada6f5b15a 📝 新模板 2024-04-13 01:18:24 +08:00
目棃
2aa0df5246 ♻️ 代码规范化 2024-04-12 12:56:23 +08:00
目棃
d9cdea9670 🐛 修复部分角色生日数据缺失 2024-04-11 00:58:41 +08:00
目棃
98541e1b49 🐛 修复 align:right 不生效的问题
*PostID:51080404
2024-04-07 14:56:24 +08:00
目棃
f50398f6e3 ♻️ 帖子文本解析部分重构 2024-04-07 14:31:43 +08:00
目棃
74eb612d72 🐛 修复特定情况下左侧按钮点击无效 2024-04-06 01:43:30 +08:00
目棃
956634767a Merge pull request #106 from BTMuli/dependabot/cargo/src-tauri/h2-0.3.26
Bump h2 from 0.3.24 to 0.3.26 in /src-tauri
2024-04-06 01:00:21 +08:00
目棃
ee078bbcf2 Merge pull request #105 from BTMuli/dependabot/cargo/src-tauri/whoami-1.5.1
Bump whoami from 1.4.1 to 1.5.1 in /src-tauri
2024-04-06 01:00:08 +08:00
dependabot[bot]
044ec32069 Bump h2 from 0.3.24 to 0.3.26 in /src-tauri
Bumps [h2](https://github.com/hyperium/h2) from 0.3.24 to 0.3.26.
- [Release notes](https://github.com/hyperium/h2/releases)
- [Changelog](https://github.com/hyperium/h2/blob/v0.3.26/CHANGELOG.md)
- [Commits](https://github.com/hyperium/h2/compare/v0.3.24...v0.3.26)

---
updated-dependencies:
- dependency-name: h2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-05 16:16:24 +00:00
dependabot[bot]
19ac8e90e0 Bump whoami from 1.4.1 to 1.5.1 in /src-tauri
Bumps [whoami](https://github.com/ardaku/whoami) from 1.4.1 to 1.5.1.
- [Changelog](https://github.com/ardaku/whoami/blob/v1/CHANGELOG.md)
- [Commits](https://github.com/ardaku/whoami/compare/v1.4.1...v1.5.1)

---
updated-dependencies:
- dependency-name: whoami
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-05 15:46:57 +00:00
目棃
d1bfa49bd7 🐛 一些优化
*修复画片初始化数量异常
*数据库更新后弹出更新日志
*调整生日转换逻辑
2024-04-05 15:26:00 +08:00
目棃
d78c541c87 ⬆️ 更新依赖 2024-04-05 15:19:23 +08:00
149 changed files with 6959 additions and 4566 deletions

View File

@@ -1,10 +0,0 @@
# Build
dist
src-tauri/target
# Package files
pnpm-lock.yaml
# data
src/data/**/*.json
# lint files
!.prettierrc.yml
!.stylelintrc.yml

View File

@@ -1,133 +0,0 @@
root: true
env:
browser: true
es2021: true
extends:
- plugin:vue/vue3-essential
- prettier
- plugin:prettier/recommended
- plugin:yml/standard
- plugin:jsonc/recommended-with-json
parserOptions:
ecmaVersion: latest
sourceType: module
tsconfigRootDir: .
project: ./tsconfig.json
globals:
TGApp: readonly
window: readonly
rules:
vue/multi-word-component-names: off
vue/valid-template-root: off
overrides:
- files: ["*.ts"]
extends: standard-with-typescript
# 将此处规则 copy 到下面的 .vue 文件的 rules 中
rules: &typescript-rules
import/order:
- error
- groups:
- builtin
- external
- [internal, parent, sibling, index]
- unknown
newlines-between: always
alphabetize:
order: asc
caseInsensitive: true
"@typescript-eslint/indent": off
"@typescript-eslint/quotes":
- error
- double
"@typescript-eslint/semi":
- error
- always
"@typescript-eslint/comma-dangle":
- error
- always-multiline
"@typescript-eslint/space-before-function-paren":
- error
- anonymous: always
named: never
asyncArrow: always
"@typescript-eslint/member-delimiter-style":
- error
- multiline:
delimiter: semi
requireLast: true
"@typescript-eslint/no-import-type-side-effects": error
"@typescript-eslint/strict-boolean-expressions": off
"@typescript-eslint/consistent-type-assertions":
- warn
- assertionStyle: angle-bracket # 使用尖括号
"@typescript-eslint/naming-convention":
- warn
- selector: variableLike
format: [camelCase, UPPER_CASE, PascalCase, snake_case]
leadingUnderscore: allow
trailingUnderscore: allow
"@typescript-eslint/no-non-null-assertion": warn
"@typescript-eslint/no-misused-promises": off
"@typescript-eslint/restrict-template-expressions": warn
- files: ["*.vue"]
parser: vue-eslint-parser
parserOptions:
parser: "@typescript-eslint/parser"
extraFileExtensions: [.vue]
rules:
<<: *typescript-rules
- files: [package.json, tsconfig.json]
parser: jsonc-eslint-parser
rules:
jsonc/sort-array-values:
- error
- pathPattern: .*
order:
type: asc
jsonc/sort-keys:
- error
- pathPattern: ^$
order:
- name
- version
- description
- private
- packageManager
- scripts
- lint-staged
- keywords
- author
- license
- repository
- homepage
- bugs
- dependencies
- devDependencies
- files: ["*.yaml", "*.yml"]
parser: yaml-eslint-parser
parserOptions:
defaultYAMLVersion: "1.2"
rules:
yml/indent:
- error
- 2
yml/no-multiple-empty-lines: error
yml/key-spacing: error
yml/quotes:
- error
- prefer: double
avoidEscape: true
yml/sort-keys:
- error
- pathPattern: ^$
order:
- root
- env
- extends
- parserOptions
- globals
- rules
- overrides
- pathPattern: ^rules$
order:
type: asc

View File

@@ -0,0 +1,44 @@
name: 原神游戏资源更新(仅供开发者使用)
description: 版本前瞻后的例行资源更新
title: "[Update] "
labels:
- 资源
body:
- type: checkboxes
attributes:
label: Issue Check
options:
- label: 个人明确了解该模板仅供开发者使用
required: true
- type: input
id: version
attributes:
label: 游戏版本
description: 请填写游戏版本
placeholder: 如 4.6
- type: checkboxes
id: resources
attributes:
label: 包括的资源
options:
- label: 角色&名片,有新角色时选择
required: false
- label: 武器,有新武器时选择
required: false
- label: 成就,有新成就时选择
required: false
- label: 卡牌,有新卡牌时选择
required: false
- label: 材料,有新材料时选择
required: false
- type: textarea
id: detail
attributes:
label: 详情
description: 对上述内容进行详细说明
- type: textarea
id: additional
attributes:
label: 其他信息
description: 请填写其他信息
placeholder: 请填写其他信息

View File

@@ -26,7 +26,10 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Add Rust targets(macOS)
- name: Add Rust targets(macOS Intel)
if: matrix.settings.target == 'macos-intel'
run: rustup target add x86_64-apple-darwin
- name: Add Rust targets(macOS ARM)
if: matrix.settings.target == 'macos-arm'
run: rustup target add aarch64-apple-darwin
@@ -44,7 +47,7 @@ jobs:
- name: setup pnpm
uses: pnpm/action-setup@v2
with:
version: 8.15.6
version: 9.0.5
- name: remove lockfile
run: rm pnpm-lock.yaml
- name: Install frontend dependencies

View File

@@ -18,7 +18,7 @@ jobs:
- name: setup pnpm
uses: pnpm/action-setup@v2
with:
version: 8.15.6
version: 9.0.5
- name: remove lockfile
run: rm -f pnpm-lock.yaml
- name: Install dependencies

View File

@@ -2,12 +2,31 @@
Author: 目棃
Description: CHANGELOG
Date: 2024-01-15
Update: 2024-04-05
Update: 2024-04-24
---
> 本文档 [`Frontmatter`](https://github.com/BTMuli/MuCli#Frontmatter) 由 [MuCli](https://github.com/BTMuli/Mucli) 自动生成于 `2024-01-15 17:29:15`
>
> 更新于 `2024-04-05 14:19:04`
> 更新于 `2024-04-24 15:36:42`
## [0.4.6](https://github.com/BTMuli/TeyvatGuide/releases/v0.4.6) (2024-04-24)
### Feat
- 帖子:重构文本解析,现在更加贴近应用内的渲染效果
- 应用:侧边栏点击咨讯时的参数也支持记忆了
- 应用:更新 4.6 版本的游戏资源
### Fix
- 留影叙佳期:修复侧边栏点击时初始画片数异常
- 首页:修复特定情况下日历组件左侧切换日期按钮点击无效
- 帖子:修复 `align:right` 不生效的问题
- 首页:修复特定情况下首页卡池渲染异常
### Change
- 应用:数据库更新后弹出更新日志
## [0.4.5](https://github.com/BTMuli/TeyvatGuide/releases/v0.4.5) (2024-04-05)

23
eslint.config.js Normal file
View File

@@ -0,0 +1,23 @@
import { jsonEslintConfig } from "./eslint/jsonEslint.js";
import { vueEslintConfig } from "./eslint/vueEslint.js";
import ymlEslintConfig from "./eslint/ymlEslint.js";
export default [
...jsonEslintConfig,
ymlEslintConfig,
...vueEslintConfig,
{
ignores: [
"dist",
"src-tauri/target",
"pnpm-lock.yaml",
"src/data/**/*.json",
"src-tauri/tauri.conf.json",
"qodana.yaml",
".github",
".vscode",
".prettierrc.yml",
".stylelintrc.yml",
],
},
];

95
eslint/jsonEslint.js Normal file
View File

@@ -0,0 +1,95 @@
import eslint_jsonc from "eslint-plugin-jsonc";
import jsonc_parser from "jsonc-eslint-parser";
const pkgJsonConfig = {
files: ["package.json"],
plugins: {
jsonc: eslint_jsonc,
},
languageOptions: {
parser: jsonc_parser,
},
rules: {
"jsonc/comma-dangle": ["error", "never"],
"jsonc/sort-keys": [
"error",
{
pathPattern: "^$",
order: [
"name",
"version",
"description",
"type",
"packageManager",
"scripts",
"lint-staged",
"keywords",
"author",
"license",
"repository",
"homepage",
"bugs",
"dependencies",
"devDependencies",
],
},
],
},
};
const tscJsonConfig = {
files: ["tsconfig.json"],
plugins: {
jsonc: eslint_jsonc,
},
languageOptions: {
parser: jsonc_parser,
},
rules: {
"jsonc/comma-dangle": ["error", "never"],
"jsonc/sort-keys": [
"error",
{
pathPattern: "^$",
order: [
"compilerOptions",
"include",
"exclude",
"extends",
"files",
"references",
"typeAcquisition",
],
},
],
},
};
const jsoncConfig = {
files: ["source/data/out/**/*.json", ".vscode/**/*.json"],
plugins: {
jsonc: eslint_jsonc,
},
languageOptions: {
parser: jsonc_parser,
},
rules: {
"jsonc/comma-dangle": ["error", "never"],
"jsonc/sort-keys": [
"error",
{
pathPattern: "^$",
order: {
type: "asc",
},
},
],
},
};
export const jsonEslintConfig = [
...eslint_jsonc.configs["flat/recommended-with-json"],
pkgJsonConfig,
tscJsonConfig,
jsoncConfig,
];

87
eslint/vueEslint.js Normal file
View File

@@ -0,0 +1,87 @@
import eslint_js from "@eslint/js";
import eslint_import from "eslint-plugin-import";
import eslint_prettier from "eslint-plugin-prettier";
import eslint_vue from "eslint-plugin-vue";
import pluginVue from "eslint-plugin-vue";
import globals from "globals";
import eslint_ts from "typescript-eslint";
import vue_parser from "vue-eslint-parser";
const tsConfigRules = {
"@typescript-eslint/consistent-type-assertions": [
"error",
{
assertionStyle: "angle-bracket",
},
],
"@typescript-eslint/no-import-type-side-effects": "error",
"@typescript-eslint/strict-boolean-expressions": "off",
"@typescript-eslint/no-explicit-any": "off",
"import/order": [
"error",
{
groups: ["builtin", "external", "internal", "parent", "sibling", "index", "unknown"],
"newlines-between": "always",
alphabetize: {
order: "asc",
caseInsensitive: true,
},
},
],
"prettier/prettier": "error",
};
const tsConfig = {
files: ["*.ts"],
plugins: {
typescript: eslint_ts,
import: eslint_import,
prettier: eslint_prettier,
},
languageOptions: {
parser: eslint_ts.parser,
parserOptions: {
project: "tsconfig.json",
tsconfigRootDir: ".",
},
},
rules: tsConfigRules,
};
const vueConfig = {
plugins: {
vue: eslint_vue,
import: eslint_import,
prettier: eslint_prettier,
},
languageOptions: {
globals: {
...globals.browser,
...globals.es2021,
TGApp: "readonly",
window: "readonly",
},
ecmaVersion: "latest",
sourceType: "module",
parser: vue_parser,
parserOptions: {
project: "tsconfig.json",
parser: eslint_ts.parser,
extraFileExtensions: [".vue"],
tsconfigRootDir: ".",
},
},
rules: {
...tsConfigRules,
"vue/multi-word-component-names": "off",
},
};
export const vueEslintConfig = [
eslint_js.configs.recommended,
...eslint_ts.configs.recommended,
...eslint_vue.configs["flat/essential"],
...pluginVue.configs["flat/essential"],
tsConfig,
vueConfig,
];

30
eslint/ymlEslint.js Normal file
View File

@@ -0,0 +1,30 @@
import eslint_yml from "eslint-plugin-yml";
import yml_parser from "yaml-eslint-parser";
const ymlEslintConfig = {
files: ["**/*.yml", "**/*.yaml"],
plugins: {
yml: eslint_yml,
},
languageOptions: {
parser: yml_parser,
parserOptions: {
defaultYAMLVersion: "1.2",
extraFileExtensions: [".yaml", ".yml"],
},
},
rules: {
"yml/indent": ["error", 2],
"yml/key-spacing": ["error"],
"yml/quotes": [
"error",
{
prefer: "double",
avoidEscape: true,
},
],
"yml/sort-keys": ["error", "asc"],
},
};
export default ymlEslintConfig;

View File

@@ -1,9 +1,10 @@
{
"name": "TeyvatGuide",
"version": "0.4.5",
"version": "0.4.6",
"description": "Game Tool for Genshin Impact player",
"private": true,
"packageManager": "pnpm@8.15.6",
"packageManager": "pnpm@9.0.5",
"type": "module",
"scripts": {
"build": "tauri build",
"debug": "tauri build --debug",
@@ -66,7 +67,7 @@
},
"dependencies": {
"@mdi/font": "7.4.47",
"@tauri-apps/api": "^1.5.3",
"@tauri-apps/api": "^1.5.4",
"artplayer": "^5.1.1",
"clipboard": "^2.0.11",
"color-convert": "^2.0.1",
@@ -79,50 +80,54 @@
"tauri-plugin-log-api": "github:tauri-apps/tauri-plugin-log#v1",
"tauri-plugin-sql-api": "github:tauri-apps/tauri-plugin-sql#v1",
"uuid": "^9.0.1",
"vue": "^3.4.21",
"vue-echarts": "^6.6.9",
"vue": "^3.4.24",
"vue-echarts": "^6.7.0",
"vue-json-viewer": "^3.0.4",
"vue-router": "^4.3.0",
"vuetify": "^3.5.9",
"vue-router": "^4.3.2",
"vuetify": "^3.5.16",
"wcag-color": "^1.1.1",
"xml-js": "^1.6.11"
},
"devDependencies": {
"@eslint/eslintrc": "^3.0.2",
"@eslint/js": "^9.1.1",
"@tauri-apps/cli": "^1.5.11",
"@types/color-convert": "^2.0.3",
"@types/js-md5": "^0.7.2",
"@types/node": "^20.11.28",
"@types/node": "^20.12.7",
"@types/uuid": "^9.0.8",
"@typescript-eslint/eslint-plugin": "^7.2.0",
"@typescript-eslint/parser": "^7.2.0",
"@typescript-eslint/parser": "^7.7.1",
"@vitejs/plugin-vue": "^5.0.4",
"concurrently": "^8.2.2",
"eslint": "^8.57.0",
"eslint": "^9.1.1",
"eslint-config-love": "^47.0.0",
"eslint-config-prettier": "^9.1.0",
"eslint-config-standard-with-typescript": "^43.0.1",
"eslint-plugin-import": "^2.29.1",
"eslint-plugin-jsonc": "^2.13.0",
"eslint-plugin-n": "^16.6.2",
"eslint-plugin-jsonc": "^2.15.1",
"eslint-plugin-n": "^17.2.1",
"eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-promise": "^6.1.1",
"eslint-plugin-vue": "^9.23.0",
"eslint-plugin-yml": "^1.12.2",
"eslint-plugin-vue": "^9.25.0",
"eslint-plugin-yml": "^1.14.0",
"globals": "^15.0.0",
"husky": "^9.0.11",
"jsonc-eslint-parser": "^2.4.0",
"lint-staged": "^15.2.2",
"oxlint": "^0.2.13",
"oxlint": "^0.3.1",
"prettier": "3.2.5",
"stylelint": "^16.2.1",
"stylelint": "^16.3.1",
"stylelint-config-idiomatic-order": "^10.0.0",
"stylelint-config-standard-vue": "^1.0.0",
"stylelint-declaration-block-no-ignored-properties": "^2.8.0",
"stylelint-high-performance-animation": "^1.10.0",
"stylelint-order": "^6.0.4",
"stylelint-prettier": "^5.0.0",
"typescript": "^5.4.2",
"vite": "^5.1.7",
"vite-plugin-vue-devtools": "^7.0.17",
"typescript": "^5.4.5",
"typescript-eslint": "^7.7.1",
"vite": "^5.2.10",
"vite-plugin-vue-devtools": "^7.0.27",
"vite-plugin-vuetify": "^2.0.3",
"vue-eslint-parser": "^9.4.2",
"yaml-eslint-parser": "^1.2.2"
}
}

7348
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

741
src-tauri/Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
[package]
name = "TeyvatGuide"
version = "0.4.5"
version = "0.4.6"
description = "Game Tool for Genshin Impact player"
authors = ["BTMuli <bt-muli@outlook.com>"]
license = "MIT"
@@ -13,10 +13,10 @@ edition = "2021"
tauri-build = { version = "1.4", features = [] }
[dependencies]
chrono = "0.4.35"
chrono = "0.4.38"
log = "0.4.21"
serde = { version = "1.0.197", features = ["derive"] }
serde_json = "1.0.114"
serde_json = "1.0.116"
tauri = { version = "1.6.1", features = [ "shell-execute", "shell-open", "window-set-always-on-top", "window-set-fullscreen", "dialog-message", "process-exit", "fs-read-dir", "window-hide", "os-all", "clipboard-all", "dialog-open", "dialog-save", "fs-create-dir", "fs-remove-dir", "fs-write-file", "fs-remove-file", "fs-read-file", "path-all", "fs-exists", "window-close", "window-set-title", "window-unminimize", "window-show", "window-set-focus", "http-request"] }
tauri-utils = "1.5.3"
url = "2.5.0"

View File

@@ -8,7 +8,7 @@
},
"package": {
"productName": "TeyvatGuide",
"version": "0.4.5"
"version": "0.4.6"
},
"tauri": {
"allowlist": {

View File

@@ -202,7 +202,7 @@ async function getDeepLink(): Promise<UnlistenFn> {
async function toUIAF(link: string) {
const url = new URL(link);
const app = url.searchParams.get("app");
if (app === null) {
if (app === null || app === "") {
await router.push("/achievements");
} else {
await router.push("/achievements/?app=" + app);
@@ -225,7 +225,6 @@ async function checkUpdate(): Promise<void> {
color: "error",
timeout: 3000,
});
window.open("https://app.btmuli.ink/docs/Changelogs.html");
return;
}
appStore.buildTime = getBuildTime();
@@ -235,6 +234,7 @@ async function checkUpdate(): Promise<void> {
color: "success",
timeout: 3000,
});
window.open("https://app.btmuli.ink/docs/Changelogs.html");
}
}

View File

@@ -27,7 +27,12 @@
<img src="../../assets/icons/board.svg" alt="annoIcon" class="side-icon" />
</template>
</v-list-item>
<v-list-item :title.attr="'咨讯'" value="news" :link="true" href="/news/2">
<v-list-item
:title.attr="'咨讯'"
value="news"
:link="true"
:href="`/news/2/${appStore.recentNewsType}`"
>
<template #title>咨讯</template>
<template #prepend>
<img src="/platforms/mhy/mys.webp" alt="mihoyo" class="side-icon" />

View File

@@ -9,13 +9,12 @@
</template>
<script lang="ts" setup>
import { event } from "@tauri-apps/api";
import { computed, onMounted } from "vue";
import { UnlistenFn } from "@tauri-apps/api/helpers/event";
import { computed, onMounted, onUnmounted } from "vue";
import { useAppStore } from "../../store/modules/app";
// store
const appStore = useAppStore();
// theme
const themeGet = computed({
get() {
return appStore.theme;
@@ -24,9 +23,10 @@ const themeGet = computed({
appStore.theme = value;
},
});
let themeListener: UnlistenFn;
onMounted(async () => {
await listenOnTheme();
themeListener = await listenOnTheme();
});
async function switchTheme(): Promise<void> {
@@ -34,12 +34,18 @@ async function switchTheme(): Promise<void> {
await event.emit("readTheme", themeGet.value);
}
async function listenOnTheme(): Promise<void> {
await event.listen("readTheme", (e) => {
const theme = <string>e.payload;
async function listenOnTheme(): Promise<UnlistenFn> {
return await event.listen<string>("readTheme", (e) => {
const theme = e.payload;
themeGet.value = theme === "default" ? "default" : "dark";
});
}
onUnmounted(() => {
if (themeListener) {
themeListener();
}
});
</script>
<style lang="css" scoped>
.switch-box {

View File

@@ -43,13 +43,14 @@
<script lang="ts" setup>
import { computed, onMounted, onUpdated, ref } from "vue";
import DucDetailOlb from "./duc-detail-olb.vue";
import DucDetailOlt from "./duc-detail-olt.vue";
import DucDetailOrt from "./duc-detail-ort.vue";
import TGSqlite from "../../plugins/Sqlite";
import { generateShareImg } from "../../utils/TGShare";
import TOverlay from "../main/t-overlay.vue";
import DucDetailOlb from "./duc-detail-olb.vue";
import DucDetailOlt from "./duc-detail-olt.vue";
import DucDetailOrt from "./duc-detail-ort.vue";
interface DucDetailOverlayProps {
modelValue: boolean;
dataVal: TGApp.Sqlite.Character.UserRole;

View File

@@ -4,13 +4,14 @@
<img src="/source/UI/empty.webp" alt="empty" />
<span>今天没有角色过生日哦~</span>
</div>
<div class="tcb-top-active" @click="toBirth(true)" v-else>
<img @click="toPost()" src="/source/UI/act_birthday.png" alt="empty" class="active" />
<div class="tcb-top-active" v-else>
<img @click="toBirth(true)" src="/source/UI/act_birthday.png" alt="empty" class="active" />
<span>今天是{{ cur.map((i) => i.name).join("、") }}的生日哦~</span>
<img v-for="i in cur" :key="i.role_id" class="tcb-cur" :alt="i.name" :src="i.head_icon" />
</div>
<div>即将到来{{ next[0].role_birthday }}</div>
<div v-for="i in next" :key="i.role_id" class="tcb-item">
<img :src="i.head_icon" :alt="i.name" @click="toBirth(i)" />
<img :src="i.head_icon" :alt="i.name" @click="toBirth(i)" :title="i.name" />
<div class="tcb-item-info">
<span>{{ i.name }} 所属{{ i.belong }}</span>
<span>{{ i.introduce }}</span>
@@ -38,10 +39,6 @@ onBeforeMount(async () => {
next.value = TSAvatarBirth.getNextAvatarBirth();
});
async function toPost() {
await router.push("/news/2");
}
function toBirth(type: TGApp.Archive.Birth.RoleItem | true) {
let dateStr;
if (type === true) {
@@ -52,6 +49,14 @@ function toBirth(type: TGApp.Archive.Birth.RoleItem | true) {
} else {
dateStr = type.role_birthday;
}
if (type != true) {
router.push({ name: "留影叙佳期", params: { date: dateStr } });
return;
}
if (cur.value.length > 0 && !cur.value[0].is_subscribe) {
router.push("/news/2/news");
return;
}
router.push({ name: "留影叙佳期", params: { date: dateStr } });
}
</script>
@@ -87,6 +92,14 @@ function toBirth(type: TGApp.Archive.Birth.RoleItem | true) {
cursor: pointer;
}
.tcb-top-active img.tcb-cur {
width: 50px;
height: 50px;
border-radius: 50%;
margin-left: 5px;
background: var(--common-shadow-1);
}
.tcb-item {
position: relative;
display: flex;

View File

@@ -45,12 +45,13 @@
<script lang="ts" setup>
import { onMounted, ref, watch } from "vue";
import TCalendarBirth from "./t-calendar-birth.vue";
import THomeCard from "./t-homecard.vue";
import { AppCalendarData } from "../../data";
import TibCalendarItem from "../itembox/tib-calendar-item.vue";
import ToCalendar from "../overlay/to-calendar.vue";
import TCalendarBirth from "./t-calendar-birth.vue";
import THomeCard from "./t-homecard.vue";
const weekNow = ref<number>(0);
const btnNow = ref<number>(0);
const dateNow = ref<string>("");
@@ -176,7 +177,11 @@ function getContents(day: number): void {
calendarNow.value = getCalendar(day);
characterCards.value = calendarNow.value.filter((item) => item.itemType === "character");
weaponCards.value = calendarNow.value.filter((item) => item.itemType === "weapon");
page.value = 1;
if (page.value !== 1) {
page.value = 1;
} else {
renderItems.value = getGrid();
}
}
</script>
<style lang="css" scoped>

View File

@@ -56,7 +56,6 @@
import { ref, onMounted, onUnmounted } from "vue";
import { useRouter } from "vue-router";
import THomeCard from "./t-homecard.vue";
import Mys from "../../plugins/Mys";
import { useHomeStore } from "../../store/modules/home";
import { createPost, createTGWindow } from "../../utils/TGWindow";
@@ -64,6 +63,8 @@ import { stamp2LastTime } from "../../utils/toolFunc";
import showSnackbar from "../func/snackbar";
import TItembox, { TItemBoxData } from "../main/t-itembox.vue";
import THomeCard from "./t-homecard.vue";
// store
const homeStore = useHomeStore();
@@ -143,8 +144,7 @@ onMounted(async () => {
});
if (poolCards.value.length > 2) {
poolSelect.value = poolCards.value.filter(
(pool) =>
poolTimeGet.value[pool.postId] !== "未开始" && poolTimeGet.value[pool.postId] !== "已结束",
(pool) => poolTimeGet.value[pool.postId] !== "未开始",
);
hasNew.value =
poolCards.value.filter((pool) => poolTimeGet.value[pool.postId] === "未开始").length > 0;
@@ -221,8 +221,7 @@ async function switchPool(): Promise<void> {
);
} else {
poolSelect.value = poolCards.value.filter(
(pool) =>
poolTimeGet.value[pool.postId] !== "未开始" && poolTimeGet.value[pool.postId] !== "已结束",
(pool) => poolTimeGet.value[pool.postId] !== "未开始",
);
}
}
@@ -321,8 +320,8 @@ onUnmounted(() => {
}
.pool-icon {
max-width: 60px;
max-height: 60px;
width: 60px;
height: 60px;
transition: all ease-in-out 0.3s;
}
@@ -332,9 +331,10 @@ onUnmounted(() => {
}
.pool-icon img {
width: 100%;
height: 100%;
border-radius: 8px;
position: absolute;
width: 60px;
height: 60px;
border-radius: 5px;
cursor: pointer;
}

View File

@@ -40,11 +40,12 @@
<script lang="ts" setup>
import { ref, onMounted, onUnmounted } from "vue";
import THomeCard from "./t-homecard.vue";
import Mys from "../../plugins/Mys";
import { createPost } from "../../utils/TGWindow";
import { stamp2LastTime } from "../../utils/toolFunc";
import THomeCard from "./t-homecard.vue";
// data
const positionCards = ref<TGApp.Plugins.Mys.Position.RenderCard[]>([]);
const positionTimeGet = ref<Record<number, string>>({}); // 剩余时间/已结束/未知

View File

@@ -103,7 +103,6 @@ function onCancel() {
visible.value = false;
}
// todo 存在 bug点击成就标题时可能会没有效果
async function searchDirect(word: string): Promise<void> {
await TGLogger.Info(`[ToAchiInfo][${props.data?.id}][Search] 查询 ${word}`);
search.value = word;

View File

@@ -47,7 +47,6 @@ interface TpBackupText {
interface TpBackupTextProps {
data: TpBackupText;
next: unknown;
}
const props = defineProps<TpBackupTextProps>();

View File

@@ -21,7 +21,6 @@ interface TpDivider {
interface TpDividerProps {
data: TpDivider;
next: unknown;
}
const props = defineProps<TpDividerProps>();

View File

@@ -12,9 +12,10 @@
<script lang="ts" setup>
import { StyleValue, ref } from "vue";
import TpoImage from "./tpo-image.vue";
import { bytesToSize } from "../../utils/toolFunc";
import TpoImage from "./tpo-image.vue";
export interface TpImage {
insert: {
image: string;
@@ -29,7 +30,6 @@ export interface TpImage {
}
interface TpImageProps {
data: TpImage;
next: unknown;
}
const props = defineProps<TpImageProps>();

View File

@@ -39,7 +39,6 @@ interface TpLinkCard {
interface TpLinkCardProps {
data: TpLinkCard;
next: unknown;
}
const props = defineProps<TpLinkCardProps>();

Some files were not shown because too many files have changed in this diff Show More