mirror of
https://github.com/modrinth/code.git
synced 2026-08-25 09:04:55 +00:00
fix: environment filters (#6611)
This commit is contained in:
@@ -4,6 +4,7 @@ import type {
|
||||
BrowseInstallPlan,
|
||||
BrowseSearchState,
|
||||
CreationFlowContextValue,
|
||||
EnvironmentSearchOverride,
|
||||
FilterValue,
|
||||
PendingServerContentInstall,
|
||||
PendingServerContentInstallType,
|
||||
@@ -160,6 +161,7 @@ export function useServerInstallContent({
|
||||
})
|
||||
|
||||
const serverHideInstalled = ref(false)
|
||||
const serverContentServerOnly = ref(false)
|
||||
const hideSelectedServerInstalls = ref(false)
|
||||
const installingProjectIds = ref<Set<string>>(new Set())
|
||||
const optimisticallyInstalledProjectIds = ref<Set<string>>(new Set())
|
||||
@@ -348,10 +350,6 @@ export function useServerInstallContent({
|
||||
filters.push({ type: 'plugin_loader', option: platform })
|
||||
}
|
||||
|
||||
if (projectType.value?.id === 'mod') {
|
||||
filters.push({ type: 'environment', option: 'server' })
|
||||
}
|
||||
|
||||
if (serverHideInstalled.value && hiddenInstalledProjectIds.value.size > 0) {
|
||||
for (const x of hiddenInstalledProjectIds.value) {
|
||||
filters.push({
|
||||
@@ -383,6 +381,28 @@ export function useServerInstallContent({
|
||||
return filters
|
||||
})
|
||||
|
||||
const showServerOnlyToggle = computed(() => !!serverData.value && projectType.value?.id === 'mod')
|
||||
|
||||
const serverEnvironmentOverride = computed<EnvironmentSearchOverride | undefined>(() => {
|
||||
if (!showServerOnlyToggle.value) return undefined
|
||||
if (serverContentServerOnly.value) {
|
||||
return {
|
||||
mode: 'include',
|
||||
values: [
|
||||
'server_only',
|
||||
'dedicated_server_only',
|
||||
'server_only_client_optional',
|
||||
'client_or_server_prefers_both',
|
||||
'client_or_server',
|
||||
],
|
||||
}
|
||||
}
|
||||
return {
|
||||
mode: 'exclude',
|
||||
values: ['client_only', 'singleplayer_only'],
|
||||
}
|
||||
})
|
||||
|
||||
function getCurrentServerInstallType(): BrowseInstallContentType {
|
||||
const type = projectType.value?.id
|
||||
if (type === 'modpack' || type === 'mod' || type === 'plugin' || type === 'datapack') {
|
||||
@@ -737,6 +757,10 @@ export function useServerInstallContent({
|
||||
serverHideInstalled.value = route.query.shi === 'true'
|
||||
}
|
||||
|
||||
if (route.query.so && projectType.value?.id === 'mod') {
|
||||
serverContentServerOnly.value = route.query.so === 'true'
|
||||
}
|
||||
|
||||
watch(serverHideInstalled, (hideInstalled) => {
|
||||
if (hideInstalled) {
|
||||
syncHiddenInstalledProjectIds()
|
||||
@@ -763,6 +787,9 @@ export function useServerInstallContent({
|
||||
serverContentData,
|
||||
serverFilters,
|
||||
serverHideInstalled,
|
||||
serverContentServerOnly,
|
||||
showServerOnlyToggle,
|
||||
serverEnvironmentOverride,
|
||||
hideSelectedServerInstalls,
|
||||
installingProjectIds,
|
||||
optimisticallyInstalledProjectIds,
|
||||
|
||||
@@ -158,6 +158,9 @@ const {
|
||||
serverContentData,
|
||||
serverFilters,
|
||||
serverHideInstalled,
|
||||
serverContentServerOnly,
|
||||
showServerOnlyToggle,
|
||||
serverEnvironmentOverride,
|
||||
hideSelectedServerInstalls,
|
||||
installingProjectIds,
|
||||
optimisticallyInstalledProjectIds,
|
||||
@@ -378,10 +381,12 @@ const searchState = useBrowseSearch({
|
||||
projectType: projectTypeId,
|
||||
tags,
|
||||
providedFilters: serverFilters,
|
||||
environmentOverride: serverEnvironmentOverride,
|
||||
search,
|
||||
persistentQueryParams: ['sid', 'wid', 'shi', 'from'],
|
||||
persistentQueryParams: ['sid', 'wid', 'shi', 'so', 'from'],
|
||||
getExtraQueryParams: () => ({
|
||||
shi: serverHideInstalled.value ? 'true' : undefined,
|
||||
so: showServerOnlyToggle.value && serverContentServerOnly.value ? 'true' : undefined,
|
||||
}),
|
||||
maxResultsOptions: currentMaxResultsOptions,
|
||||
displayMode: resultsDisplayMode,
|
||||
@@ -469,6 +474,10 @@ provideBrowseManager({
|
||||
queuedServerInstallCount.value > 0,
|
||||
),
|
||||
hideSelectedLabel: computed(() => formatMessage(commonMessages.hideSelectedContentLabel)),
|
||||
serverOnly: serverContentServerOnly,
|
||||
showServerOnly: showServerOnlyToggle,
|
||||
serverOnlyLabel: computed(() => formatMessage(commonMessages.serverOnlyLabel)),
|
||||
hiddenFilterTypeIds: computed(() => (showServerOnlyToggle.value ? ['environment'] : [])),
|
||||
displayMode: resultsDisplayMode,
|
||||
cycleDisplayMode: cycleSearchDisplayMode,
|
||||
maxResultsOptions: currentMaxResultsOptions,
|
||||
|
||||
Reference in New Issue
Block a user