| import {Post as PostType, Topic as TopicType} from "../../utils/topics"; | |
| import style from "./style.module.scss"; | |
| import {Preview} from "../preview"; | |
| import {iso8601ToFrench} from "../../utils/dates"; | |
| import {FormGroup} from "../form"; | |
| import {Slider} from "../slider"; | |
| import {Button} from "../button"; | |
| import {Settings as SettingsType, Settings} from "../../utils/settings"; | |
| export function Topic(props: { | |
| topic: TopicType, | |
| settings: Settings, | |
| setSettings: (settings: SettingsType) => void, | |
| addPosts: (topicId: string, postsCount: number) => Promise<void>, | |
| pendingGeneration: boolean, | |
| }) { | |
| console.log(props.topic) | |
| return ( | |
| <div> | |
| {props.topic.posts.map(post => <Post post={post}/>)} | |
| <div> | |
| <h2>Ajout de posts</h2> | |
| <div className={style.generationSettings}> | |
| <FormGroup> | |
| <label htmlFor="postCount">Nombre de posts</label> | |
| <Slider | |
| name="postCount" | |
| value={props.settings.postCount} | |
| // onChange={(v) => props.setSettings({...props.settings, temperature: v as number})} | |
| // onChange={setGenerationPostCount} | |
| onChange={(v) => props.setSettings({...props.settings, postCount: v})} | |
| min={1} | |
| max={10} | |
| step={1} | |
| /> | |
| </FormGroup> | |
| </div> | |
| <Button | |
| onClick={() => props.addPosts(props.topic.id, props.settings.postCount)} | |
| secondary={true} | |
| loading={props.pendingGeneration} | |
| > | |
| Générer | |
| </Button> | |
| </div> | |
| <hr/> | |
| </div> | |
| ) | |
| } | |
| function Post(props: { | |
| post: PostType | |
| }) { | |
| return ( | |
| <div className={style.post}> | |
| <div className={style.postHeader}> | |
| <img src="https://image.jeuxvideo.com/avatar-sm/default.jpg" className={style.avatar} alt="ahi"/> | |
| <div className={style.user}>{props.post.user}</div> | |
| <div className={style.date}>{iso8601ToFrench(props.post.date)}</div> | |
| </div> | |
| <Preview raw={props.post.content}/> | |
| </div> | |
| ) | |
| } |