From a6a91fec3af5314472b0a70402c1ef7e73a478ef Mon Sep 17 00:00:00 2001 From: yukineko <27853966+hideki0403@users.noreply.github.com> Date: Tue, 30 Jan 2024 19:53:53 +0900 Subject: refactor: frontendのcomponentsの型エラーを改善 (#12926) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add: safeFloatParserを追加 * fix: 欠けていた型を追加 * refactor: pageBlockTypesをjson-schemaに移植 * refactor: components/global内の型エラーが出ている箇所を修正 * lint: fix null check style * refactor: fix type error * refactor: fix some type errors * fix: 翻訳が抜けていた箇所を修正 * refactor: getJsonSchemaで正しいスキーマが返されるように修正 * fix: MkChartの型エラーとbytesオプションが機能していない問題を修正 * fix(misskey-js): `drive`->`folderUpdated`のpayloadの型が間違っていたのを修正 * refactor: fix some type errors * change: Captcha読み込み中の文言をLoadingに変更 * refactor(backend/misskey-js): MainEventの型を改善 * refactor: chartjs-plugin-gradientが二重でpluginに登録されていたのを修正 * update: misskey-js.api.md * refactor: fix some type errors * fix: backendのtypecheckが落ちていたのを修正 * update: misskey-js.api.md * add: json-schemaのnoteにpollの型定義を追加 * refactor: noteのjson-schemaの型を改善 * refactor: MkPoll * refactor: fix some type errors * change: UserLiteにisLockedを持たせるように * fix: notificationスキーマにroleが含まれていないのを修正 * Revert "change: UserLiteにisLockedを持たせるように" This reverts commit 1bb0c8e7a9b19a4e9f21bf7381712b98f27672a5. * fix: フォロー通知から鍵垢へのフォローを行うと処理中のまま止まってしまう問題を修正 * refactor: noteスキーマのvisibilityにenumを追加 * change: deepCloneのCloneableTypeにundefinedを追加 * refactor: fix some type errors * refactor: `allowEmpty: false`を使用していた箇所を`minLength: 1`に置き換え * enhance: API 'retension' のresponseの型を追加 * fix: Chart関連のtooltipが正しい位置に表示されない問題を修正 * refactor: fix some type errors * fix: 型情報が不足していたのを修正 * enhance: announcementスキーマにenumを追加 * enhance: ロールポリシーの型定義をRoleServiceからjson-schemaに移植 * refactor: policiesを`ref: RolePolicies`に統一 * fix: API `meta` のレスポンスの型にpoliciesが含まれていないのを修正 * refactor: fix some type errors * fix: backendのlintが落ちているのを修正 * fix: MkFoldableSectionの開閉時のanimationが適用されていない問題を修正 * fix: backendのtypecheckが落ちているのを修正 * update: run build-misskey-js-with-types * fix: MkDialogのmount時に文字数制限の判定が行われない問題を修正 * update: CHANGELOG.md * refactor: MkUserSelectDialogの型を改善 * fix: deepCloneでundefinedはcloneしないように (#9207) * change: frontendのcloneをbackend側にも反映 * update: CHANGELOG.md * fix: RoleServiceからPackを通して型RolePoliciesに依存させないように * Update packages/frontend/src/scripts/get-note-summary.ts * revert RoleService.ts changes * change: optional chaining -> non-null assertion * remove: unused import * fix: propsで渡されたuserがUserLiteの場合に意図しない動作になってしまうのを修正 * change: fix null check style * refactor: fix type error * change: fix null check style * Update packages/frontend/src/components/MkDrive.vue Co-authored-by: syuilo * refactor: css moduleでglobalを使わないように * refactor: roleのiconUrlは必ず存在するものとして扱うように * enhance: MenuButtonのactiveにcomputedを受け付けられるように * Update packages/frontend/src/components/MkNotePreview.vue * Update MkWindow.vue * refactor: notification.noteは必ず存在するものとして扱うように * Update packages/frontend/src/components/MkNotification.vue Co-authored-by: syuilo * fix: MkSignupDialogでdoneのemit時にresを含んでいなかったのを修正 * Update packages/frontend/src/scripts/clone.ts Co-authored-by: syuilo * refactor: 不要な返り値の型を削除 * refactor: 不要なnullチェックを削除 * update: misskey-js-autogen * update: clone.ts * refactor * Update MkNotification.vue * Update MkNotification.vue * :v: * Update MkNotification.vue * Update MkNotification.vue * Update MkNotification.vue * Update MkNotifications.vue * Update MkUserSetupDialog.Profile.vue * Update MkUserCardMini.vue * :v: * Update MkMenu.vue --------- Co-authored-by: syuilo --- .../src/components/MkAbuseReportWindow.vue | 2 +- .../frontend/src/components/MkAchievements.vue | 2 +- .../src/components/MkAnnouncementDialog.vue | 4 +- packages/frontend/src/components/MkAsUi.vue | 42 ++++++--- packages/frontend/src/components/MkButton.vue | 2 +- packages/frontend/src/components/MkCaptcha.vue | 3 +- packages/frontend/src/components/MkChart.vue | 49 +++++----- packages/frontend/src/components/MkChartLegend.vue | 14 ++- packages/frontend/src/components/MkColorInput.vue | 4 +- packages/frontend/src/components/MkContextMenu.vue | 10 +- packages/frontend/src/components/MkCwButton.vue | 22 +---- .../src/components/MkDateSeparatedList.vue | 42 +++++---- packages/frontend/src/components/MkDialog.vue | 6 +- .../frontend/src/components/MkDrive.folder.vue | 2 +- packages/frontend/src/components/MkDrive.vue | 9 +- .../src/components/MkEmojiPicker.section.vue | 6 +- packages/frontend/src/components/MkEmojiPicker.vue | 4 +- .../src/components/MkFileCaptionEditWindow.vue | 4 +- .../frontend/src/components/MkFileListForAdmin.vue | 2 +- .../frontend/src/components/MkFoldableSection.vue | 47 +++++----- packages/frontend/src/components/MkFolder.vue | 4 +- .../frontend/src/components/MkForgotPassword.vue | 4 +- packages/frontend/src/components/MkFormDialog.vue | 9 +- .../src/components/MkGalleryPostPreview.vue | 4 +- packages/frontend/src/components/MkHeatmap.vue | 27 +++--- .../frontend/src/components/MkImgWithBlurhash.vue | 2 +- packages/frontend/src/components/MkInput.vue | 29 +++--- .../frontend/src/components/MkInstanceStats.vue | 34 ++++++- .../frontend/src/components/MkInstanceTicker.vue | 8 +- packages/frontend/src/components/MkLaunchPad.vue | 4 +- packages/frontend/src/components/MkMarquee.vue | 1 + packages/frontend/src/components/MkMediaList.vue | 17 ++-- packages/frontend/src/components/MkMenu.child.vue | 5 +- packages/frontend/src/components/MkMenu.vue | 28 +++--- packages/frontend/src/components/MkMiniChart.vue | 4 +- packages/frontend/src/components/MkModalWindow.vue | 4 +- packages/frontend/src/components/MkNote.vue | 64 +++++++------ .../frontend/src/components/MkNoteDetailed.vue | 55 +++++------ packages/frontend/src/components/MkNoteHeader.vue | 2 +- packages/frontend/src/components/MkNotePreview.vue | 10 +- .../frontend/src/components/MkNotification.vue | 39 +++++--- .../frontend/src/components/MkNotifications.vue | 4 +- packages/frontend/src/components/MkOmit.vue | 4 +- packages/frontend/src/components/MkPagePreview.vue | 2 +- packages/frontend/src/components/MkPageWindow.vue | 14 +-- packages/frontend/src/components/MkPagination.vue | 6 +- packages/frontend/src/components/MkPoll.vue | 38 ++++---- packages/frontend/src/components/MkPollEditor.vue | 42 ++++----- packages/frontend/src/components/MkPostForm.vue | 83 ++++++++-------- .../frontend/src/components/MkPostFormAttaches.vue | 2 +- .../frontend/src/components/MkPostFormDialog.vue | 12 +-- .../components/MkPushNotificationAllowButton.vue | 2 +- packages/frontend/src/components/MkRadios.vue | 2 +- packages/frontend/src/components/MkRange.vue | 4 +- .../src/components/MkReactionsViewer.reaction.vue | 7 +- .../frontend/src/components/MkRetentionHeatmap.vue | 30 +++--- .../src/components/MkRetentionLineChart.vue | 12 ++- packages/frontend/src/components/MkSelect.vue | 34 ++++--- packages/frontend/src/components/MkSignin.vue | 1 + .../src/components/MkSignupDialog.form.vue | 3 +- .../src/components/MkSignupDialog.rules.vue | 6 +- .../frontend/src/components/MkSignupDialog.vue | 14 +-- packages/frontend/src/components/MkSparkle.vue | 7 +- .../frontend/src/components/MkSubNoteContent.vue | 6 +- .../frontend/src/components/MkSwitch.button.vue | 2 +- packages/frontend/src/components/MkTab.vue | 12 +-- packages/frontend/src/components/MkTagCloud.vue | 2 +- packages/frontend/src/components/MkTextarea.vue | 20 ++-- packages/frontend/src/components/MkTimeline.vue | 11 ++- packages/frontend/src/components/MkTooltip.vue | 2 +- .../src/components/MkTutorialDialog.Note.vue | 5 +- .../src/components/MkTutorialDialog.PostNote.vue | 2 +- .../src/components/MkTutorialDialog.Sensitive.vue | 2 +- .../components/MkUserAnnouncementEditDialog.vue | 34 +++---- .../frontend/src/components/MkUserCardMini.vue | 104 +++++++++------------ packages/frontend/src/components/MkUserPopup.vue | 1 + .../frontend/src/components/MkUserSelectDialog.vue | 17 ++-- .../src/components/MkUserSetupDialog.Follow.vue | 28 ++++-- .../src/components/MkUserSetupDialog.Profile.vue | 4 +- .../frontend/src/components/MkVisibilityPicker.vue | 2 +- .../MkVisitorDashboard.ActiveUsersChart.vue | 17 ++-- .../frontend/src/components/MkVisitorDashboard.vue | 8 +- .../frontend/src/components/MkWaitingDialog.vue | 2 +- packages/frontend/src/components/MkWidgets.vue | 8 +- packages/frontend/src/components/MkWindow.vue | 76 ++++++++------- .../frontend/src/components/MkYouTubePlayer.vue | 2 +- packages/frontend/src/components/global/MkAcct.vue | 2 +- .../frontend/src/components/global/MkAvatar.vue | 9 +- .../src/components/global/MkCustomEmoji.vue | 2 +- .../components/global/MkMisskeyFlavoredMarkdown.ts | 35 +++---- .../src/components/global/MkPageHeader.tabs.vue | 12 ++- .../src/components/global/MkStickyContainer.vue | 23 +++-- packages/frontend/src/components/global/MkTime.vue | 2 +- .../frontend/src/components/page/block.type.ts | 34 ------- .../frontend/src/components/page/page.block.vue | 3 +- .../frontend/src/components/page/page.image.vue | 12 ++- .../frontend/src/components/page/page.note.vue | 4 +- .../frontend/src/components/page/page.section.vue | 3 +- .../frontend/src/components/page/page.text.vue | 5 +- 99 files changed, 779 insertions(+), 693 deletions(-) delete mode 100644 packages/frontend/src/components/page/block.type.ts (limited to 'packages/frontend/src/components') diff --git a/packages/frontend/src/components/MkAbuseReportWindow.vue b/packages/frontend/src/components/MkAbuseReportWindow.vue index 7814681ea2..39745a97ce 100644 --- a/packages/frontend/src/components/MkAbuseReportWindow.vue +++ b/packages/frontend/src/components/MkAbuseReportWindow.vue @@ -39,7 +39,7 @@ import * as os from '@/os.js'; import { i18n } from '@/i18n.js'; const props = defineProps<{ - user: Misskey.entities.User; + user: Misskey.entities.UserDetailed; initialComment?: string; }>(); diff --git a/packages/frontend/src/components/MkAchievements.vue b/packages/frontend/src/components/MkAchievements.vue index 1137eaf970..ff8a9fa1a5 100644 --- a/packages/frontend/src/components/MkAchievements.vue +++ b/packages/frontend/src/components/MkAchievements.vue @@ -6,7 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only - {{ c.text }} - + {{ c.text }} + {{ c.text }}
{{ button.text }} @@ -20,19 +20,19 @@ SPDX-License-Identifier: AGPL-3.0-only - + - + - + - + @@ -42,8 +42,8 @@ SPDX-License-Identifier: AGPL-3.0-only
@@ -52,7 +52,7 @@ SPDX-License-Identifier: AGPL-3.0-only -
+
@@ -68,7 +68,7 @@ import MkInput from '@/components/MkInput.vue'; import MkSwitch from '@/components/MkSwitch.vue'; import MkTextarea from '@/components/MkTextarea.vue'; import MkSelect from '@/components/MkSelect.vue'; -import { AsUiComponent } from '@/scripts/aiscript/ui.js'; +import { AsUiComponent, AsUiRoot, AsUiPostFormButton } from '@/scripts/aiscript/ui.js'; import MkFolder from '@/components/MkFolder.vue'; import MkPostForm from '@/components/MkPostForm.vue'; @@ -85,20 +85,32 @@ const props = withDefaults(defineProps<{ const c = props.component; function g(id) { - return props.components.find(x => x.value.id === id).value; + const v = props.components.find(x => x.value.id === id)?.value; + if (v) return v; + + return { + id: 'dummy', + type: 'root', + children: [], + } as AsUiRoot; } -const valueForSwitch = ref(c.default ?? false); +const valueForSwitch = ref('default' in c && typeof c.default === 'boolean' ? c.default : false); function onSwitchUpdate(v) { valueForSwitch.value = v; - if (c.onChange) c.onChange(v); + if ('onChange' in c && c.onChange) { + c.onChange(v as never); + } } function openPostForm() { + const form = (c as AsUiPostFormButton).form; + if (!form) return; + os.post({ - initialText: c.form.text, - initialCw: c.form.cw, + initialText: form.text, + initialCw: form.cw, instant: true, }); } diff --git a/packages/frontend/src/components/MkButton.vue b/packages/frontend/src/components/MkButton.vue index 8d4631968d..70de6a851a 100644 --- a/packages/frontend/src/components/MkButton.vue +++ b/packages/frontend/src/components/MkButton.vue @@ -22,7 +22,7 @@ SPDX-License-Identifier: AGPL-3.0-only
diff --git a/packages/frontend/src/components/MkCaptcha.vue b/packages/frontend/src/components/MkCaptcha.vue index f60c721eae..7aa08cf51f 100644 --- a/packages/frontend/src/components/MkCaptcha.vue +++ b/packages/frontend/src/components/MkCaptcha.vue @@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only