From 3ddd68097abcc2416d1e42cfa2c11ec497789ac4 Mon Sep 17 00:00:00 2001
From: Lhcfl <Lhcfl@outlook.com>
Date: Thu, 11 Apr 2024 00:48:35 +0800
Subject: [PATCH] fix type errors

---
 packages/client/src/components/MkCwButton.vue            | 2 +-
 packages/client/src/components/MkDigitalClock.vue        | 2 +-
 packages/client/src/components/MkDonation.vue            | 7 ++++---
 packages/client/src/components/MkDrive.file.vue          | 3 ++-
 packages/client/src/components/MkEmojiPicker.section.vue | 2 +-
 packages/firefish-js/src/entities.ts                     | 1 +
 6 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/packages/client/src/components/MkCwButton.vue b/packages/client/src/components/MkCwButton.vue
index e7a2d3d77a..ccdea3ec90 100644
--- a/packages/client/src/components/MkCwButton.vue
+++ b/packages/client/src/components/MkCwButton.vue
@@ -48,7 +48,7 @@ const toggle = () => {
 };
 
 function focus() {
-	el.value.focus();
+	el.value?.focus();
 }
 
 defineExpose({
diff --git a/packages/client/src/components/MkDigitalClock.vue b/packages/client/src/components/MkDigitalClock.vue
index b42ecf19eb..42eabdf749 100644
--- a/packages/client/src/components/MkDigitalClock.vue
+++ b/packages/client/src/components/MkDigitalClock.vue
@@ -26,7 +26,7 @@ const props = withDefaults(
 	},
 );
 
-let intervalId;
+let intervalId: number;
 const hh = ref("");
 const mm = ref("");
 const ss = ref("");
diff --git a/packages/client/src/components/MkDonation.vue b/packages/client/src/components/MkDonation.vue
index 1c13754c13..ad9df629f4 100644
--- a/packages/client/src/components/MkDonation.vue
+++ b/packages/client/src/components/MkDonation.vue
@@ -29,7 +29,7 @@
 					<MkButton
 						v-if="instance.donationLink"
 						gradate
-						@click="openExternal(instance.donationLink)"
+						@click="openExternal(instance.donationLink!)"
 						>{{
 							i18n.t("_aboutFirefish.donateHost", {
 								host: hostname,
@@ -73,7 +73,8 @@ const emit = defineEmits<{
 	(ev: "closed"): void;
 }>();
 
-const hostname = instance.name?.length < 38 ? instance.name : host;
+const hostname =
+	instance.name?.length && instance.name?.length < 38 ? instance.name : host;
 
 const zIndex = os.claimZIndex("low");
 
@@ -97,7 +98,7 @@ function neverShow() {
 	close();
 }
 
-function openExternal(link) {
+function openExternal(link: string) {
 	window.open(link, "_blank");
 }
 </script>
diff --git a/packages/client/src/components/MkDrive.file.vue b/packages/client/src/components/MkDrive.file.vue
index 5e8a50eec2..9d09da663e 100644
--- a/packages/client/src/components/MkDrive.file.vue
+++ b/packages/client/src/components/MkDrive.file.vue
@@ -47,6 +47,7 @@ import * as os from "@/os";
 import { i18n } from "@/i18n";
 import { me } from "@/me";
 import icon from "@/scripts/icon";
+import type { MenuItem } from "@/types/menu";
 
 const props = withDefaults(
 	defineProps<{
@@ -72,7 +73,7 @@ const title = computed(
 	() => `${props.file.name}\n${props.file.type} ${bytes(props.file.size)}`,
 );
 
-function getMenu() {
+function getMenu(): MenuItem[] {
 	return [
 		{
 			text: i18n.ts.rename,
diff --git a/packages/client/src/components/MkEmojiPicker.section.vue b/packages/client/src/components/MkEmojiPicker.section.vue
index b91195fe65..9fcd5d363d 100644
--- a/packages/client/src/components/MkEmojiPicker.section.vue
+++ b/packages/client/src/components/MkEmojiPicker.section.vue
@@ -14,7 +14,7 @@
 					class="_button"
 					@click.stop="
 						applyUnicodeSkinTone(
-							props.skinTones.indexOf(skinTone) + 1,
+							props.skinTones!.indexOf(skinTone) + 1,
 						)
 					"
 				>
diff --git a/packages/firefish-js/src/entities.ts b/packages/firefish-js/src/entities.ts
index 16cef32827..387f4eb608 100644
--- a/packages/firefish-js/src/entities.ts
+++ b/packages/firefish-js/src/entities.ts
@@ -329,6 +329,7 @@ export type LiteInstanceMetadata = {
 	name: string | null;
 	uri: string;
 	description: string | null;
+	donationLink?: string;
 	tosUrl: string | null;
 	disableRegistration: boolean;
 	disableLocalTimeline: boolean;