Skip to content

Commit

Permalink
fix code continuity bugs
Browse files Browse the repository at this point in the history
  • Loading branch information
H34D committed Feb 6, 2023
1 parent d0fc460 commit 27e792c
Show file tree
Hide file tree
Showing 40 changed files with 631 additions and 484 deletions.
4 changes: 4 additions & 0 deletions src/common/components/index.ts
@@ -0,0 +1,4 @@
export * from './masa-interface';
export * from './masa-loading';
export * from './modal';
export * from './spinner';
1 change: 1 addition & 0 deletions src/common/components/masa-interface/index.ts
@@ -0,0 +1 @@
export * from './masa-interface';
@@ -1,11 +1,13 @@
import React, { useMemo } from 'react';
import { useMasa } from '../../helpers/provider/use-masa';
import { ModalComponent } from '../modal';
import { InterfaceAuthenticate } from './pages/authenticate';
import { InterfaceConnected } from './pages/connected';
import { InterfaceConnector } from './pages/connector';
import { InterfaceCreateCreditScore } from './pages/create-credit-score';
import { InterfaceCreateIdentity } from './pages/createIdentity';
import {
InterfaceAuthenticate,
InterfaceConnected,
InterfaceConnector,
InterfaceCreateCreditScore,
InterfaceCreateIdentity,
} from './pages';

const pages = {
connector: ({ disable }) => <InterfaceConnector disable={disable} />,
Expand All @@ -15,7 +17,11 @@ const pages = {
createCreditScore: <InterfaceCreateCreditScore />,
};

export const MasaInterface = ({ disable }: { disable?: boolean }) => {
export const MasaInterface = ({
disable,
}: {
disable?: boolean;
}): JSX.Element => {
const {
isModalOpen,
setModalOpen,
Expand Down
@@ -0,0 +1,53 @@
import React, { useMemo } from 'react';
import { useMasa } from '../../../../helpers/provider/use-masa';
import { Spinner } from '../../../spinner';

export const InterfaceAuthenticate = (): JSX.Element => {
const { handleLogin, walletAddress, identity, loading } = useMasa();

const hasIdentity = useMemo(() => {
return identity && identity?.identityId;
}, [identity]);
const shortAddress = useMemo(() => {
return `${walletAddress?.substring(0, 2)}...${walletAddress?.substring(
walletAddress.length - 4,
walletAddress.length - 1
)}`;
}, [walletAddress]);

if (loading) {
return <Spinner />;
}
return (
<div className="interface-authenticate">
<div>
<h3 className="title">Wallet connected!</h3>
<p className="connected-wallet">
Your wallet is connected you can now create an account by minting a
Masa Soulbound Identity and Masa Soulname!
</p>

<p className="connected-wallet with-wallet">
You are connected with the following wallet
<span>{shortAddress}</span>
</p>
</div>
<div>
<button
className="masa-button authenticate-button"
onClick={handleLogin}
>
{loading ? 'loading...' : hasIdentity ? 'Sign in' : 'Register'}
</button>
<div className="dont-have-a-wallet">
<a>
<p>
Want to use a different wallet? Close this window and disconnect
your wallet in Metamask to connect a new wallet
</p>
</a>
</div>
</div>
</div>
);
};
@@ -1,53 +1 @@
import React, { useMemo } from 'react';
import { useMasa } from '../../../../helpers/provider/use-masa';
import { Spinner } from '../../../spinner';

export const InterfaceAuthenticate = () => {
const { handleLogin, walletAddress, identity, loading } = useMasa();

const hasIdentity = useMemo(() => {
return identity && identity?.identityId;
}, [identity]);
const shortAddress = useMemo(() => {
return `${walletAddress?.substring(0, 2)}...${walletAddress?.substring(
walletAddress.length - 4,
walletAddress.length - 1
)}`;
}, [walletAddress]);

if (loading) {
return <Spinner />;
}
return (
<div className="interface-authenticate">
<div>
<h3 className="title">Wallet connected!</h3>
<p className="connected-wallet">
Your wallet is connected you can now create an account by minting a
Masa Soulbound Identity and Masa Soulname!
</p>

<p className="connected-wallet with-wallet">
You are connected with the following wallet
<span>{shortAddress}</span>
</p>
</div>
<div>
<button
className="masa-button authenticate-button"
onClick={handleLogin}
>
{loading ? 'loading...' : hasIdentity ? 'Sign in' : 'Register'}
</button>
<div className="dont-have-a-wallet">
<a>
<p>
Want to use a different wallet? Close this window and disconnect
your wallet in Metamask to connect a new wallet
</p>
</a>
</div>
</div>
</div>
);
};
export { InterfaceAuthenticate } from './authenticate';
27 changes: 27 additions & 0 deletions src/common/components/masa-interface/pages/connected/connected.tsx
@@ -0,0 +1,27 @@
import React, { useEffect } from 'react';
import { useMasa } from '../../../../helpers/provider/use-masa';
import { MasaLoading } from '../../../masa-loading';
import { Spinner } from '../../../spinner';

export const InterfaceConnected = () => {
const { company, loading, closeModal } = useMasa();

useEffect(() => {
if (!loading) {
setTimeout(() => {
closeModal?.();
}, 3000);
}
}, [loading]);

if (loading) return <MasaLoading />;
return (
<div className="interface-connected">
<div>
<h3 className="title">We are taking you to {company}</h3>

<Spinner />
</div>
</div>
);
};
28 changes: 1 addition & 27 deletions src/common/components/masa-interface/pages/connected/index.tsx
@@ -1,27 +1 @@
import React, { useEffect } from 'react';
import { useMasa } from '../../../../helpers/provider/use-masa';
import { MasaLoading } from '../../../masa-loading';
import { Spinner } from '../../../spinner';

export const InterfaceConnected = () => {
const { company, loading, closeModal } = useMasa();

useEffect(() => {
if (!loading) {
setTimeout(() => {
closeModal?.();
}, 3000);
}
}, [loading]);

if (loading) return <MasaLoading />;
return (
<div className="interface-connected">
<div>
<h3 className="title">We are taking you to {company}</h3>

<Spinner />
</div>
</div>
);
};
export { InterfaceConnected } from './connected';
48 changes: 48 additions & 0 deletions src/common/components/masa-interface/pages/connector/connector.tsx
@@ -0,0 +1,48 @@
import React from 'react';
import { useMetamask } from '../../../../helpers/provider/use-metamask';

export const InterfaceConnector = ({ disable }: { disable?: boolean }) => {
const { connect } = useMetamask({ disable });

return (
<div className="interface-connect">
<div>
<h3 className="title">Select a wallet</h3>
<p>
By connecting your wallet, you agree to our <a>Terms of Service</a>{' '}
and <a>Privacy Policy</a>
</p>
</div>
<div className="masa-connectors">
<div className="connector" onClick={connect}>
<p>MetaMask</p>
<img
src={
'https://upload.wikimedia.org/wikipedia/commons/thumb/3/36/MetaMask_Fox.svg/2048px-MetaMask_Fox.svg.png'
}
className="connector-image"
/>
</div>
<div className="connector disabled">
<p>WalletConnect</p>
<img
src={'https://example.walletconnect.org/favicon.ico'}
className="connector-image"
/>
</div>
<div className="connector disabled">
<p>Ciubvase Wallet</p>
<img
src={'https://avatars.githubusercontent.com/u/18060234?s=280&v=4'}
className="connector-image"
/>
</div>
</div>
<div className="dont-have-a-wallet">
<a>
<p>I don't have a Wallet</p>
</a>
</div>
</div>
);
};
49 changes: 1 addition & 48 deletions src/common/components/masa-interface/pages/connector/index.tsx
@@ -1,48 +1 @@
import React from 'react';
import { useMetamask } from '../../../../helpers/provider/use-metamask';

export const InterfaceConnector = ({ disable }: { disable?: boolean }) => {
const { connect } = useMetamask({ disable });

return (
<div className="interface-connect">
<div>
<h3 className="title">Select a wallet</h3>
<p>
By connecting your wallet, you agree to our <a>Terms of Service</a>{' '}
and <a>Privacy Policy</a>
</p>
</div>
<div className="masa-connectors">
<div className="connector" onClick={connect}>
<p>MetaMask</p>
<img
src={
'https://upload.wikimedia.org/wikipedia/commons/thumb/3/36/MetaMask_Fox.svg/2048px-MetaMask_Fox.svg.png'
}
className="connector-image"
/>
</div>
<div className="connector disabled">
<p>WalletConnect</p>
<img
src={'https://example.walletconnect.org/favicon.ico'}
className="connector-image"
/>
</div>
<div className="connector disabled">
<p>Ciubvase Wallet</p>
<img
src={'https://avatars.githubusercontent.com/u/18060234?s=280&v=4'}
className="connector-image"
/>
</div>
</div>
<div className="dont-have-a-wallet">
<a>
<p>I don't have a Wallet</p>
</a>
</div>
</div>
);
};
export { InterfaceConnector } from './connector';
Expand Up @@ -2,7 +2,7 @@ import React, { useCallback, useState } from 'react';
import { useMasa } from '../../../../helpers/provider/use-masa';
import { MasaLoading } from '../../../masa-loading';

export const InterfaceCreateCreditScore = () => {
export const InterfaceCreateCreditScore = (): JSX.Element => {
const { handleCreateCreditScore, loading } = useMasa();
const [error, setError] = useState<string | null>(null);

Expand Down
Expand Up @@ -2,7 +2,7 @@ import React, { useCallback } from 'react';
import { useMasa } from '../../../../helpers/provider/use-masa';
import { MasaLoading } from '../../../masa-loading';

export const InterfaceCreateIdentity = () => {
export const InterfaceCreateIdentity = (): JSX.Element => {
const { handlePurchaseIdentity, handleLogout, loading } = useMasa();

const createIdentity = useCallback(async () => {
Expand Down
@@ -0,0 +1 @@
export { InterfaceCreateIdentity } from './create-identity';
5 changes: 5 additions & 0 deletions src/common/components/masa-interface/pages/index.ts
@@ -0,0 +1,5 @@
export * from './authenticate';
export * from './connected';
export * from './connector';
export * from './create-credit-score';
export * from './create-identity-';
1 change: 1 addition & 0 deletions src/common/components/masa-loading/index.ts
@@ -0,0 +1 @@
export * from './masa-loading';
1 change: 1 addition & 0 deletions src/common/components/modal/index.ts
@@ -0,0 +1 @@
export * from './modal';
Expand Up @@ -7,7 +7,7 @@ export interface ModalProps {
children: React.ReactNode;
open: boolean;
setOpen: (val: boolean) => void;
close: Function;
close: () => void;
}

export const ModalComponent = ({ children, open, close }: ModalProps) => {
Expand Down
4 changes: 2 additions & 2 deletions src/common/components/spinner/spinner.tsx
Expand Up @@ -6,10 +6,10 @@ export interface SpinnerProps {
color?: string;
}

export function Spinner({ color = '#000' }: SpinnerProps) {
export const Spinner = ({ color = '#000' }: SpinnerProps) => {
return (
<div className="masa-spinner">
<MoonLoader color={color} />
</div>
);
}
};
8 changes: 4 additions & 4 deletions src/common/helpers/hooks/useDebounce.ts
@@ -1,7 +1,7 @@
import { useEffect, useState } from 'react';

// Hook
export function useDebounce(value, delay) {
export const useDebounce = (value, delay) => {
// State and setters for debounced value
const [debouncedValue, setDebouncedValue] = useState(value);
useEffect(
Expand All @@ -20,10 +20,10 @@ export function useDebounce(value, delay) {
[value, delay] // Only re-call effect if value or delay changes
);
return debouncedValue;
}
};

// Hook
export function useDebounceIfValue(value, target, delay) {
export const useDebounceIfValue = (value, target, delay) => {
// State and setters for debounced value
const [debouncedValue, setDebouncedValue] = useState(value);
useEffect(() => {
Expand All @@ -42,4 +42,4 @@ export function useDebounceIfValue(value, target, delay) {
}
}, [value, delay, target]);
return debouncedValue;
}
};

0 comments on commit 27e792c

Please sign in to comment.