1
0
mirror of https://github.com/misskey-dev/misskey.git synced 2026-05-03 16:06:46 +02:00
This commit is contained in:
syuilo
2025-09-01 16:23:05 +09:00
parent b1479ab1d8
commit 4a0e968662
7 changed files with 35 additions and 34 deletions

View File

@@ -1,3 +1,4 @@
@ -1,70 +0,0 @@
<!--
SPDX-FileCopyrightText: syuilo and misskey-project
SPDX-License-Identifier: AGPL-3.0-only
@@ -12,8 +13,11 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
<div v-else>
<div :class="$style.error">
<div><i class="ti ti-alert-triangle"></i> {{ i18n.ts.somethingHappened }}</div>
<MkButton inline style="margin-top: 16px;" @click="retry"><i class="ti ti-reload"></i> {{ i18n.ts.retry }}</MkButton>
<slot name="error" :error="error">
<div><i class="ti ti-alert-triangle"></i> {{ i18n.ts.somethingHappened }}</div>
<div v-if="error">{{ JSON.stringify(error) }}</div>
<MkButton inline style="margin-top: 16px;" @click="retry"><i class="ti ti-reload"></i> {{ i18n.ts.retry }}</MkButton>
</slot>
</div>
</div>
</template>
@@ -27,15 +31,17 @@ const props = defineProps<{
p: () => Promise<T>;
}>();
const emit = defineEmits<{
(ev: 'resolved', result: T): void;
}>();
const pending = ref(true);
const resolved = ref(false);
const rejected = ref(false);
const result = ref<T | null>(null);
const error = ref<any | null>(null);
const process = () => {
if (props.p == null) {
return;
}
const promise = props.p();
pending.value = true;
resolved.value = false;
@@ -44,10 +50,12 @@ const process = () => {
pending.value = false;
resolved.value = true;
result.value = _result;
emit('resolved', _result);
});
promise.catch(() => {
promise.catch((_error) => {
pending.value = false;
rejected.value = true;
error.value = _error;
});
};

View File

@@ -20,6 +20,7 @@ import NestedRouterView from './global/NestedRouterView.vue';
import StackingRouterView from './global/StackingRouterView.vue';
import MkLoading from './global/MkLoading.vue';
import MkError from './global/MkError.vue';
import MkSuspense from './global/MkSuspense.vue';
import MkAd from './global/MkAd.vue';
import MkPageHeader from './global/MkPageHeader.vue';
import MkStickyContainer from './global/MkStickyContainer.vue';
@@ -60,6 +61,7 @@ export const components = {
MkUrl: MkUrl,
MkLoading: MkLoading,
MkError: MkError,
MkSuspense: MkSuspense,
MkAd: MkAd,
MkPageHeader: MkPageHeader,
MkStickyContainer: MkStickyContainer,
@@ -94,6 +96,7 @@ declare module '@vue/runtime-core' {
MkUrl: typeof MkUrl;
MkLoading: typeof MkLoading;
MkError: typeof MkError;
MkSuspense: typeof MkSuspense;
MkAd: typeof MkAd;
MkPageHeader: typeof MkPageHeader;
MkStickyContainer: typeof MkStickyContainer;