import { useFormState } from "react-use-form-state"; import { Flex } from "rebass/styled-components"; import React, { FC, useState } from "react"; import styled from "styled-components"; import getConfig from "next/config"; import { useStoreState, useStoreActions } from "../../store"; import { Domain } from "../../store/settings"; import { errorMessage } from "../../utils"; import { useMessage } from "../../hooks"; import Text, { H2, Span } from "../Text"; import { Colors } from "../../consts"; import { TextInput } from "../Input"; import { Button } from "../Button"; import { Col } from "../Layout"; import Table from "../Table"; import Modal from "../Modal"; import Icon from "../Icon"; const { publicRuntimeConfig } = getConfig(); const Th = styled(Flex).attrs({ as: "th", py: 3, px: 3 })` font-size: 15px; `; const Td = styled(Flex).attrs({ as: "td", py: 12, px: 3 })` font-size: 15px; `; const SettingsDomain: FC = () => { const { saveDomain, deleteDomain } = useStoreActions((s) => s.settings); const [domainToDelete, setDomainToDelete] = useState(null); const [deleteLoading, setDeleteLoading] = useState(false); const domains = useStoreState((s) => s.settings.domains); const [message, setMessage] = useMessage(2000); const [loading, setLoading] = useState(false); const [modal, setModal] = useState(false); const [formState, { label, text }] = useFormState<{ address: string; homepage: string; }>(null, { withIds: true }); const onSubmit = async (e) => { e.preventDefault(); setLoading(true); try { await saveDomain(formState.values); } catch (err) { setMessage(err?.response?.data?.error || "Couldn't add domain."); } formState.clear(); setLoading(false); }; const closeModal = () => { setDomainToDelete(null); setModal(false); }; const onDelete = async () => { setDeleteLoading(true); await deleteDomain(domainToDelete.id).catch((err) => setMessage(errorMessage(err, "Couldn't delete the domain.")) ); setMessage("Domain has been deleted successfully.", "green"); closeModal(); setDeleteLoading(false); }; return (

Custom domain

You can set a custom domain for your short URLs, so instead of{" "} {publicRuntimeConfig.DEFAULT_DOMAIN}/shorturl you can have{" "} example.com/shorturl. Point your domain A record to 192.64.116.170 then add the domain via form below: {domains.length > 0 && ( {domains.map((d) => ( ))}
Domain Homepage
{d.address} {d.homepage || publicRuntimeConfig.DEFAULT_DOMAIN} { setDomainToDelete(d); setModal(true); }} />
)} Domain: Homepage (optional): {message.text}

Delete domain?

Are you sure do you want to delete the domain{" "} "{domainToDelete && domainToDelete.address}" ? {deleteLoading ? ( <> ) : ( <> )}
); }; export default SettingsDomain;