Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,5 @@ storybook-static
.aider*

tsconfig.tsbuildinfo
.cursor
.cursor
apps/dashboard/node-compile-cache
Original file line number Diff line number Diff line change
@@ -1,22 +1,18 @@
"use client";

import { ChakraProviderSetup } from "@/components/ChakraProviderSetup";
import { useAuthorizedWallets } from "@3rdweb-sdk/react/hooks/useApi";
import { AuthorizedWalletsTable } from "components/settings/AuthorizedWallets/AuthorizedWalletsTable";

// TODO - remove ChakraProviderSetup after migrating AuthorizedWalletsTable
// TODO - fetch the authorized wallets server side

export function AccountDevicesPage() {
const authorizedWalletsQuery = useAuthorizedWallets();

return (
<ChakraProviderSetup>
<AuthorizedWalletsTable
authorizedWallets={authorizedWalletsQuery.data || []}
isPending={authorizedWalletsQuery.isPending}
isFetched={authorizedWalletsQuery.isFetched}
/>
</ChakraProviderSetup>
<AuthorizedWalletsTable
authorizedWallets={authorizedWalletsQuery.data || []}
isPending={authorizedWalletsQuery.isPending}
isFetched={authorizedWalletsQuery.isFetched}
/>
);
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { Button } from "@/components/ui/button";
import {
Modal,
ModalCloseButton,
ModalContent,
ModalFooter,
ModalHeader,
ModalOverlay,
} from "@chakra-ui/react";
import { Button } from "tw-components";
Dialog,
DialogContent,
DialogDescription,
DialogFooter,
DialogHeader,
DialogTitle,
} from "@/components/ui/dialog";

type AuthorizedWalletRevokeModalProps = {
isOpen: boolean;
Expand All @@ -19,25 +19,34 @@ export const AuthorizedWalletRevokeModal: React.FC<
AuthorizedWalletRevokeModalProps
> = ({ isOpen, onClose, onSubmit, authorizedWalletId }) => {
return (
<Modal isOpen={isOpen} onClose={onClose} isCentered>
<ModalOverlay />
<ModalContent className="!bg-background rounded-lg border border-border">
<ModalHeader>Are you sure you want to revoke this device?</ModalHeader>
<ModalCloseButton />
<Dialog
open={isOpen}
onOpenChange={(open) => {
if (!open) {
onClose();
}
}}
>
<DialogContent className="p-0">
<DialogHeader className="p-6">
<DialogTitle>Revoke Device Access</DialogTitle>
<DialogDescription className="text-muted-foreground">
Are you sure you want to revoke this device?
</DialogDescription>
</DialogHeader>

<ModalFooter>
<Button mr={3} onClick={onClose} variant="ghost">
<DialogFooter className="gap-4 border-border border-t bg-card p-6">
<Button variant="outline" onClick={onClose}>
Cancel
</Button>
<Button
variant="destructive"
onClick={() => onSubmit(authorizedWalletId)}
variant="outline"
colorScheme="red"
>
Revoke
</Button>
</ModalFooter>
</ModalContent>
</Modal>
</DialogFooter>
</DialogContent>
</Dialog>
);
};
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
"use client";

import { Button } from "@/components/ui/button";
import {
type AuthorizedWallet,
useRevokeAuthorizedWallet,
} from "@3rdweb-sdk/react/hooks/useApi";
import { useDisclosure } from "@chakra-ui/react";
import { createColumnHelper } from "@tanstack/react-table";
import { TWTable } from "components/shared/TWTable";
import { format } from "date-fns/format";
import { useTrack } from "hooks/analytics/useTrack";
import { useState } from "react";
import { toast } from "sonner";
import { isAddress } from "thirdweb/utils";
import { Button, Text } from "tw-components";
import type { ComponentWithChildren } from "types/component-with-children";
import { shortenString } from "utils/usedapp-external";
import { AuthorizedWalletRevokeModal } from "./AuthorizedWalletRevokeModal";
Expand All @@ -33,7 +32,7 @@ export const AuthorizedWalletsTable: ComponentWithChildren<
const [revokeAuthorizedWalletId, setRevokeAuthorizedWalletId] = useState<
string | undefined
>(undefined);
const { onOpen, isOpen, onClose } = useDisclosure();
const [isOpen, setIsOpen] = useState(false);

const columns = [
columnHelper.accessor("deviceName", {
Expand All @@ -44,9 +43,9 @@ export const AuthorizedWalletsTable: ComponentWithChildren<
return;
}
if (isAddress(value)) {
return <Text>{shortenString(value, false)}</Text>;
return <span className="text-sm">{shortenString(value, false)}</span>;
}
return <Text>{value}</Text>;
return <span className="text-sm">{value}</span>;
},
}),

Expand All @@ -59,7 +58,7 @@ export const AuthorizedWalletsTable: ComponentWithChildren<
return;
}
const createdDate = format(new Date(value), "MMM dd, yyyy");
return <Text>{createdDate}</Text>;
return <span className="text-sm">{createdDate}</span>;
},
}),

Expand All @@ -73,8 +72,7 @@ export const AuthorizedWalletsTable: ComponentWithChildren<
return (
<Button
onClick={() => handleOpen(value)}
variant="outline"
color="red"
variant="destructive"
size="sm"
>
Revoke Access
Expand All @@ -86,11 +84,11 @@ export const AuthorizedWalletsTable: ComponentWithChildren<

const handleOpen = (authorizedWalletId: AuthorizedWallet["id"]) => {
setRevokeAuthorizedWalletId(authorizedWalletId);
onOpen();
setIsOpen(true);
};

const handleClose = () => {
onClose();
setIsOpen(false);
setRevokeAuthorizedWalletId(undefined);
};

Expand Down
Loading