@@ -6,15 +6,15 @@ SPDX-License-Identifier: AGPL-3.0-only
6
6
<template>
7
7
<MkStickyContainer>
8
8
<template #header><MkPageHeader v-model:tab="tab" :tabs="headerTabs"/></template>
9
- <MKSpacer v-if="!(typeof error === 'undefined') " :contentMax="1200">
9
+ <MkSpacer v-if="error != null " :contentMax="1200">
10
10
<div :class="$style.root">
11
11
<img :class="$style.img" :src="serverErrorImageUrl" class="_ghost"/>
12
12
<p :class="$style.text">
13
13
<i class="ti ti-alert-triangle"></i>
14
14
{{ error }}
15
15
</p>
16
16
</div>
17
- </MKSpacer >
17
+ </MkSpacer >
18
18
<MkSpacer v-else-if="tab === 'users'" :contentMax="1200">
19
19
<div class="_gaps_s">
20
20
<div v-if="role">{{ role.description }}</div>
@@ -26,7 +26,7 @@ SPDX-License-Identifier: AGPL-3.0-only
26
26
</div>
27
27
</MkSpacer>
28
28
<MkSpacer v-else-if="tab === 'timeline'" :contentMax="700">
29
- <MkTimeline v-if="visible" ref="timeline" src="role" :role="props.role "/>
29
+ <MkTimeline v-if="visible" ref="timeline" src="role" :role="props.roleId "/>
30
30
<div v-else-if="!visible" class="_fullinfo">
31
31
<img :src="infoImageUrl" class="_ghost"/>
32
32
<div>{{ i18n.ts.nothing }}</div>
@@ -47,39 +47,39 @@ import { instanceName } from '@@/js/config.js';
47
47
import { serverErrorImageUrl, infoImageUrl } from '@/instance.js';
48
48
49
49
const props = withDefaults(defineProps<{
50
- role : string;
50
+ roleId : string;
51
51
initialTab?: string;
52
52
}>(), {
53
53
initialTab: 'users',
54
54
});
55
55
56
+ // eslint-disable-next-line vue/no-setup-props-reactivity-loss
56
57
const tab = ref(props.initialTab);
57
- const role = ref<Misskey.entities.Role>( );
58
- const error = ref( );
58
+ const role = ref<Misskey.entities.Role | null>(null );
59
+ const error = ref<string | null>(null );
59
60
const visible = ref(false);
60
61
61
- watch(() => props.role , () => {
62
+ watch(() => props.roleId , () => {
62
63
misskeyApi('roles/show', {
63
- roleId: props.role ,
64
+ roleId: props.roleId ,
64
65
}).then(res => {
65
66
role.value = res;
66
- document.title = `${role.value.name} | ${instanceName}` ;
67
+ error.value = null ;
67
68
visible.value = res.isExplorable && res.isPublic;
68
69
}).catch((err) => {
69
70
if (err.code === 'NO_SUCH_ROLE') {
70
71
error.value = i18n.ts.noRole;
71
72
} else {
72
73
error.value = i18n.ts.somethingHappened;
73
74
}
74
- document.title = `${error.value} | ${instanceName}`;
75
75
});
76
76
}, { immediate: true });
77
77
78
78
const users = computed(() => ({
79
79
endpoint: 'roles/users' as const,
80
80
limit: 30,
81
81
params: {
82
- roleId: props.role ,
82
+ roleId: props.roleId ,
83
83
},
84
84
}));
85
85
@@ -94,7 +94,7 @@ const headerTabs = computed(() => [{
94
94
}]);
95
95
96
96
definePageMetadata(() => ({
97
- title: role.value ? role.value.name : i18n.ts.role,
97
+ title: role.value ? role.value.name : (error.value ?? i18n.ts.role) ,
98
98
icon: 'ti ti-badge',
99
99
}));
100
100
</script>
0 commit comments