import { Component, InfernoMouseEvent, linkEvent } from "inferno"; import { EditSite, GetSiteResponse } from "lemmy-js-client"; import { i18n } from "../../i18next"; import { WebSocketService } from "../../services"; import { capitalizeFirstLetter, myAuth, wsClient } from "../../utils"; import { HtmlTags } from "../common/html-tags"; import { Icon, Spinner } from "../common/icon"; import { MarkdownTextArea } from "../common/markdown-textarea"; interface TaglineFormProps { siteRes: GetSiteResponse; } interface TaglineFormState { siteRes: GetSiteResponse; siteForm: EditSite; loading: boolean; editingRow?: number; } export class TaglineForm extends Component { state: TaglineFormState = { loading: false, siteRes: this.props.siteRes, editingRow: undefined, siteForm: { taglines: this.props.siteRes.taglines?.map(x => x.content), auth: "TODO", }, }; constructor(props: any, context: any) { super(props, context); } get documentTitle(): string { return i18n.t("taglines"); } componentWillReceiveProps() { this.setState({ loading: false }); } render() { return (
{i18n.t("taglines")}
{this.state.siteForm.taglines?.map((cv, index) => ( ))}
{this.state.editingRow == index && ( this.handleTaglineChange(this, index, s) } hideNavigationWarnings allLanguages={this.state.siteRes.all_languages} siteLanguages={this.state.siteRes.discussion_languages} /> )} {this.state.editingRow != index &&
{cv}
}
); } handleTaglineChange(i: TaglineForm, index: number, val: string) { const taglines = i.state.siteForm.taglines; if (taglines) { taglines[index] = val; i.setState(i.state); } } handleDeleteTaglineClick( props: { form: TaglineForm; index: number }, event: any ) { event.preventDefault(); const taglines = props.form.state.siteForm.taglines; if (taglines) { taglines.splice(props.index, 1); props.form.state.siteForm.taglines = undefined; props.form.setState(props.form.state); props.form.state.siteForm.taglines = taglines; props.form.setState({ ...props.form.state, editingRow: undefined }); } } handleEditTaglineClick( props: { form: TaglineForm; index: number }, event: any ) { event.preventDefault(); if (this.state.editingRow == props.index) { props.form.setState({ editingRow: undefined }); } else { props.form.setState({ editingRow: props.index }); } } handleSaveClick(i: TaglineForm) { i.setState({ loading: true }); const auth = myAuth() ?? "TODO"; i.setState(s => ((s.siteForm.auth = auth), s)); WebSocketService.Instance.send(wsClient.editSite(i.state.siteForm)); i.setState({ ...i.state, editingRow: undefined }); } handleAddTaglineClick( i: TaglineForm, event: InfernoMouseEvent ) { event.preventDefault(); if (!i.state.siteForm.taglines) { i.state.siteForm.taglines = []; } i.state.siteForm.taglines.push(""); i.setState({ ...i.state, editingRow: i.state.siteForm.taglines.length - 1, }); } }