current-stake-account.tsx 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. "use client";
  2. import clsx from "clsx";
  3. import { useSelectedLayoutSegment } from "next/navigation";
  4. import { type HTMLProps } from "react";
  5. import { VPN_BLOCKED_SEGMENT } from "../../config/isomorphic";
  6. import { StateType as ApiStateType, useApi } from "../../hooks/use-api";
  7. import { CopyButton } from "../CopyButton";
  8. import { TruncatedKey } from "../TruncatedKey";
  9. export const CurrentStakeAccount = ({
  10. className,
  11. ...props
  12. }: HTMLProps<HTMLDivElement>) => {
  13. const segment = useSelectedLayoutSegment();
  14. const isBlocked = segment === VPN_BLOCKED_SEGMENT;
  15. const api = useApi();
  16. return api.type === ApiStateType.Loaded && !isBlocked ? (
  17. <div
  18. className={clsx(
  19. "hidden flex-col items-end justify-center text-xs xs:flex xl:flex-row xl:items-center xl:text-sm",
  20. className,
  21. )}
  22. {...props}
  23. >
  24. <div className="font-semibold">Stake account:</div>
  25. <CopyButton
  26. text={api.account.toBase58()}
  27. className="text-pythpurple-400 xl:ml-2 xl:mr-0"
  28. >
  29. <TruncatedKey>{api.account}</TruncatedKey>
  30. </CopyButton>
  31. </div>
  32. ) : // eslint-disable-next-line unicorn/no-null
  33. null;
  34. };