refactor(frontend): 非推奨となったReactivity Transformを使わないように (#12539)
* refactor(frontend): 非推奨となったReactivity Transformを使わないように * refactor: 不要な括弧を除去 * fix: 不要なアノテーションを除去 * fix: Refの配列をrefしている部分の対応 * refactor: 不要な括弧を除去 * fix: lint * refactor: Ref、ShallowRef、ComputedRefの変数の宣言をletからconstに置換 * fix: type error * chore: drop reactivity transform from eslint configuration * refactor: remove unnecessary import * fix: 対応漏れ
This commit is contained in:
@@ -72,7 +72,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref, defineAsyncComponent } from 'vue';
|
||||
import { ref, defineAsyncComponent, computed } from 'vue';
|
||||
import { supported as webAuthnSupported, create as webAuthnCreate, parseCreationOptionsFromJSON } from '@github/webauthn-json/browser-ponyfill';
|
||||
import MkButton from '@/components/MkButton.vue';
|
||||
import MkInfo from '@/components/MkInfo.vue';
|
||||
@@ -91,7 +91,7 @@ withDefaults(defineProps<{
|
||||
first: false,
|
||||
});
|
||||
|
||||
const usePasswordLessLogin = $computed(() => $i?.usePasswordLessLogin ?? false);
|
||||
const usePasswordLessLogin = computed(() => $i?.usePasswordLessLogin ?? false);
|
||||
|
||||
async function registerTOTP(): Promise<void> {
|
||||
const auth = await os.authenticateDialog();
|
||||
|
@@ -19,7 +19,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { defineAsyncComponent, ref } from 'vue';
|
||||
import { defineAsyncComponent, ref, computed } from 'vue';
|
||||
import type * as Misskey from 'misskey-js';
|
||||
import FormSuspense from '@/components/form/suspense.vue';
|
||||
import MkButton from '@/components/MkButton.vue';
|
||||
@@ -101,9 +101,9 @@ function switchAccountWithToken(token: string) {
|
||||
login(token);
|
||||
}
|
||||
|
||||
const headerActions = $computed(() => []);
|
||||
const headerActions = computed(() => []);
|
||||
|
||||
const headerTabs = $computed(() => []);
|
||||
const headerTabs = computed(() => []);
|
||||
|
||||
definePageMetadata({
|
||||
title: i18n.ts.accounts,
|
||||
|
@@ -12,7 +12,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { defineAsyncComponent, ref } from 'vue';
|
||||
import { defineAsyncComponent, ref, computed } from 'vue';
|
||||
import FormLink from '@/components/form/link.vue';
|
||||
import MkButton from '@/components/MkButton.vue';
|
||||
import * as os from '@/os.js';
|
||||
@@ -40,9 +40,9 @@ function generateToken() {
|
||||
}, 'closed');
|
||||
}
|
||||
|
||||
const headerActions = $computed(() => []);
|
||||
const headerActions = computed(() => []);
|
||||
|
||||
const headerTabs = $computed(() => []);
|
||||
const headerTabs = computed(() => []);
|
||||
|
||||
definePageMetadata({
|
||||
title: 'API',
|
||||
|
@@ -45,7 +45,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref } from 'vue';
|
||||
import { ref, computed } from 'vue';
|
||||
import FormPagination from '@/components/MkPagination.vue';
|
||||
import * as os from '@/os.js';
|
||||
import { i18n } from '@/i18n.js';
|
||||
@@ -71,9 +71,9 @@ function revoke(token) {
|
||||
});
|
||||
}
|
||||
|
||||
const headerActions = $computed(() => []);
|
||||
const headerActions = computed(() => []);
|
||||
|
||||
const headerTabs = $computed(() => []);
|
||||
const headerTabs = computed(() => []);
|
||||
|
||||
definePageMetadata({
|
||||
title: i18n.ts.installedApps,
|
||||
|
@@ -14,7 +14,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref, watch } from 'vue';
|
||||
import { ref, watch, computed } from 'vue';
|
||||
import MkTextarea from '@/components/MkTextarea.vue';
|
||||
import FormInfo from '@/components/MkInfo.vue';
|
||||
import * as os from '@/os.js';
|
||||
@@ -41,9 +41,9 @@ watch(localCustomCss, async () => {
|
||||
await apply();
|
||||
});
|
||||
|
||||
const headerActions = $computed(() => []);
|
||||
const headerActions = computed(() => []);
|
||||
|
||||
const headerTabs = $computed(() => []);
|
||||
const headerTabs = computed(() => []);
|
||||
|
||||
definePageMetadata({
|
||||
title: i18n.ts.customCss,
|
||||
|
@@ -32,9 +32,9 @@ const useSimpleUiForNonRootPages = computed(deckStore.makeGetterSetter('useSimpl
|
||||
const alwaysShowMainColumn = computed(deckStore.makeGetterSetter('alwaysShowMainColumn'));
|
||||
const columnAlign = computed(deckStore.makeGetterSetter('columnAlign'));
|
||||
|
||||
const headerActions = $computed(() => []);
|
||||
const headerActions = computed(() => []);
|
||||
|
||||
const headerTabs = $computed(() => []);
|
||||
const headerTabs = computed(() => []);
|
||||
|
||||
definePageMetadata({
|
||||
title: i18n.ts.deck,
|
||||
|
@@ -60,7 +60,7 @@ import { definePageMetadata } from '@/scripts/page-metadata.js';
|
||||
import MkSelect from '@/components/MkSelect.vue';
|
||||
import { getDriveFileMenu } from '@/scripts/get-drive-file-menu.js';
|
||||
|
||||
let sortMode = ref('+size');
|
||||
const sortMode = ref('+size');
|
||||
const pagination = {
|
||||
endpoint: 'drive/files' as const,
|
||||
limit: 10,
|
||||
|
@@ -76,8 +76,8 @@ const fetching = ref(true);
|
||||
const usage = ref<any>(null);
|
||||
const capacity = ref<any>(null);
|
||||
const uploadFolder = ref<any>(null);
|
||||
let alwaysMarkNsfw = $ref($i.alwaysMarkNsfw);
|
||||
let autoSensitive = $ref($i.autoSensitive);
|
||||
const alwaysMarkNsfw = ref($i.alwaysMarkNsfw);
|
||||
const autoSensitive = ref($i.autoSensitive);
|
||||
|
||||
const meterStyle = computed(() => {
|
||||
return {
|
||||
@@ -122,21 +122,21 @@ function chooseUploadFolder() {
|
||||
|
||||
function saveProfile() {
|
||||
os.api('i/update', {
|
||||
alwaysMarkNsfw: !!alwaysMarkNsfw,
|
||||
autoSensitive: !!autoSensitive,
|
||||
alwaysMarkNsfw: !!alwaysMarkNsfw.value,
|
||||
autoSensitive: !!autoSensitive.value,
|
||||
}).catch(err => {
|
||||
os.alert({
|
||||
type: 'error',
|
||||
title: i18n.ts.error,
|
||||
text: err.message,
|
||||
});
|
||||
alwaysMarkNsfw = true;
|
||||
alwaysMarkNsfw.value = true;
|
||||
});
|
||||
}
|
||||
|
||||
const headerActions = $computed(() => []);
|
||||
const headerActions = computed(() => []);
|
||||
|
||||
const headerTabs = $computed(() => []);
|
||||
const headerTabs = computed(() => []);
|
||||
|
||||
definePageMetadata({
|
||||
title: i18n.ts.drive,
|
||||
|
@@ -48,7 +48,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { onMounted, ref, watch } from 'vue';
|
||||
import { onMounted, ref, watch, computed } from 'vue';
|
||||
import FormSection from '@/components/form/section.vue';
|
||||
import MkInfo from '@/components/MkInfo.vue';
|
||||
import MkInput from '@/components/MkInput.vue';
|
||||
@@ -106,9 +106,9 @@ onMounted(() => {
|
||||
});
|
||||
});
|
||||
|
||||
const headerActions = $computed(() => []);
|
||||
const headerActions = computed(() => []);
|
||||
|
||||
const headerTabs = $computed(() => []);
|
||||
const headerTabs = computed(() => []);
|
||||
|
||||
definePageMetadata({
|
||||
title: i18n.ts.email,
|
||||
|
@@ -427,9 +427,9 @@ watch(dataSaver, (to) => {
|
||||
deep: true,
|
||||
});
|
||||
|
||||
const headerActions = $computed(() => []);
|
||||
const headerActions = computed(() => []);
|
||||
|
||||
const headerTabs = $computed(() => []);
|
||||
const headerTabs = computed(() => []);
|
||||
|
||||
definePageMetadata({
|
||||
title: i18n.ts.general,
|
||||
|
@@ -111,7 +111,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref } from 'vue';
|
||||
import { ref, computed } from 'vue';
|
||||
import MkButton from '@/components/MkButton.vue';
|
||||
import FormSection from '@/components/form/section.vue';
|
||||
import MkFolder from '@/components/MkFolder.vue';
|
||||
@@ -208,9 +208,9 @@ const importAntennas = async (ev) => {
|
||||
os.api('i/import-antennas', { fileId: file.id }).then(onImportSuccess).catch(onError);
|
||||
};
|
||||
|
||||
const headerActions = $computed(() => []);
|
||||
const headerActions = computed(() => []);
|
||||
|
||||
const headerTabs = $computed(() => []);
|
||||
const headerTabs = computed(() => []);
|
||||
|
||||
definePageMetadata({
|
||||
title: i18n.ts.importAndExport,
|
||||
|
@@ -50,14 +50,14 @@ const childInfo = ref(null);
|
||||
|
||||
const router = useRouter();
|
||||
|
||||
let narrow = $ref(false);
|
||||
const narrow = ref(false);
|
||||
const NARROW_THRESHOLD = 600;
|
||||
|
||||
let currentPage = $computed(() => router.currentRef.value.child);
|
||||
const currentPage = computed(() => router.currentRef.value.child);
|
||||
|
||||
const ro = new ResizeObserver((entries, observer) => {
|
||||
if (entries.length === 0) return;
|
||||
narrow = entries[0].borderBoxSize[0].inlineSize < NARROW_THRESHOLD;
|
||||
narrow.value = entries[0].borderBoxSize[0].inlineSize < NARROW_THRESHOLD;
|
||||
});
|
||||
|
||||
const menuDef = computed(() => [{
|
||||
@@ -66,37 +66,37 @@ const menuDef = computed(() => [{
|
||||
icon: 'ti ti-user',
|
||||
text: i18n.ts.profile,
|
||||
to: '/settings/profile',
|
||||
active: currentPage?.route.name === 'profile',
|
||||
active: currentPage.value?.route.name === 'profile',
|
||||
}, {
|
||||
icon: 'ti ti-lock-open',
|
||||
text: i18n.ts.privacy,
|
||||
to: '/settings/privacy',
|
||||
active: currentPage?.route.name === 'privacy',
|
||||
active: currentPage.value?.route.name === 'privacy',
|
||||
}, {
|
||||
icon: 'ti ti-mood-happy',
|
||||
text: i18n.ts.reaction,
|
||||
to: '/settings/reaction',
|
||||
active: currentPage?.route.name === 'reaction',
|
||||
active: currentPage.value?.route.name === 'reaction',
|
||||
}, {
|
||||
icon: 'ti ti-cloud',
|
||||
text: i18n.ts.drive,
|
||||
to: '/settings/drive',
|
||||
active: currentPage?.route.name === 'drive',
|
||||
active: currentPage.value?.route.name === 'drive',
|
||||
}, {
|
||||
icon: 'ti ti-bell',
|
||||
text: i18n.ts.notifications,
|
||||
to: '/settings/notifications',
|
||||
active: currentPage?.route.name === 'notifications',
|
||||
active: currentPage.value?.route.name === 'notifications',
|
||||
}, {
|
||||
icon: 'ti ti-mail',
|
||||
text: i18n.ts.email,
|
||||
to: '/settings/email',
|
||||
active: currentPage?.route.name === 'email',
|
||||
active: currentPage.value?.route.name === 'email',
|
||||
}, {
|
||||
icon: 'ti ti-lock',
|
||||
text: i18n.ts.security,
|
||||
to: '/settings/security',
|
||||
active: currentPage?.route.name === 'security',
|
||||
active: currentPage.value?.route.name === 'security',
|
||||
}],
|
||||
}, {
|
||||
title: i18n.ts.clientSettings,
|
||||
@@ -104,32 +104,32 @@ const menuDef = computed(() => [{
|
||||
icon: 'ti ti-adjustments',
|
||||
text: i18n.ts.general,
|
||||
to: '/settings/general',
|
||||
active: currentPage?.route.name === 'general',
|
||||
active: currentPage.value?.route.name === 'general',
|
||||
}, {
|
||||
icon: 'ti ti-palette',
|
||||
text: i18n.ts.theme,
|
||||
to: '/settings/theme',
|
||||
active: currentPage?.route.name === 'theme',
|
||||
active: currentPage.value?.route.name === 'theme',
|
||||
}, {
|
||||
icon: 'ti ti-menu-2',
|
||||
text: i18n.ts.navbar,
|
||||
to: '/settings/navbar',
|
||||
active: currentPage?.route.name === 'navbar',
|
||||
active: currentPage.value?.route.name === 'navbar',
|
||||
}, {
|
||||
icon: 'ti ti-equal-double',
|
||||
text: i18n.ts.statusbar,
|
||||
to: '/settings/statusbar',
|
||||
active: currentPage?.route.name === 'statusbar',
|
||||
active: currentPage.value?.route.name === 'statusbar',
|
||||
}, {
|
||||
icon: 'ti ti-music',
|
||||
text: i18n.ts.sounds,
|
||||
to: '/settings/sounds',
|
||||
active: currentPage?.route.name === 'sounds',
|
||||
active: currentPage.value?.route.name === 'sounds',
|
||||
}, {
|
||||
icon: 'ti ti-plug',
|
||||
text: i18n.ts.plugins,
|
||||
to: '/settings/plugin',
|
||||
active: currentPage?.route.name === 'plugin',
|
||||
active: currentPage.value?.route.name === 'plugin',
|
||||
}],
|
||||
}, {
|
||||
title: i18n.ts.otherSettings,
|
||||
@@ -137,44 +137,44 @@ const menuDef = computed(() => [{
|
||||
icon: 'ti ti-badges',
|
||||
text: i18n.ts.roles,
|
||||
to: '/settings/roles',
|
||||
active: currentPage?.route.name === 'roles',
|
||||
active: currentPage.value?.route.name === 'roles',
|
||||
}, {
|
||||
icon: 'ti ti-ban',
|
||||
text: i18n.ts.muteAndBlock,
|
||||
to: '/settings/mute-block',
|
||||
active: currentPage?.route.name === 'mute-block',
|
||||
active: currentPage.value?.route.name === 'mute-block',
|
||||
}, {
|
||||
icon: 'ti ti-api',
|
||||
text: 'API',
|
||||
to: '/settings/api',
|
||||
active: currentPage?.route.name === 'api',
|
||||
active: currentPage.value?.route.name === 'api',
|
||||
}, {
|
||||
icon: 'ti ti-webhook',
|
||||
text: 'Webhook',
|
||||
to: '/settings/webhook',
|
||||
active: currentPage?.route.name === 'webhook',
|
||||
active: currentPage.value?.route.name === 'webhook',
|
||||
}, {
|
||||
icon: 'ti ti-package',
|
||||
text: i18n.ts.importAndExport,
|
||||
to: '/settings/import-export',
|
||||
active: currentPage?.route.name === 'import-export',
|
||||
active: currentPage.value?.route.name === 'import-export',
|
||||
}, {
|
||||
icon: 'ti ti-plane',
|
||||
text: `${i18n.ts.accountMigration}`,
|
||||
to: '/settings/migration',
|
||||
active: currentPage?.route.name === 'migration',
|
||||
active: currentPage.value?.route.name === 'migration',
|
||||
}, {
|
||||
icon: 'ti ti-dots',
|
||||
text: i18n.ts.other,
|
||||
to: '/settings/other',
|
||||
active: currentPage?.route.name === 'other',
|
||||
active: currentPage.value?.route.name === 'other',
|
||||
}],
|
||||
}, {
|
||||
items: [{
|
||||
icon: 'ti ti-device-floppy',
|
||||
text: i18n.ts.preferencesBackups,
|
||||
to: '/settings/preferences-backups',
|
||||
active: currentPage?.route.name === 'preferences-backups',
|
||||
active: currentPage.value?.route.name === 'preferences-backups',
|
||||
}, {
|
||||
type: 'button',
|
||||
icon: 'ti ti-trash',
|
||||
@@ -198,23 +198,23 @@ const menuDef = computed(() => [{
|
||||
}],
|
||||
}]);
|
||||
|
||||
watch($$(narrow), () => {
|
||||
watch(narrow, () => {
|
||||
});
|
||||
|
||||
onMounted(() => {
|
||||
ro.observe(el.value);
|
||||
|
||||
narrow = el.value.offsetWidth < NARROW_THRESHOLD;
|
||||
narrow.value = el.value.offsetWidth < NARROW_THRESHOLD;
|
||||
|
||||
if (!narrow && currentPage?.route.name == null) {
|
||||
if (!narrow.value && currentPage.value?.route.name == null) {
|
||||
router.replace('/settings/profile');
|
||||
}
|
||||
});
|
||||
|
||||
onActivated(() => {
|
||||
narrow = el.value.offsetWidth < NARROW_THRESHOLD;
|
||||
narrow.value = el.value.offsetWidth < NARROW_THRESHOLD;
|
||||
|
||||
if (!narrow && currentPage?.route.name == null) {
|
||||
if (!narrow.value && currentPage.value?.route.name == null) {
|
||||
router.replace('/settings/profile');
|
||||
}
|
||||
});
|
||||
@@ -224,7 +224,7 @@ onUnmounted(() => {
|
||||
});
|
||||
|
||||
watch(router.currentRef, (to) => {
|
||||
if (to.route.name === 'settings' && to.child?.route.name == null && !narrow) {
|
||||
if (to.route.name === 'settings' && to.child?.route.name == null && !narrow.value) {
|
||||
router.replace('/settings/profile');
|
||||
}
|
||||
});
|
||||
@@ -239,9 +239,9 @@ provideMetadataReceiver((info) => {
|
||||
}
|
||||
});
|
||||
|
||||
const headerActions = $computed(() => []);
|
||||
const headerActions = computed(() => []);
|
||||
|
||||
const headerTabs = $computed(() => []);
|
||||
const headerTabs = computed(() => []);
|
||||
|
||||
definePageMetadata(INFO);
|
||||
// w 890
|
||||
|
@@ -126,7 +126,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { } from 'vue';
|
||||
import { ref, computed } from 'vue';
|
||||
import XInstanceMute from './mute-block.instance-mute.vue';
|
||||
import XWordMute from './mute-block.word-mute.vue';
|
||||
import MkPagination from '@/components/MkPagination.vue';
|
||||
@@ -154,9 +154,9 @@ const blockingPagination = {
|
||||
limit: 10,
|
||||
};
|
||||
|
||||
let expandedRenoteMuteItems = $ref([]);
|
||||
let expandedMuteItems = $ref([]);
|
||||
let expandedBlockItems = $ref([]);
|
||||
const expandedRenoteMuteItems = ref([]);
|
||||
const expandedMuteItems = ref([]);
|
||||
const expandedBlockItems = ref([]);
|
||||
|
||||
async function unrenoteMute(user, ev) {
|
||||
os.popupMenu([{
|
||||
@@ -192,26 +192,26 @@ async function unblock(user, ev) {
|
||||
}
|
||||
|
||||
async function toggleRenoteMuteItem(item) {
|
||||
if (expandedRenoteMuteItems.includes(item.id)) {
|
||||
expandedRenoteMuteItems = expandedRenoteMuteItems.filter(x => x !== item.id);
|
||||
if (expandedRenoteMuteItems.value.includes(item.id)) {
|
||||
expandedRenoteMuteItems.value = expandedRenoteMuteItems.value.filter(x => x !== item.id);
|
||||
} else {
|
||||
expandedRenoteMuteItems.push(item.id);
|
||||
expandedRenoteMuteItems.value.push(item.id);
|
||||
}
|
||||
}
|
||||
|
||||
async function toggleMuteItem(item) {
|
||||
if (expandedMuteItems.includes(item.id)) {
|
||||
expandedMuteItems = expandedMuteItems.filter(x => x !== item.id);
|
||||
if (expandedMuteItems.value.includes(item.id)) {
|
||||
expandedMuteItems.value = expandedMuteItems.value.filter(x => x !== item.id);
|
||||
} else {
|
||||
expandedMuteItems.push(item.id);
|
||||
expandedMuteItems.value.push(item.id);
|
||||
}
|
||||
}
|
||||
|
||||
async function toggleBlockItem(item) {
|
||||
if (expandedBlockItems.includes(item.id)) {
|
||||
expandedBlockItems = expandedBlockItems.filter(x => x !== item.id);
|
||||
if (expandedBlockItems.value.includes(item.id)) {
|
||||
expandedBlockItems.value = expandedBlockItems.value.filter(x => x !== item.id);
|
||||
} else {
|
||||
expandedBlockItems.push(item.id);
|
||||
expandedBlockItems.value.push(item.id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -223,9 +223,9 @@ async function saveHardMutedWords(hardMutedWords: (string | string[])[]) {
|
||||
await os.api('i/update', { hardMutedWords });
|
||||
}
|
||||
|
||||
const headerActions = $computed(() => []);
|
||||
const headerActions = computed(() => []);
|
||||
|
||||
const headerTabs = $computed(() => []);
|
||||
const headerTabs = computed(() => []);
|
||||
|
||||
definePageMetadata({
|
||||
title: i18n.ts.muteAndBlock,
|
||||
|
@@ -115,9 +115,9 @@ watch(menuDisplay, async () => {
|
||||
await reloadAsk();
|
||||
});
|
||||
|
||||
const headerActions = $computed(() => []);
|
||||
const headerActions = computed(() => []);
|
||||
|
||||
const headerTabs = $computed(() => []);
|
||||
const headerTabs = computed(() => []);
|
||||
|
||||
definePageMetadata({
|
||||
title: i18n.ts.navbar,
|
||||
|
@@ -26,7 +26,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { } from 'vue';
|
||||
import { ref } from 'vue';
|
||||
import * as Misskey from 'misskey-js';
|
||||
import MkSelect from '@/components/MkSelect.vue';
|
||||
import MkButton from '@/components/MkButton.vue';
|
||||
@@ -41,10 +41,10 @@ const emit = defineEmits<{
|
||||
(ev: 'update', result: any): void;
|
||||
}>();
|
||||
|
||||
let type = $ref(props.value.type);
|
||||
let userListId = $ref(props.value.userListId);
|
||||
const type = ref(props.value.type);
|
||||
const userListId = ref(props.value.userListId);
|
||||
|
||||
function save() {
|
||||
emit('update', { type, userListId });
|
||||
emit('update', { type: type.value, userListId: userListId.value });
|
||||
}
|
||||
</script>
|
||||
|
@@ -55,7 +55,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { defineAsyncComponent } from 'vue';
|
||||
import { defineAsyncComponent, shallowRef, computed } from 'vue';
|
||||
import XNotificationConfig from './notifications.notification-config.vue';
|
||||
import FormLink from '@/components/form/link.vue';
|
||||
import FormSection from '@/components/form/section.vue';
|
||||
@@ -70,9 +70,9 @@ import { notificationTypes } from '@/const.js';
|
||||
|
||||
const nonConfigurableNotificationTypes = ['note'];
|
||||
|
||||
let allowButton = $shallowRef<InstanceType<typeof MkPushNotificationAllowButton>>();
|
||||
let pushRegistrationInServer = $computed(() => allowButton?.pushRegistrationInServer);
|
||||
let sendReadMessage = $computed(() => pushRegistrationInServer?.sendReadMessage || false);
|
||||
const allowButton = shallowRef<InstanceType<typeof MkPushNotificationAllowButton>>();
|
||||
const pushRegistrationInServer = computed(() => allowButton.value?.pushRegistrationInServer);
|
||||
const sendReadMessage = computed(() => pushRegistrationInServer.value?.sendReadMessage || false);
|
||||
const userLists = await os.api('users/lists/list');
|
||||
|
||||
async function readAllUnreadNotes() {
|
||||
@@ -95,14 +95,14 @@ async function updateReceiveConfig(type, value) {
|
||||
}
|
||||
|
||||
function onChangeSendReadMessage(v: boolean) {
|
||||
if (!pushRegistrationInServer) return;
|
||||
if (!pushRegistrationInServer.value) return;
|
||||
|
||||
os.apiWithDialog('sw/update-registration', {
|
||||
endpoint: pushRegistrationInServer.endpoint,
|
||||
endpoint: pushRegistrationInServer.value.endpoint,
|
||||
sendReadMessage: v,
|
||||
}).then(res => {
|
||||
if (!allowButton) return;
|
||||
allowButton.pushRegistrationInServer = res;
|
||||
if (!allowButton.value) return;
|
||||
allowButton.value.pushRegistrationInServer = res;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -110,9 +110,9 @@ function testNotification(): void {
|
||||
os.api('notifications/test-notification');
|
||||
}
|
||||
|
||||
const headerActions = $computed(() => []);
|
||||
const headerActions = computed(() => []);
|
||||
|
||||
const headerTabs = $computed(() => []);
|
||||
const headerTabs = computed(() => []);
|
||||
|
||||
definePageMetadata({
|
||||
title: i18n.ts.notifications,
|
||||
|
@@ -163,9 +163,9 @@ watch([
|
||||
await reloadAsk();
|
||||
});
|
||||
|
||||
const headerActions = $computed(() => []);
|
||||
const headerActions = computed(() => []);
|
||||
|
||||
const headerTabs = $computed(() => []);
|
||||
const headerTabs = computed(() => []);
|
||||
|
||||
definePageMetadata({
|
||||
title: i18n.ts.other,
|
||||
|
@@ -18,7 +18,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { nextTick, ref } from 'vue';
|
||||
import { nextTick, ref, computed } from 'vue';
|
||||
import MkTextarea from '@/components/MkTextarea.vue';
|
||||
import MkButton from '@/components/MkButton.vue';
|
||||
import FormInfo from '@/components/MkInfo.vue';
|
||||
@@ -49,9 +49,9 @@ async function install() {
|
||||
}
|
||||
}
|
||||
|
||||
const headerActions = $computed(() => []);
|
||||
const headerActions = computed(() => []);
|
||||
|
||||
const headerTabs = $computed(() => []);
|
||||
const headerTabs = computed(() => []);
|
||||
|
||||
definePageMetadata({
|
||||
title: i18n.ts._plugin.install,
|
||||
|
@@ -60,7 +60,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { nextTick, ref } from 'vue';
|
||||
import { nextTick, ref, computed } from 'vue';
|
||||
import FormLink from '@/components/form/link.vue';
|
||||
import MkSwitch from '@/components/MkSwitch.vue';
|
||||
import FormSection from '@/components/form/section.vue';
|
||||
@@ -121,9 +121,9 @@ function changeActive(plugin, active) {
|
||||
});
|
||||
}
|
||||
|
||||
const headerActions = $computed(() => []);
|
||||
const headerActions = computed(() => []);
|
||||
|
||||
const headerTabs = $computed(() => []);
|
||||
const headerTabs = computed(() => []);
|
||||
|
||||
definePageMetadata({
|
||||
title: i18n.ts.plugins,
|
||||
|
@@ -66,7 +66,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { } from 'vue';
|
||||
import { ref, computed } from 'vue';
|
||||
import MkSwitch from '@/components/MkSwitch.vue';
|
||||
import MkSelect from '@/components/MkSelect.vue';
|
||||
import FormSection from '@/components/form/section.vue';
|
||||
@@ -77,36 +77,36 @@ import { i18n } from '@/i18n.js';
|
||||
import { $i } from '@/account.js';
|
||||
import { definePageMetadata } from '@/scripts/page-metadata.js';
|
||||
|
||||
let isLocked = $ref($i.isLocked);
|
||||
let autoAcceptFollowed = $ref($i.autoAcceptFollowed);
|
||||
let noCrawle = $ref($i.noCrawle);
|
||||
let preventAiLearning = $ref($i.preventAiLearning);
|
||||
let isExplorable = $ref($i.isExplorable);
|
||||
let hideOnlineStatus = $ref($i.hideOnlineStatus);
|
||||
let publicReactions = $ref($i.publicReactions);
|
||||
let ffVisibility = $ref($i.ffVisibility);
|
||||
const isLocked = ref($i.isLocked);
|
||||
const autoAcceptFollowed = ref($i.autoAcceptFollowed);
|
||||
const noCrawle = ref($i.noCrawle);
|
||||
const preventAiLearning = ref($i.preventAiLearning);
|
||||
const isExplorable = ref($i.isExplorable);
|
||||
const hideOnlineStatus = ref($i.hideOnlineStatus);
|
||||
const publicReactions = ref($i.publicReactions);
|
||||
const ffVisibility = ref($i.ffVisibility);
|
||||
|
||||
let defaultNoteVisibility = $computed(defaultStore.makeGetterSetter('defaultNoteVisibility'));
|
||||
let defaultNoteLocalOnly = $computed(defaultStore.makeGetterSetter('defaultNoteLocalOnly'));
|
||||
let rememberNoteVisibility = $computed(defaultStore.makeGetterSetter('rememberNoteVisibility'));
|
||||
let keepCw = $computed(defaultStore.makeGetterSetter('keepCw'));
|
||||
const defaultNoteVisibility = computed(defaultStore.makeGetterSetter('defaultNoteVisibility'));
|
||||
const defaultNoteLocalOnly = computed(defaultStore.makeGetterSetter('defaultNoteLocalOnly'));
|
||||
const rememberNoteVisibility = computed(defaultStore.makeGetterSetter('rememberNoteVisibility'));
|
||||
const keepCw = computed(defaultStore.makeGetterSetter('keepCw'));
|
||||
|
||||
function save() {
|
||||
os.api('i/update', {
|
||||
isLocked: !!isLocked,
|
||||
autoAcceptFollowed: !!autoAcceptFollowed,
|
||||
noCrawle: !!noCrawle,
|
||||
preventAiLearning: !!preventAiLearning,
|
||||
isExplorable: !!isExplorable,
|
||||
hideOnlineStatus: !!hideOnlineStatus,
|
||||
publicReactions: !!publicReactions,
|
||||
ffVisibility: ffVisibility,
|
||||
isLocked: !!isLocked.value,
|
||||
autoAcceptFollowed: !!autoAcceptFollowed.value,
|
||||
noCrawle: !!noCrawle.value,
|
||||
preventAiLearning: !!preventAiLearning.value,
|
||||
isExplorable: !!isExplorable.value,
|
||||
hideOnlineStatus: !!hideOnlineStatus.value,
|
||||
publicReactions: !!publicReactions.value,
|
||||
ffVisibility: ffVisibility.value,
|
||||
});
|
||||
}
|
||||
|
||||
const headerActions = $computed(() => []);
|
||||
const headerActions = computed(() => []);
|
||||
|
||||
const headerTabs = $computed(() => []);
|
||||
const headerTabs = computed(() => []);
|
||||
|
||||
definePageMetadata({
|
||||
title: i18n.ts.privacy,
|
||||
|
@@ -144,7 +144,7 @@ import MkInfo from '@/components/MkInfo.vue';
|
||||
const Sortable = defineAsyncComponent(() => import('vuedraggable').then(x => x.default));
|
||||
|
||||
const reactionAcceptance = computed(defaultStore.makeGetterSetter('reactionAcceptance'));
|
||||
let avatarDecorations: any[] = $ref([]);
|
||||
const avatarDecorations = ref<any[]>([]);
|
||||
|
||||
const profile = reactive({
|
||||
name: $i.name,
|
||||
@@ -166,7 +166,7 @@ const fields = ref($i?.fields.map(field => ({ id: Math.random().toString(), name
|
||||
const fieldEditMode = ref(false);
|
||||
|
||||
os.api('get-avatar-decorations').then(_avatarDecorations => {
|
||||
avatarDecorations = _avatarDecorations;
|
||||
avatarDecorations.value = _avatarDecorations;
|
||||
});
|
||||
|
||||
function addField() {
|
||||
@@ -273,9 +273,9 @@ function openDecoration(avatarDecoration) {
|
||||
}, {}, 'closed');
|
||||
}
|
||||
|
||||
const headerActions = $computed(() => []);
|
||||
const headerActions = computed(() => []);
|
||||
|
||||
const headerTabs = $computed(() => []);
|
||||
const headerTabs = computed(() => []);
|
||||
|
||||
definePageMetadata({
|
||||
title: i18n.ts.profile,
|
||||
|
@@ -60,7 +60,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { defineAsyncComponent, watch } from 'vue';
|
||||
import { defineAsyncComponent, watch, ref, computed } from 'vue';
|
||||
import Sortable from 'vuedraggable';
|
||||
import MkRadios from '@/components/MkRadios.vue';
|
||||
import FromSlot from '@/components/form/slot.vue';
|
||||
@@ -73,22 +73,22 @@ import { i18n } from '@/i18n.js';
|
||||
import { definePageMetadata } from '@/scripts/page-metadata.js';
|
||||
import { deepClone } from '@/scripts/clone.js';
|
||||
|
||||
let reactions = $ref(deepClone(defaultStore.state.reactions));
|
||||
const reactions = ref(deepClone(defaultStore.state.reactions));
|
||||
|
||||
const reactionPickerSize = $computed(defaultStore.makeGetterSetter('reactionPickerSize'));
|
||||
const reactionPickerWidth = $computed(defaultStore.makeGetterSetter('reactionPickerWidth'));
|
||||
const reactionPickerHeight = $computed(defaultStore.makeGetterSetter('reactionPickerHeight'));
|
||||
const reactionPickerUseDrawerForMobile = $computed(defaultStore.makeGetterSetter('reactionPickerUseDrawerForMobile'));
|
||||
const reactionPickerSize = computed(defaultStore.makeGetterSetter('reactionPickerSize'));
|
||||
const reactionPickerWidth = computed(defaultStore.makeGetterSetter('reactionPickerWidth'));
|
||||
const reactionPickerHeight = computed(defaultStore.makeGetterSetter('reactionPickerHeight'));
|
||||
const reactionPickerUseDrawerForMobile = computed(defaultStore.makeGetterSetter('reactionPickerUseDrawerForMobile'));
|
||||
|
||||
function save() {
|
||||
defaultStore.set('reactions', reactions);
|
||||
defaultStore.set('reactions', reactions.value);
|
||||
}
|
||||
|
||||
function remove(reaction, ev: MouseEvent) {
|
||||
os.popupMenu([{
|
||||
text: i18n.ts.remove,
|
||||
action: () => {
|
||||
reactions = reactions.filter(x => x !== reaction);
|
||||
reactions.value = reactions.value.filter(x => x !== reaction);
|
||||
},
|
||||
}], ev.currentTarget ?? ev.target);
|
||||
}
|
||||
@@ -107,28 +107,28 @@ async function setDefault() {
|
||||
});
|
||||
if (canceled) return;
|
||||
|
||||
reactions = deepClone(defaultStore.def.reactions.default);
|
||||
reactions.value = deepClone(defaultStore.def.reactions.default);
|
||||
}
|
||||
|
||||
function chooseEmoji(ev: MouseEvent) {
|
||||
os.pickEmoji(ev.currentTarget ?? ev.target, {
|
||||
showPinned: false,
|
||||
}).then(emoji => {
|
||||
if (!reactions.includes(emoji)) {
|
||||
reactions.push(emoji);
|
||||
if (!reactions.value.includes(emoji)) {
|
||||
reactions.value.push(emoji);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
watch($$(reactions), () => {
|
||||
watch(reactions, () => {
|
||||
save();
|
||||
}, {
|
||||
deep: true,
|
||||
});
|
||||
|
||||
const headerActions = $computed(() => []);
|
||||
const headerActions = computed(() => []);
|
||||
|
||||
const headerTabs = $computed(() => []);
|
||||
const headerTabs = computed(() => []);
|
||||
|
||||
definePageMetadata({
|
||||
title: i18n.ts.reaction,
|
||||
|
@@ -46,9 +46,9 @@ function save() {
|
||||
});
|
||||
}
|
||||
|
||||
const headerActions = $computed(() => []);
|
||||
const headerActions = computed(() => []);
|
||||
|
||||
const headerTabs = $computed(() => []);
|
||||
const headerTabs = computed(() => []);
|
||||
|
||||
definePageMetadata({
|
||||
title: i18n.ts.roles,
|
||||
|
@@ -40,6 +40,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { computed } from 'vue';
|
||||
import X2fa from './2fa.vue';
|
||||
import FormSection from '@/components/form/section.vue';
|
||||
import FormSlot from '@/components/form/slot.vue';
|
||||
@@ -97,9 +98,9 @@ async function regenerateToken() {
|
||||
});
|
||||
}
|
||||
|
||||
const headerActions = $computed(() => []);
|
||||
const headerActions = computed(() => []);
|
||||
|
||||
const headerTabs = $computed(() => []);
|
||||
const headerTabs = computed(() => []);
|
||||
|
||||
definePageMetadata({
|
||||
title: i18n.ts.security,
|
||||
|
@@ -90,9 +90,9 @@ function reset() {
|
||||
}
|
||||
}
|
||||
|
||||
const headerActions = $computed(() => []);
|
||||
const headerActions = computed(() => []);
|
||||
|
||||
const headerTabs = $computed(() => []);
|
||||
const headerTabs = computed(() => []);
|
||||
|
||||
definePageMetadata({
|
||||
title: i18n.ts.sounds,
|
||||
|
@@ -15,7 +15,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { onMounted } from 'vue';
|
||||
import { onMounted, ref, computed } from 'vue';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import XStatusbar from './statusbar.statusbar.vue';
|
||||
import MkFolder from '@/components/MkFolder.vue';
|
||||
@@ -27,11 +27,11 @@ import { definePageMetadata } from '@/scripts/page-metadata.js';
|
||||
|
||||
const statusbars = defaultStore.reactiveState.statusbars;
|
||||
|
||||
let userLists = $ref();
|
||||
const userLists = ref();
|
||||
|
||||
onMounted(() => {
|
||||
os.api('users/lists/list').then(res => {
|
||||
userLists = res;
|
||||
userLists.value = res;
|
||||
});
|
||||
});
|
||||
|
||||
@@ -45,9 +45,9 @@ async function add() {
|
||||
});
|
||||
}
|
||||
|
||||
const headerActions = $computed(() => []);
|
||||
const headerActions = computed(() => []);
|
||||
|
||||
const headerTabs = $computed(() => []);
|
||||
const headerTabs = computed(() => []);
|
||||
|
||||
definePageMetadata({
|
||||
title: i18n.ts.statusbar,
|
||||
|
@@ -17,7 +17,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { } from 'vue';
|
||||
import { ref, computed } from 'vue';
|
||||
import MkTextarea from '@/components/MkTextarea.vue';
|
||||
import MkButton from '@/components/MkButton.vue';
|
||||
import { parseThemeCode, previewTheme, installTheme } from '@/scripts/install-theme.js';
|
||||
@@ -25,7 +25,7 @@ import * as os from '@/os.js';
|
||||
import { i18n } from '@/i18n.js';
|
||||
import { definePageMetadata } from '@/scripts/page-metadata.js';
|
||||
|
||||
let installThemeCode = $ref(null);
|
||||
const installThemeCode = ref(null);
|
||||
|
||||
async function install(code: string): Promise<void> {
|
||||
try {
|
||||
@@ -55,9 +55,9 @@ async function install(code: string): Promise<void> {
|
||||
}
|
||||
}
|
||||
|
||||
const headerActions = $computed(() => []);
|
||||
const headerActions = computed(() => []);
|
||||
|
||||
const headerTabs = $computed(() => []);
|
||||
const headerTabs = computed(() => []);
|
||||
|
||||
definePageMetadata({
|
||||
title: i18n.ts._theme.install,
|
||||
|
@@ -72,9 +72,9 @@ function uninstall() {
|
||||
os.success();
|
||||
}
|
||||
|
||||
const headerActions = $computed(() => []);
|
||||
const headerActions = computed(() => []);
|
||||
|
||||
const headerTabs = $computed(() => []);
|
||||
const headerTabs = computed(() => []);
|
||||
|
||||
definePageMetadata({
|
||||
title: i18n.ts._theme.manage,
|
||||
|
@@ -160,9 +160,9 @@ function setWallpaper(event) {
|
||||
});
|
||||
}
|
||||
|
||||
const headerActions = $computed(() => []);
|
||||
const headerActions = computed(() => []);
|
||||
|
||||
const headerTabs = $computed(() => []);
|
||||
const headerTabs = computed(() => []);
|
||||
|
||||
definePageMetadata({
|
||||
title: i18n.ts.theme,
|
||||
|
@@ -42,7 +42,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { } from 'vue';
|
||||
import { ref, computed } from 'vue';
|
||||
import MkInput from '@/components/MkInput.vue';
|
||||
import FormSection from '@/components/form/section.vue';
|
||||
import MkSwitch from '@/components/MkSwitch.vue';
|
||||
@@ -62,36 +62,36 @@ const webhook = await os.api('i/webhooks/show', {
|
||||
webhookId: props.webhookId,
|
||||
});
|
||||
|
||||
let name = $ref(webhook.name);
|
||||
let url = $ref(webhook.url);
|
||||
let secret = $ref(webhook.secret);
|
||||
let active = $ref(webhook.active);
|
||||
const name = ref(webhook.name);
|
||||
const url = ref(webhook.url);
|
||||
const secret = ref(webhook.secret);
|
||||
const active = ref(webhook.active);
|
||||
|
||||
let event_follow = $ref(webhook.on.includes('follow'));
|
||||
let event_followed = $ref(webhook.on.includes('followed'));
|
||||
let event_note = $ref(webhook.on.includes('note'));
|
||||
let event_reply = $ref(webhook.on.includes('reply'));
|
||||
let event_renote = $ref(webhook.on.includes('renote'));
|
||||
let event_reaction = $ref(webhook.on.includes('reaction'));
|
||||
let event_mention = $ref(webhook.on.includes('mention'));
|
||||
const event_follow = ref(webhook.on.includes('follow'));
|
||||
const event_followed = ref(webhook.on.includes('followed'));
|
||||
const event_note = ref(webhook.on.includes('note'));
|
||||
const event_reply = ref(webhook.on.includes('reply'));
|
||||
const event_renote = ref(webhook.on.includes('renote'));
|
||||
const event_reaction = ref(webhook.on.includes('reaction'));
|
||||
const event_mention = ref(webhook.on.includes('mention'));
|
||||
|
||||
async function save(): Promise<void> {
|
||||
const events = [];
|
||||
if (event_follow) events.push('follow');
|
||||
if (event_followed) events.push('followed');
|
||||
if (event_note) events.push('note');
|
||||
if (event_reply) events.push('reply');
|
||||
if (event_renote) events.push('renote');
|
||||
if (event_reaction) events.push('reaction');
|
||||
if (event_mention) events.push('mention');
|
||||
if (event_follow.value) events.push('follow');
|
||||
if (event_followed.value) events.push('followed');
|
||||
if (event_note.value) events.push('note');
|
||||
if (event_reply.value) events.push('reply');
|
||||
if (event_renote.value) events.push('renote');
|
||||
if (event_reaction.value) events.push('reaction');
|
||||
if (event_mention.value) events.push('mention');
|
||||
|
||||
os.apiWithDialog('i/webhooks/update', {
|
||||
name,
|
||||
url,
|
||||
secret,
|
||||
name: name.value,
|
||||
url: url.value,
|
||||
secret: secret.value,
|
||||
webhookId: props.webhookId,
|
||||
on: events,
|
||||
active,
|
||||
active: active.value,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -109,9 +109,9 @@ async function del(): Promise<void> {
|
||||
router.push('/settings/webhook');
|
||||
}
|
||||
|
||||
const headerActions = $computed(() => []);
|
||||
const headerActions = computed(() => []);
|
||||
|
||||
const headerTabs = $computed(() => []);
|
||||
const headerTabs = computed(() => []);
|
||||
|
||||
definePageMetadata({
|
||||
title: 'Edit webhook',
|
||||
|
@@ -39,7 +39,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { } from 'vue';
|
||||
import { ref, computed } from 'vue';
|
||||
import MkInput from '@/components/MkInput.vue';
|
||||
import FormSection from '@/components/form/section.vue';
|
||||
import MkSwitch from '@/components/MkSwitch.vue';
|
||||
@@ -48,39 +48,39 @@ import * as os from '@/os.js';
|
||||
import { i18n } from '@/i18n.js';
|
||||
import { definePageMetadata } from '@/scripts/page-metadata.js';
|
||||
|
||||
let name = $ref('');
|
||||
let url = $ref('');
|
||||
let secret = $ref('');
|
||||
const name = ref('');
|
||||
const url = ref('');
|
||||
const secret = ref('');
|
||||
|
||||
let event_follow = $ref(true);
|
||||
let event_followed = $ref(true);
|
||||
let event_note = $ref(true);
|
||||
let event_reply = $ref(true);
|
||||
let event_renote = $ref(true);
|
||||
let event_reaction = $ref(true);
|
||||
let event_mention = $ref(true);
|
||||
const event_follow = ref(true);
|
||||
const event_followed = ref(true);
|
||||
const event_note = ref(true);
|
||||
const event_reply = ref(true);
|
||||
const event_renote = ref(true);
|
||||
const event_reaction = ref(true);
|
||||
const event_mention = ref(true);
|
||||
|
||||
async function create(): Promise<void> {
|
||||
const events = [];
|
||||
if (event_follow) events.push('follow');
|
||||
if (event_followed) events.push('followed');
|
||||
if (event_note) events.push('note');
|
||||
if (event_reply) events.push('reply');
|
||||
if (event_renote) events.push('renote');
|
||||
if (event_reaction) events.push('reaction');
|
||||
if (event_mention) events.push('mention');
|
||||
if (event_follow.value) events.push('follow');
|
||||
if (event_followed.value) events.push('followed');
|
||||
if (event_note.value) events.push('note');
|
||||
if (event_reply.value) events.push('reply');
|
||||
if (event_renote.value) events.push('renote');
|
||||
if (event_reaction.value) events.push('reaction');
|
||||
if (event_mention.value) events.push('mention');
|
||||
|
||||
os.apiWithDialog('i/webhooks/create', {
|
||||
name,
|
||||
url,
|
||||
secret,
|
||||
name: name.value,
|
||||
url: url.value,
|
||||
secret: secret.value,
|
||||
on: events,
|
||||
});
|
||||
}
|
||||
|
||||
const headerActions = $computed(() => []);
|
||||
const headerActions = computed(() => []);
|
||||
|
||||
const headerTabs = $computed(() => []);
|
||||
const headerTabs = computed(() => []);
|
||||
|
||||
definePageMetadata({
|
||||
title: 'Create new webhook',
|
||||
|
@@ -33,7 +33,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { } from 'vue';
|
||||
import { computed } from 'vue';
|
||||
import MkPagination from '@/components/MkPagination.vue';
|
||||
import FormSection from '@/components/form/section.vue';
|
||||
import FormLink from '@/components/form/link.vue';
|
||||
@@ -46,9 +46,9 @@ const pagination = {
|
||||
noPaging: true,
|
||||
};
|
||||
|
||||
const headerActions = $computed(() => []);
|
||||
const headerActions = computed(() => []);
|
||||
|
||||
const headerTabs = $computed(() => []);
|
||||
const headerTabs = computed(() => []);
|
||||
|
||||
definePageMetadata({
|
||||
title: 'Webhook',
|
||||
|
Reference in New Issue
Block a user