mirror of
https://github.com/Steffo99/festa.git
synced 2024-12-22 14:44:21 +00:00
Make button to save changes actually do that
This commit is contained in:
parent
037f97c68d
commit
e2aef26685
1 changed files with 13 additions and 14 deletions
|
@ -7,7 +7,7 @@ import { Postcard } from '../../components/postcard/changer'
|
|||
import { ViewEvent } from '../../components/events/views/event'
|
||||
import useSWR from 'swr'
|
||||
import { Event } from '@prisma/client'
|
||||
import { EditableText } from '../../components/generic/editable/inputs'
|
||||
import { EditableFilePicker, EditableText } from '../../components/generic/editable/inputs'
|
||||
import { EditingContext, EditingMode } from '../../components/generic/editable/base'
|
||||
import { useCallback, useContext, useState } from 'react'
|
||||
import { ToolBar } from '../../components/generic/toolbar/bar'
|
||||
|
@ -17,6 +17,8 @@ import { WIPBanner } from '../../components/generic/wip/banner'
|
|||
import { AuthContext } from '../../components/auth/base'
|
||||
import { useDefinedContext } from '../../utils/definedContext'
|
||||
import { asleep } from '../../utils/asleep'
|
||||
import { ViewContent } from '../../components/generic/views/content'
|
||||
import { useAxios } from '../../components/auth/requests'
|
||||
|
||||
|
||||
export async function getServerSideProps(context: NextPageContext) {
|
||||
|
@ -38,51 +40,48 @@ const PageEvent: NextPage<PageEventProps> = ({ slug }) => {
|
|||
const { t } = useTranslation()
|
||||
const { data, error, mutate } = useSWR<Event>(`/api/events/${slug}`)
|
||||
const [auth, _setAuth] = useDefinedContext(AuthContext)
|
||||
const axios = useAxios()
|
||||
|
||||
const displayTitle = data?.name ?? slug
|
||||
const displayPostcard = data?.postcard ?? defaultPostcard
|
||||
const displayDescription = data?.description ?? ""
|
||||
|
||||
const saveEdits = useCallback(
|
||||
const save = useCallback(
|
||||
async () => {
|
||||
await asleep(1000)
|
||||
mutate()
|
||||
await axios.patch(`/api/events/${slug}`, data)
|
||||
mutate(data)
|
||||
},
|
||||
[]
|
||||
[axios, data]
|
||||
)
|
||||
|
||||
|
||||
return <>
|
||||
<Head>
|
||||
<title key="title">{displayTitle} - {t("siteTitle")}</title>
|
||||
<link rel="preload" href={`/api/events/${slug}`} as="fetch" />
|
||||
</Head>
|
||||
<Postcard
|
||||
src={displayPostcard}
|
||||
/>
|
||||
<WIPBanner />
|
||||
<EditingContext.Provider value={useState<EditingMode>(EditingMode.VIEW)}>
|
||||
<ViewEvent
|
||||
title={<>
|
||||
<ViewContent
|
||||
title={
|
||||
<EditableText
|
||||
value={displayTitle}
|
||||
onChange={e => mutate(async state => state ? { ...state, name: e.target.value } : undefined, { revalidate: false })}
|
||||
/>
|
||||
</>}
|
||||
postcard={<></>}
|
||||
description={<>
|
||||
}
|
||||
content={<>
|
||||
<EditableText
|
||||
value={displayDescription}
|
||||
onChange={e => mutate(async state => state ? { ...state, description: e.target.value } : undefined, { revalidate: false })}
|
||||
/>
|
||||
</>}
|
||||
daterange={<></>}
|
||||
/>
|
||||
<ToolBar vertical="vadapt" horizontal="right">
|
||||
<ToolToggleVisibility />
|
||||
{data && auth?.userId === data?.creatorId &&
|
||||
<ToolToggleEditing
|
||||
onEditEnd={saveEdits}
|
||||
onEditEnd={save}
|
||||
/>
|
||||
}
|
||||
</ToolBar>
|
||||
|
|
Loading…
Reference in a new issue