You've already forked AstralRinth
forked from didirus/AstralRinth
Merge commit '24765db0451d15bd3ddb609ca51743b6f40e953d' into feature-clean
This commit is contained in:
10
.github/workflows/theseus-release.yml
vendored
10
.github/workflows/theseus-release.yml
vendored
@@ -54,11 +54,11 @@ jobs:
|
|||||||
!target/release/bundle/*/*.app.tar.gz
|
!target/release/bundle/*/*.app.tar.gz
|
||||||
!target/release/bundle/*/*.app.tar.gz.sig
|
!target/release/bundle/*/*.app.tar.gz.sig
|
||||||
|
|
||||||
!target/release/bundle/*/*.AppImage
|
!target/release/bundle/appimage/*.AppImage
|
||||||
!target/release/bundle/*/*.AppImage.tar.gz
|
!target/release/bundle/appimage/*.AppImage.tar.gz
|
||||||
!target/release/bundle/*/*.AppImage.tar.gz.sig
|
!target/release/bundle/appimage/*.AppImage.tar.gz.sig
|
||||||
!target/release/bundle/*/*.deb
|
!target/release/bundle/deb/*.deb
|
||||||
!target/release/bundle/*/*.rpm
|
!target/release/bundle/rpm/*.rpm
|
||||||
|
|
||||||
!target/release/bundle/msi/*.msi
|
!target/release/bundle/msi/*.msi
|
||||||
!target/release/bundle/msi/*.msi.zip
|
!target/release/bundle/msi/*.msi.zip
|
||||||
|
|||||||
@@ -42,7 +42,11 @@
|
|||||||
Install content to server
|
Install content to server
|
||||||
</h1>
|
</h1>
|
||||||
</template>
|
</template>
|
||||||
<NavTabs v-if="!server" :links="selectableProjectTypes" class="hidden md:flex" />
|
<NavTabs
|
||||||
|
v-if="!server && !flags.projectTypesPrimaryNav"
|
||||||
|
:links="selectableProjectTypes"
|
||||||
|
class="hidden md:flex"
|
||||||
|
/>
|
||||||
</section>
|
</section>
|
||||||
<aside
|
<aside
|
||||||
:class="{
|
:class="{
|
||||||
@@ -338,11 +342,21 @@ const tags = useTags();
|
|||||||
const flags = useFeatureFlags();
|
const flags = useFeatureFlags();
|
||||||
const auth = await useAuth();
|
const auth = await useAuth();
|
||||||
|
|
||||||
const projectType = computed(() =>
|
const projectType = ref();
|
||||||
tags.value.projectTypes.find(
|
function setProjectType() {
|
||||||
|
const projType = tags.value.projectTypes.find(
|
||||||
(x) => x.id === route.path.replaceAll(/^\/|s\/?$/g, ""), // Removes prefix `/` and suffixes `s` and `s/`
|
(x) => x.id === route.path.replaceAll(/^\/|s\/?$/g, ""), // Removes prefix `/` and suffixes `s` and `s/`
|
||||||
),
|
);
|
||||||
);
|
|
||||||
|
if (projType) {
|
||||||
|
projectType.value = projType;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
setProjectType();
|
||||||
|
router.afterEach(() => {
|
||||||
|
setProjectType();
|
||||||
|
});
|
||||||
|
|
||||||
const projectTypes = computed(() => [projectType.value.id]);
|
const projectTypes = computed(() => [projectType.value.id]);
|
||||||
|
|
||||||
const server = ref();
|
const server = ref();
|
||||||
@@ -516,7 +530,7 @@ const {
|
|||||||
const config = useRuntimeConfig();
|
const config = useRuntimeConfig();
|
||||||
const base = import.meta.server ? config.apiBaseUrl : config.public.apiBaseUrl;
|
const base = import.meta.server ? config.apiBaseUrl : config.public.apiBaseUrl;
|
||||||
|
|
||||||
return `${base}/search${requestParams.value}`;
|
return `${base}search${requestParams.value}`;
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
transform: (hits) => {
|
transform: (hits) => {
|
||||||
|
|||||||
@@ -295,7 +295,12 @@ impl RedisPool {
|
|||||||
|
|
||||||
fetch_ids.iter().for_each(|key| {
|
fetch_ids.iter().for_each(|key| {
|
||||||
pipe.atomic().set_options(
|
pipe.atomic().set_options(
|
||||||
format!("{}_{namespace}:{}/lock", self.meta_namespace, key),
|
// We store locks in lowercase because they are case insensitive
|
||||||
|
format!(
|
||||||
|
"{}_{namespace}:{}/lock",
|
||||||
|
self.meta_namespace,
|
||||||
|
key.to_lowercase()
|
||||||
|
),
|
||||||
100,
|
100,
|
||||||
SetOptions::default()
|
SetOptions::default()
|
||||||
.get(true)
|
.get(true)
|
||||||
@@ -395,7 +400,9 @@ impl RedisPool {
|
|||||||
|
|
||||||
pipe.atomic().del(format!(
|
pipe.atomic().del(format!(
|
||||||
"{}_{namespace}:{}/lock",
|
"{}_{namespace}:{}/lock",
|
||||||
self.meta_namespace, actual_slug
|
// Locks are stored in lowercase
|
||||||
|
self.meta_namespace,
|
||||||
|
actual_slug.to_lowercase()
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -408,8 +415,10 @@ impl RedisPool {
|
|||||||
ids.remove(&base62);
|
ids.remove(&base62);
|
||||||
|
|
||||||
pipe.atomic().del(format!(
|
pipe.atomic().del(format!(
|
||||||
"{}_{namespace}:{base62}/lock",
|
"{}_{namespace}:{}/lock",
|
||||||
self.meta_namespace
|
self.meta_namespace,
|
||||||
|
// Locks are stored in lowercase
|
||||||
|
base62.to_lowercase()
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -423,6 +432,11 @@ impl RedisPool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (key, _) in ids {
|
for (key, _) in ids {
|
||||||
|
pipe.atomic().del(format!(
|
||||||
|
"{}_{namespace}:{}/lock",
|
||||||
|
self.meta_namespace,
|
||||||
|
key.to_lowercase()
|
||||||
|
));
|
||||||
pipe.atomic().del(format!(
|
pipe.atomic().del(format!(
|
||||||
"{}_{namespace}:{key}/lock",
|
"{}_{namespace}:{key}/lock",
|
||||||
self.meta_namespace
|
self.meta_namespace
|
||||||
@@ -451,7 +465,8 @@ impl RedisPool {
|
|||||||
format!(
|
format!(
|
||||||
"{}_{namespace}:{}/lock",
|
"{}_{namespace}:{}/lock",
|
||||||
self.meta_namespace,
|
self.meta_namespace,
|
||||||
x.key()
|
// We lowercase key because locks are stored in lowercase
|
||||||
|
x.key().to_lowercase()
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
.collect::<Vec<_>>(),
|
.collect::<Vec<_>>(),
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ export type FilterType = {
|
|||||||
}[]
|
}[]
|
||||||
searchable: boolean
|
searchable: boolean
|
||||||
allows_custom_options?: 'and' | 'or'
|
allows_custom_options?: 'and' | 'or'
|
||||||
|
ordering?: number
|
||||||
} & (
|
} & (
|
||||||
| {
|
| {
|
||||||
display: 'all' | 'scrollable' | 'none'
|
display: 'all' | 'scrollable' | 'none'
|
||||||
@@ -215,6 +216,7 @@ export function useSearch(
|
|||||||
query_value: gameVersion.version,
|
query_value: gameVersion.version,
|
||||||
method: 'or',
|
method: 'or',
|
||||||
})),
|
})),
|
||||||
|
ordering: projectTypes.value.includes('mod') ? 2 : undefined,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 'mod_loader',
|
id: 'mod_loader',
|
||||||
@@ -243,6 +245,7 @@ export function useSearch(
|
|||||||
value: `categories:${loader.name}`,
|
value: `categories:${loader.name}`,
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
|
ordering: projectTypes.value.includes('mod') ? 1 : undefined,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 'modpack_loader',
|
id: 'modpack_loader',
|
||||||
@@ -375,11 +378,13 @@ export function useSearch(
|
|||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
return filterTypes.filter((filterType) =>
|
return filterTypes
|
||||||
filterType.supported_project_types.some((projectType) =>
|
.filter((filterType) =>
|
||||||
projectTypes.value.includes(projectType),
|
filterType.supported_project_types.some((projectType) =>
|
||||||
),
|
projectTypes.value.includes(projectType),
|
||||||
)
|
),
|
||||||
|
)
|
||||||
|
.sort((a, b) => (b.ordering ?? 0) - (a.ordering ?? 0))
|
||||||
})
|
})
|
||||||
|
|
||||||
const facets = computed(() => {
|
const facets = computed(() => {
|
||||||
|
|||||||
Reference in New Issue
Block a user