\nIssues (${fileSafe} safe, ${fileUnsafe} unsafe)
\n\n`
markdown += `| Class | Issue Type | Severity | Decision |\n`
markdown += `|-------|------------|----------|----------|\n`
@@ -1150,7 +1146,7 @@ async function handleSubmitReview(verdict: 'safe' | 'unsafe') {
{{
- formatFileSize(file.file_size)
+ formatBytes(file.file_size)
}}
{
- const { maxSize, alertOnInvalid } = validationOptions
- if (maxSize !== null && maxSize !== undefined && file.size > maxSize) {
- if (alertOnInvalid) {
- alert(`File ${file.name} is too big! Must be less than ${formatBytes(maxSize)}`)
- }
- return false
- }
-
- return true
-}
-
-export const acceptFileFromProjectType = (projectType) => {
- switch (projectType) {
- case 'mod':
- return '.jar,.zip,.litemod,application/java-archive,application/x-java-archive,application/zip'
- case 'plugin':
- return '.jar,.zip,application/java-archive,application/x-java-archive,application/zip'
- case 'resourcepack':
- return '.zip,application/zip'
- case 'shader':
- return '.zip,application/zip'
- case 'datapack':
- return '.zip,application/zip'
- case 'modpack':
- return '.mrpack,application/x-modrinth-modpack+zip,application/zip'
- default:
- return '*'
- }
-}
diff --git a/apps/frontend/src/pages/[type]/[id]/settings/index.vue b/apps/frontend/src/pages/[type]/[id]/settings/index.vue
index b73efe46a6..a96fe4bad4 100644
--- a/apps/frontend/src/pages/[type]/[id]/settings/index.vue
+++ b/apps/frontend/src/pages/[type]/[id]/settings/index.vue
@@ -146,7 +146,11 @@
const input = e.target
if (input.files?.length) {
if (
- fileIsValid(input.files[0], { maxSize: 524288000, alertOnInvalid: true })
+ fileIsValid(
+ input.files[0],
+ { maxSize: 524288000, alertOnInvalid: true },
+ formatBytes,
+ )
)
showBannerPreview(Array.from(input.files))
}
@@ -379,6 +383,7 @@ import {
StyledInput,
Toggle,
UnsavedChangesPopup,
+ useFormatBytes,
usePageLeaveSafety,
} from '@modrinth/ui'
import { fileIsValid, formatProjectStatus, formatProjectType } from '@modrinth/utils'
@@ -405,6 +410,8 @@ const flags = useFeatureFlags()
const tags = useGeneratedState()
const router = useNativeRouter()
+const formatBytes = useFormatBytes()
+
const name = ref(project.value.title)
const slug = ref(project.value.slug)
const summary = ref(project.value.description)
diff --git a/apps/frontend/src/pages/[type]/[id]/version/[version].vue b/apps/frontend/src/pages/[type]/[id]/version/[version].vue
index ff6decdfc8..de0f0b75bc 100644
--- a/apps/frontend/src/pages/[type]/[id]/version/[version].vue
+++ b/apps/frontend/src/pages/[type]/[id]/version/[version].vue
@@ -436,9 +436,10 @@ import {
injectProjectPageContext,
MultiSelect,
StyledInput,
+ useFormatBytes,
useFormatDateTime,
} from '@modrinth/ui'
-import { formatBytes, renderHighlightedString } from '@modrinth/utils'
+import { renderHighlightedString } from '@modrinth/utils'
import Breadcrumbs from '~/components/ui/Breadcrumbs.vue'
import CreateProjectVersionModal from '~/components/ui/create-project-version/CreateProjectVersionModal.vue'
@@ -466,6 +467,7 @@ const formatDateTime = useFormatDateTime({
dateStyle: 'long',
})
const formatDate = useFormatDateTime({ dateStyle: 'medium' })
+const formatBytes = useFormatBytes()
// Helper for accessing nuxt app $formatVersion
const formatVersionDisplay = (versions: string[]) => (data as any).$formatVersion(versions)
diff --git a/apps/frontend/src/pages/admin/file_lookup.vue b/apps/frontend/src/pages/admin/file_lookup.vue
index 9bbae53cce..86f9841c87 100644
--- a/apps/frontend/src/pages/admin/file_lookup.vue
+++ b/apps/frontend/src/pages/admin/file_lookup.vue
@@ -81,11 +81,19 @@