import { useState, useEffect } from 'react' import { useAuth } from '@redwoodjs/auth' import { Link, navigate, routes } from '@redwoodjs/router' import Editor from 'rich-markdown-editor' import ImageUploader from 'src/components/ImageUploader' import Breadcrumb from 'src/components/Breadcrumb' import EmojiReaction from 'src/components/EmojiReaction' import Button from 'src/components/Button' import { countEmotes } from 'src/helpers/emote' import { getActiveClasses } from 'get-active-classes' const PartProfile = ({ userPart, isEditable, onSave, loading, error, onReaction, onComment, }) => { const [comment, setComment] = useState('') const { currentUser } = useAuth() const canEdit = currentUser?.sub === userPart.id const part = userPart?.Part const emotes = countEmotes(part?.Reaction) const userEmotes = part?.userReactions.map(({ emote }) => emote) useEffect(() => { isEditable && !canEdit && navigate( routes.part2({ userName: userPart.userName, partTitle: part.title }) ) }, [currentUser]) const [input, setInput] = useState({ title: part?.title, mainImage: part?.mainImage, description: part?.description, userId: userPart?.id, }) const setProperty = (property, value) => setInput({ ...input, [property]: value, }) const onTitleChange = ({ target }) => setProperty('title', target.value.replace(/([^a-zA-Z\d_:])/g, '-')) const onDescriptionChange = (description) => setProperty('description', description()) const onImageUpload = ({ cloudinaryPublicId }) => setProperty('mainImage', cloudinaryPublicId) const onEditSaveClick = () => { if (isEditable) { input.title && onSave(part?.id, input) return } navigate( routes.editPart2({ userName: userPart.userName, partTitle: part.title }) ) } return ( <>