forked from snapshot-labs/snapshot-v1
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSpaceView.vue
62 lines (53 loc) · 1.55 KB
/
SpaceView.vue
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<script setup lang="ts">
import aliases from '@/../snapshot-spaces/spaces/aliases.json';
import { useFlaggedMessageStatus } from '@/composables/useFlaggedMessageStatus';
const route = useRoute();
const router = useRouter();
const { domain } = useApp();
const { loadExtendedSpace, extendedSpaces } = useExtendedSpaces();
const aliasedSpace = computed(
() => aliases[domain] || aliases[route.params.key as string]
);
const spaceKey = computed(
() => aliasedSpace.value || domain || route.params.key
);
const space = computed(
() => extendedSpaces.value?.find(s => s.id === spaceKey.value.toLowerCase())
);
const { isMessageVisible, setMessageVisibility } =
useFlaggedMessageStatus(spaceKey);
watch(
spaceKey,
async () => {
if (!spaceKey.value || aliasedSpace.value) return;
await loadExtendedSpace(spaceKey.value.toLowerCase());
if (!space.value) {
router.push('/');
}
setMessageVisibility(space.value?.flagged || false);
},
{ immediate: true }
);
onMounted(() => {
if (aliasedSpace.value) {
const updatedPath = route.path.replace(
domain || route.params.key,
aliasedSpace.value
);
router.replace({ path: updatedPath });
}
});
</script>
<template>
<template v-if="space">
<BaseContainer v-if="isMessageVisible" slim>
<MessageWarningFlagged
type="space"
responsive
@force-show="setMessageVisibility(false)"
/>
</BaseContainer>
<router-view v-else :space="space" :space-key="spaceKey" />
</template>
<LoadingSpinner v-else class="overlay big" />
</template>