diff options
Diffstat (limited to 'packages/client/src/widgets/instance-cloud.vue')
| -rw-r--r-- | packages/client/src/widgets/instance-cloud.vue | 81 |
1 files changed, 0 insertions, 81 deletions
diff --git a/packages/client/src/widgets/instance-cloud.vue b/packages/client/src/widgets/instance-cloud.vue deleted file mode 100644 index 4965616995..0000000000 --- a/packages/client/src/widgets/instance-cloud.vue +++ /dev/null @@ -1,81 +0,0 @@ -<template> -<MkContainer :naked="widgetProps.transparent" :show-header="false" class="mkw-instance-cloud"> - <div class=""> - <MkTagCloud v-if="activeInstances"> - <li v-for="instance in activeInstances" :key="instance.id"> - <a @click.prevent="onInstanceClick(instance)"> - <img style="width: 32px;" :src="getInstanceIcon(instance)"> - </a> - </li> - </MkTagCloud> - </div> -</MkContainer> -</template> - -<script lang="ts" setup> -import { } from 'vue'; -import { useWidgetPropsManager, Widget, WidgetComponentEmits, WidgetComponentExpose, WidgetComponentProps } from './widget'; -import { GetFormResultType } from '@/scripts/form'; -import MkContainer from '@/components/MkContainer.vue'; -import MkTagCloud from '@/components/MkTagCloud.vue'; -import * as os from '@/os'; -import { useInterval } from '@/scripts/use-interval'; -import { getProxiedImageUrlNullable } from '@/scripts/media-proxy'; - -const name = 'instanceCloud'; - -const widgetPropsDef = { - transparent: { - type: 'boolean' as const, - default: false, - }, -}; - -type WidgetProps = GetFormResultType<typeof widgetPropsDef>; - -// 現時点ではvueの制限によりimportしたtypeをジェネリックに渡せない -//const props = defineProps<WidgetComponentProps<WidgetProps>>(); -//const emit = defineEmits<WidgetComponentEmits<WidgetProps>>(); -const props = defineProps<{ widget?: Widget<WidgetProps>; }>(); -const emit = defineEmits<{ (ev: 'updateProps', props: WidgetProps); }>(); - -const { widgetProps, configure } = useWidgetPropsManager(name, - widgetPropsDef, - props, - emit, -); - -let cloud = $ref<InstanceType<typeof MkTagCloud> | null>(); -let activeInstances = $shallowRef(null); - -function onInstanceClick(i) { - os.pageWindow(`/instance-info/${i.host}`); -} - -useInterval(() => { - os.api('federation/instances', { - sort: '+lastCommunicatedAt', - limit: 25, - }).then(res => { - activeInstances = res; - if (cloud) cloud.update(); - }); -}, 1000 * 60 * 3, { - immediate: true, - afterMounted: true, -}); - -function getInstanceIcon(instance): string { - return getProxiedImageUrlNullable(instance.iconUrl, 'preview') ?? getProxiedImageUrlNullable(instance.faviconUrl, 'preview') ?? '/client-assets/dummy.png'; -} - -defineExpose<WidgetComponentExpose>({ - name, - configure, - id: props.widget ? props.widget.id : null, -}); -</script> - -<style lang="scss" scoped> - -</style> |