import { createSlice, current } from "@reduxjs/toolkit"; const initial_state = { active_token: "", account_list: [], active_account_name: "", account_balance: {}, token_list: [], balance: 0, currency: "USD", is_virtual: false, login_id: "", total_deriv: {}, total_demo: {}, is_eu: false, is_logged: false, is_gd_logged_in: false, accounts: {}, }; export const clientSlice = createSlice({ name: "client", initialState: initial_state, reducers: { updateIsLogged: (state, action) => { state.is_logged = action.payload; }, resetClient: () => initial_state, updateActiveAccount: (state, action) => { state.active_account_name = action.payload.loginid; state.account_list = [...action.payload.account_list]; state.is_virtual = !!action.payload.is_virtual; state.currency = action.payload.currency; state.balance = action.payload.balance; }, updateActiveToken: (state, action) => { state.active_token = action.payload; }, updateBalance: (state, action) => { if (action.payload.loginid === state.active_account_name) { state.balance = action.payload.balance; state.currency = action.payload.currency; } if (action.payload.total?.deriv) { state.total_deriv = action.payload.total.deriv; } if (action.payload.accounts) { state.accounts = { ...action.payload.accounts }; return; } if (action.payload.loginid in current(state.accounts)) { const account = state.accounts[action.payload.loginid]; account.balance = action.payload.balance; state.account_balance = { ...state.account_balance, [action.payload.loginid]: account, }; } }, setGdLoggedIn: (state, action) => { state.is_gd_logged_in = action.payload; }, }, }); export const { updateIsLogged, resetClient, updateActiveToken, updateActiveAccount, updateBalance, setGdLoggedIn, } = clientSlice.actions; export default clientSlice.reducer;