Skip to content

Commit

Permalink
fix: default currency
Browse files Browse the repository at this point in the history
  • Loading branch information
shafin-deriv committed Feb 5, 2025
1 parent 39fc911 commit fae3dba
Show file tree
Hide file tree
Showing 4 changed files with 95 additions and 43 deletions.
40 changes: 2 additions & 38 deletions src/app/App.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { initSurvicate } from '../public-path';
import { Fragment, lazy, Suspense } from 'react';
import { lazy, Suspense } from 'react';
import React from 'react';
import { createBrowserRouter, createRoutesFromElements, Route, RouterProvider } from 'react-router-dom';
import ChunkLoader from '@/components/loader/chunk-loader';
Expand All @@ -9,7 +9,6 @@ import CallbackPage from '@/pages/callback';
import Endpoint from '@/pages/endpoint';
import { TAuthData } from '@/types/api-types';
import { initializeI18n, localize, TranslationProvider } from '@deriv-com/translations';
import { URLUtils } from '@deriv-com/utils';
import CoreStoreProvider from './CoreStoreProvider';
import './app-root.scss';

Expand Down Expand Up @@ -49,37 +48,6 @@ const router = createBrowserRouter(
);

function App() {
const { loginInfo, paramsToDelete } = URLUtils.getLoginInfoFromURL();
React.useEffect(() => {
// Set login info to local storage and remove params from url
if (loginInfo.length) {
try {
const defaultActiveAccount = URLUtils.getDefaultActiveAccount(loginInfo);
if (!defaultActiveAccount) return;

const accountsList: Record<string, string> = {};
const clientAccounts: Record<string, { loginid: string; token: string; currency: string }> = {};

loginInfo.forEach((account: { loginid: string; token: string; currency: string }) => {
accountsList[account.loginid] = account.token;
clientAccounts[account.loginid] = account;
});

localStorage.setItem('accountsList', JSON.stringify(accountsList));
localStorage.setItem('clientAccounts', JSON.stringify(clientAccounts));

URLUtils.filterSearchParams(paramsToDelete);

localStorage.setItem('authToken', loginInfo[0].token);
localStorage.setItem('active_loginid', loginInfo[0].loginid);
} catch (error) {
console.error('Error setting up login info:', error);
}
}

URLUtils.filterSearchParams(['lang']);
}, [loginInfo, paramsToDelete]);

React.useEffect(() => {
initSurvicate();
window?.dataLayer?.push({ event: 'page_load' });
Expand Down Expand Up @@ -181,11 +149,7 @@ function App() {
}
}, []);

return (
<Fragment>
<RouterProvider router={router} />
</Fragment>
);
return <RouterProvider router={router} />;
}

export default App;
68 changes: 68 additions & 0 deletions src/app/AuthWrapper.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
import React from 'react';
import ChunkLoader from '@/components/loader/chunk-loader';
import { generateDerivApiInstance } from '@/external/bot-skeleton/services/api/appId';
import { localize } from '@deriv-com/translations';
import { URLUtils } from '@deriv-com/utils';
import App from './App';

const setLocalStorageToken = async (loginInfo: URLUtils.LoginInfo[], paramsToDelete: string[]) => {
if (loginInfo.length) {
try {
const defaultActiveAccount = URLUtils.getDefaultActiveAccount(loginInfo);
if (!defaultActiveAccount) return;

const accountsList: Record<string, string> = {};
const clientAccounts: Record<string, { loginid: string; token: string; currency: string }> = {};

loginInfo.forEach((account: { loginid: string; token: string; currency: string }) => {
accountsList[account.loginid] = account.token;
clientAccounts[account.loginid] = account;
});

localStorage.setItem('accountsList', JSON.stringify(accountsList));
localStorage.setItem('clientAccounts', JSON.stringify(clientAccounts));
URLUtils.filterSearchParams(paramsToDelete);
const api = await generateDerivApiInstance();

if (api) {
const { authorize, error } = await api.authorize(loginInfo[0].token);
api.disconnect();
if (!error) {
const firstId = authorize?.account_list[0]?.loginid;
const filteredTokens = loginInfo.filter(token => token.loginid === firstId);
if (filteredTokens.length) {
localStorage.setItem('authToken', filteredTokens[0].token);
localStorage.setItem('active_loginid', filteredTokens[0].loginid);
return;
}
}
}

localStorage.setItem('authToken', loginInfo[0].token);
localStorage.setItem('active_loginid', loginInfo[0].loginid);
} catch (error) {
console.error('Error setting up login info:', error);
}
}
};

export const AuthWrapper = () => {
const [isAuthComplete, setIsAuthComplete] = React.useState(false);
const { loginInfo, paramsToDelete } = URLUtils.getLoginInfoFromURL();

React.useEffect(() => {
const initializeAuth = async () => {
await setLocalStorageToken(loginInfo, paramsToDelete);
URLUtils.filterSearchParams(['lang']);
setIsAuthComplete(true);
};

initializeAuth();
}, [loginInfo, paramsToDelete]);

if (!isAuthComplete) {
return <ChunkLoader message={localize('Initializing...')} />;
}

return <App />;
};
4 changes: 2 additions & 2 deletions src/main.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import ReactDOM from 'react-dom/client';
import App from './app/App';
import { AuthWrapper } from './app/AuthWrapper';
import { AnalyticsInitializer } from './utils/analytics';
import './styles/index.scss';

AnalyticsInitializer();

ReactDOM.createRoot(document.getElementById('root')!).render(<App />);
ReactDOM.createRoot(document.getElementById('root')!).render(<AuthWrapper />);
26 changes: 23 additions & 3 deletions src/pages/callback/callback-page.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import { generateDerivApiInstance } from '@/external/bot-skeleton/services/api/appId';
import { Callback } from '@deriv-com/auth-client';
import { Button } from '@deriv-com/ui';

const CallbackPage = () => {
return (
<Callback
onSignInSuccess={(tokens: Record<string, string>) => {
onSignInSuccess={async (tokens: Record<string, string>) => {
const accountsList: Record<string, string> = {};
const clientAccounts: Record<string, { loginid: string; token: string; currency: string }> = {};

Expand All @@ -30,8 +31,27 @@ const CallbackPage = () => {
localStorage.setItem('accountsList', JSON.stringify(accountsList));
localStorage.setItem('clientAccounts', JSON.stringify(clientAccounts));

localStorage.setItem('authToken', tokens.token1);
localStorage.setItem('active_loginid', tokens.acct1);
let is_token_set = false;
const api = await generateDerivApiInstance();
if (api) {
const { authorize, error } = await api.authorize(tokens.token1);
localStorage.setItem('callback_token', authorize.toString());
api.disconnect();
if (!error) {
const clientAccountsArray = Object.values(clientAccounts);
const firstId = authorize?.account_list[0]?.loginid;
const filteredTokens = clientAccountsArray.filter(account => account.loginid === firstId);
if (filteredTokens.length) {
localStorage.setItem('authToken', filteredTokens[0].token);
localStorage.setItem('active_loginid', filteredTokens[0].loginid);
is_token_set = true;
}
}
}
if (!is_token_set) {
localStorage.setItem('authToken', tokens.token1);
localStorage.setItem('active_loginid', tokens.acct1);
}

window.location.assign('/');
}}
Expand Down

0 comments on commit fae3dba

Please sign in to comment.