112 lines
2.4 KiB
TypeScript
112 lines
2.4 KiB
TypeScript
import XCheatSheet from "@/components/MkCheatSheetDialog.vue";
|
|
import XTutorial from "@/components/MkTutorialDialog.vue";
|
|
import { host } from "@/config";
|
|
import { i18n } from "@/i18n";
|
|
import { instance } from "@/instance";
|
|
import * as os from "@/os";
|
|
import icon from "@/scripts/icon";
|
|
import { defaultStore } from "@/store";
|
|
import type { MenuItem } from "@/types/menu";
|
|
|
|
const instanceSpecificItems: MenuItem[] = [];
|
|
|
|
if (instance.tosUrl != null) {
|
|
instanceSpecificItems.push({
|
|
type: "button",
|
|
text: i18n.ts.tos,
|
|
icon: `${icon("ph-scroll")}`,
|
|
action: () => {
|
|
window.open(instance.tosUrl, "_blank");
|
|
},
|
|
});
|
|
}
|
|
|
|
for (const { name, url } of instance.moreUrls) {
|
|
instanceSpecificItems.push({
|
|
type: "button",
|
|
text: name,
|
|
icon: `${icon("ph-link-simple")}`,
|
|
action: () => {
|
|
window.open(url, "_blank");
|
|
},
|
|
});
|
|
}
|
|
|
|
export function openHelpMenu_(ev: MouseEvent) {
|
|
os.popupMenu(
|
|
[
|
|
{
|
|
text: instance.name ?? host,
|
|
type: "label",
|
|
},
|
|
{
|
|
type: "link",
|
|
text: i18n.ts.instanceInfo,
|
|
icon: `${icon("ph-info")}`,
|
|
to: "/about",
|
|
},
|
|
{
|
|
type: "link",
|
|
text: i18n.ts.aboutFirefish,
|
|
icon: `${icon("ph-lightbulb")}`,
|
|
to: "/about-firefish",
|
|
},
|
|
...(instanceSpecificItems.length >= 2 ? [null] : []),
|
|
...instanceSpecificItems,
|
|
null,
|
|
{
|
|
type: "button",
|
|
text: i18n.ts.apps,
|
|
icon: `${icon("ph-device-mobile")}`,
|
|
action: () => {
|
|
window.open("https://joinfirefish.org/apps", "_blank");
|
|
},
|
|
},
|
|
{
|
|
type: "button",
|
|
action: async () => {
|
|
defaultStore.set("tutorial", 0);
|
|
os.popup(XTutorial, {}, {}, "closed");
|
|
},
|
|
text: i18n.ts.replayTutorial,
|
|
icon: `${icon("ph-circle-wavy-question")}`,
|
|
},
|
|
{
|
|
type: "button",
|
|
text: i18n.ts._mfm.cheatSheet,
|
|
icon: `${icon("ph-question")}`,
|
|
action: async () => {
|
|
os.popup(XCheatSheet, {}, {}, "closed");
|
|
},
|
|
},
|
|
null,
|
|
{
|
|
type: "parent",
|
|
text: i18n.ts.developer,
|
|
icon: `${icon("ph-code")}`,
|
|
children: [
|
|
{
|
|
type: "link",
|
|
to: "/api-console",
|
|
text: "API Console",
|
|
icon: `${icon("ph-terminal-window")}`,
|
|
},
|
|
{
|
|
text: i18n.ts.document,
|
|
icon: `${icon("ph-file-doc")}`,
|
|
action: () => {
|
|
window.open("/api-doc", "_blank");
|
|
},
|
|
},
|
|
{
|
|
type: "link",
|
|
to: "/scratchpad",
|
|
text: "AiScript Scratchpad",
|
|
icon: `${icon("ph-scribble-loop")}`,
|
|
},
|
|
],
|
|
},
|
|
],
|
|
ev.currentTarget ?? ev.target,
|
|
);
|
|
}
|