From c3fe7b42323625e4b8c516279a7a1acbcf77095b Mon Sep 17 00:00:00 2001 From: "Calum H." Date: Wed, 20 May 2026 18:07:35 +0100 Subject: [PATCH] feat: content management changes (#6104) * feat: change modpack updating flow * fix: pending install state loss * fix: mods.vue perf problems * chore: todo doc * draft: try preload/fix suspense * fix: lint --- .../InstallationSettings.vue | 3 +- .../ui/modal/InstanceSettingsModal.vue | 12 +- .../src/helpers/instance-content.ts | 100 ++++ .../app-frontend/src/pages/instance/Index.vue | 54 +- apps/app-frontend/src/pages/instance/Mods.vue | 496 ++++++++++++++---- .../src/providers/instance-settings.ts | 1 + .../providers/setup/server-install-content.ts | 6 + packages/app-lib/src/state/cache.rs | 30 +- .../app-lib/src/state/instances/content.rs | 93 ++-- packages/app-lib/src/state/profiles.rs | 166 ++++-- .../components/modals/ContentUpdaterModal.vue | 150 +++++- .../components/modals/ModpackContentModal.vue | 19 +- .../shared/installation-settings/layout.vue | 20 +- .../providers/installation-settings.ts | 1 + .../server-settings/pages/installation.vue | 1 + .../wrapped/hosting/manage/content.vue | 156 +++++- packages/ui/src/locales/en-US/index.json | 9 + packages/ui/src/utils/index.ts | 1 + .../ui/src/utils/version-compatibility.ts | 70 +++ 19 files changed, 1111 insertions(+), 277 deletions(-) create mode 100644 apps/app-frontend/src/helpers/instance-content.ts create mode 100644 packages/ui/src/utils/version-compatibility.ts diff --git a/apps/app-frontend/src/components/ui/instance_settings/InstallationSettings.vue b/apps/app-frontend/src/components/ui/instance_settings/InstallationSettings.vue index 3ef0be165..4b1e5af37 100644 --- a/apps/app-frontend/src/components/ui/instance_settings/InstallationSettings.vue +++ b/apps/app-frontend/src/components/ui/instance_settings/InstallationSettings.vue @@ -35,7 +35,7 @@ const { handleError } = injectNotificationManager() const { formatMessage } = useVIntl() const queryClient = useQueryClient() -const { instance, offline, isMinecraftServer, onUnlinked } = injectInstanceSettings() +const { instance, offline, isMinecraftServer, onUnlinked, closeModal } = injectInstanceSettings() const [ fabric_versions, @@ -113,6 +113,7 @@ provideAppBackup({ }) provideInstallationSettings({ + closeSettings: closeModal, loading: ref(false), installationInfo: computed(() => { const rows = [ diff --git a/apps/app-frontend/src/components/ui/modal/InstanceSettingsModal.vue b/apps/app-frontend/src/components/ui/modal/InstanceSettingsModal.vue index 76532a30c..e5253948c 100644 --- a/apps/app-frontend/src/components/ui/modal/InstanceSettingsModal.vue +++ b/apps/app-frontend/src/components/ui/modal/InstanceSettingsModal.vue @@ -45,12 +45,19 @@ const isMinecraftServer = ref(false) const handleUnlinked = () => emit('unlinked') const instanceRef = computed(() => props.instance) +const queryClient = useQueryClient() +const tabbedModal = ref | null>(null) + +function hide() { + tabbedModal.value?.hide() +} provideInstanceSettings({ instance: instanceRef, offline: props.offline, isMinecraftServer, onUnlinked: handleUnlinked, + closeModal: hide, }) watch( @@ -113,9 +120,6 @@ const tabs = computed(() => [ }, ]) -const queryClient = useQueryClient() -const tabbedModal = ref | null>(null) - function show(tabIndex?: number) { if (props.instance.linked_data?.project_id) { queryClient.prefetchQuery({ @@ -129,7 +133,7 @@ function show(tabIndex?: number) { } } -defineExpose({ show }) +defineExpose({ show, hide })