You've already forked AstralRinth
forked from didirus/AstralRinth
Refactor search page, migrate to /discover/ (#4862)
This commit is contained in:
@@ -361,6 +361,122 @@ export namespace Labrinth {
|
||||
}
|
||||
}
|
||||
|
||||
export namespace Versions {
|
||||
export namespace v2 {
|
||||
export type VersionType = 'release' | 'beta' | 'alpha'
|
||||
|
||||
export type VersionStatus =
|
||||
| 'listed'
|
||||
| 'archived'
|
||||
| 'draft'
|
||||
| 'unlisted'
|
||||
| 'scheduled'
|
||||
| 'unknown'
|
||||
|
||||
export type DependencyType = 'required' | 'optional' | 'incompatible' | 'embedded'
|
||||
|
||||
export type FileType = 'required-resource-pack' | 'optional-resource-pack' | 'unknown'
|
||||
|
||||
export type VersionFile = {
|
||||
hashes: Record<string, string>
|
||||
url: string
|
||||
filename: string
|
||||
primary: boolean
|
||||
size: number
|
||||
file_type?: FileType
|
||||
}
|
||||
|
||||
export type Dependency = {
|
||||
file_name?: string
|
||||
dependency_type: DependencyType
|
||||
} & (
|
||||
| {
|
||||
project_id: string
|
||||
}
|
||||
| {
|
||||
version_id: string
|
||||
project_id?: string
|
||||
}
|
||||
)
|
||||
|
||||
export type Version = {
|
||||
id: string
|
||||
project_id: string
|
||||
author_id: string
|
||||
featured: boolean
|
||||
name: string
|
||||
version_number: string
|
||||
changelog: string
|
||||
changelog_url?: string | null
|
||||
date_published: string
|
||||
downloads: number
|
||||
version_type: VersionType
|
||||
status: VersionStatus
|
||||
requested_status?: VersionStatus | null
|
||||
files: VersionFile[]
|
||||
dependencies: Dependency[]
|
||||
game_versions: string[]
|
||||
loaders: string[]
|
||||
}
|
||||
}
|
||||
|
||||
export namespace v3 {
|
||||
export type VersionType = 'release' | 'beta' | 'alpha'
|
||||
|
||||
export type VersionStatus =
|
||||
| 'listed'
|
||||
| 'archived'
|
||||
| 'draft'
|
||||
| 'unlisted'
|
||||
| 'scheduled'
|
||||
| 'unknown'
|
||||
|
||||
export type DependencyType = 'required' | 'optional' | 'incompatible' | 'embedded'
|
||||
|
||||
export type FileType = 'required-resource-pack' | 'optional-resource-pack' | 'unknown'
|
||||
|
||||
export type VersionFile = {
|
||||
hashes: Record<string, string>
|
||||
url: string
|
||||
filename: string
|
||||
primary: boolean
|
||||
size: number
|
||||
file_type?: FileType
|
||||
}
|
||||
|
||||
export type Dependency = {
|
||||
version_id?: string
|
||||
project_id?: string
|
||||
file_name?: string
|
||||
dependency_type: DependencyType
|
||||
}
|
||||
|
||||
export type Version = {
|
||||
id: string
|
||||
project_id: string
|
||||
author_id: string
|
||||
featured: boolean
|
||||
name: string
|
||||
version_number: string
|
||||
project_types: string[]
|
||||
games: string[]
|
||||
changelog: string
|
||||
date_published: string
|
||||
downloads: number
|
||||
version_type: VersionType
|
||||
status: VersionStatus
|
||||
requested_status?: VersionStatus | null
|
||||
files: VersionFile[]
|
||||
dependencies: Dependency[]
|
||||
loaders: string[]
|
||||
ordering?: number | null
|
||||
game_versions?: string[]
|
||||
mrpack_loaders?: string[]
|
||||
environment?: string
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export namespace Tags {
|
||||
export namespace v2 {
|
||||
export interface Category {
|
||||
|
||||
@@ -56,6 +56,16 @@ const emit = defineEmits(['onOpen', 'onClose'])
|
||||
|
||||
const slots = useSlots()
|
||||
|
||||
watch(
|
||||
() => props.openByDefault,
|
||||
(newValue) => {
|
||||
if (newValue !== toggledOpen.value) {
|
||||
toggledOpen.value = newValue
|
||||
}
|
||||
},
|
||||
{ immediate: true },
|
||||
)
|
||||
|
||||
function open() {
|
||||
toggledOpen.value = true
|
||||
emit('onOpen')
|
||||
|
||||
@@ -55,7 +55,6 @@ onUnmounted(() => {
|
||||
}
|
||||
})
|
||||
function updateFade(scrollTop, offsetHeight, scrollHeight) {
|
||||
console.log(scrollTop, offsetHeight, scrollHeight)
|
||||
scrollableAtBottom.value = Math.ceil(scrollTop + offsetHeight) >= scrollHeight
|
||||
scrollableAtTop.value = scrollTop <= 0
|
||||
}
|
||||
|
||||
@@ -560,6 +560,15 @@
|
||||
"project-type.resourcepack.lowercase": {
|
||||
"defaultMessage": "{count, plural, one {resource pack} other {resource packs}}"
|
||||
},
|
||||
"project-type.server.capital": {
|
||||
"defaultMessage": "{count, plural, one {Server} other {Servers}}"
|
||||
},
|
||||
"project-type.server.category": {
|
||||
"defaultMessage": "Servers"
|
||||
},
|
||||
"project-type.server.lowercase": {
|
||||
"defaultMessage": "{count, plural, one {server} other {servers}}"
|
||||
},
|
||||
"project-type.shader.capital": {
|
||||
"defaultMessage": "{count, plural, one {Shader} other {Shaders}}"
|
||||
},
|
||||
|
||||
@@ -433,6 +433,10 @@ export const commonProjectTypeCategoryMessages = defineMessages({
|
||||
id: 'project-type.shader.category',
|
||||
defaultMessage: 'Shaders',
|
||||
},
|
||||
server: {
|
||||
id: 'project-type.server.category',
|
||||
defaultMessage: 'Servers',
|
||||
},
|
||||
})
|
||||
|
||||
export const commonProjectTypeTitleMessages = defineMessages({
|
||||
@@ -460,6 +464,10 @@ export const commonProjectTypeTitleMessages = defineMessages({
|
||||
id: 'project-type.shader.capital',
|
||||
defaultMessage: '{count, plural, one {Shader} other {Shaders}}',
|
||||
},
|
||||
server: {
|
||||
id: 'project-type.server.capital',
|
||||
defaultMessage: '{count, plural, one {Server} other {Servers}}',
|
||||
},
|
||||
})
|
||||
|
||||
export const commonProjectTypeSentenceMessages = defineMessages({
|
||||
@@ -487,6 +495,10 @@ export const commonProjectTypeSentenceMessages = defineMessages({
|
||||
id: 'project-type.shader.lowercase',
|
||||
defaultMessage: '{count, plural, one {shader} other {shaders}}',
|
||||
},
|
||||
server: {
|
||||
id: 'project-type.server.lowercase',
|
||||
defaultMessage: '{count, plural, one {server} other {servers}}',
|
||||
},
|
||||
})
|
||||
|
||||
export const commonSettingsMessages = defineMessages({
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import type { Labrinth } from '@modrinth/api-client'
|
||||
import { ClientIcon, ServerIcon } from '@modrinth/assets'
|
||||
import { formatCategory, formatCategoryHeader, sortByNameOrNumber } from '@modrinth/utils'
|
||||
import { defineMessage, useVIntl } from '@vintl/vintl'
|
||||
@@ -67,25 +68,10 @@ const ALL_PROJECT_TYPES: ProjectType[] = [
|
||||
'plugin',
|
||||
]
|
||||
|
||||
export interface Platform {
|
||||
name: string
|
||||
icon: string
|
||||
supported_project_types: ProjectType[]
|
||||
default: boolean
|
||||
formatted_name: string
|
||||
}
|
||||
|
||||
export interface Category {
|
||||
icon: string
|
||||
name: string
|
||||
project_type: ProjectType
|
||||
header: string
|
||||
}
|
||||
|
||||
export interface Tags {
|
||||
gameVersions: GameVersion[]
|
||||
loaders: Platform[]
|
||||
categories: Category[]
|
||||
gameVersions: Labrinth.Tags.v2.GameVersion[]
|
||||
loaders: Labrinth.Tags.v2.Loader[]
|
||||
categories: Labrinth.Tags.v2.Category[]
|
||||
}
|
||||
|
||||
export interface SortType {
|
||||
|
||||
@@ -287,7 +287,7 @@ export const formatVersions = (versionArray, gameVersions) => {
|
||||
return (output.length === 0 ? versionArray : output).join(', ')
|
||||
}
|
||||
|
||||
export function cycleValue(value, values) {
|
||||
export function cycleValue<T extends string>(value: T, values: T[]): T {
|
||||
const index = values.indexOf(value) + 1
|
||||
return values[index % values.length]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user