diff --git a/.env.example b/.env.example
index 2531e6c..88228a6 100644
--- a/.env.example
+++ b/.env.example
@@ -1,4 +1,4 @@
-APP_VERSION=0.4.1
+APP_VERSION=0.4.2
NEXT_PUBLIC_PINATA_ENDPOINT_URL=https://api.pinata.cloud/pinning/pinFileToIPFS
NEXT_PUBLIC_SG721_CODE_ID=793
diff --git a/components/AssetsPreview.tsx b/components/AssetsPreview.tsx
index a6f88e3..5803db4 100644
--- a/components/AssetsPreview.tsx
+++ b/components/AssetsPreview.tsx
@@ -96,6 +96,18 @@ export const AssetsPreview = ({ assetFilesArray, updateMetadataFileIndex }: Asse
/>
)}
+
+ {getAssetType(assetSource.name) === 'html' && (
+
+
![html_icon](/html.png)
+
{assetSource.name.toLowerCase()}
+
+ )}
))
diff --git a/components/MetadataFormGroup.tsx b/components/MetadataFormGroup.tsx
index 47c5b96..1f4bee7 100644
--- a/components/MetadataFormGroup.tsx
+++ b/components/MetadataFormGroup.tsx
@@ -1,7 +1,7 @@
/* eslint-disable eslint-comments/disable-enable-pair */
/* eslint-disable jsx-a11y/media-has-caption */
import type { ReactNode } from 'react'
-import { useMemo } from 'react'
+import { useEffect, useMemo, useState } from 'react'
import { getAssetType } from 'utils/getAssetType'
export interface MetadataFormGroupProps {
@@ -13,6 +13,7 @@ export interface MetadataFormGroupProps {
export const MetadataFormGroup = (props: MetadataFormGroupProps) => {
const { title, subtitle, relatedAsset, children } = props
+ const [htmlContents, setHtmlContents] = useState('')
const videoPreview = useMemo(
() => (
@@ -40,6 +41,17 @@ export const MetadataFormGroup = (props: MetadataFormGroupProps) => {
[relatedAsset],
)
+ useEffect(() => {
+ if (getAssetType(relatedAsset?.name as string) !== 'html') return
+ const reader = new FileReader()
+ reader.onload = (e) => {
+ if (typeof e.target?.result === 'string') {
+ setHtmlContents(e.target.result)
+ }
+ }
+ reader.readAsText(new Blob([relatedAsset as File]))
+ }, [relatedAsset])
+
return (
@@ -54,6 +66,9 @@ export const MetadataFormGroup = (props: MetadataFormGroupProps) => {
{getAssetType(relatedAsset.name) === 'image' && (
![preview]({URL.createObjectURL(relatedAsset)})
)}
+ {getAssetType(relatedAsset.name) === 'html' && (
+
+ )}
)}
diff --git a/components/SingleAssetPreview.tsx b/components/SingleAssetPreview.tsx
index 09cbe4b..0e750a7 100644
--- a/components/SingleAssetPreview.tsx
+++ b/components/SingleAssetPreview.tsx
@@ -1,7 +1,7 @@
/* eslint-disable eslint-comments/disable-enable-pair */
/* eslint-disable jsx-a11y/media-has-caption */
import type { ReactNode } from 'react'
-import { useMemo } from 'react'
+import { useEffect, useMemo, useState } from 'react'
import { getAssetType } from 'utils/getAssetType'
export interface SingleAssetPreviewProps {
@@ -13,6 +13,7 @@ export interface SingleAssetPreviewProps {
export const SingleAssetPreview = (props: SingleAssetPreviewProps) => {
const { subtitle, relatedAsset, updateMetadataFileIndex, children } = props
+ const [htmlContents, setHtmlContents] = useState('')
const videoPreview = useMemo(
() => (
@@ -40,6 +41,17 @@ export const SingleAssetPreview = (props: SingleAssetPreviewProps) => {
[relatedAsset],
)
+ useEffect(() => {
+ if (getAssetType(relatedAsset?.name as string) !== 'html') return
+ const reader = new FileReader()
+ reader.onload = (e) => {
+ if (typeof e.target?.result === 'string') {
+ setHtmlContents(e.target.result)
+ }
+ }
+ reader.readAsText(new Blob([relatedAsset as File]))
+ }, [relatedAsset])
+
return (
@@ -53,6 +65,9 @@ export const SingleAssetPreview = (props: SingleAssetPreviewProps) => {
{getAssetType(relatedAsset.name) === 'image' && (
![preview]({URL.createObjectURL(relatedAsset)})
)}
+ {getAssetType(relatedAsset.name) === 'html' && (
+
+ )}
)}
diff --git a/components/collections/creation/UploadDetails.tsx b/components/collections/creation/UploadDetails.tsx
index 857260b..53ecb54 100644
--- a/components/collections/creation/UploadDetails.tsx
+++ b/components/collections/creation/UploadDetails.tsx
@@ -441,7 +441,7 @@ export const UploadDetails = ({ onChange, minterType, baseMinterAcquisitionMetho
)}
>
)}
- 1}>
+ = 1}>
{
if (
getAssetType(uploadDetails.assetFiles[i].name) === 'audio' ||
- getAssetType(uploadDetails.assetFiles[i].name) === 'video'
+ getAssetType(uploadDetails.assetFiles[i].name) === 'video' ||
+ getAssetType(uploadDetails.assetFiles[i].name) === 'html'
) {
data.animation_url = `ipfs://${assetUri}/${uploadDetails.assetFiles[i].name}`
}
-
- data.image = `ipfs://${assetUri}/${uploadDetails.assetFiles[i].name}`
+ if (getAssetType(uploadDetails.assetFiles[i].name) !== 'html')
+ data.image = `ipfs://${assetUri}/${uploadDetails.assetFiles[i].name}`
const metadataFileBlob = new Blob([JSON.stringify(data)], {
type: 'application/json',
diff --git a/public/html.png b/public/html.png
new file mode 100644
index 0000000..c9ab4e7
Binary files /dev/null and b/public/html.png differ
diff --git a/utils/getAssetType.ts b/utils/getAssetType.ts
index 6916cb8..f99c534 100644
--- a/utils/getAssetType.ts
+++ b/utils/getAssetType.ts
@@ -1,6 +1,6 @@
/* eslint-disable eslint-comments/disable-enable-pair */
/* eslint-disable @typescript-eslint/no-unnecessary-condition */
-export type AssetType = 'image' | 'audio' | 'video' | 'unknown'
+export type AssetType = 'image' | 'audio' | 'video' | 'html' | 'unknown'
export const getAssetType = (assetFileName: string): AssetType => {
const assetType = assetFileName?.split('.').pop() || 'unknown'
@@ -8,5 +8,6 @@ export const getAssetType = (assetFileName: string): AssetType => {
return 'image'
if (assetType === 'mp3' || assetType === 'wav') return 'audio'
if (assetType === 'mp4') return 'video'
+ if (assetType === 'html') return 'html'
return 'unknown'
}