From 2b88ef18a5e90c1a51e5de98b42759d96ece28d7 Mon Sep 17 00:00:00 2001
From: Lhcfl <Lhcfl@outlook.com>
Date: Sat, 13 Apr 2024 15:37:23 +0800
Subject: [PATCH] fix type errors of components

---
 packages/client/src/components/MkNoteSub.vue  |  2 +-
 packages/client/src/components/MkSignin.vue   | 10 +++----
 packages/client/src/components/MkSignup.vue   | 27 ++++++++++---------
 .../src/components/MkUserSelectDialog.vue     | 14 +++++-----
 .../src/components/MkVisibilityPicker.vue     | 10 +++----
 5 files changed, 32 insertions(+), 31 deletions(-)

diff --git a/packages/client/src/components/MkNoteSub.vue b/packages/client/src/components/MkNoteSub.vue
index ba91221b87..08c0bf6c38 100644
--- a/packages/client/src/components/MkNoteSub.vue
+++ b/packages/client/src/components/MkNoteSub.vue
@@ -414,7 +414,7 @@ function onContextmenu(ev: MouseEvent): void {
 						os.pageWindow(notePage(appearNote.value));
 					},
 				},
-				notePage(appearNote.value) != location.pathname
+				notePage(appearNote.value) !== location.pathname
 					? {
 							icon: `${icon("ph-arrows-out-simple")}`,
 							text: i18n.ts.showInPage,
diff --git a/packages/client/src/components/MkSignin.vue b/packages/client/src/components/MkSignin.vue
index f5c5f0ee4d..a49662d974 100644
--- a/packages/client/src/components/MkSignin.vue
+++ b/packages/client/src/components/MkSignin.vue
@@ -145,9 +145,10 @@ import * as os from "@/os";
 import { signIn } from "@/account";
 import { i18n } from "@/i18n";
 import icon from "@/scripts/icon";
+import type { entities } from "firefish-js";
 
 const signing = ref(false);
-const user = ref(null);
+const user = ref<entities.UserDetailed | null>(null);
 const username = ref("");
 const password = ref("");
 const token = ref("");
@@ -249,7 +250,7 @@ function queryKey() {
 function onSubmit() {
 	signing.value = true;
 	console.log("submit");
-	if (window.PublicKeyCredential && user.value.securityKeys) {
+	if (window.PublicKeyCredential && user.value?.securityKeys) {
 		os.api("signin", {
 			username: username.value,
 			password: password.value,
@@ -263,7 +264,7 @@ function onSubmit() {
 				return queryKey();
 			})
 			.catch(loginFailed);
-	} else if (!totpLogin.value && user.value && user.value.twoFactorEnabled) {
+	} else if (!totpLogin.value && user.value?.twoFactorEnabled) {
 		totpLogin.value = true;
 		signing.value = false;
 	} else {
@@ -272,8 +273,7 @@ function onSubmit() {
 			password: password.value,
 			"hcaptcha-response": hCaptchaResponse.value,
 			"g-recaptcha-response": reCaptchaResponse.value,
-			token:
-				user.value && user.value.twoFactorEnabled ? token.value : undefined,
+			token: user.value?.twoFactorEnabled ? token.value : undefined,
 		})
 			.then((res) => {
 				emit("login", res);
diff --git a/packages/client/src/components/MkSignup.vue b/packages/client/src/components/MkSignup.vue
index 6de17b2d48..9870263b7a 100644
--- a/packages/client/src/components/MkSignup.vue
+++ b/packages/client/src/components/MkSignup.vue
@@ -305,12 +305,12 @@ const host = toUnicode(config.host);
 const hcaptcha = ref();
 const recaptcha = ref();
 
-const username: string = ref("");
-const password: string = ref("");
-const retypedPassword: string = ref("");
-const invitationCode: string = ref("");
+const username = ref<string>("");
+const password = ref<string>("");
+const retypedPassword = ref<string>("");
+const invitationCode = ref<string>("");
 const email = ref("");
-const usernameState:
+const usernameState = ref<
 	| null
 	| "wait"
 	| "ok"
@@ -318,9 +318,10 @@ const usernameState:
 	| "error"
 	| "invalid-format"
 	| "min-range"
-	| "max-range" = ref(null);
-const invitationState: null | "entered" = ref(null);
-const emailState:
+	| "max-range"
+	>(null);
+const invitationState = ref<null | "entered">(null);
+const emailState = ref<
 	| null
 	| "wait"
 	| "ok"
@@ -330,11 +331,11 @@ const emailState:
 	| "unavailable:mx"
 	| "unavailable:smtp"
 	| "unavailable"
-	| "error" = ref(null);
-const passwordStrength: "" | "low" | "medium" | "high" = ref("");
-const passwordRetypeState: null | "match" | "not-match" = ref(null);
-const submitting: boolean = ref(false);
-const ToSAgreement: boolean = ref(false);
+	| "error">(null);
+const passwordStrength = ref<"" | "low" | "medium" | "high">("");
+const passwordRetypeState = ref<null | "match" | "not-match" >(null);
+const submitting = ref(false);
+const ToSAgreement = ref(false);
 const hCaptchaResponse = ref(null);
 const reCaptchaResponse = ref(null);
 
diff --git a/packages/client/src/components/MkUserSelectDialog.vue b/packages/client/src/components/MkUserSelectDialog.vue
index 3017e9bd6c..aa3a4c63c1 100644
--- a/packages/client/src/components/MkUserSelectDialog.vue
+++ b/packages/client/src/components/MkUserSelectDialog.vue
@@ -98,16 +98,16 @@ import { defaultStore } from "@/store";
 import { i18n } from "@/i18n";
 
 const emit = defineEmits<{
-	(ev: "ok", selected: entities.UserDetailed): void;
-	(ev: "cancel"): void;
-	(ev: "closed"): void;
+	ok: [selected: entities.UserDetailed];
+	cancel: [];
+	closed: [];
 }>();
 
 const username = ref("");
 const host = ref("");
-const users: entities.UserDetailed[] = ref([]);
-const recentUsers: entities.UserDetailed[] = ref([]);
-const selected: entities.UserDetailed | null = ref(null);
+const users = ref<entities.UserDetailed[]>([]);
+const recentUsers = ref<entities.UserDetailed[]>([]);
+const selected = ref<entities.UserDetailed | null>(null);
 const dialogEl = ref();
 
 const search = () => {
@@ -132,7 +132,7 @@ const ok = () => {
 
 	// 最近使ったユーザー更新
 	let recents = defaultStore.state.recentlyUsedUsers;
-	recents = recents.filter((x) => x !== selected.value.id);
+	recents = recents.filter((x) => x !== selected.value!.id);
 	recents.unshift(selected.value.id);
 	defaultStore.set("recentlyUsedUsers", recents.splice(0, 16));
 };
diff --git a/packages/client/src/components/MkVisibilityPicker.vue b/packages/client/src/components/MkVisibilityPicker.vue
index 0e6f8cb153..088da07eb0 100644
--- a/packages/client/src/components/MkVisibilityPicker.vue
+++ b/packages/client/src/components/MkVisibilityPicker.vue
@@ -3,7 +3,7 @@
 		ref="modal"
 		:z-priority="'high'"
 		:src="src"
-		@click="modal.close()"
+		@click="modal!.close()"
 		@closed="emit('closed')"
 	>
 		<div class="_popup" :class="$style.root">
@@ -159,9 +159,9 @@ const props = withDefaults(
 );
 
 const emit = defineEmits<{
-	(ev: "changeVisibility", v: NoteVisibility): void;
-	(ev: "changeLocalOnly", v: boolean): void;
-	(ev: "closed"): void;
+	changeVisibility: [v: NoteVisibility];
+	changeLocalOnly: [v: boolean];
+	closed: [];
 }>();
 
 const v = ref(props.currentVisibility);
@@ -175,7 +175,7 @@ function choose(visibility: NoteVisibility): void {
 	v.value = visibility;
 	emit("changeVisibility", visibility);
 	nextTick(() => {
-		modal.value.close();
+		modal.value!.close();
 	});
 }
 </script>