diff --git a/src/renderer/components/shared/file-size-text.tsx b/src/renderer/components/shared/file-size-text.tsx new file mode 100644 index 00000000..aab0c14e --- /dev/null +++ b/src/renderer/components/shared/file-size-text.tsx @@ -0,0 +1,32 @@ +import { CSSProperties } from "react"; + +type Props = { + fileSize?: number; + wantInfoStyle: CSSProperties; +} + +export function FileSizeText({ fileSize, wantInfoStyle }: Props) { + + const verifyFileSize = fileSize !== undefined; + + const isMediumMod = verifyFileSize && fileSize > 1024 * 1024 * 50; // 50MB + + const isLargeMod = verifyFileSize && fileSize > 1024 * 1024 * 100; // 100MB + + const getFormattedSize = () : string => { + if (!verifyFileSize) + return `-`; + if (fileSize < 1024 * 1024) + return `${(fileSize/1024).toFixed(2)}KB`; + return `${(fileSize/1024/1024).toFixed(2)}MB`; + }; + + return ( + + {getFormattedSize()} + + {(isLargeMod ? `This is a very large mod!` : (isMediumMod ? `This is a large mod!` : "") || "")} + + + ); +} diff --git a/src/renderer/components/version-viewer/slides/mods/mod-item.component.tsx b/src/renderer/components/version-viewer/slides/mods/mod-item.component.tsx index 046fe18d..f7fb108a 100644 --- a/src/renderer/components/version-viewer/slides/mods/mod-item.component.tsx +++ b/src/renderer/components/version-viewer/slides/mods/mod-item.component.tsx @@ -7,6 +7,7 @@ import useDoubleClick from "use-double-click"; import { useOnUpdate } from "renderer/hooks/use-on-update.hook"; import striptags from "striptags"; import { safeGt } from "shared/helpers/semver.helpers"; +import { FileSizeText } from "renderer/components/shared/file-size-text"; type Props = { className?: string; @@ -51,22 +52,6 @@ export function ModItem({ className, mod, installedVersion, isDependency, isSele onChange(!isChecked); }; - const {fileSize} = mod.version; - - const verifyFileSize = fileSize !== undefined; - - const isMediumMod = verifyFileSize && fileSize/1024/1024 > 50; - - const isLargeMod = verifyFileSize && fileSize/1024/1024 > 100; - - const getFormattedSize = () : string => { - if (!verifyFileSize) - return `-`; - if (fileSize/1024 > 1024) - return `${Math.round(mod.version.fileSize/1024/1024)}MB`; - return `${Math.round(mod.version.fileSize/1024)}KB`; - }; - return (
  • @@ -81,12 +66,7 @@ export function ModItem({ className, mod, installedVersion, isDependency, isSele {mod.version.modVersion} - - {getFormattedSize()} - - {(isLargeMod ? `This is a very large mod!` : (isMediumMod ? `This is a large mod!` : "") || "")} - - + {striptags(mod.mod?.summary ?? "", { tagReplacementText: " " })} diff --git a/src/shared/models/mods/mod.interface.ts b/src/shared/models/mods/mod.interface.ts index ae29da3f..e58daf94 100644 --- a/src/shared/models/mods/mod.interface.ts +++ b/src/shared/models/mods/mod.interface.ts @@ -42,7 +42,7 @@ export interface BbmModVersion { downloadCount: number; lastApprovedById?: number; lastUpdatedById?: number; - fileSize: number; + fileSize?: number; createdAt?: Date; updatedAt?: Date; }