-
-
-
-
- {{ formatMessage(messages.instanceInfoHeader) }}
-
-
- {{ formatMessage(messages.instanceInfoBody) }}
-
-
-
-
-
-
-
-
-
import type { Archon } from '@modrinth/api-client'
-import { InfoIcon, XIcon } from '@modrinth/assets'
import { useQuery, useQueryClient } from '@tanstack/vue-query'
-import { useStorage } from '@vueuse/core'
import { computed, onBeforeUnmount, onMounted, useTemplateRef } from 'vue'
import { useRoute, useRouter } from 'vue-router'
@@ -76,7 +49,6 @@ import {
CreationFlowModal,
UploadProgressModal,
} from '#ui/components'
-import ButtonStyled from '#ui/components/base/ButtonStyled.vue'
import InstanceCard from '#ui/components/servers/instances/InstanceCard.vue'
import { defineMessages, useVIntl } from '#ui/composables/i18n'
import { useServerPermissions } from '#ui/composables/server-permissions'
@@ -93,19 +65,6 @@ const messages = defineMessages({
id: 'servers.manage.instances.slot-name',
defaultMessage: 'Instance #{index}',
},
- instanceInfoHeader: {
- id: 'servers.manage.instances.info.header',
- defaultMessage: 'What is a server instance?',
- },
- instanceInfoBody: {
- id: 'servers.manage.instances.info.body',
- defaultMessage:
- 'An instance is a separate setup of your server with its own content, files, worlds, and settings. You can switch which instance your server runs at any time.',
- },
- instanceInfoDismiss: {
- id: 'servers.manage.instances.info.dismiss',
- defaultMessage: "Don't show this again",
- },
createSuccessTitle: {
id: 'servers.manage.instances.create.success.title',
defaultMessage: 'Instance created',
@@ -154,7 +113,6 @@ type ContentSummary = {
}
const WORLD_SLOT_COUNT = 3
-const INSTANCE_INFO_ADMONITION_KEY = 'server-instances-info-admonition-dismissed'
const SERVER_LOADERS = ['vanilla', 'fabric', 'neoforge', 'forge', 'quilt', 'paper', 'purpur']
const client = injectModrinthClient()
@@ -166,7 +124,6 @@ const router = useRouter()
const route = useRoute()
const queryClient = useQueryClient()
const { canSetup, permissionDeniedMessage } = useServerPermissions()
-const instanceInfoAdmonitionDismissed = useStorage(INSTANCE_INFO_ADMONITION_KEY, false)
const createWorldModalRef =
useTemplateRef>('createWorldModalRef')
const uploadProgressModal =
@@ -405,10 +362,6 @@ function handleCreateWorld() {
createWorldModalRef.value?.show()
}
-function dismissInstanceInfoAdmonition() {
- instanceInfoAdmonitionDismissed.value = true
-}
-
function handleBrowseModpacks() {
if (!canSetup.value) return
diff --git a/packages/ui/src/locales/en-US/index.json b/packages/ui/src/locales/en-US/index.json
index 4630418377..7e878bf8fe 100644
--- a/packages/ui/src/locales/en-US/index.json
+++ b/packages/ui/src/locales/en-US/index.json
@@ -4766,9 +4766,6 @@
"servers.manage.instances.info.body": {
"defaultMessage": "An instance is a separate setup of your server with its own content, files, worlds, and settings. You can switch which instance your server runs at any time."
},
- "servers.manage.instances.info.dismiss": {
- "defaultMessage": "Don't show this again"
- },
"servers.manage.instances.info.header": {
"defaultMessage": "What is a server instance?"
},
diff --git a/packages/ui/src/stories/servers/ServerPanelAdmonitions.stories.ts b/packages/ui/src/stories/servers/ServerPanelAdmonitions.stories.ts
index d69d939102..14f375c1f8 100644
--- a/packages/ui/src/stories/servers/ServerPanelAdmonitions.stories.ts
+++ b/packages/ui/src/stories/servers/ServerPanelAdmonitions.stories.ts
@@ -13,6 +13,8 @@ import type {
ServerStats,
} from '../../providers/server-context'
+const INSTANCE_INFO_ADMONITION_KEY = 'server-instances-info-admonition-dismissed'
+
const meta = {
title: 'Servers/ServerPanelAdmonitions',
component: ServerPanelAdmonitions,
@@ -20,13 +22,25 @@ const meta = {
layout: 'padded',
},
decorators: [
- (story) => ({
+ (story, context) => ({
components: { story },
setup() {
+ if (
+ typeof window !== 'undefined' &&
+ context.parameters.resetInstanceInfoAdmonition === true
+ ) {
+ window.localStorage.removeItem(INSTANCE_INFO_ADMONITION_KEY)
+ }
+
const router = useRouter()
onMounted(() => {
- router.replace('/hosting/manage/demo-server/instances/demo-world')
+ router.replace(
+ (context.parameters.routePath as string | undefined) ??
+ '/hosting/manage/demo-server/instances/demo-world',
+ )
})
+ const serverWorlds =
+ (context.parameters.serverWorlds as Archon.Servers.v1.WorldFull[] | undefined) ?? null
const server = ref({
server_id: 'demo-server',
@@ -79,7 +93,9 @@ const meta = {
},
worldId: ref(null),
server,
- serverFull: computed(() => null),
+ serverFull: computed(() =>
+ serverWorlds ? ({ worlds: serverWorlds } as Archon.Servers.v1.ServerFull) : null,
+ ),
currentUserPermissions: computed(() => 0),
isConnected: ref(true),
isWsAuthIncorrect: ref(false),
@@ -120,3 +136,11 @@ export default meta
type Story = StoryObj
export const WithUploadFileOpAndBusy: Story = {}
+
+export const InstanceInfo: Story = {
+ parameters: {
+ routePath: '/hosting/manage/demo-server/instances',
+ resetInstanceInfoAdmonition: true,
+ serverWorlds: [{ id: 'demo-world' }],
+ },
+}