mirror of
https://github.com/misskey-dev/misskey.git
synced 2026-06-12 17:34:03 +02:00
fix(frontend): popupのemit型が正しく利用できるように修正 (#16826)
* fix(frontend): popupのemit型が正しく利用できるように修正 * fix: revert unnecessary code (for testing purpose) * fix lint * fix type errors * fix types * add comment * fix * fix * fix: OverloadToUnionの仕組みを変更 * add comments, clean up * fix lint * fix types * clean up [ci skip] * fix * add comments [ci skip]
This commit is contained in:
@@ -71,7 +71,8 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { computed, defineAsyncComponent, markRaw, ref } from 'vue';
|
||||
import * as Misskey from 'misskey-js';
|
||||
import { computed, markRaw, ref } from 'vue';
|
||||
import MkButton from '@/components/MkButton.vue';
|
||||
import MkInput from '@/components/MkInput.vue';
|
||||
import MkPagination from '@/components/MkPagination.vue';
|
||||
@@ -116,7 +117,7 @@ const selectAll = () => {
|
||||
}
|
||||
};
|
||||
|
||||
const toggleSelect = (emoji) => {
|
||||
const toggleSelect = (emoji: Misskey.entities.EmojiDetailed) => {
|
||||
if (selectedEmojis.value.includes(emoji.id)) {
|
||||
selectedEmojis.value = selectedEmojis.value.filter(x => x !== emoji.id);
|
||||
} else {
|
||||
@@ -124,19 +125,23 @@ const toggleSelect = (emoji) => {
|
||||
}
|
||||
};
|
||||
|
||||
const add = async (ev: MouseEvent) => {
|
||||
const add = async () => {
|
||||
const { dispose } = await os.popupAsyncWithDialog(import('./emoji-edit-dialog.vue').then(x => x.default), {
|
||||
}, {
|
||||
done: result => {
|
||||
if (result.created) {
|
||||
paginator.prepend(result.created);
|
||||
const nowIso = (new Date()).toISOString();
|
||||
paginator.prepend({
|
||||
...result.created,
|
||||
createdAt: nowIso,
|
||||
});
|
||||
}
|
||||
},
|
||||
closed: () => dispose(),
|
||||
});
|
||||
};
|
||||
|
||||
const edit = async (emoji) => {
|
||||
const edit = async (emoji: Misskey.entities.EmojiDetailed) => {
|
||||
const { dispose } = await os.popupAsyncWithDialog(import('./emoji-edit-dialog.vue').then(x => x.default), {
|
||||
emoji: emoji,
|
||||
}, {
|
||||
|
||||
@@ -131,10 +131,11 @@ function move() {
|
||||
|
||||
const f = file.value;
|
||||
|
||||
selectDriveFolder(null).then(folder => {
|
||||
selectDriveFolder(null).then(({ canceled, folders }) => {
|
||||
if (canceled) return;
|
||||
misskeyApi('drive/files/update', {
|
||||
fileId: f.id,
|
||||
folderId: folder[0] ? folder[0].id : null,
|
||||
folderId: folders[0] ? folders[0].id : null,
|
||||
}).then(async () => {
|
||||
await _fetch_();
|
||||
});
|
||||
|
||||
@@ -66,7 +66,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
<MkInfo warn>{{ i18n.ts.rolesThatCanBeUsedThisEmojiAsReactionPublicRoleWarn }}</MkInfo>
|
||||
</div>
|
||||
</MkFolder>
|
||||
<MkSwitch v-model="isSensitive">isSensitive</MkSwitch>
|
||||
<MkSwitch v-model="isSensitive">{{ i18n.ts.sensitive }}</MkSwitch>
|
||||
<MkSwitch v-model="localOnly">{{ i18n.ts.localOnly }}</MkSwitch>
|
||||
<MkButton v-if="emoji" danger @click="del()"><i class="ti ti-trash"></i> {{ i18n.ts.delete }}</MkButton>
|
||||
</div>
|
||||
@@ -99,7 +99,7 @@ const props = defineProps<{
|
||||
}>();
|
||||
|
||||
const emit = defineEmits<{
|
||||
(ev: 'done', v: { deleted?: boolean; updated?: Misskey.entities.AdminEmojiUpdateRequest; created?: Misskey.entities.AdminEmojiUpdateRequest }): void,
|
||||
(ev: 'done', v: { deleted?: boolean; updated?: Misskey.entities.EmojiDetailed; created?: Misskey.entities.EmojiDetailed }): void,
|
||||
(ev: 'closed'): void
|
||||
}>();
|
||||
|
||||
@@ -157,19 +157,29 @@ async function done() {
|
||||
localOnly: localOnly.value,
|
||||
roleIdsThatCanBeUsedThisEmojiAsReaction: rolesThatCanBeUsedThisEmojiAsReaction.value.map(x => x.id),
|
||||
fileId: file.value ? file.value.id : undefined,
|
||||
};
|
||||
} satisfies Misskey.entities.AdminEmojiUpdateRequest;
|
||||
|
||||
if (props.emoji) {
|
||||
const emojiDetailed = {
|
||||
id: props.emoji.id,
|
||||
aliases: params.aliases,
|
||||
name: params.name,
|
||||
category: params.category,
|
||||
host: props.emoji.host,
|
||||
url: file.value ? file.value.url : props.emoji.url,
|
||||
license: params.license,
|
||||
isSensitive: params.isSensitive,
|
||||
localOnly: params.localOnly,
|
||||
roleIdsThatCanBeUsedThisEmojiAsReaction: params.roleIdsThatCanBeUsedThisEmojiAsReaction,
|
||||
} satisfies Misskey.entities.EmojiDetailed;
|
||||
|
||||
await os.apiWithDialog('admin/emoji/update', {
|
||||
id: props.emoji.id,
|
||||
...params,
|
||||
});
|
||||
|
||||
emit('done', {
|
||||
updated: {
|
||||
id: props.emoji.id,
|
||||
...params,
|
||||
},
|
||||
updated: emojiDetailed,
|
||||
});
|
||||
|
||||
windowEl.value?.close();
|
||||
|
||||
@@ -296,8 +296,9 @@ if (prefer.s.uploadFolder) {
|
||||
}
|
||||
|
||||
function chooseUploadFolder() {
|
||||
selectDriveFolder(null).then(async folder => {
|
||||
prefer.commit('uploadFolder', folder[0] ? folder[0].id : null);
|
||||
selectDriveFolder(null).then(async ({ canceled, folders }) => {
|
||||
if (canceled) return;
|
||||
prefer.commit('uploadFolder', folders[0] ? folders[0].id : null);
|
||||
os.success();
|
||||
if (prefer.s.uploadFolder) {
|
||||
uploadFolder.value = await misskeyApi('drive/folders/show', {
|
||||
|
||||
Reference in New Issue
Block a user