Skip to content

Commit

Permalink
Merge branch 'develop' into create-skeleton-explore
Browse files Browse the repository at this point in the history
  • Loading branch information
benwolski authored Oct 11, 2024
2 parents f38f0fc + 5ce4589 commit 813cb34
Show file tree
Hide file tree
Showing 43 changed files with 2,576 additions and 1,937 deletions.
9 changes: 4 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,23 +1,22 @@
{
"name": "ambient-ts-app",
"version": "2.9.1",
"version": "2.9.3",
"private": true,
"type": "module",
"dependencies": {
"@crocswap-libs/sdk": "^1.0.2",
"@crocswap-libs/sdk": "^1.0.7",
"@d3fc/d3fc-extent": "^4.0.2",
"@emotion/react": "^11.10.5",
"@emotion/styled": "^11.10.5",
"@material-ui/core": "^4.12.4",
"@mui/material": "^5.8.2",
"@web3modal/ethers": "4.2.1",
"alchemy-sdk": "^3.4.2",
"alea": "^1.0.1",
"babel-plugin-styled-components": "^2.1.4",
"d3": "^7.4.4",
"d3fc": "^15.2.4",
"emoji-picker-react": "^4.11.1",
"ethers": "^6.13.0",
"ethers": "^6.13.3",
"framer-motion": "4.1.17",
"i18next": "^21.8.16",
"i18next-browser-languagedetector": "^8.0.0",
Expand Down Expand Up @@ -105,4 +104,4 @@
"vite-plugin-checker": "^0.6.4",
"vitest": "^1.6.0"
}
}
}
16 changes: 11 additions & 5 deletions src/App/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import Navbar from '../components/Futa/Navbar/Navbar';
import Footer from '../components/Futa/Footer/Footer';
import { useModal } from '../components/Global/Modal/useModal';
import CSSModal from '../pages/common/CSSDebug/CSSModal';
import { useBottomSheet } from '../contexts/BottomSheetContext';

/** ***** React Function *******/
export default function App() {
Expand All @@ -52,6 +53,9 @@ export default function App() {
sidebar: { toggle: toggleSidebar },
} = useContext(SidebarContext);

const { isBottomSheetOpen } =
useBottomSheet();

const containerStyle = currentLocation.includes('trade')
? 'content-container-trade'
: 'content-container';
Expand Down Expand Up @@ -137,6 +141,12 @@ export default function App() {
};
}, [isCSSModalOpen]);

const footerDisplay = platformName === 'futa' ? (
<Footer data-theme={skin.active} />
) : (
ambientFooter
)

return (
<>
{location.pathname == '/' && platformName !== 'futa' && (
Expand Down Expand Up @@ -168,11 +178,7 @@ export default function App() {
)}
<RouteRenderer platformName={platformName} />
</FlexContainer>
{platformName === 'futa' ? (
<Footer data-theme={skin.active} />
) : (
ambientFooter
)}
{!isBottomSheetOpen && footerDisplay}
<GlobalPopup data-theme={skin.active} />
<SnackbarComponent />
{isWalletModalOpen && <GateWalletModal />}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ export const ExchangeBalanceDropdown = () => {
const [fullLayoutActive, setFullLayoutActive] = useState<boolean>(false);
const [tokenModalOpen, setTokenModalOpen] = useState(false);
const escapePressed = useKeyPress('Escape');


useEffect(() => {
if (fullLayoutActive && !tokenModalOpen && escapePressed) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import styles from './LevelDropdown.module.css'
import UserProfileCard from '../UserProfileCard';
import { UserXpDataIF } from '../../../../../contexts/UserDataContext';
import UserLevelDisplay from '../../../../../components/Global/LevelsCard/UserLevelDisplay';
interface LevelDropdownPropsIF {
interface propsIF {
ensName: string;
accountAddress: string;
handleCopyAddress: () => void;
Expand All @@ -11,7 +11,7 @@ interface LevelDropdownPropsIF {

}

export default function LevelDropdown(props: LevelDropdownPropsIF) {
export default function LevelDropdown(props: propsIF) {
const { ensName, handleCopyAddress, connectedUserXp, accountAddressFull } =
props;

Expand Down
47 changes: 27 additions & 20 deletions src/ambient-utils/api/fetchNft.ts
Original file line number Diff line number Diff line change
@@ -1,31 +1,39 @@
import { CrocEnv } from '@crocswap-libs/sdk';
import { memoizePromiseFn } from '../dataLayer/functions/memoizePromiseFn';
import { Alchemy } from 'alchemy-sdk';
import { ALCHEMY_API_KEY } from '../constants';

export const fetchNFT = async (
address: string,
crocEnv: CrocEnv | undefined,
client: Alchemy,
pageKey: string,
pageSize: number,
): Promise<fetchNFTReturn> => {
if (!crocEnv) return;

const nftsForOwnerResponse = await client.nft.getNftsForOwner(address, {
pageKey: pageKey,
pageSize: pageSize,
});

const nftData = nftsForOwnerResponse.ownedNfts;
const totalNFTCount = nftsForOwnerResponse.totalCount;
const pageKeyResponse = nftsForOwnerResponse.pageKey;

return {
NFTData: nftData,
totalNFTCount: totalNFTCount,
pageKey: pageKeyResponse,
userHasNFT: nftsForOwnerResponse.totalCount > 0,
};
if (!crocEnv || !ALCHEMY_API_KEY) return;

const options = { method: 'GET', headers: { accept: 'application/json' } };

try {
const response = await fetch(
`https://eth-mainnet.g.alchemy.com/nft/v3/${ALCHEMY_API_KEY}/getNFTsForOwner?owner=${address}&withMetadata=true&pageSize=${pageSize}&pageKey=${pageKey}`,
options,
);

const data = await response.json();

const nftData = data.ownedNfts;
const totalNFTCount = data.totalCount;
const pageKeyResponse = data.pageKey;

return {
NFTData: nftData,
totalNFTCount: totalNFTCount,
pageKey: pageKeyResponse,
userHasNFT: totalNFTCount > 0,
};
} catch (error) {
console.error(error);
return undefined;
}
};

export type fetchNFTReturn =
Expand All @@ -41,7 +49,6 @@ export type fetchNFTReturn =
export type NFTQueryFn = (
address: string,
crocEnv: CrocEnv | undefined,
client: Alchemy,
pageKey: string,
pageSize: number,
) => Promise<fetchNFTReturn>;
Expand Down
7 changes: 3 additions & 4 deletions src/ambient-utils/constants/networks/scrollMainnet.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
import { lookupChain } from '@crocswap-libs/sdk/dist/context';
import {
scrollETH,
scrollSTONE,
scrollUSDC,
scrollUSDT,
scrollWBTC,
scrollWeETH,
scrollWrsETH,
} from '../defaultTokens';
import { NetworkIF } from '../../types/NetworkIF';
import { TopPool } from './TopPool';
Expand Down Expand Up @@ -37,9 +36,9 @@ export const scrollMainnet: NetworkIF = {
topPools: [
new TopPool(scrollETH, scrollUSDC, lookupChain('0x82750').poolIndex),
new TopPool(scrollETH, scrollUSDT, lookupChain('0x82750').poolIndex),
new TopPool(scrollETH, scrollWeETH, lookupChain('0x82750').poolIndex),
new TopPool(scrollETH, scrollWBTC, lookupChain('0x82750').poolIndex),
new TopPool(scrollETH, scrollSTONE, lookupChain('0x82750').poolIndex),
new TopPool(scrollUSDT, scrollUSDC, lookupChain('0x82750').poolIndex),
new TopPool(scrollWrsETH, scrollETH, lookupChain('0x82750').poolIndex),
],
getGasPriceInGwei: async (provider?: Provider) => {
if (!provider) return 0;
Expand Down
1 change: 1 addition & 0 deletions src/components/Chat/FullChat/FullChat.module.css
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,7 @@
border: 1px solid #f3bc4188;
color: #f3bc41cc;
padding: 0 0.6rem;
z-index: 3;
}


Expand Down
97 changes: 50 additions & 47 deletions src/components/Chat/Service/ChatApi.tsx
Original file line number Diff line number Diff line change
@@ -1,14 +1,9 @@
import { CHAT_BACKEND_URL } from '../../../ambient-utils/constants';
import { useWeb3ModalProvider } from '@web3modal/ethers/react';
import { ethers } from 'ethers';
import { useContext } from 'react';
import { CHAT_BACKEND_URL } from '../../../ambient-utils/constants';
import { UserDataContext } from '../../../contexts/UserDataContext';
import {
getLS,
// getUserAvatarEndpoint,
// getUserAvatarImageByAccountEndpoint,
getUserVerifyToken,
setLS,
// updateUserWithAvatarImageEndpoint,
} from '../ChatUtils';
import { LS_USER_VERIFY_TOKEN } from '../ChatConstants/ChatConstants';
import {
getTopRoomsEndpoint,
getUserAvatarEndpoint,
Expand All @@ -18,12 +13,28 @@ import {
updateUserWithAvatarImageEndpoint,
verifyUserEndpoint,
} from '../ChatConstants/ChatEndpoints';
import { LS_USER_VERIFY_TOKEN } from '../ChatConstants/ChatConstants';
import {
getLS,
// getUserAvatarEndpoint,
// getUserAvatarImageByAccountEndpoint,
getUserVerifyToken,
setLS,
} from '../ChatUtils';


const host = CHAT_BACKEND_URL;

const useChatApi = () => {
const { userAddress } = useContext(UserDataContext);
const { walletProvider } = useWeb3ModalProvider();

const getSigner = async () => {
if (walletProvider) {
const w3provider = new ethers.BrowserProvider(walletProvider);
return await w3provider.getSigner();
}
return null;
}

async function getStatus() {
// Hit the chat /status endpoint to see if it's online
Expand All @@ -38,6 +49,8 @@ const useChatApi = () => {
}
}



async function getID() {
if (userAddress) {
const response = await fetch(
Expand Down Expand Up @@ -263,6 +276,7 @@ const useChatApi = () => {
}

async function verifyWalletService(verificationDate: Date) {

// this assignment will be deleted after backend deployment
let verificationText =
'Verify your wallet address in order to access additional chat functionality.\n\nYou can update your avatar on https://ambient.finance/account \n\nBy continuing to use chat you accept the Ambient Finance Terms of Service (https://ambient.finance/terms) and Privacy Policy (https://ambient.finance/privacy). \n\nThis request will not trigger a blockchain transaction or cost any gas fees. \n\n';
Expand All @@ -274,43 +288,32 @@ const useChatApi = () => {
console.error(err);
}

return new Promise((resolve, reject) => {
const message =
verificationText + 'Wallet address:\n' + userAddress;

if (
window.ethereum &&
window.ethereum.request &&
typeof window.ethereum.request === 'function'
) {
window.ethereum
.request({
method: 'personal_sign',
params: [
message.substring(
0,
message.indexOf('Wallet address:'),
),
userAddress,
'',
],
})
// eslint-disable-next-line
.then(async (signedMessage: any) => {
const resp = await sendVerifyRequest(
signedMessage,
verificationDate,
);
setLS(LS_USER_VERIFY_TOKEN, signedMessage, userAddress);
resolve(resp);
})
// eslint-disable-next-line
.catch((error: any) => {
// Handle error
reject(error);
});
}
});
const signer = await getSigner();
if(signer){
return new Promise((resolve, reject) => {
const message =
verificationText + 'Wallet address:\n' + userAddress;
// signer.signMessage(message)
signer.signMessage(message.substring(
0,
message.indexOf('Wallet address:'),
))
// eslint-disable-next-line
.then(async (signedMessage: any) => {
const resp = await sendVerifyRequest(
signedMessage,
verificationDate,
);
setLS(LS_USER_VERIFY_TOKEN, signedMessage, userAddress);
resolve(resp);
})
// eslint-disable-next-line
.catch((error: any) => {
// Handle error
reject(error);
});
});
}
}

async function isUserVerified() {
Expand Down
Loading

0 comments on commit 813cb34

Please sign in to comment.