import { TopTitle } from '@gitroom/frontend/components/launches/helpers/top.title.component'; import React, { FC, FormEventHandler, useCallback, useState } from 'react'; import { Integrations } from '@gitroom/frontend/components/launches/calendar.context'; import { useModals } from '@gitroom/frontend/components/layout/new-modal'; import { Input } from '@gitroom/react/form/input'; import { Button } from '@gitroom/react/form/button'; import { useFetch } from '@gitroom/helpers/utils/custom.fetch'; import { useToaster } from '@gitroom/react/toaster/toaster'; import { showMediaBox } from '@gitroom/frontend/components/media/media.component'; import { useT } from '@gitroom/react/translation/get.transation.service.client'; export const BotPicture: FC<{ integration: Integrations; canChangeProfilePicture: boolean; canChangeNickName: boolean; mutate: () => void; }> = (props) => { const t = useT(); const modal = useModals(); const toast = useToaster(); const [nick, setNickname] = useState(props.integration.name); const [picture, setPicture] = useState( props.integration.picture || '/no-picture.jpg' ); const fetch = useFetch(); const submitForm: FormEventHandler = useCallback( async (e) => { e.preventDefault(); await fetch(`/integrations/${props.integration.id}/nickname`, { method: 'POST', body: JSON.stringify({ name: nick, picture, }), }); props.mutate(); toast.show('Updated', 'success'); modal.closeAll(); }, [nick, picture, props.mutate] ); const openMedia = useCallback(() => { showMediaBox((values) => { setPicture(values.path); }); }, []); return (
{props.canChangeProfilePicture && (
Bot Picture
)} {props.canChangeNickName && ( setNickname(e.target.value)} name="Nickname" label="Nickname" placeholder="" disableForm={true} /> )}
); };