+ )}
+ {imageUrl &&
+ withMimeType &&
+ (inputProps.value as any)?.mime_type.split("/")[0] === "image" && (
+
+ )}
+ {imageUrl &&
+ withMimeType &&
+ (inputProps.value as any)?.mime_type.split("/")[0] === "video" && (
+
diff --git a/src/models/site.model.ts b/src/models/site.model.ts
index 605e2639..bc1ae4f4 100644
--- a/src/models/site.model.ts
+++ b/src/models/site.model.ts
@@ -238,6 +238,10 @@ export async function updateSite(
css?: string
ga?: string
custom_domain?: string
+ banner?: {
+ address: string
+ mime_type: string
+ }
},
customUnidata?: Unidata,
) {
@@ -252,6 +256,7 @@ export async function updateSite(
...(payload.name && { name: payload.name }),
...(payload.description && { bio: payload.description }),
...(payload.icon && { avatars: [payload.icon] }),
+ ...(payload.banner && { banners: [payload.banner] }),
...(payload.subdomain && { username: payload.subdomain }),
...((payload.navigation !== undefined ||
payload.css !== undefined ||
diff --git a/src/pages/dashboard/[subdomain]/settings/general.tsx b/src/pages/dashboard/[subdomain]/settings/general.tsx
index 773f1c33..3789cf0d 100644
--- a/src/pages/dashboard/[subdomain]/settings/general.tsx
+++ b/src/pages/dashboard/[subdomain]/settings/general.tsx
@@ -22,15 +22,26 @@ export default function SiteSettingsGeneralPage() {
const form = useForm({
defaultValues: {
icon: "",
+ banner: undefined,
name: "",
description: "",
ga: "",
+ } as {
+ icon: string
+ banner?: {
+ address: string
+ mime_type: string
+ }
+ name: string
+ description: string
+ ga: string
},
})
const handleSubmit = form.handleSubmit((values) => {
updateSite.mutate({
icon: values.icon,
+ banner: values.banner,
site: subdomain,
name: values.name,
description: values.description,
@@ -54,6 +65,16 @@ export default function SiteSettingsGeneralPage() {
if (site.data) {
!form.getValues("icon") &&
form.setValue("icon", toIPFS(site.data?.avatars?.[0] || ""))
+ !form.getValues("banner") &&
+ form.setValue(
+ "banner",
+ site.data?.banners?.[0]
+ ? {
+ address: toIPFS(site.data?.banners?.[0].address || ""),
+ mime_type: site.data?.banners?.[0].mime_type,
+ }
+ : undefined,
+ )
!form.getValues("name") && form.setValue("name", site.data.name || "")
!form.getValues("description") &&
form.setValue("description", site.data.bio || "")
@@ -62,6 +83,7 @@ export default function SiteSettingsGeneralPage() {
}, [site.data, form])
const [iconUploading, setIconUploading] = useState(false)
+ const [bannerUploading, setBannerUploading] = useState(false)
return (
@@ -82,7 +104,7 @@ export default function SiteSettingsGeneralPage() {
setIconUploading(true)
}}
uploadEnd={(key) => {
- form.setValue("icon", key)
+ form.setValue("icon", key as string)
setIconUploading(false)
}}
{...field}
@@ -90,6 +112,37 @@ export default function SiteSettingsGeneralPage() {
)}
/>
@@ -131,7 +184,7 @@ export default function SiteSettingsGeneralPage() {