mirror of
https://github.com/status-im/MyCrypto.git
synced 2025-01-14 21:14:23 +00:00
985ea0fb89
* [FEATURE] Initial EAC integration. * Title and explanation * [FEATURE] Move the Schedule Payment to the main tab. * [FEATURE] TimeBounty slider. * [FEATURE] Move to main menu. * [FEATURE] Redirection to the DApp for details. * [FEATURE] Timestamp scheduling * Scheduling: Basic date and time widget * Linting fixes * Moved the datetime field to new tab * Fixed push errors * Added missing specs * Undid unintentional UI change * Fixed some failing tests * Ignore datetime parameter when checking if a transaction is full * Added a date selector widget and renamed ScheduleTimestamp to ScheduleDate * Marked componentDidMount * Initialized Pikaday * Revert "Initialized Pikaday" This reverts commit 4e5bf5b2b882f236f5977400abf9b7092cbd1592. * Revert "Marked componentDidMount" This reverts commit 85d52192ac58f4b6ca9219e702f7390cd27e582f. * Revert "Added a date selector widget and renamed ScheduleTimestamp to ScheduleDate" This reverts commit aaad0ac9b565a78d1bfc631754160919fd38a59b. * Converted the date picker into a datetime picker * Added decent styling to the datetimepicker * Added validation to the datetime picker * Fixed prepush errors for scheduling timestamp * Adjusted validation logic scheduling timestamp * [FEATURE] Move scheduling to main tab. * [FEATURE] Timezone selector * [FEATURE] Scheduling: Timezone selector * Removed zombie files * [FEATURE] Reimplement Time Bounty. * [FEATURE] Time/block selector * [FEATURE] Add Window Size field. * [FEATURE] Time/block switch functionality * Implemented time/block switcher fuctionality * [FEATURE] Add Schedule Gas Price field. * [FEATURE] Scheduling toggle * [FEATURE] Add basic styling and network check. * [FEATURE] Add Schedule Gas Limit field * [FEATURE] "Scheduled" button styling * Reordered, renamed and centered scheduling elements * Added the toggle button styling * Class -> ClassName * [FEATURE] Add Deposit field * [FEATURE] Move scheduling code into one directory * [FIX] Scheduling responsiveness * [FIX] Datetime picker not working on md screens * [FEATURE] Timestamp Scheduling basic functionality * [FIX] Fix data serialization. * [FEATURE] Timezone inclusion * [FEATURE] Add ChronoLogic logo. * [FEATURE] Add link to image. * [FIX] Update CSS of logo. * [FEATURE] Default Window Size * [FEATURE] Modified Help component to enable acting as a tooltip * [FEATURE] Call contract to validate scheduling params * [FIX] Change moment import to fix tests * [FEATURE] Gas estimation for scheduling * [FEATURE] Additional validation * [FEATURE] UI changes and descriptions * [FEATURE] Add tooltip to window and fix fee display. * [FIX] Fix ethereumjs-abi dependency. * [FEATURE] Hide scheduling when sending tokens. * [FIX] Improved styling datetime picker * [FEATURE] Add Redux state for scheduling * [FEATURE] Create Toggle component, Share code between components * [FEATURE] Use Tooltip component for help. * [FEATURE] Better datetime picker * [FEATURE] Remove fee * Trigger mycryptobuild * [FIX] Timestamp scheduling - Validation match * [FIX] EAC integration touchups * [FIX] Code review fixes * [FIX] Window Size type * [FIX] Type fixes. * [FIX] Make tooltips only show on icons + resposiveness fixes * [FIX] Break tooltips into more lines * [FIX] Remove unnecessary code. * [FIX] Remove unnecessary code. * [FIX] Remove unnecessary types declaration. * [FIX] Fee class names
63 lines
2.3 KiB
TypeScript
63 lines
2.3 KiB
TypeScript
import { call, put, takeEvery, takeLatest } from 'redux-saga/effects';
|
|
import { SagaIterator, delay } from 'redux-saga';
|
|
import {
|
|
inputGasPrice,
|
|
setDataField,
|
|
setGasLimitField,
|
|
setGasPriceField,
|
|
setNonceField
|
|
} from 'actions/transaction/actionCreators';
|
|
import {
|
|
InputDataAction,
|
|
InputGasLimitAction,
|
|
InputGasPriceAction,
|
|
InputGasPriceIntentAction,
|
|
InputNonceAction,
|
|
TypeKeys
|
|
} from 'actions/transaction';
|
|
import { isValidHex, isValidNonce, gasPriceValidator, gasLimitValidator } from 'libs/validators';
|
|
import { Data, Wei, Nonce, gasPriceToBase } from 'libs/units';
|
|
|
|
const SLIDER_DEBOUNCE_INPUT_DELAY = 300;
|
|
|
|
export function* handleDataInput({ payload }: InputDataAction): SagaIterator {
|
|
const validData: boolean = yield call(isValidHex, payload);
|
|
yield put(setDataField({ raw: payload, value: validData ? Data(payload) : null }));
|
|
}
|
|
|
|
export function* handleGasLimitInput({ payload }: InputGasLimitAction): SagaIterator {
|
|
const validGasLimit: boolean = yield call(gasLimitValidator, payload);
|
|
yield put(setGasLimitField({ raw: payload, value: validGasLimit ? Wei(payload) : null }));
|
|
}
|
|
|
|
export function* handleGasPriceInput({ payload }: InputGasPriceAction): SagaIterator {
|
|
const priceFloat = parseFloat(payload);
|
|
const validGasPrice: boolean = yield call(gasPriceValidator, priceFloat);
|
|
yield put(
|
|
setGasPriceField({
|
|
raw: payload,
|
|
value: validGasPrice ? gasPriceToBase(priceFloat) : Wei('0')
|
|
})
|
|
);
|
|
}
|
|
|
|
export function* handleGasPriceInputIntent({ payload }: InputGasPriceIntentAction): SagaIterator {
|
|
yield call(delay, SLIDER_DEBOUNCE_INPUT_DELAY);
|
|
// Important to put and not fork handleGasPriceInput, we want
|
|
// action to go to reducers.
|
|
yield put(inputGasPrice(payload));
|
|
}
|
|
|
|
export function* handleNonceInput({ payload }: InputNonceAction): SagaIterator {
|
|
const validNonce: boolean = yield call(isValidNonce, payload);
|
|
yield put(setNonceField({ raw: payload, value: validNonce ? Nonce(payload) : null }));
|
|
}
|
|
|
|
export const fields = [
|
|
takeEvery(TypeKeys.DATA_FIELD_INPUT, handleDataInput),
|
|
takeEvery(TypeKeys.GAS_LIMIT_INPUT, handleGasLimitInput),
|
|
takeEvery(TypeKeys.GAS_PRICE_INPUT, handleGasPriceInput),
|
|
takeEvery(TypeKeys.NONCE_INPUT, handleNonceInput),
|
|
takeLatest(TypeKeys.GAS_PRICE_INPUT_INTENT, handleGasPriceInputIntent)
|
|
];
|