mirror of
https://github.com/misskey-dev/misskey.git
synced 2026-05-15 02:15:54 +02:00
enhance(frontend): 非同期的なコンポーネントの読み込み時のハンドリングを強化
This commit is contained in:
@@ -172,8 +172,8 @@ export function chooseFileFromPcAndUpload(
|
||||
export function chooseDriveFile(options: {
|
||||
multiple?: boolean;
|
||||
} = {}): Promise<Misskey.entities.DriveFile[]> {
|
||||
return new Promise(resolve => {
|
||||
const { dispose } = os.popup(defineAsyncComponent(() => import('@/components/MkDriveFileSelectDialog.vue')), {
|
||||
return new Promise(async resolve => {
|
||||
const { dispose } = await os.popupAsyncWithDialog(import('@/components/MkDriveFileSelectDialog.vue').then(x => x.default), {
|
||||
multiple: options.multiple ?? false,
|
||||
}, {
|
||||
done: files => {
|
||||
@@ -286,8 +286,8 @@ export async function createCroppedImageDriveFileFromImageDriveFile(imageDriveFi
|
||||
}
|
||||
|
||||
export async function selectDriveFolder(initialFolder: Misskey.entities.DriveFolder['id'] | null): Promise<Misskey.entities.DriveFolder[]> {
|
||||
return new Promise(resolve => {
|
||||
const { dispose } = os.popup(defineAsyncComponent(() => import('@/components/MkDriveFolderSelectDialog.vue')), {
|
||||
return new Promise(async resolve => {
|
||||
const { dispose } = await os.popupAsyncWithDialog(import('@/components/MkDriveFolderSelectDialog.vue').then(x => x.default), {
|
||||
initialFolder,
|
||||
}, {
|
||||
done: folders => {
|
||||
|
||||
@@ -28,8 +28,8 @@ function rename(file: Misskey.entities.DriveFile) {
|
||||
});
|
||||
}
|
||||
|
||||
function describe(file: Misskey.entities.DriveFile) {
|
||||
const { dispose } = os.popup(defineAsyncComponent(() => import('@/components/MkFileCaptionEditWindow.vue')), {
|
||||
async function describe(file: Misskey.entities.DriveFile) {
|
||||
const { dispose } = await os.popupAsyncWithDialog(import('@/components/MkFileCaptionEditWindow.vue').then(x => x.default), {
|
||||
default: file.comment ?? '',
|
||||
file: file,
|
||||
}, {
|
||||
|
||||
@@ -64,7 +64,7 @@ export function getEmbedCode(path: string, params?: EmbedParams): string {
|
||||
*
|
||||
* カスタマイズ機能がいらない場合(事前にパラメータを指定する場合)は getEmbedCode を直接使ってください
|
||||
*/
|
||||
export function genEmbedCode(entity: EmbeddableEntity, id: string, params?: EmbedParams) {
|
||||
export async function genEmbedCode(entity: EmbeddableEntity, id: string, params?: EmbedParams) {
|
||||
const _params = { ...params };
|
||||
|
||||
if (embedRouteWithScrollbar.includes(entity) && _params.maxHeight == null) {
|
||||
@@ -75,7 +75,7 @@ export function genEmbedCode(entity: EmbeddableEntity, id: string, params?: Embe
|
||||
if (window.innerWidth < MOBILE_THRESHOLD) {
|
||||
copyToClipboard(getEmbedCode(`/embed/${entity}/${id}`, _params));
|
||||
} else {
|
||||
const { dispose } = os.popup(defineAsyncComponent(() => import('@/components/MkEmbedCodeGenDialog.vue')), {
|
||||
const { dispose } = await os.popupAsyncWithDialog(import('@/components/MkEmbedCodeGenDialog.vue').then(x => x.default), {
|
||||
entity,
|
||||
id,
|
||||
params: _params,
|
||||
|
||||
@@ -135,12 +135,12 @@ export function getAbuseNoteMenu(note: Misskey.entities.Note, text: string): Men
|
||||
return {
|
||||
icon: 'ti ti-exclamation-circle',
|
||||
text,
|
||||
action: (): void => {
|
||||
action: async (): Promise<void> => {
|
||||
const localUrl = `${url}/notes/${note.id}`;
|
||||
let noteInfo = '';
|
||||
if (note.url ?? note.uri != null) noteInfo = `Note: ${note.url ?? note.uri}\n`;
|
||||
noteInfo += `Local Note: ${localUrl}\n`;
|
||||
const { dispose } = os.popup(defineAsyncComponent(() => import('@/components/MkAbuseReportWindow.vue')), {
|
||||
const { dispose } = await os.popupAsyncWithDialog(import('@/components/MkAbuseReportWindow.vue').then(x => x.default), {
|
||||
user: note.user,
|
||||
initialComment: `${noteInfo}-----\n`,
|
||||
}, {
|
||||
|
||||
@@ -94,8 +94,8 @@ export function getUserMenu(user: Misskey.entities.UserDetailed, router: Router
|
||||
});
|
||||
}
|
||||
|
||||
function reportAbuse() {
|
||||
const { dispose } = os.popup(defineAsyncComponent(() => import('@/components/MkAbuseReportWindow.vue')), {
|
||||
async function reportAbuse() {
|
||||
const { dispose } = await os.popupAsyncWithDialog(import('@/components/MkAbuseReportWindow.vue').then(x => x.default), {
|
||||
user: user,
|
||||
}, {
|
||||
closed: () => dispose(),
|
||||
|
||||
@@ -3,11 +3,10 @@
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
import { defineAsyncComponent } from 'vue';
|
||||
import { $i } from '@/i.js';
|
||||
import { instance } from '@/instance.js';
|
||||
import { i18n } from '@/i18n.js';
|
||||
import { popup } from '@/os.js';
|
||||
import { popupAsyncWithDialog } from '@/os.js';
|
||||
|
||||
export type OpenOnRemoteOptions = {
|
||||
/**
|
||||
@@ -45,7 +44,7 @@ export type OpenOnRemoteOptions = {
|
||||
params: Record<string, string>;
|
||||
};
|
||||
|
||||
export function pleaseLogin(opts: {
|
||||
export async function pleaseLogin(opts: {
|
||||
path?: string;
|
||||
message?: string;
|
||||
openOnRemote?: OpenOnRemoteOptions;
|
||||
@@ -59,7 +58,7 @@ export function pleaseLogin(opts: {
|
||||
_openOnRemote = opts.openOnRemote;
|
||||
}
|
||||
|
||||
const { dispose } = popup(defineAsyncComponent(() => import('@/components/MkSigninDialog.vue')), {
|
||||
const { dispose } = await popupAsyncWithDialog(import('@/components/MkSigninDialog.vue').then(x => x.default), {
|
||||
autoSet: true,
|
||||
message: opts.message ?? (_openOnRemote ? i18n.ts.signinOrContinueOnRemote : i18n.ts.signinRequired),
|
||||
openOnRemote: _openOnRemote,
|
||||
|
||||
Reference in New Issue
Block a user