summaryrefslogtreecommitdiff
path: root/packages/frontend/src/scripts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-02-22 18:06:25 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2023-02-22 18:06:25 +0900
commit76583510419a7a21dfc3c43c9a6e29de791da0fa (patch)
tree07c05b0e5331256140becb55dc85928b6618e272 /packages/frontend/src/scripts
parentMerge branch 'develop' (diff)
parent13.7.0 (diff)
downloadmisskey-76583510419a7a21dfc3c43c9a6e29de791da0fa.tar.gz
misskey-76583510419a7a21dfc3c43c9a6e29de791da0fa.tar.bz2
misskey-76583510419a7a21dfc3c43c9a6e29de791da0fa.zip
Merge branch 'develop'
Diffstat (limited to 'packages/frontend/src/scripts')
-rw-r--r--packages/frontend/src/scripts/aiscript/ui.ts2
-rw-r--r--packages/frontend/src/scripts/get-note-menu.ts14
-rw-r--r--packages/frontend/src/scripts/get-user-menu.ts36
-rw-r--r--packages/frontend/src/scripts/get-user-name.ts2
-rw-r--r--packages/frontend/src/scripts/hpml/evaluator.ts5
-rw-r--r--packages/frontend/src/scripts/hpml/index.ts14
-rw-r--r--packages/frontend/src/scripts/hpml/lib.ts57
-rw-r--r--packages/frontend/src/scripts/hpml/type-checker.ts4
-rw-r--r--packages/frontend/src/scripts/popup-position.ts1
-rw-r--r--packages/frontend/src/scripts/scroll.ts16
-rw-r--r--packages/frontend/src/scripts/search.ts2
-rw-r--r--packages/frontend/src/scripts/use-leave-guard.ts4
12 files changed, 59 insertions, 98 deletions
diff --git a/packages/frontend/src/scripts/aiscript/ui.ts b/packages/frontend/src/scripts/aiscript/ui.ts
index fb73c0b4b7..6b8041d78e 100644
--- a/packages/frontend/src/scripts/aiscript/ui.ts
+++ b/packages/frontend/src/scripts/aiscript/ui.ts
@@ -1,4 +1,4 @@
-import { Interpreter, Parser, utils, values } from '@syuilo/aiscript';
+import { utils, values } from '@syuilo/aiscript';
import { v4 as uuid } from 'uuid';
import { ref, Ref } from 'vue';
diff --git a/packages/frontend/src/scripts/get-note-menu.ts b/packages/frontend/src/scripts/get-note-menu.ts
index b5d2251d28..9da7447bfd 100644
--- a/packages/frontend/src/scripts/get-note-menu.ts
+++ b/packages/frontend/src/scripts/get-note-menu.ts
@@ -1,6 +1,5 @@
-import { defineAsyncComponent, Ref, inject } from 'vue';
+import { defineAsyncComponent, Ref } from 'vue';
import * as misskey from 'misskey-js';
-import { pleaseLogin } from './please-login';
import { claimAchievement } from './achievements';
import { $i } from '@/account';
import { i18n } from '@/i18n';
@@ -9,7 +8,6 @@ import * as os from '@/os';
import copyToClipboard from '@/scripts/copy-to-clipboard';
import { url } from '@/config';
import { noteActions } from '@/store';
-import { notePage } from '@/filters/note';
import { miLocalStorage } from '@/local-storage';
export function getNoteMenu(props: {
@@ -202,7 +200,7 @@ export function getNoteMenu(props: {
props.translating.value = true;
const res = await os.api('notes/translate', {
noteId: appearNote.id,
- targetLang: miLocalStorage.getItem('lang') || navigator.language,
+ targetLang: miLocalStorage.getItem('lang') ?? navigator.language,
});
props.translating.value = false;
props.translation.value = res;
@@ -242,7 +240,7 @@ export function getNoteMenu(props: {
icon: 'ti ti-external-link',
text: i18n.ts.showOnRemote,
action: () => {
- window.open(appearNote.url || appearNote.uri, '_blank');
+ window.open(appearNote.url ?? appearNote.uri, '_blank');
},
} : undefined,
{
@@ -292,7 +290,7 @@ export function getNoteMenu(props: {
...($i.isModerator || $i.isAdmin ? [
null,
{
- icon: 'fas fa-bullhorn',
+ icon: 'ti ti-speakerphone',
text: i18n.ts.promote,
action: promote
}]
@@ -304,7 +302,7 @@ export function getNoteMenu(props: {
icon: 'ti ti-exclamation-circle',
text: i18n.ts.reportAbuse,
action: () => {
- const u = appearNote.url || appearNote.uri || `${url}/notes/${appearNote.id}`;
+ const u = appearNote.url ?? appearNote.uri ?? `${url}/notes/${appearNote.id}`;
os.popup(defineAsyncComponent(() => import('@/components/MkAbuseReportWindow.vue')), {
user: appearNote.user,
initialComment: `Note: ${u}\n-----\n`,
@@ -346,7 +344,7 @@ export function getNoteMenu(props: {
icon: 'ti ti-external-link',
text: i18n.ts.showOnRemote,
action: () => {
- window.open(appearNote.url || appearNote.uri, '_blank');
+ window.open(appearNote.url ?? appearNote.uri, '_blank');
},
} : undefined]
.filter(x => x !== undefined);
diff --git a/packages/frontend/src/scripts/get-user-menu.ts b/packages/frontend/src/scripts/get-user-menu.ts
index 941d9a0db9..557b257f62 100644
--- a/packages/frontend/src/scripts/get-user-menu.ts
+++ b/packages/frontend/src/scripts/get-user-menu.ts
@@ -1,4 +1,3 @@
-import * as Acct from 'misskey-js/built/acct';
import { defineAsyncComponent } from 'vue';
import { i18n } from '@/i18n';
import copyToClipboard from '@/scripts/copy-to-clipboard';
@@ -35,28 +34,6 @@ export function getUserMenu(user, router: Router = mainRouter) {
});
}
- async function inviteGroup() {
- const groups = await os.api('users/groups/owned');
- if (groups.length === 0) {
- os.alert({
- type: 'error',
- text: i18n.ts.youHaveNoGroups,
- });
- return;
- }
- const { canceled, result: groupId } = await os.select({
- title: i18n.ts.group,
- items: groups.map(group => ({
- value: group.id, text: group.name,
- })),
- });
- if (canceled) return;
- os.apiWithDialog('users/groups/invite', {
- groupId: groupId,
- userId: user.id,
- });
- }
-
async function toggleMute() {
if (user.isMuted) {
os.apiWithDialog('mute/delete', {
@@ -156,20 +133,11 @@ export function getUserMenu(user, router: Router = mainRouter) {
action: () => {
os.post({ specified: user });
},
- }, meId !== user.id ? {
- type: 'link',
- icon: 'ti ti-messages',
- text: i18n.ts.startMessaging,
- to: '/my/messaging/' + Acct.toString(user),
- } : undefined, null, {
+ }, null, {
icon: 'ti ti-list',
text: i18n.ts.addToList,
action: pushList,
- }, meId !== user.id ? {
- icon: 'ti ti-users',
- text: i18n.ts.inviteToGroup,
- action: inviteGroup,
- } : undefined] as any;
+ }] as any;
if ($i && meId !== user.id) {
menu = menu.concat([null, {
diff --git a/packages/frontend/src/scripts/get-user-name.ts b/packages/frontend/src/scripts/get-user-name.ts
index d499ea0203..4daf203e06 100644
--- a/packages/frontend/src/scripts/get-user-name.ts
+++ b/packages/frontend/src/scripts/get-user-name.ts
@@ -1,3 +1,3 @@
export default function(user: { name?: string | null, username: string }): string {
- return user.name || user.username;
+ return user.name === '' ? user.username : user.name ?? user.username;
}
diff --git a/packages/frontend/src/scripts/hpml/evaluator.ts b/packages/frontend/src/scripts/hpml/evaluator.ts
index d4090ea15c..7bddd3f62d 100644
--- a/packages/frontend/src/scripts/hpml/evaluator.ts
+++ b/packages/frontend/src/scripts/hpml/evaluator.ts
@@ -1,11 +1,10 @@
import autobind from 'autobind-decorator';
-import { markRaw, ref, Ref, unref } from 'vue';
+import { ref, Ref, unref } from 'vue';
import { collectPageVars } from '../collect-page-vars';
-import { initHpmlLib, initAiLib } from './lib';
+import { initHpmlLib } from './lib';
import { Expr, isLiteralValue, Variable } from './expr';
import { PageVar, envVarsDef, Fn, HpmlScope, HpmlError } from '.';
import { version } from '@/config';
-import * as os from '@/os';
/**
* Hpml evaluator
diff --git a/packages/frontend/src/scripts/hpml/index.ts b/packages/frontend/src/scripts/hpml/index.ts
index 9a55a5c286..587c6a36c8 100644
--- a/packages/frontend/src/scripts/hpml/index.ts
+++ b/packages/frontend/src/scripts/hpml/index.ts
@@ -15,12 +15,12 @@ export type Type = 'string' | 'number' | 'boolean' | 'stringArray' | null;
export const literalDefs: Record<string, { out: any; category: string; icon: any; }> = {
text: { out: 'string', category: 'value', icon: 'ti ti-quote' },
- multiLineText: { out: 'string', category: 'value', icon: 'fas fa-align-left' },
- textList: { out: 'stringArray', category: 'value', icon: 'fas fa-list' },
- number: { out: 'number', category: 'value', icon: 'fas fa-sort-numeric-up' },
- ref: { out: null, category: 'value', icon: 'fas fa-magic' },
- aiScriptVar: { out: null, category: 'value', icon: 'fas fa-magic' },
- fn: { out: 'function', category: 'value', icon: 'fas fa-square-root-alt' },
+ multiLineText: { out: 'string', category: 'value', icon: 'ti ti-align-left' },
+ textList: { out: 'stringArray', category: 'value', icon: 'ti ti-list' },
+ number: { out: 'number', category: 'value', icon: 'ti ti-list-numbers' },
+ ref: { out: null, category: 'value', icon: 'ti ti-wand' },
+ aiScriptVar: { out: null, category: 'value', icon: 'ti ti-wand' },
+ fn: { out: 'function', category: 'value', icon: 'ti ti-math-function' },
};
export const blockDefs = [
@@ -58,7 +58,7 @@ export class HpmlScope {
constructor(layerdStates: HpmlScope['layerdStates'], name?: HpmlScope['name']) {
this.layerdStates = layerdStates;
- this.name = name || 'anonymous';
+ this.name = name ?? 'anonymous';
}
@autobind
diff --git a/packages/frontend/src/scripts/hpml/lib.ts b/packages/frontend/src/scripts/hpml/lib.ts
index 02d663b31b..88db82dd27 100644
--- a/packages/frontend/src/scripts/hpml/lib.ts
+++ b/packages/frontend/src/scripts/hpml/lib.ts
@@ -1,4 +1,3 @@
-import tinycolor from 'tinycolor2';
import seedrandom from 'seedrandom';
import { Hpml } from './evaluator';
import { Expr } from './expr';
@@ -130,42 +129,42 @@ export function initAiLib(hpml: Hpml) {
export const funcDefs: Record<string, { in: any[]; out: any; category: string; icon: any; }> = {
if: { in: ['boolean', 0, 0], out: 0, category: 'flow', icon: 'ti ti-share' },
- for: { in: ['number', 'function'], out: null, category: 'flow', icon: 'fas fa-recycle' },
- not: { in: ['boolean'], out: 'boolean', category: 'logical', icon: 'fas fa-flag' },
- or: { in: ['boolean', 'boolean'], out: 'boolean', category: 'logical', icon: 'fas fa-flag' },
- and: { in: ['boolean', 'boolean'], out: 'boolean', category: 'logical', icon: 'fas fa-flag' },
+ for: { in: ['number', 'function'], out: null, category: 'flow', icon: 'ti ti-recycle' },
+ not: { in: ['boolean'], out: 'boolean', category: 'logical', icon: 'ti ti-flag' },
+ or: { in: ['boolean', 'boolean'], out: 'boolean', category: 'logical', icon: 'ti ti-flag' },
+ and: { in: ['boolean', 'boolean'], out: 'boolean', category: 'logical', icon: 'ti ti-flag' },
add: { in: ['number', 'number'], out: 'number', category: 'operation', icon: 'ti ti-plus' },
subtract: { in: ['number', 'number'], out: 'number', category: 'operation', icon: 'ti ti-minus' },
multiply: { in: ['number', 'number'], out: 'number', category: 'operation', icon: 'ti ti-x' },
- divide: { in: ['number', 'number'], out: 'number', category: 'operation', icon: 'fas fa-divide' },
- mod: { in: ['number', 'number'], out: 'number', category: 'operation', icon: 'fas fa-divide' },
- round: { in: ['number'], out: 'number', category: 'operation', icon: 'fas fa-calculator' },
- eq: { in: [0, 0], out: 'boolean', category: 'comparison', icon: 'fas fa-equals' },
- notEq: { in: [0, 0], out: 'boolean', category: 'comparison', icon: 'fas fa-not-equal' },
- gt: { in: ['number', 'number'], out: 'boolean', category: 'comparison', icon: 'fas fa-greater-than' },
- lt: { in: ['number', 'number'], out: 'boolean', category: 'comparison', icon: 'fas fa-less-than' },
- gtEq: { in: ['number', 'number'], out: 'boolean', category: 'comparison', icon: 'fas fa-greater-than-equal' },
- ltEq: { in: ['number', 'number'], out: 'boolean', category: 'comparison', icon: 'fas fa-less-than-equal' },
+ divide: { in: ['number', 'number'], out: 'number', category: 'operation', icon: 'ti ti-divide' },
+ mod: { in: ['number', 'number'], out: 'number', category: 'operation', icon: 'ti ti-divide' },
+ round: { in: ['number'], out: 'number', category: 'operation', icon: 'ti ti-calculator' },
+ eq: { in: [0, 0], out: 'boolean', category: 'comparison', icon: 'ti ti-equal' },
+ notEq: { in: [0, 0], out: 'boolean', category: 'comparison', icon: 'ti ti-equal-not' },
+ gt: { in: ['number', 'number'], out: 'boolean', category: 'comparison', icon: 'ti ti-math-greater' },
+ lt: { in: ['number', 'number'], out: 'boolean', category: 'comparison', icon: 'ti ti-math-lower' },
+ gtEq: { in: ['number', 'number'], out: 'boolean', category: 'comparison', icon: 'ti ti-math-equal-greater' },
+ ltEq: { in: ['number', 'number'], out: 'boolean', category: 'comparison', icon: 'ti ti-math-equal-lower' },
strLen: { in: ['string'], out: 'number', category: 'text', icon: 'ti ti-quote' },
strPick: { in: ['string', 'number'], out: 'string', category: 'text', icon: 'ti ti-quote' },
strReplace: { in: ['string', 'string', 'string'], out: 'string', category: 'text', icon: 'ti ti-quote' },
strReverse: { in: ['string'], out: 'string', category: 'text', icon: 'ti ti-quote' },
join: { in: ['stringArray', 'string'], out: 'string', category: 'text', icon: 'ti ti-quote' },
- stringToNumber: { in: ['string'], out: 'number', category: 'convert', icon: 'fas fa-exchange-alt' },
- numberToString: { in: ['number'], out: 'string', category: 'convert', icon: 'fas fa-exchange-alt' },
- splitStrByLine: { in: ['string'], out: 'stringArray', category: 'convert', icon: 'fas fa-exchange-alt' },
- pick: { in: [null, 'number'], out: null, category: 'list', icon: 'fas fa-indent' },
- listLen: { in: [null], out: 'number', category: 'list', icon: 'fas fa-indent' },
- rannum: { in: ['number', 'number'], out: 'number', category: 'random', icon: 'fas fa-dice' },
- dailyRannum: { in: ['number', 'number'], out: 'number', category: 'random', icon: 'fas fa-dice' },
- seedRannum: { in: [null, 'number', 'number'], out: 'number', category: 'random', icon: 'fas fa-dice' },
- random: { in: ['number'], out: 'boolean', category: 'random', icon: 'fas fa-dice' },
- dailyRandom: { in: ['number'], out: 'boolean', category: 'random', icon: 'fas fa-dice' },
- seedRandom: { in: [null, 'number'], out: 'boolean', category: 'random', icon: 'fas fa-dice' },
- randomPick: { in: [0], out: 0, category: 'random', icon: 'fas fa-dice' },
- dailyRandomPick: { in: [0], out: 0, category: 'random', icon: 'fas fa-dice' },
- seedRandomPick: { in: [null, 0], out: 0, category: 'random', icon: 'fas fa-dice' },
- DRPWPM: { in: ['stringArray'], out: 'string', category: 'random', icon: 'fas fa-dice' }, // dailyRandomPickWithProbabilityMapping
+ stringToNumber: { in: ['string'], out: 'number', category: 'convert', icon: 'ti ti-arrows-right-left' },
+ numberToString: { in: ['number'], out: 'string', category: 'convert', icon: 'ti ti-arrows-right-left' },
+ splitStrByLine: { in: ['string'], out: 'stringArray', category: 'convert', icon: 'ti ti-arrows-right-left' },
+ pick: { in: [null, 'number'], out: null, category: 'list', icon: 'ti ti-indent-increase' },
+ listLen: { in: [null], out: 'number', category: 'list', icon: 'ti ti-indent-increase' },
+ rannum: { in: ['number', 'number'], out: 'number', category: 'random', icon: 'ti ti-dice' },
+ dailyRannum: { in: ['number', 'number'], out: 'number', category: 'random', icon: 'ti ti-dice' },
+ seedRannum: { in: [null, 'number', 'number'], out: 'number', category: 'random', icon: 'ti ti-dice' },
+ random: { in: ['number'], out: 'boolean', category: 'random', icon: 'ti ti-dice' },
+ dailyRandom: { in: ['number'], out: 'boolean', category: 'random', icon: 'ti ti-dice' },
+ seedRandom: { in: [null, 'number'], out: 'boolean', category: 'random', icon: 'ti ti-dice' },
+ randomPick: { in: [0], out: 0, category: 'random', icon: 'ti ti-dice' },
+ dailyRandomPick: { in: [0], out: 0, category: 'random', icon: 'ti ti-dice' },
+ seedRandomPick: { in: [null, 0], out: 0, category: 'random', icon: 'ti ti-dice' },
+ DRPWPM: { in: ['stringArray'], out: 'string', category: 'random', icon: 'ti ti-dice' }, // dailyRandomPickWithProbabilityMapping
};
export function initHpmlLib(expr: Expr, scope: HpmlScope, randomSeed: string, visitor?: any) {
diff --git a/packages/frontend/src/scripts/hpml/type-checker.ts b/packages/frontend/src/scripts/hpml/type-checker.ts
index 24c9ed8bcb..692826fc90 100644
--- a/packages/frontend/src/scripts/hpml/type-checker.ts
+++ b/packages/frontend/src/scripts/hpml/type-checker.ts
@@ -63,7 +63,7 @@ export class HpmlTypeChecker {
@autobind
public getExpectedType(v: Expr, slot: number): Type {
- const def = funcDefs[v.type || ''];
+ const def = funcDefs[v.type ?? ''];
if (def == null) {
throw new Error('Unknown type: ' + v.type);
}
@@ -107,7 +107,7 @@ export class HpmlTypeChecker {
return pageVar.type;
}
- const envVar = envVarsDef[v.value || ''];
+ const envVar = envVarsDef[v.value ?? ''];
if (envVar !== undefined) {
return envVar;
}
diff --git a/packages/frontend/src/scripts/popup-position.ts b/packages/frontend/src/scripts/popup-position.ts
index e84eebf103..cb45002202 100644
--- a/packages/frontend/src/scripts/popup-position.ts
+++ b/packages/frontend/src/scripts/popup-position.ts
@@ -1,4 +1,3 @@
-import { Ref } from 'vue';
export function calcPopupPosition(el: HTMLElement, props: {
anchorElement: HTMLElement | null;
diff --git a/packages/frontend/src/scripts/scroll.ts b/packages/frontend/src/scripts/scroll.ts
index e3d9dc00c2..a002f02b5a 100644
--- a/packages/frontend/src/scripts/scroll.ts
+++ b/packages/frontend/src/scripts/scroll.ts
@@ -10,7 +10,7 @@ export function getScrollContainer(el: HTMLElement | null): HTMLElement | null {
}
}
-export function getStickyTop(el: HTMLElement, container: HTMLElement | null = null, top: number = 0) {
+export function getStickyTop(el: HTMLElement, container: HTMLElement | null = null, top = 0) {
if (!el.parentElement) return top;
const data = el.dataset.stickyContainerHeaderHeight;
const newTop = data ? Number(data) + top : top;
@@ -23,14 +23,14 @@ export function getScrollPosition(el: HTMLElement | null): number {
return container == null ? window.scrollY : container.scrollTop;
}
-export function onScrollTop(el: HTMLElement, cb: () => unknown, tolerance: number = 1, once: boolean = false) {
+export function onScrollTop(el: HTMLElement, cb: () => unknown, tolerance = 1, once = false) {
// とりあえず評価してみる
if (isTopVisible(el)) {
cb();
if (once) return null;
}
- const container = getScrollContainer(el) || window;
+ const container = getScrollContainer(el) ?? window;
const onScroll = ev => {
if (!document.body.contains(el)) return;
@@ -45,7 +45,7 @@ export function onScrollTop(el: HTMLElement, cb: () => unknown, tolerance: numbe
return removeListener;
}
-export function onScrollBottom(el: HTMLElement, cb: () => unknown, tolerance: number = 1, once: boolean = false) {
+export function onScrollBottom(el: HTMLElement, cb: () => unknown, tolerance = 1, once = false) {
const container = getScrollContainer(el);
// とりあえず評価してみる
@@ -54,7 +54,7 @@ export function onScrollBottom(el: HTMLElement, cb: () => unknown, tolerance: nu
if (once) return null;
}
- const containerOrWindow = container || window;
+ const containerOrWindow = container ?? window;
const onScroll = ev => {
if (!document.body.contains(el)) return;
if (isBottomVisible(el, 1, container)) {
@@ -104,12 +104,12 @@ export function scrollToBottom(
} else {
window.scroll({
top: (el.scrollHeight - window.innerHeight + getStickyTop(el, container) + (window.innerWidth <= 500 ? 96 : 0)) || 0,
- ...options
+ ...options,
});
}
}
-export function isTopVisible(el: HTMLElement, tolerance: number = 1): boolean {
+export function isTopVisible(el: HTMLElement, tolerance = 1): boolean {
const scrollTop = getScrollPosition(el);
return scrollTop <= tolerance;
}
@@ -124,6 +124,6 @@ export function getBodyScrollHeight() {
return Math.max(
document.body.scrollHeight, document.documentElement.scrollHeight,
document.body.offsetHeight, document.documentElement.offsetHeight,
- document.body.clientHeight, document.documentElement.clientHeight
+ document.body.clientHeight, document.documentElement.clientHeight,
);
}
diff --git a/packages/frontend/src/scripts/search.ts b/packages/frontend/src/scripts/search.ts
index 64914d3d65..69f1586b77 100644
--- a/packages/frontend/src/scripts/search.ts
+++ b/packages/frontend/src/scripts/search.ts
@@ -35,7 +35,7 @@ export async function search() {
// TODO
//v.$root.$emit('warp', date);
os.alert({
- icon: 'fas fa-history',
+ icon: 'ti ti-history',
iconOnly: true, autoClose: true,
});
return;
diff --git a/packages/frontend/src/scripts/use-leave-guard.ts b/packages/frontend/src/scripts/use-leave-guard.ts
index a93b84d1fe..146b012471 100644
--- a/packages/frontend/src/scripts/use-leave-guard.ts
+++ b/packages/frontend/src/scripts/use-leave-guard.ts
@@ -1,6 +1,4 @@
-import { inject, onUnmounted, Ref } from 'vue';
-import { i18n } from '@/i18n';
-import * as os from '@/os';
+import { Ref } from 'vue';
export function useLeaveGuard(enabled: Ref<boolean>) {
/* TODO