Merge branch 'notification-read-api' into swn

This commit is contained in:
tamaina 2022-03-27 22:41:38 +09:00
commit e98e84d562
386 changed files with 2552 additions and 2341 deletions

View file

@ -2,7 +2,7 @@ import { del, get, set } from '@/scripts/idb-proxy';
import { reactive } from 'vue';
import * as misskey from 'misskey-js';
import { apiUrl } from '@/config';
import { waiting, api, popup, popupMenu, success } from '@/os';
import { waiting, api, popup, popupMenu, success, alert } from '@/os';
import { unisonReload, reloadChannel } from '@/scripts/unison-reload';
import { showSuspendedDialog } from './scripts/show-suspended-dialog';
import { i18n } from './i18n';
@ -89,7 +89,11 @@ function fetchAccount(token): Promise<Account> {
signout();
});
} else {
signout();
alert({
type: 'error',
title: i18n.ts.failedToFetchAccountInformation,
text: JSON.stringify(res.error),
});
}
} else {
res.token = token;

View file

@ -24,6 +24,14 @@ import { url as local } from '@/config';
import * as os from '@/os';
import { useTooltip } from '@/scripts/use-tooltip';
function safeURIDecode(str: string) {
try {
return decodeURIComponent(str);
} catch {
return str;
}
}
export default defineComponent({
props: {
url: {
@ -54,9 +62,9 @@ export default defineComponent({
schema: url.protocol,
hostname: decodePunycode(url.hostname),
port: url.port,
pathname: decodeURIComponent(url.pathname),
query: decodeURIComponent(url.search),
hash: decodeURIComponent(url.hash),
pathname: safeURIDecode(url.pathname),
query: safeURIDecode(url.search),
hash: safeURIDecode(url.hash),
self: self,
attr: self ? 'to' : 'href',
target: self ? null : '_blank',

View file

@ -1,5 +1,5 @@
<template>
<MkModal ref="modal" v-slot="{ type, maxHeight }" :prefer-type="preferedModalType" :anchor="{ x: 'right', y: 'center' }" :transparent-bg="true" :src="src" @click="modal.close()" @closed="emit('closed')">
<MkModal ref="modal" v-slot="{ type, maxHeight }" :prefer-type="preferedModalType" :anchor="anchor" :transparent-bg="true" :src="src" @click="modal.close()" @closed="emit('closed')">
<div class="szkkfdyq _popup _shadow" :class="{ asDrawer: type === 'drawer' }" :style="{ maxHeight: maxHeight ? maxHeight + 'px' : '' }">
<div class="main">
<template v-for="item in items">
@ -44,7 +44,9 @@ import { deviceKind } from '@/scripts/device-kind';
const props = withDefaults(defineProps<{
src?: HTMLElement;
anchor?: { x: string; y: string; };
}>(), {
anchor: () => ({ x: 'right', y: 'center' }),
});
const emit = defineEmits<{

View file

@ -84,7 +84,7 @@ export default defineComponent({
methods: {
async init() {
const meta = await os.api('meta', { detail: true });
const meta = await os.api('admin/meta');
this.enableHcaptcha = meta.enableHcaptcha;
this.hcaptchaSiteKey = meta.hcaptchaSiteKey;
this.hcaptchaSecretKey = meta.hcaptchaSecretKey;

View file

@ -95,7 +95,7 @@ export default defineComponent({
methods: {
async init() {
const meta = await os.api('meta', { detail: true });
const meta = await os.api('admin/meta');
this.enableEmail = meta.enableEmail;
this.email = meta.email;
this.smtpSecure = meta.smtpSecure;

View file

@ -42,7 +42,7 @@ export default defineComponent({
methods: {
async init() {
const meta = await os.api('meta', { detail: true });
const meta = await os.api('admin/meta');
this.blockedHosts = meta.blockedHosts.join('\n');
},

View file

@ -60,7 +60,7 @@ export default defineComponent({
methods: {
async init() {
const meta = await os.api('meta', { detail: true });
const meta = await os.api('admin/meta');
this.uri = meta.uri;
this.enableDiscordIntegration = meta.enableDiscordIntegration;
this.discordClientId = meta.discordClientId;

View file

@ -60,7 +60,7 @@ export default defineComponent({
methods: {
async init() {
const meta = await os.api('meta', { detail: true });
const meta = await os.api('admin/meta');
this.uri = meta.uri;
this.enableGithubIntegration = meta.enableGithubIntegration;
this.githubClientId = meta.githubClientId;

View file

@ -60,7 +60,7 @@ export default defineComponent({
methods: {
async init() {
const meta = await os.api('meta', { detail: true });
const meta = await os.api('admin/meta');
this.uri = meta.uri;
this.enableTwitterIntegration = meta.enableTwitterIntegration;
this.twitterConsumerKey = meta.twitterConsumerKey;

View file

@ -62,7 +62,7 @@ export default defineComponent({
methods: {
async init() {
const meta = await os.api('meta', { detail: true });
const meta = await os.api('admin/meta');
this.enableTwitterIntegration = meta.enableTwitterIntegration;
this.enableGithubIntegration = meta.enableGithubIntegration;
this.enableDiscordIntegration = meta.enableDiscordIntegration;

View file

@ -120,7 +120,7 @@ export default defineComponent({
methods: {
async init() {
const meta = await os.api('meta', { detail: true });
const meta = await os.api('admin/meta');
this.useObjectStorage = meta.useObjectStorage;
this.objectStorageBaseUrl = meta.objectStorageBaseUrl;
this.objectStorageBucket = meta.objectStorageBucket;

View file

@ -44,7 +44,7 @@ export default defineComponent({
methods: {
async init() {
const meta = await os.api('meta', { detail: true });
const meta = await os.api('admin/meta');
},
save() {
os.apiWithDialog('admin/update-meta', {

View file

@ -46,7 +46,7 @@ export default defineComponent({
methods: {
async init() {
const meta = await os.api('meta', { detail: true });
const meta = await os.api('admin/meta');
this.proxyAccountId = meta.proxyAccountId;
if (this.proxyAccountId) {
this.proxyAccount = await os.api('users/show', { userId: this.proxyAccountId });

View file

@ -72,7 +72,7 @@ export default defineComponent({
methods: {
async init() {
const meta = await os.api('meta', { detail: true });
const meta = await os.api('admin/meta');
this.summalyProxy = meta.summalyProxy;
this.enableHcaptcha = meta.enableHcaptcha;
this.enableRecaptcha = meta.enableRecaptcha;

View file

@ -210,7 +210,7 @@ export default defineComponent({
methods: {
async init() {
const meta = await os.api('meta', { detail: true });
const meta = await os.api('admin/meta');
this.name = meta.name;
this.description = meta.description;
this.tosUrl = meta.tosUrl;

View file

@ -54,7 +54,7 @@
</FormSlot>
<FormSwitch v-model="profile.isCat" class="_formBlock">{{ i18n.ts.flagAsCat }}<template #caption>{{ i18n.ts.flagAsCatDescription }}</template></FormSwitch>
<FormSwitch v-model="profile.showTimelineReplies" class="_formBlock">{{ i18n.ts.flagShowTimelineReplies }}<template #caption>{{ i18n.ts.flagShowTimelineRepliesDescription }}</template></FormSwitch>
<FormSwitch v-model="profile.showTimelineReplies" class="_formBlock">{{ i18n.ts.flagShowTimelineReplies }}<template #caption>{{ i18n.ts.flagShowTimelineRepliesDescription }} {{ i18n.ts.reflectMayTakeTime }}</template></FormSwitch>
<FormSwitch v-model="profile.isBot" class="_formBlock">{{ i18n.ts.flagAsBot }}<template #caption>{{ i18n.ts.flagAsBotDescription }}</template></FormSwitch>
<FormSwitch v-model="profile.alwaysMarkNsfw" class="_formBlock">{{ i18n.ts.alwaysMarkSensitive }}</FormSwitch>

View file

@ -25,6 +25,7 @@
<FormSwitch v-if="user.host == null && $i.isAdmin && (moderator || !user.isAdmin)" v-model="moderator" class="_formBlock" @update:modelValue="toggleModerator">{{ $ts.moderator }}</FormSwitch>
<FormSwitch v-model="silenced" class="_formBlock" @update:modelValue="toggleSilence">{{ $ts.silence }}</FormSwitch>
<FormSwitch v-model="suspended" class="_formBlock" @update:modelValue="toggleSuspend">{{ $ts.suspend }}</FormSwitch>
{{ $ts.reflectMayTakeTime }}
<FormButton v-if="user.host == null && iAmModerator" class="_formBlock" @click="resetPassword"><i class="fas fa-key"></i> {{ $ts.resetPassword }}</FormButton>
</FormSection>

View file

@ -103,6 +103,7 @@ export default defineComponent({
more(ev) {
os.popup(import('@/components/launch-pad.vue'), {
src: ev.currentTarget ?? ev.target,
anchor: { x: 'center', y: 'bottom' },
}, {
}, 'closed');
},

View file

@ -121,9 +121,9 @@ export default defineComponent({
},
more(ev) {
os.popup(import('@/components/launch-pad.vue'), {}, {
os.popup(import('@/components/launch-pad.vue'), {
src: ev.currentTarget ?? ev.target,
}, 'closed');
}, {}, 'closed');
},
openAccountMenu:(ev) => {