73 lines
2.3 KiB
TypeScript
73 lines
2.3 KiB
TypeScript
import { Server } from "revolt.js";
|
|
|
|
import { Text } from "preact-i18n";
|
|
import { useState } from "preact/hooks";
|
|
|
|
import { Button, Column, Form, FormElement, Row } from "@revoltchat/ui";
|
|
|
|
import { FileUploader } from "../../../controllers/client/jsx/legacy/FileUploads";
|
|
|
|
interface Props {
|
|
server: Server;
|
|
}
|
|
|
|
export function EmojiUploader({ server }: Props) {
|
|
const [fileId, setFileId] = useState<string>();
|
|
|
|
return (
|
|
<>
|
|
<h3>
|
|
<Text id="app.settings.server_pages.emojis.upload" />
|
|
</h3>
|
|
{fileId}
|
|
<Form
|
|
schema={{
|
|
name: "text",
|
|
file: "custom",
|
|
}}
|
|
data={{
|
|
name: {
|
|
field: "Name",
|
|
palette: "secondary",
|
|
},
|
|
file: {
|
|
element: (
|
|
<FileUploader
|
|
style="icon"
|
|
width={100}
|
|
height={100}
|
|
fileType="emojis"
|
|
behaviour="upload"
|
|
previewAfterUpload
|
|
maxFileSize={500000}
|
|
remove={async () => void setFileId("")}
|
|
onUpload={async (id) => void setFileId(id)}
|
|
/>
|
|
),
|
|
},
|
|
}}
|
|
onSubmit={async ({ name }) => {
|
|
await server.client.api.put(`/custom/emoji/${fileId}`, {
|
|
name,
|
|
parent: { type: "Server", id: server._id },
|
|
});
|
|
|
|
setFileId("");
|
|
}}>
|
|
<Row>
|
|
<FormElement id="file" />
|
|
<Column>
|
|
<FormElement id="name" />
|
|
<Button
|
|
type="submit"
|
|
palette="secondary"
|
|
disabled={!fileId}>
|
|
<Text id="app.special.modals.actions.save" />
|
|
</Button>
|
|
</Column>
|
|
</Row>
|
|
</Form>
|
|
</>
|
|
);
|
|
}
|