* Support CCTP and noble auto deposits on testnet * slippage * fix fees * update isCctp, and comments * bump packages * cctp.json * Bump abacus * fix error * fix loading button
64 lines
1.7 KiB
TypeScript
64 lines
1.7 KiB
TypeScript
import { createSlice, type PayloadAction } from '@reduxjs/toolkit';
|
|
import assign from 'lodash/assign';
|
|
|
|
import type {
|
|
InputError,
|
|
Inputs,
|
|
Nullable,
|
|
TradeInputs,
|
|
ClosePositionInputs,
|
|
TransferInputs,
|
|
} from '@/constants/abacus';
|
|
|
|
import { CLEARED_SIZE_INPUTS, CLEARED_TRADE_INPUTS } from '@/constants/trade';
|
|
|
|
type TradeFormInputs = typeof CLEARED_TRADE_INPUTS & typeof CLEARED_SIZE_INPUTS;
|
|
|
|
export interface InputsState {
|
|
current?: Nullable<string>;
|
|
inputErrors?: Nullable<InputError[]>;
|
|
tradeFormInputs: TradeFormInputs;
|
|
tradeInputs?: Nullable<TradeInputs>;
|
|
closePositionInputs?: Nullable<ClosePositionInputs>;
|
|
transferInputs?: Nullable<TransferInputs>;
|
|
}
|
|
|
|
const initialState: InputsState = {
|
|
current: undefined,
|
|
inputErrors: undefined,
|
|
tradeFormInputs: {
|
|
...CLEARED_TRADE_INPUTS,
|
|
...CLEARED_SIZE_INPUTS,
|
|
},
|
|
tradeInputs: undefined,
|
|
transferInputs: undefined,
|
|
};
|
|
|
|
export const inputsSlice = createSlice({
|
|
name: 'Inputs',
|
|
initialState,
|
|
reducers: {
|
|
setInputs: (state, action: PayloadAction<Nullable<Inputs>>) => {
|
|
const { current, errors, trade, closePosition, transfer } = action.payload || {};
|
|
|
|
return {
|
|
...state,
|
|
current: current?.rawValue,
|
|
inputErrors: errors?.toArray(),
|
|
tradeInputs: trade,
|
|
closePositionInputs: closePosition,
|
|
transferInputs: {
|
|
...transfer,
|
|
isCctp: !!transfer?.isCctp,
|
|
} as Nullable<TransferInputs>,
|
|
};
|
|
},
|
|
|
|
setTradeFormInputs: (state, action: PayloadAction<Partial<TradeFormInputs>>) => {
|
|
state.tradeFormInputs = assign({}, state.tradeFormInputs, action.payload);
|
|
},
|
|
},
|
|
});
|
|
|
|
export const { setInputs, setTradeFormInputs } = inputsSlice.actions;
|