diff --git a/packages/client/src/components/MkDrive.file.vue b/packages/client/src/components/MkDrive.file.vue index 80a428adc3..6d348a33e7 100644 --- a/packages/client/src/components/MkDrive.file.vue +++ b/packages/client/src/components/MkDrive.file.vue @@ -182,8 +182,8 @@ function describe() { }, { done: (result: { - canceled: boolean, - result?: string | null, + canceled: boolean; + result?: string | null; }) => { if (!result || result.canceled) return; const comment = result.result; diff --git a/packages/client/src/components/MkLaunchPad.vue b/packages/client/src/components/MkLaunchPad.vue index 084283c270..b3ca7bd34d 100644 --- a/packages/client/src/components/MkLaunchPad.vue +++ b/packages/client/src/components/MkLaunchPad.vue @@ -73,7 +73,7 @@ import { deviceKind } from "@/scripts/device-kind"; const props = withDefaults( defineProps<{ src?: HTMLElement; - anchor?: { + anchor?: { x: "left" | "center" | "right"; y: "top" | "center" | "bottom"; }; diff --git a/packages/client/src/components/MkModal.vue b/packages/client/src/components/MkModal.vue index 57ecc1b0d8..2bed9f8295 100644 --- a/packages/client/src/components/MkModal.vue +++ b/packages/client/src/components/MkModal.vue @@ -108,7 +108,7 @@ type ModalTypes = "popup" | "dialog" | "dialog:top" | "drawer"; const props = withDefaults( defineProps<{ manualShowing?: boolean | null; - anchor?: { + anchor?: { x: "left" | "center" | "right"; y: "top" | "center" | "bottom"; }; diff --git a/packages/client/src/components/MkModalPageWindow.vue b/packages/client/src/components/MkModalPageWindow.vue index e9c8136ae4..a4dea9ee32 100644 --- a/packages/client/src/components/MkModalPageWindow.vue +++ b/packages/client/src/components/MkModalPageWindow.vue @@ -29,7 +29,7 @@ @@ -65,6 +65,7 @@ import type { PageMetadata } from "@/scripts/page-metadata"; import { provideMetadataReceiver } from "@/scripts/page-metadata"; import { Router } from "@/nirax"; import icon from "@/scripts/icon"; +import type { MenuItem } from "@/types/menu"; const props = defineProps<{ initialPath: string; @@ -81,11 +82,11 @@ router.addListener("push", (ctx) => {}); const pageMetadata = ref>(); const rootEl = ref(); -const modal = ref>(); +const modal = ref | null>(null); const path = ref(props.initialPath); const width = ref(860); const height = ref(660); -const history = []; +const history: string[] = []; provide("router", router); provideMetadataReceiver((info) => { @@ -95,7 +96,7 @@ provide("shouldOmitHeaderTitle", true); provide("shouldHeaderThin", true); const pageUrl = computed(() => url + path.value); -const contextmenu = computed(() => { +const contextmenu = computed((): MenuItem[] => { return [ { type: "label", @@ -117,7 +118,7 @@ const contextmenu = computed(() => { text: i18n.ts.openInNewTab, action: () => { window.open(pageUrl.value, "_blank"); - modal.value.close(); + modal.value!.close(); }, }, { @@ -130,23 +131,26 @@ const contextmenu = computed(() => { ]; }); -function navigate(path, record = true) { +function navigate(path: string, record = true) { if (record) history.push(router.getCurrentPath()); router.push(path); } function back() { - navigate(history.pop(), false); + const backTo = history.pop(); + if (backTo) { + navigate(backTo, false); + } } function expand() { mainRouter.push(path.value); - modal.value.close(); + modal.value!.close(); } function popout() { _popout(path.value, rootEl.value); - modal.value.close(); + modal.value!.close(); } function onContextmenu(ev: MouseEvent) { diff --git a/packages/client/src/nirax.ts b/packages/client/src/nirax.ts index f214060762..da162338b6 100644 --- a/packages/client/src/nirax.ts +++ b/packages/client/src/nirax.ts @@ -6,7 +6,7 @@ import { shallowRef } from "vue"; import { safeURIDecode } from "@/scripts/safe-uri-decode"; import { pleaseLogin } from "@/scripts/please-login"; -interface RouteDef { +export interface RouteDef { path: string; component: Component; query?: Record; diff --git a/packages/client/src/os.ts b/packages/client/src/os.ts index 32d84396ef..49d03b76cc 100644 --- a/packages/client/src/os.ts +++ b/packages/client/src/os.ts @@ -3,10 +3,7 @@ import { EventEmitter } from "eventemitter3"; import { type entities, api as firefishApi } from "firefish-js"; import insertTextAtCursor from "insert-text-at-cursor"; -import type { - Component, - Ref, -} from "vue"; +import type { Component, Ref } from "vue"; import { defineAsyncComponent, markRaw, ref } from "vue"; import { i18n } from "./i18n"; import MkDialog from "@/components/MkDialog.vue"; @@ -177,11 +174,13 @@ export function promiseDialog( } let popupIdCount = 0; -export const popups = ref<{ - id: number; - component: Component; - props: Record; -}[]>([]); +export const popups = ref< + { + id: number; + component: Component; + props: Record; + }[] +>([]); const zIndexes = { low: 1000000, diff --git a/packages/client/src/router.ts b/packages/client/src/router.ts index a21df2981e..7273919261 100644 --- a/packages/client/src/router.ts +++ b/packages/client/src/router.ts @@ -1,18 +1,18 @@ import type { AsyncComponentLoader } from "vue"; import { defineAsyncComponent, inject } from "vue"; import { isEmojiMod, isModerator, me } from "@/me"; -import { Router } from "@/nirax"; +import { type RouteDef, Router } from "@/nirax"; import MkError from "@/pages/_error_.vue"; import MkLoading from "@/pages/_loading_.vue"; -const page = (loader: AsyncComponentLoader) => +const page = (loader: AsyncComponentLoader) => defineAsyncComponent({ loader, loadingComponent: MkLoading, errorComponent: MkError, }); -export const routes = [ +export const routes: RouteDef[] = [ { path: "/@:initUser/pages/:initPageName/view-source", component: page(() => import("./pages/page-editor/page-editor.vue")), diff --git a/packages/client/src/scripts/page-metadata.ts b/packages/client/src/scripts/page-metadata.ts index e2f470d0bb..cf8d7938a7 100644 --- a/packages/client/src/scripts/page-metadata.ts +++ b/packages/client/src/scripts/page-metadata.ts @@ -12,6 +12,7 @@ export interface PageMetadata { avatar?: entities.UserDetailed | null; userName?: entities.User | null; bg?: string; + hideHeader?: boolean; } export function definePageMetadata( diff --git a/packages/firefish-js/src/api.types.ts b/packages/firefish-js/src/api.types.ts index 73e9fca69f..890e6bcd48 100644 --- a/packages/firefish-js/src/api.types.ts +++ b/packages/firefish-js/src/api.types.ts @@ -281,9 +281,9 @@ export type Endpoints = { "drive/files/attached-notes": { req: TODO; res: Note[] }; "drive/files/caption-image": { req: { - url: string, - } - res: string, + url: string; + }; + res: string; }; "drive/files/check-existence": { req: TODO; res: TODO }; "drive/files/create": { req: TODO; res: TODO };