You've already forked AstralRinth
* feat: migrate frontend notifications to dependency injection based notificaton manager * fix: lint * fix: issues * fix: compile error + notif binding issue * refactor: move org context to new DI setup * feat: migrate app notifications to DI + frontend styling * fix: sidebar issues * fix: dont use delete in computed * fix: import and prop issue * refactor: move handleError to main notification manager class * fix: lint & build * fix: merge issues * fix: lint issues * fix: lint issues --------- Signed-off-by: IMB11 <hendersoncal117@gmail.com> Signed-off-by: Cal H. <hendersoncal117@gmail.com>
51 lines
1.4 KiB
Vue
51 lines
1.4 KiB
Vue
<template>
|
|
<div
|
|
v-if="subdomain && !isHidden"
|
|
v-tooltip="'Copy custom URL'"
|
|
class="flex min-w-0 flex-row items-center gap-4 truncate hover:cursor-pointer"
|
|
>
|
|
<div v-if="!noSeparator" class="experimental-styles-within h-6 w-0.5 bg-button-border"></div>
|
|
<div class="flex flex-row items-center gap-2">
|
|
<LinkIcon class="flex size-5 shrink-0" />
|
|
<div
|
|
class="flex min-w-0 text-sm font-semibold"
|
|
:class="serverId ? 'hover:underline' : ''"
|
|
@click="copySubdomain"
|
|
>
|
|
{{ subdomain }}.modrinth.gg
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import { LinkIcon } from "@modrinth/assets";
|
|
import { injectNotificationManager } from "@modrinth/ui";
|
|
import { useStorage } from "@vueuse/core";
|
|
|
|
const { addNotification } = injectNotificationManager();
|
|
|
|
const props = defineProps<{
|
|
subdomain: string;
|
|
noSeparator?: boolean;
|
|
}>();
|
|
|
|
const copySubdomain = () => {
|
|
navigator.clipboard.writeText(props.subdomain + ".modrinth.gg");
|
|
addNotification({
|
|
title: "Custom URL copied",
|
|
text: "Your server's URL has been copied to your clipboard.",
|
|
type: "success",
|
|
});
|
|
};
|
|
|
|
const route = useNativeRoute();
|
|
const serverId = computed(() => route.params.id as string);
|
|
|
|
const userPreferences = useStorage(`pyro-server-${serverId.value}-preferences`, {
|
|
hideSubdomainLabel: false,
|
|
});
|
|
|
|
const isHidden = computed(() => userPreferences.value.hideSubdomainLabel);
|
|
</script>
|