Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pull] develop from misskey-dev:develop #6

Merged
merged 56 commits into from
Aug 1, 2024
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
0d76842
docs: format `CONTRIBUTING.md` (#14302)
zyoshoka Jul 26, 2024
46d96c7
fix(build): autogen生成時にbackendを2度buildしているのを修正 (#14309)
kakkokari-gtyih Jul 27, 2024
22c4e9d
fix(frontend): modalが正しく閉じられていないのを修正 (#14307)
kakkokari-gtyih Jul 27, 2024
02ecd1b
refactor
syuilo Jul 28, 2024
5df85b8
enhance(frontend): add withCloseButton option for MkModalWindow
syuilo Jul 28, 2024
085b3ab
update deps (#14312)
syuilo Jul 28, 2024
61f4a03
Fix(frontend): 下書き/削除して編集で保持されない項目があった問題を修正 (#14285)
Sayamame-beans Jul 28, 2024
efa80f9
Bump version to 2024.7.0-beta.3
github-actions[bot] Jul 28, 2024
865b303
fix: deck uiの通知音が重なる問題 (#14029)
anatawa12 Jul 28, 2024
0f0660d
New Crowdin updates (#13916)
syuilo Jul 28, 2024
72bc789
feature: ユーザ作成時にSystemWebhookを発信できるようにする (#14321)
samunohito Jul 29, 2024
1991a02
update node version
syuilo Jul 30, 2024
c3437b1
Bump version to 2024.7.0-rc.4
github-actions[bot] Jul 30, 2024
1a79f0d
:art:
syuilo Jul 30, 2024
b44313f
fix(backend): type(schema) of reactionAcceptance was wrong (#14317)
Sayamame-beans Jul 30, 2024
de3ddb5
enhance: 管理画面でアーカイブにしたお知らせを表示・編集できるように (#14286)
kakkokari-gtyih Jul 30, 2024
738b3ea
enhance(frontend): デッキのアンテナ・リスト選択画面からそれぞれを新規作成できるように (#14104)
kakkokari-gtyih Jul 30, 2024
45f909e
enhance(frontend): ドライブのファイル・フォルダをドラッグしなくても移動できるように (#14318)
kakkokari-gtyih Jul 30, 2024
866abff
enhance(frontend): ブラウザのコンテキストメニューを使用できるように (#14076)
kakkokari-gtyih Jul 30, 2024
5eea41b
Bump version to 2024.7.0-rc.5
github-actions[bot] Jul 30, 2024
7e9c38d
Fix(backend): ドライブのファイルのurl, uri, src の上限引き上げ (#14323)
tai-cha Jul 30, 2024
bff8130
feat: このユーザーのノートを検索, クエリに基づく検索の初期値 & ノート検索のUI改善 (#14128)
tai-cha Jul 30, 2024
7135da7
refactor(actions): remove duplicated paths
kakkokari-gtyih Jul 30, 2024
6bd46e7
refactor(backend): remove unrelated comments
kakkokari-gtyih Jul 30, 2024
b359e3c
Fix condition of noteSearchableScope (#14325)
tai-cha Jul 30, 2024
f0ec68c
:art:
syuilo Jul 30, 2024
39498dd
Merge branch 'develop' of https://github.com/misskey-dev/misskey into…
syuilo Jul 30, 2024
cb3106c
enhance(frontend): 連合の「連合中」,「購読中」,「配信中」に対してブロックしているサーバー、配信停止しているサーバーを…
tai-cha Jul 30, 2024
f965f65
fix(frontend): pure renote cannot create with url based quote (#14270)
Sayamame-beans Jul 30, 2024
3548ffb
enhance(frontend): 自分のクリップ一覧ではアバターを表示しないように (#14256)
kakkokari-gtyih Jul 30, 2024
9181eb2
fix(frontend): emojiPickerを使用して絵文字を挿入する際、refに直接挿入するように (#14282)
kakkokari-gtyih Jul 30, 2024
d1eb10a
New Crowdin updates (#14316)
syuilo Jul 30, 2024
674a424
Bump version to 2024.7.0-rc.6
github-actions[bot] Jul 30, 2024
3411b9c
Update CHANGELOG.md
syuilo Jul 30, 2024
8bae2ec
fix(misskey-js): モデログのフィルタに追加漏れがあったのを修正 (#14328)
samunohito Jul 30, 2024
2307849
fix(misskey-js): misskey-js.api.mdのコミット漏れ修正 (#14329)
samunohito Jul 30, 2024
d0b7c74
検索からハッシュタグのページが開けるように、users/searchに`@`から始まる文字列が与えられた際の処理を修正 等 (#13858)
Sayamame-beans Jul 30, 2024
916ed49
New translations ja-jp.yml (English) (#14327)
syuilo Jul 30, 2024
86b4f49
Bump version to 2024.7.0-rc.7
github-actions[bot] Jul 30, 2024
8f40f93
自分のフォロワー限定投稿に対するリプライがホームタイムラインで見えないことが有る問題を修正 (#13835)
anatawa12 Jul 30, 2024
5c42a0e
feat: media silence (#13842)
anatawa12 Jul 30, 2024
c7354c5
test(#10336): add `components/Mk[D-E].*` stories (#14118)
zyoshoka Jul 30, 2024
0bb5ac0
フォロー中のユーザーに関する"TLに他の人への返信を含める"の設定が分かりづらい問題を修正 (#13895)
anatawa12 Jul 30, 2024
fccc5b6
frontend timeline fixes & improvements (#13727)
anatawa12 Jul 30, 2024
676c599
Update about-misskey.vue
syuilo Jul 30, 2024
8b163cd
fix(frontend): ドライブの音声が再生できない場合の処理を追加 (#14073)
kakkokari-gtyih Jul 30, 2024
400ae6e
Bump version to 2024.7.0-rc.8
github-actions[bot] Jul 30, 2024
63f9c27
:art:
syuilo Jul 30, 2024
3137c10
test: フォローしていないユーザーからの自分への返信が含まれることを確認するテストを追加 (#14333)
anatawa12 Jul 30, 2024
9dacc20
New Crowdin updates (#14331)
syuilo Jul 30, 2024
d63b854
tweak localization
syuilo Jul 30, 2024
4b04b29
chore(locale): update index.d.ts (#14339)
tai-cha Jul 31, 2024
d6ba12e
Fix(frontend): LTL無効時にヘッダーにSTLが表示されてしまう & デフォルト、クラシックでリストが消えている (#14337)
tai-cha Jul 31, 2024
1a521a4
New Crowdin updates (#14335)
syuilo Jul 31, 2024
59e2e43
Release: 2024.7.0
github-actions[bot] Jul 31, 2024
008a66d
[skip ci] Update CHANGELOG.md (prepend template)
github-actions[bot] Jul 31, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 21 additions & 24 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Contribution guide

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

コード改善点

  1. コメントの統一: **Note****Warning**[!NOTE][!WARNING] に統一することで、可読性と視覚的な一貫性を向上させましょう。
  2. 日本語表記の統一: 「Commiter」は「コミッター」と、「Desicion」は「Decision」と、日本語表記を統一しましょう。
  3. コードブロックのインデント: コードブロックのインデントを統一し、可読性を向上させましょう。
  4. 不要な空白行の削除: 不要な空白行を削除し、コードの密度を高めましょう。
  5. 段落の分割: 長い段落を分割し、読みやすくしましょう。

We're glad you're interested in contributing Misskey! In this document you will find the information you need to contribute to the project.

> **Note**
> [!NOTE]
> This project uses Japanese as its major language, **but you do not need to translate and write the Issues/PRs in Japanese.**
> Also, you might receive comments on your Issue/PR in Japanese, but you do not need to reply to them in Japanese as well.\
> The accuracy of machine translation into Japanese is not high, so it will be easier for us to understand if you write it in the original language.
Expand All @@ -17,32 +17,31 @@ Before creating an issue, please check the following:
- Issues should only be used to feature requests, suggestions, and bug tracking.
- Please ask questions or troubleshooting in [GitHub Discussions](https://github.com/misskey-dev/misskey/discussions) or [Discord](https://discord.gg/Wp8gVStHW3).

> **Warning**
> [!WARNING]
> Do not close issues that are about to be resolved. It should remain open until a commit that actually resolves it is merged.


### Recommended discussing before implementation
We welcome your purposal.
We welcome your proposal.

When you want to add a feature or fix a bug, **first have the design and policy reviewed in an Issue** (if it is not there, please make one). Without this step, there is a high possibility that the PR will not be merged even if it is implemented.

At this point, you also need to clarify the goals of the PR you will create, and make sure that the other members of the team are aware of them.
PRs that do not have a clear set of do's and don'ts tend to be bloated and difficult to review.

Also, when you start implementation, assign yourself to the Issue (if you cannot do it yourself, ask Commiter to assign you).
Also, when you start implementation, assign yourself to the Issue (if you cannot do it yourself, ask Committer to assign you).
By expressing your intention to work on the Issue, you can prevent conflicts in the work.

To the Committers: you should not assign someone on it before the Final Decision.

### How issues are triaged

The Commiters may:
The Committers may:
* close an issue that is not reproducible on latest stable release,
* merge an issue into another issue,
* split an issue into multiple issues,
* or re-open that has been closed for some reason which is not applicable anymore.

@syuilo reserves the Final Desicion rights including whether the project will implement feature and how to implement, these rights are not always exercised.
@syuilo reserves the Final Decision rights including whether the project will implement feature and how to implement, these rights are not always exercised.

## Well-known branches
- **`master`** branch is tracking the latest release and used for production purposes.
Expand All @@ -53,14 +52,14 @@ The Commiters may:
## Creating a PR
Thank you for your PR! Before creating a PR, please check the following:
- If possible, prefix the title with a keyword that identifies the type of this PR, as shown below.
- `fix` / `refactor` / `feat` / `enhance` / `perf` / `chore` etc
- Also, make sure that the granularity of this PR is appropriate. Please do not include more than one type of change or interest in a single PR.
- `fix` / `refactor` / `feat` / `enhance` / `perf` / `chore` etc
- Also, make sure that the granularity of this PR is appropriate. Please do not include more than one type of change or interest in a single PR.
- If there is an Issue which will be resolved by this PR, please include a reference to the Issue in the text.
- Please add the summary of the changes to [`CHANGELOG.md`](/CHANGELOG.md). However, this is not necessary for changes that do not affect the users, such as refactoring.
- Check if there are any documents that need to be created or updated due to this change.
- If you have added a feature or fixed a bug, please add a test case if possible.
- Please make sure that tests and Lint are passed in advance.
- You can run it with `pnpm test` and `pnpm lint`. [See more info](#testing)
- You can run it with `pnpm test` and `pnpm lint`. [See more info](#testing)
- If this PR includes UI changes, please attach a screenshot in the text.

Thanks for your cooperation 🤗
Expand All @@ -70,8 +69,8 @@ Be willing to comment on the good points and not just the things you want fixed

### Review perspective
- Scope
- Are the goals of the PR clear?
- Is the granularity of the PR appropriate?
- Are the goals of the PR clear?
- Is the granularity of the PR appropriate?
- Security
- Does merging this PR create a vulnerability?
- Performance
Expand All @@ -93,7 +92,7 @@ An actual domain will be assigned so you can test the federation.

## Release
### Release Instructions
1. Commit version changes in the `develop` branch ([package.json](https://github.com/misskey-dev/misskey/blob/develop/package.json))
1. Commit version changes in the `develop` branch ([package.json](package.json))
2. Create a release PR.
- Into `master` from `develop` branch.
- The title must be in the format `Release: x.y.z`.
Expand All @@ -104,7 +103,7 @@ An actual domain will be assigned so you can test the federation.
- The target branch must be `master`
- The tag name must be the version

> **Note**
> [!NOTE]
> Why this instruction is necessary:
> - To perform final QA checks
> - To distribute responsibility
Expand Down Expand Up @@ -139,7 +138,7 @@ You could obtain middleware container by typing `docker compose -f $PROJECT_ROOT
Devcontainer also has necessary setting. This method can be done by connecting from VSCode.

Instead of running `pnpm` locally, you can use Dev Container to set up your development environment.
To use Dev Container, open the project directory on VSCode with Dev Containers installed.
To use Dev Container, open the project directory on VSCode with Dev Containers installed.
**Note:** If you are using Windows, please clone the repository with WSL. Using Git for Windows will result in broken files due to the difference in how newlines are handled.

It will run the following command automatically inside the container.
Expand All @@ -155,11 +154,9 @@ After finishing the migration, you can proceed.

### Start developing
During development, it is useful to use the

```
pnpm dev
```

command.

- Server-side source files and automatically builds them if they are modified. Automatically start the server process(es).
Expand Down Expand Up @@ -232,7 +229,7 @@ niraxは、Misskeyで使用しているオリジナルのフロントエンド
### ルート定義
ルート定義は、以下の形式のオブジェクトの配列です。

``` ts
```ts
{
name?: string;
path: string;
Expand All @@ -245,7 +242,7 @@ niraxは、Misskeyで使用しているオリジナルのフロントエンド
}
```

> **Warning**
> [!WARNING]
> 現状、ルートは定義された順に評価されます。
> たとえば、`/foo/:id`ルート定義の次に`/foo/bar`ルート定義がされていた場合、後者がマッチすることはありません。

Expand Down Expand Up @@ -307,7 +304,7 @@ export const Default = {
parameters: {
layout: 'centered',
},
} satisfies StoryObj<typeof MkAvatar>;
} satisfies StoryObj<typeof MyComponent>;
```

If you want to opt-out from the automatic generation, create a `MyComponent.stories.impl.ts` file and add the following line to the file.
Expand Down Expand Up @@ -418,7 +415,7 @@ describe('test', () => {
})
.useMocker(...
.compile();

fooService = app.get<FooService>(FooService);
barService = app.get<BarService>(BarService) as jest.Mocked<BarService>;

Expand Down Expand Up @@ -539,13 +536,13 @@ pnpm dlx typeorm migration:generate -d ormconfig.js -o <migration name>
- 作成されたスクリプトは不必要な変更を含むため除去してください

### JSON SchemaのobjectでanyOfを使うとき
JSON Schemaで、objectに対してanyOfを使う場合、anyOfの中でpropertiesを定義しないこと。
バリデーションが効かないため。(SchemaTypeもそのように作られており、objectのanyOf内のpropertiesは捨てられます)
JSON Schemaで、objectに対してanyOfを使う場合、anyOfの中でpropertiesを定義しないこと。
バリデーションが効かないため。(SchemaTypeもそのように作られており、objectのanyOf内のpropertiesは捨てられます)
https://github.com/misskey-dev/misskey/pull/10082

テキストhogeおよびfugaについて、片方を必須としつつ両方の指定もありうる場合:

```
```ts
export const paramDef = {
type: 'object',
properties: {
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
"build-assets": "node ./scripts/build-assets.mjs",

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

コード改善点 (Uncle Bob 風)

  1. 過剰なコマンドチェーンを分割: build-misskey-js-with-types のコマンドは長すぎます。より小さな、目的が明確なコマンドに分割しましょう。
  2. 重複を排除: pnpm --filter backend... --filter=!misskey-js build は他のコマンドでも使われています。共通部分を関数やスクリプトとして切り出し、再利用しましょう。
  3. 意味のある名前: build-misskey-js-with-types のような長い名前は理解しにくいです。より簡潔で意味が伝わる名前に変更しましょう。
  4. コメント: コマンドの意味がすぐに理解できるように、簡単なコメントを追加しましょう。
  5. 可読性を向上: インデントやスペースを適切に利用してコードを見やすくしましょう。

"build": "pnpm build-pre && pnpm -r build && pnpm build-assets",
"build-storybook": "pnpm --filter frontend build-storybook",
"build-misskey-js-with-types": "pnpm build-pre && pnpm --filter backend... --filter=!misskey-js build && pnpm --filter backend generate-api-json && ncp packages/backend/built/api.json packages/misskey-js/generator/api.json && pnpm --filter misskey-js update-autogen-code && pnpm --filter misskey-js build && pnpm --filter misskey-js api",
"build-misskey-js-with-types": "pnpm build-pre && pnpm --filter backend... --filter=!misskey-js build && pnpm --filter backend generate-api-json --no-build && ncp packages/backend/built/api.json packages/misskey-js/generator/api.json && pnpm --filter misskey-js update-autogen-code && pnpm --filter misskey-js build && pnpm --filter misskey-js api",
"start": "pnpm check:connect && cd packages/backend && node ./built/boot/entry.js",
"start:test": "cd packages/backend && cross-env NODE_ENV=test node ./built/boot/entry.js",
"init": "pnpm migrate",
Expand Down
2 changes: 1 addition & 1 deletion packages/backend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
"test:e2e": "pnpm build && pnpm build:test && pnpm jest:e2e",

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

コード改善点 (Uncle Bob スタイル)

  1. ビルド依存関係を削除: generate-api-json スクリプトはビルドに依存していないため、pnpm build を削除して独立した実行にします。
  2. スクリプトの命名を明確化: generate_api_json.js のようなアンダースコアを用いた命名は避けて、generateApiJson.js のようにキャメルケースを使用します。
  3. 依存関係を明示的に宣言: スクリプトで使用されるモジュールを package.jsondependencies または devDependencies に明記します。
  4. テストを充実させる: generate-api-json スクリプトに対して単体テストを追加して、その動作を検証します。
  5. コードの可読性を向上: 必要な箇所でコメントを追加したり、変数名や関数名を適切なものに修正したりして、コードの可読性を向上させます。

"test-and-coverage": "pnpm jest-and-coverage",
"test-and-coverage:e2e": "pnpm build && pnpm build:test && pnpm jest-and-coverage:e2e",
"generate-api-json": "pnpm build && node ./scripts/generate_api_json.js"
"generate-api-json": "node ./scripts/generate_api_json.js"
},
"optionalDependencies": {
"@swc/core-android-arm64": "1.3.11",
Expand Down
35 changes: 29 additions & 6 deletions packages/backend/scripts/generate_api_json.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,34 @@
* SPDX-License-Identifier: AGPL-3.0-only

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

コード改善点 (Uncle Bob 風)

  1. 依存関係の注入: loadConfiggenOpenapiSpec を直接呼び出すのではなく、モジュールとして注入する。これにより、テストやモック化が容易になる。
  2. エラー処理: existsSyncbuilt ディレクトリが存在しない場合にエラーを投げるのではなく、適切なエラーメッセージを表示してプログラムを終了させる。
  3. 非同期処理: execa を使用してビルドプロセスを非同期で行うことで、コードの実行速度を向上させる。
  4. 関数分割: main 関数内のコードをさらに小さな関数に分割することで、コードの可読性と保守性を向上させる。
  5. コメント: コードの意図を明確にするために、適切なコメントを追加する。特に、複雑なロジックや重要な変数の説明を加える。

*/

import { loadConfig } from '../built/config.js'
import { genOpenapiSpec } from '../built/server/api/openapi/gen-spec.js'
import { writeFileSync } from "node:fs";
import { execa } from 'execa';
import { writeFileSync, existsSync } from "node:fs";

const config = loadConfig();
const spec = genOpenapiSpec(config, true);
async function main() {
if (!process.argv.includes('--no-build')) {
await execa('pnpm', ['run', 'build'], {
stdout: process.stdout,
stderr: process.stderr,
});
}

writeFileSync('./built/api.json', JSON.stringify(spec), 'utf-8');
if (!existsSync('./built')) {
throw new Error('`built` directory does not exist.');
}

/** @type {import('../src/config.js')} */
const { loadConfig } = await import('../built/config.js');

/** @type {import('../src/server/api/openapi/gen-spec.js')} */
const { genOpenapiSpec } = await import('../built/server/api/openapi/gen-spec.js');

const config = loadConfig();
const spec = genOpenapiSpec(config, true);

writeFileSync('./built/api.json', JSON.stringify(spec), 'utf-8');
}

main().catch(e => {
console.error(e);
process.exit(1);
});
13 changes: 7 additions & 6 deletions packages/frontend/src/components/MkSystemWebhookEditor.impl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,22 +24,23 @@ export type MkSystemWebhookResult = {
};

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

コード改善点 (Uncle Bob 風)

  1. 不要な変数: dispose 変数は、submitted イベント内で使用されていないため削除できます。
  2. シンプルさ: Promise 内のオブジェクトを簡潔にすることで可読性を向上できます。
  3. 責務: dispose 処理は、closed イベント内に移動することで関心の分離を促進できます。
  4. 名前: _dispose のようなアンダースコア付き変数は、可読性を低下させるため、より明確な名前に変更する必要があります。
  5. エラーハンドリング: popup の潜在的なエラーを処理し、適切なエラーメッセージを表示する必要があります。


export async function showSystemWebhookEditorDialog(props: MkSystemWebhookEditorProps): Promise<MkSystemWebhookResult | null> {
const { dispose, result } = await new Promise<{ dispose: () => void, result: MkSystemWebhookResult | null }>(async resolve => {
const { dispose: _dispose } = os.popup(
const { result } = await new Promise<{ result: MkSystemWebhookResult | null }>(async resolve => {
const { dispose } = os.popup(
defineAsyncComponent(() => import('@/components/MkSystemWebhookEditor.vue')),
props,
{
submitted: (ev: MkSystemWebhookResult) => {
resolve({ dispose: _dispose, result: ev });
resolve({ result: ev });
},
canceled: () => {
resolve({ result: null });
},
closed: () => {
resolve({ dispose: _dispose, result: null });
dispose();
},
},
);
});

dispose();

return result;
}
22 changes: 15 additions & 7 deletions packages/frontend/src/components/MkSystemWebhookEditor.vue
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,15 @@ SPDX-License-Identifier: AGPL-3.0-only

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

コード改善点 (Uncle Bob風に)

  1. 不要なイベントリスナーの削除: @closed イベントリスナーは @close イベントリスナーと重複しているため、削除してコードを簡潔にしましょう。
  2. ダイアログの参照: MkModalWindow コンポーネントへの参照を shallowRef を使って取得し、ダイアログを直接操作できるようにしましょう。
  3. イベントの統一: onCancelClicked 関数は close イベントに統一して、ロジックを簡潔化しましょう。
  4. エラー処理の改善: エラー発生時に dialogEl.value?.close() でダイアログを確実に閉じ、emit('canceled') でキャンセルイベントを発火させましょう。
  5. コメントの改善: 不要なコメントは削除し、必要なコメントは簡潔で分かりやすいものに変更しましょう。

<template>
<MkModalWindow
ref="dialogEl"
:width="450"
:height="590"
:canClose="true"
:withOkButton="false"
:okButtonDisabled="false"
@click="onCancelClicked"
@close="onCancelClicked"
@closed="onCancelClicked"
@closed="emit('closed')"
>
<template #header>
{{ mode === 'create' ? i18n.ts._webhookSettings.createWebhook : i18n.ts._webhookSettings.modifyWebhook }}
Expand Down Expand Up @@ -59,8 +60,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>

<script setup lang="ts">
import { computed, onMounted, ref, toRefs } from 'vue';
import FormSection from '@/components/form/section.vue';
import { computed, onMounted, ref, shallowRef, toRefs } from 'vue';
import MkInput from '@/components/MkInput.vue';
import MkSwitch from '@/components/MkSwitch.vue';
import {
Expand All @@ -82,9 +82,12 @@ type EventType = {

const emit = defineEmits<{
(ev: 'submitted', result: MkSystemWebhookResult): void;
(ev: 'canceled'): void;
(ev: 'closed'): void;
}>();

const dialogEl = shallowRef<InstanceType<typeof MkModalWindow>>();

const props = defineProps<MkSystemWebhookEditorProps>();

const { mode, id, requiredEvents } = toRefs(props);
Expand Down Expand Up @@ -133,12 +136,14 @@ async function onSubmitClicked() {
switch (mode.value) {
case 'create': {
const result = await misskeyApi('admin/system-webhook/create', params);
dialogEl.value?.close();
emit('submitted', result);
break;
}
case 'edit': {
// eslint-disable-next-line
const result = await misskeyApi('admin/system-webhook/update', { id: id.value!, ...params });
dialogEl.value?.close();
emit('submitted', result);
break;
}
Expand All @@ -147,13 +152,15 @@ async function onSubmitClicked() {
} catch (ex: any) {
const msg = ex.message ?? i18n.ts.internalServerErrorDescription;
await os.alert({ type: 'error', title: i18n.ts.error, text: msg });
emit('closed');
dialogEl.value?.close();
emit('canceled');
}
});
}

function onCancelClicked() {
emit('closed');
dialogEl.value?.close();
emit('canceled');
}

async function loadingScope<T>(fn: () => Promise<T>): Promise<T> {
Expand Down Expand Up @@ -183,11 +190,12 @@ onMounted(async () => {
for (const ev of Object.keys(events.value)) {
events.value[ev] = res.on.includes(ev as SystemWebhookEventType);
}
// eslint-disable-next-line
// eslint-disable-next-line @typescript-eslint/no-explicit-any
} catch (ex: any) {
const msg = ex.message ?? i18n.ts.internalServerErrorDescription;
await os.alert({ type: 'error', title: i18n.ts.error, text: msg });
emit('closed');
dialogEl.value?.close();
emit('canceled');
}
break;
}
Expand Down
8 changes: 4 additions & 4 deletions packages/frontend/src/components/MkUserSelectDialog.vue
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

コード改善点 (Uncle Bob風)

  1. shallowRef を適切に利用: dialogEl は参照型なので、shallowRef を使ってパフォーマンスを向上させましょう。
  2. null チェック: dialogEl.value?.close() を使用して、dialogEl が null の場合にエラーを回避しましょう。
  3. 不要な onMounted: onMounted は空なので、削除しても問題ありません。
  4. recents の扱い: recentsdefaultStore.state.recentlyUsedUsers の複製なので、直接操作する代わりに、defaultStore.state.recentlyUsedUsers を更新した方が良いでしょう。
  5. 不要なコメント: // 最近使ったユーザー更新 はコードから明らかで、コメントは不要です。


<script lang="ts" setup>
import { onMounted, ref } from 'vue';
import { onMounted, ref, shallowRef } from 'vue';
import * as Misskey from 'misskey-js';
import MkInput from '@/components/MkInput.vue';
import FormSplit from '@/components/form/split.vue';
Expand Down Expand Up @@ -91,7 +91,7 @@ const host = ref('');
const users = ref<Misskey.entities.UserLite[]>([]);
const recentUsers = ref<Misskey.entities.UserDetailed[]>([]);
const selected = ref<Misskey.entities.UserLite | null>(null);
const dialogEl = ref();
const dialogEl = shallowRef<InstanceType<typeof MkModalWindow>>();

function search() {
if (username.value === '' && host.value === '') {
Expand Down Expand Up @@ -122,7 +122,7 @@ async function ok() {
});
emit('ok', user);

dialogEl.value.close();
dialogEl.value?.close();

// 最近使ったユーザー更新
let recents = defaultStore.state.recentlyUsedUsers;
Expand All @@ -133,7 +133,7 @@ async function ok() {

function cancel() {
emit('cancel');
dialogEl.value.close();
dialogEl.value?.close();
}

onMounted(() => {
Expand Down
Loading
Loading