Add copy button to invite modal

This commit is contained in:
Meier Lukas
2023-08-01 12:50:54 +02:00
parent ccbf208ff0
commit db396b6b10
2 changed files with 26 additions and 11 deletions

View File

@@ -1,12 +1,14 @@
import { Button, Mark, Stack, Text } from '@mantine/core'; import { Button, CopyButton, Mark, Stack, Text } from '@mantine/core';
import { ContextModalProps, modals } from '@mantine/modals'; import { ContextModalProps, modals } from '@mantine/modals';
import Link from 'next/link'; import Link from 'next/link';
import { useRouter } from 'next/router';
export const CopyInviteModal = ({ export const CopyInviteModal = ({
context,
id, id,
innerProps, innerProps,
}: ContextModalProps<{ id: string; token: string; expire: Date }>) => { }: ContextModalProps<{ id: string; token: string; expire: Date }>) => {
const inviteUrl = useInviteUrl(innerProps.id, innerProps.token);
return ( return (
<Stack> <Stack>
<Text> <Text>
@@ -29,15 +31,26 @@ export const CopyInviteModal = ({
</Mark> </Mark>
</Stack> </Stack>
<CopyButton value={inviteUrl}>
{({ copy }) => (
<Button <Button
onClick={() => { onClick={() => {
copy();
modals.close(id); modals.close(id);
}} }}
variant="default" variant="default"
fullWidth fullWidth
> >
Cancel Copy & Dismiss
</Button> </Button>
)}
</CopyButton>
</Stack> </Stack>
); );
}; };
const useInviteUrl = (id: string, token: string) => {
const router = useRouter();
return `${window.location.href.replace(router.pathname, `/auth/invite/${id}?token=${token}`)}`;
};

View File

@@ -13,6 +13,7 @@ import { modals } from '@mantine/modals';
import { IconPlus, IconTrash } from '@tabler/icons-react'; import { IconPlus, IconTrash } from '@tabler/icons-react';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import Head from 'next/head'; import Head from 'next/head';
import { useRouter } from 'next/router';
import { useState } from 'react'; import { useState } from 'react';
import { ManageLayout } from '~/components/layout/Templates/ManageLayout'; import { ManageLayout } from '~/components/layout/Templates/ManageLayout';
import { api } from '~/utils/api'; import { api } from '~/utils/api';
@@ -22,6 +23,7 @@ const ManageUserInvitesPage = () => {
const { data } = api.invites.all.useQuery({ const { data } = api.invites.all.useQuery({
page: activePage, page: activePage,
}); });
const router = useRouter();
const { classes } = useStyles(); const { classes } = useStyles();