Skip to content

Commit

Permalink
fix: implementation of query params
Browse files Browse the repository at this point in the history
  • Loading branch information
rupato-deriv committed Feb 17, 2025
1 parent af03f43 commit d6d5efd
Showing 1 changed file with 41 additions and 54 deletions.
95 changes: 41 additions & 54 deletions src/app/AuthWrapper.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,72 +7,59 @@ import { URLUtils } from '@deriv-com/utils';
import App from './App';

const setLocalStorageToken = async (loginInfo: URLUtils.LoginInfo[], paramsToDelete: string[]) => {
if (loginInfo.length) {
try {
let cookieAccounts = {};
try {
cookieAccounts = JSON.parse(Cookies.get('client.accounts') || '{}');
} catch (error) {
console.error("Invalid JSON in 'client.accounts' cookie:", error);
}

const storedClientAccounts = {
...JSON.parse(localStorage.getItem('clientAccounts') || '{}'),
...cookieAccounts,
};
if (!loginInfo.length) return;

const storedAccountsList = JSON.parse(localStorage.getItem('accountsList') || '{}');

Object.values(cookieAccounts).forEach(data => {
const accountData = data as { loginid?: string; token?: string };
if (accountData?.loginid && accountData?.token) {
storedAccountsList[accountData.loginid] = accountData.token;
}
});
try {
let cookieAccounts: Record<string, { loginid?: string; token?: string; currency?: string }> = {};
try {
cookieAccounts = JSON.parse(Cookies.get('client.accounts') || '{}');
} catch (error) {
console.error("Invalid JSON in 'client.accounts' cookie:", error);
}

if (!Object.keys(storedAccountsList).length) {
localStorage.setItem('accountsList', JSON.stringify(storedAccountsList));
}
const accountsList: Record<string, string> = {};
const clientAccounts: Record<string, { loginid: string; token: string; currency: string }> = {};

if (!Object.keys(storedClientAccounts).length) {
localStorage.setItem('clientAccounts', JSON.stringify(storedClientAccounts));
Object.values(cookieAccounts).forEach(({ loginid, token, currency }) => {
if (loginid && token) {
accountsList[loginid] = token;
clientAccounts[loginid] = { loginid, token, currency: currency || '' };
}
});

const defaultActiveAccount = URLUtils.getDefaultActiveAccount(loginInfo);
if (!defaultActiveAccount) return;
localStorage.setItem('accountsList', JSON.stringify(accountsList));
localStorage.setItem('clientAccounts', JSON.stringify(clientAccounts));

const accountsList: Record<string, string> = {};
const clientAccounts: Record<string, { loginid: string; token: string; currency: string }> = {};
const queryParams = new URLSearchParams(window.location.search);
const currencyType = queryParams.get('account') || loginInfo[0].currency;

loginInfo.forEach((account: { loginid: string; token: string; currency: string }) => {
accountsList[account.loginid] = account.token;
clientAccounts[account.loginid] = account;
});
const activeAccount =
Object.values(clientAccounts).find(acc => acc.currency === currencyType) ||
Object.values(clientAccounts)[0] ||
loginInfo[0];

localStorage.setItem('accountsList', JSON.stringify(accountsList));
localStorage.setItem('clientAccounts', JSON.stringify(clientAccounts));
URLUtils.filterSearchParams(paramsToDelete);
const api = await generateDerivApiInstance();
if (activeAccount) {
localStorage.setItem('authToken', activeAccount.token);
localStorage.setItem('active_loginid', activeAccount.loginid);
}

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;
}
URLUtils.filterSearchParams(paramsToDelete);
const api = await generateDerivApiInstance();

if (api && !activeAccount) {
const { authorize, error } = await api.authorize(loginInfo[0].token);
api.disconnect();
if (!error) {
const firstId = authorize?.account_list[0]?.loginid;
const filteredAccount = loginInfo.find(acc => acc.loginid === firstId);
if (filteredAccount) {
localStorage.setItem('authToken', filteredAccount.token);
localStorage.setItem('active_loginid', filteredAccount.loginid);
}
}

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

Expand Down

0 comments on commit d6d5efd

Please sign in to comment.