monkeeShark/packages/frontend/src/ui/_common_/common.ts

86 lines
1.9 KiB
TypeScript
Raw Normal View History

2022-12-28 04:29:42 +00:00
import * as os from '@/os';
import { instance } from '@/instance';
import { host } from '@/config';
import { i18n } from '@/i18n';
import { $i } from '@/account';
2022-12-28 04:29:42 +00:00
export function openInstanceMenu(ev: MouseEvent) {
os.popupMenu([{
text: instance.name ?? host,
type: 'label',
}, {
type: 'link',
text: i18n.ts.instanceInfo,
icon: 'ti ti-info-circle',
to: '/about',
}, {
type: 'link',
text: i18n.ts.customEmojis,
2022-12-31 11:36:49 +00:00
icon: 'ti ti-icons',
2022-12-28 04:29:42 +00:00
to: '/about#emojis',
}, {
type: 'link',
text: i18n.ts.federation,
icon: 'ti ti-whirl',
to: '/about#federation',
}, {
type: 'link',
text: i18n.ts.charts,
icon: 'ti ti-chart-line',
to: '/about#charts',
}, null, {
type: 'parent',
2022-12-28 04:34:47 +00:00
text: i18n.ts.tools,
icon: 'ti ti-tool',
2022-12-28 04:29:42 +00:00
children: [{
type: 'link',
to: '/scratchpad',
text: i18n.ts.scratchpad,
icon: 'ti ti-terminal-2',
}, {
type: 'link',
to: '/api-console',
text: 'API Console',
icon: 'ti ti-terminal-2',
2023-01-08 08:41:09 +00:00
}, {
type: 'link',
to: '/clicker',
text: '🍪👈',
icon: 'ti ti-cookie',
}, ($i && ($i.isAdmin || $i.role.canInvite) && instance.disableRegistration) ? {
text: i18n.ts.invite,
icon: 'ti ti-user-plus',
action: () => {
os.api('invite').then(x => {
os.alert({
type: 'info',
text: x.code,
});
}).catch(err => {
os.alert({
type: 'error',
text: err,
});
});
},
} : undefined, ($i && ($i.isAdmin || $i.role.canManageCustomEmojis)) ? {
type: 'link',
to: '/custom-emojis-manager',
text: i18n.ts.manageCustomEmojis,
icon: 'ti ti-icons',
} : undefined],
2022-12-28 04:34:47 +00:00
}, null, {
text: i18n.ts.help,
icon: 'ti ti-question-circle',
2023-01-09 04:39:16 +00:00
action: () => {
window.open('https://misskey-hub.net/help.html', '_blank');
},
2022-12-28 04:29:42 +00:00
}, {
type: 'link',
text: i18n.ts.aboutMisskey,
to: '/about-misskey',
}], ev.currentTarget ?? ev.target, {
align: 'left',
});
}