Hey is a decentralized and permissionless social media app built with Lens Protocol 🌿

refactor: simplify ManagerSettings component rendering and remove unused Signless and MetaDetails components

yoginth.com 41e789b3 62626409

verified
+6 -163
+1 -1
apps/web/src/components/Common/Providers/index.tsx
··· 8 8 import { ThemeProvider } from "@/hooks/useTheme"; 9 9 import Web3Provider from "./Web3Provider"; 10 10 11 - export const queryClient = new QueryClient({ 11 + const queryClient = new QueryClient({ 12 12 defaultOptions: { queries: { refetchOnWindowFocus: false } } 13 13 }); 14 14
-62
apps/web/src/components/Settings/Manager/Signless.tsx
··· 1 - import { useEnableSignlessMutation } from "@hey/indexer"; 2 - import type { ApolloClientError } from "@hey/types/errors"; 3 - import { useCallback, useState } from "react"; 4 - import { toast } from "sonner"; 5 - import { Button, H6 } from "@/components/Shared/UI"; 6 - import errorToast from "@/helpers/errorToast"; 7 - import useTransactionLifecycle from "@/hooks/useTransactionLifecycle"; 8 - 9 - const Signless = () => { 10 - const [isSubmitting, setIsSubmitting] = useState(false); 11 - const handleTransactionLifecycle = useTransactionLifecycle(); 12 - 13 - const onCompleted = () => { 14 - setIsSubmitting(false); 15 - toast.success("Signless enabled"); 16 - }; 17 - 18 - const onError = useCallback((error: ApolloClientError) => { 19 - setIsSubmitting(false); 20 - errorToast(error); 21 - }, []); 22 - 23 - const [enableSignless] = useEnableSignlessMutation({ 24 - onCompleted: async ({ enableSignless }) => { 25 - return await handleTransactionLifecycle({ 26 - onCompleted, 27 - onError, 28 - transactionData: enableSignless 29 - }); 30 - }, 31 - onError 32 - }); 33 - 34 - const handleToggleSignless = async () => { 35 - setIsSubmitting(true); 36 - 37 - return await enableSignless(); 38 - }; 39 - 40 - return ( 41 - <div className="m-5 flex flex-col gap-y-5"> 42 - <div className="flex flex-col gap-y-1.5"> 43 - <b>Enable signless transactions</b> 44 - <H6 className="font-normal text-gray-500 dark:text-gray-200"> 45 - You can enable Signless to interact with Hey without signing any of 46 - your transactions. 47 - </H6> 48 - </div> 49 - <Button 50 - className="mr-auto" 51 - disabled={isSubmitting} 52 - loading={isSubmitting} 53 - onClick={handleToggleSignless} 54 - variant="primary" 55 - > 56 - Enable 57 - </Button> 58 - </div> 59 - ); 60 - }; 61 - 62 - export default Signless;
+1 -9
apps/web/src/components/Settings/Manager/index.tsx
··· 23 23 icon={<BackButton path="/settings" />} 24 24 title="Manager settings" 25 25 /> 26 - {disabled ? ( 27 - <WrongWallet /> 28 - ) : ( 29 - <> 30 - {/* <Signless /> 31 - <div className="divider" /> */} 32 - <AccountManager /> 33 - </> 34 - )} 26 + {disabled ? <WrongWallet /> : <AccountManager />} 35 27 </Card> 36 28 </PageLayout> 37 29 );
-46
apps/web/src/components/Shared/MetaDetails.tsx
··· 1 - import type { ReactNode } from "react"; 2 - import { H6 } from "@/components/Shared/UI"; 3 - import cn from "@/helpers/cn"; 4 - import useCopyToClipboard from "@/hooks/useCopyToClipboard"; 5 - 6 - interface MetaDetailsProps { 7 - children: ReactNode; 8 - icon: ReactNode; 9 - noFlex?: boolean; 10 - title?: string; 11 - value?: string; 12 - } 13 - 14 - const MetaDetails = ({ 15 - children, 16 - icon, 17 - noFlex = false, 18 - title, 19 - value 20 - }: MetaDetailsProps) => { 21 - const handleClick = useCopyToClipboard(value ?? "", "Copied to clipboard!"); 22 - 23 - return ( 24 - <div 25 - className={cn( 26 - !noFlex && "flex items-center gap-1", 27 - value && "cursor-pointer", 28 - "linkify" 29 - )} 30 - onClick={handleClick} 31 - > 32 - <H6 className="flex items-center gap-1"> 33 - {icon} 34 - {title && ( 35 - <div className="text-gray-500 dark:text-gray-200"> 36 - {title} 37 - {!noFlex && ":"} 38 - </div> 39 - )} 40 - </H6> 41 - <H6 className={noFlex ? "mt-1" : ""}>{children}</H6> 42 - </div> 43 - ); 44 - }; 45 - 46 - export default MetaDetails;
+1 -1
apps/web/src/components/Shared/UI/index.ts
··· 6 6 export { default as Checkbox } from "./Checkbox"; 7 7 export { default as EmptyState } from "./EmptyState"; 8 8 export { default as ErrorMessage } from "./ErrorMessage"; 9 - export { FieldError, Form, useZodForm } from "./Form"; 9 + export { Form, useZodForm } from "./Form"; 10 10 export { default as HelpTooltip } from "./HelpTooltip"; 11 11 export { default as Image } from "./Image"; 12 12 export { default as Input } from "./Input";
-1
apps/web/src/helpers/shortcuts.ts
··· 13 13 ThisModal: { key: "?", name: "Shortcut help" } 14 14 }; 15 15 16 - export type ShortcutName = keyof typeof KeyboardShortcuts; 17 16 export default KeyboardShortcuts;
+1 -1
apps/web/src/hooks/useTheme.tsx
··· 9 9 useState 10 10 } from "react"; 11 11 12 - export type Theme = "light" | "dark"; 12 + type Theme = "light" | "dark"; 13 13 interface ThemeContextValue { 14 14 theme: Theme; 15 15 toggleTheme: () => void;
+2 -5
apps/web/src/store/persisted/useAccountStore.ts
··· 5 5 interface State { 6 6 currentAccount?: AccountFragment; 7 7 setCurrentAccount: (currentAccount?: AccountFragment) => void; 8 - hydrateAccount: () => AccountFragment | undefined; 9 8 } 10 9 11 - const { useStore: useAccountStore, store } = createPersistedTrackedStore<State>( 12 - (set, get) => ({ 10 + const { useStore: useAccountStore } = createPersistedTrackedStore<State>( 11 + (set, _get) => ({ 13 12 currentAccount: undefined, 14 - hydrateAccount: () => get().currentAccount, 15 13 setCurrentAccount: (currentAccount?: AccountFragment) => 16 14 set(() => ({ currentAccount })) 17 15 }), ··· 19 17 ); 20 18 21 19 export { useAccountStore }; 22 - export const hydrateAccount = () => store.getState().hydrateAccount();
-13
packages/indexer/documents/mutations/account/EnableSignless.graphql
··· 1 - mutation EnableSignless { 2 - enableSignless { 3 - ... on SelfFundedTransactionRequest { 4 - ...SelfFundedTransactionRequest 5 - } 6 - ... on SponsoredTransactionRequest { 7 - ...SponsoredTransactionRequest 8 - } 9 - ... on TransactionWillFail { 10 - ...TransactionWillFail 11 - } 12 - } 13 - }
-24
packages/indexer/generated.ts
··· 7854 7854 | { __typename?: 'UsernameTaken', reason: string } 7855 7855 }; 7856 7856 7857 - export type EnableSignlessMutationVariables = Exact<{ [key: string]: never; }>; 7858 - 7859 - 7860 - export type EnableSignlessMutation = { __typename?: 'Mutation', enableSignless: 7861 - | ( 7862 - { __typename?: 'SelfFundedTransactionRequest' } 7863 - & SelfFundedTransactionRequestFragment 7864 - ) 7865 - | ( 7866 - { __typename?: 'SponsoredTransactionRequest' } 7867 - & SponsoredTransactionRequestFragment 7868 - ) 7869 - | ( 7870 - { __typename?: 'TransactionWillFail' } 7871 - & TransactionWillFailFragment 7872 - ) 7873 - }; 7874 - 7875 7857 export type ExecuteAccountActionMutationVariables = Exact<{ 7876 7858 request: ExecuteAccountActionRequest; 7877 7859 }>; ··· 9228 9210 return Apollo.useMutation<CreateAccountWithUsernameMutation, CreateAccountWithUsernameMutationVariables>(CreateAccountWithUsernameDocument, options); 9229 9211 } 9230 9212 export type CreateAccountWithUsernameMutationHookResult = ReturnType<typeof useCreateAccountWithUsernameMutation>; 9231 - export const EnableSignlessDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"EnableSignless"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"enableSignless"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"SelfFundedTransactionRequest"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"SelfFundedTransactionRequest"}}]}},{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"SponsoredTransactionRequest"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"SponsoredTransactionRequest"}}]}},{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"TransactionWillFail"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"TransactionWillFail"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"SelfFundedTransactionRequest"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"SelfFundedTransactionRequest"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"raw"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"chainId"}},{"kind":"Field","name":{"kind":"Name","value":"data"}},{"kind":"Field","name":{"kind":"Name","value":"from"}},{"kind":"Field","name":{"kind":"Name","value":"gasLimit"}},{"kind":"Field","name":{"kind":"Name","value":"maxFeePerGas"}},{"kind":"Field","name":{"kind":"Name","value":"maxPriorityFeePerGas"}},{"kind":"Field","name":{"kind":"Name","value":"nonce"}},{"kind":"Field","name":{"kind":"Name","value":"to"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"SponsoredTransactionRequest"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"SponsoredTransactionRequest"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"raw"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"chainId"}},{"kind":"Field","name":{"kind":"Name","value":"data"}},{"kind":"Field","name":{"kind":"Name","value":"from"}},{"kind":"Field","name":{"kind":"Name","value":"gasLimit"}},{"kind":"Field","name":{"kind":"Name","value":"maxFeePerGas"}},{"kind":"Field","name":{"kind":"Name","value":"maxPriorityFeePerGas"}},{"kind":"Field","name":{"kind":"Name","value":"nonce"}},{"kind":"Field","name":{"kind":"Name","value":"to"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"value"}},{"kind":"Field","name":{"kind":"Name","value":"customData"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"customSignature"}},{"kind":"Field","name":{"kind":"Name","value":"factoryDeps"}},{"kind":"Field","name":{"kind":"Name","value":"gasPerPubdata"}},{"kind":"Field","name":{"kind":"Name","value":"paymasterParams"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"paymaster"}},{"kind":"Field","name":{"kind":"Name","value":"paymasterInput"}}]}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"TransactionWillFail"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"TransactionWillFail"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"reason"}}]}}]} as unknown as DocumentNode; 9232 - export function useEnableSignlessMutation(baseOptions?: Apollo.MutationHookOptions<EnableSignlessMutation, EnableSignlessMutationVariables>) { 9233 - const options = {...defaultOptions, ...baseOptions} 9234 - return Apollo.useMutation<EnableSignlessMutation, EnableSignlessMutationVariables>(EnableSignlessDocument, options); 9235 - } 9236 - export type EnableSignlessMutationHookResult = ReturnType<typeof useEnableSignlessMutation>; 9237 9213 export const ExecuteAccountActionDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"ExecuteAccountAction"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"request"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ExecuteAccountActionRequest"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"executeAccountAction"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"request"},"value":{"kind":"Variable","name":{"kind":"Name","value":"request"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"ExecuteAccountActionResponse"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"hash"}}]}},{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"SelfFundedTransactionRequest"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"SelfFundedTransactionRequest"}}]}},{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"SponsoredTransactionRequest"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"SponsoredTransactionRequest"}}]}},{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"TransactionWillFail"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"TransactionWillFail"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"SelfFundedTransactionRequest"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"SelfFundedTransactionRequest"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"raw"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"chainId"}},{"kind":"Field","name":{"kind":"Name","value":"data"}},{"kind":"Field","name":{"kind":"Name","value":"from"}},{"kind":"Field","name":{"kind":"Name","value":"gasLimit"}},{"kind":"Field","name":{"kind":"Name","value":"maxFeePerGas"}},{"kind":"Field","name":{"kind":"Name","value":"maxPriorityFeePerGas"}},{"kind":"Field","name":{"kind":"Name","value":"nonce"}},{"kind":"Field","name":{"kind":"Name","value":"to"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"SponsoredTransactionRequest"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"SponsoredTransactionRequest"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"raw"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"chainId"}},{"kind":"Field","name":{"kind":"Name","value":"data"}},{"kind":"Field","name":{"kind":"Name","value":"from"}},{"kind":"Field","name":{"kind":"Name","value":"gasLimit"}},{"kind":"Field","name":{"kind":"Name","value":"maxFeePerGas"}},{"kind":"Field","name":{"kind":"Name","value":"maxPriorityFeePerGas"}},{"kind":"Field","name":{"kind":"Name","value":"nonce"}},{"kind":"Field","name":{"kind":"Name","value":"to"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"value"}},{"kind":"Field","name":{"kind":"Name","value":"customData"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"customSignature"}},{"kind":"Field","name":{"kind":"Name","value":"factoryDeps"}},{"kind":"Field","name":{"kind":"Name","value":"gasPerPubdata"}},{"kind":"Field","name":{"kind":"Name","value":"paymasterParams"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"paymaster"}},{"kind":"Field","name":{"kind":"Name","value":"paymasterInput"}}]}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"TransactionWillFail"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"TransactionWillFail"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"reason"}}]}}]} as unknown as DocumentNode; 9238 9214 export function useExecuteAccountActionMutation(baseOptions?: Apollo.MutationHookOptions<ExecuteAccountActionMutation, ExecuteAccountActionMutationVariables>) { 9239 9215 const options = {...defaultOptions, ...baseOptions}