Skip to content
Permalink
Browse files

[DDW-876] Merges-in chore/ddw-875-update-wallet-passphrase-v2-api-int…

…egration and fix conflicts
  • Loading branch information...
tomothespian committed Sep 11, 2019
2 parents f6a5ea8 + 4473042 commit 5213014e38633ef39577a6f89cd52bb544eadf0e
@@ -32,6 +32,7 @@ Changelog

### Chores

- Use improved `NumericInput` component of `React-Polymorph` v0.9.0 ([1511](https://github.com/input-output-hk/daedalus/pull/1511))
- Added minimum heights of main app window for different environments (Windows, Linux, MacOS) ([1485](https://github.com/input-output-hk/daedalus/pull/1485))
- Removed "Ada Redemption" feature ([PR 1510](https://github.com/input-output-hk/daedalus/pull/1510))
- Changed `themes:check` to `themes:check:createTheme` and added a 4 part "Theme Management in Daedalus" tutorial series to a README document in the themes directory ([PR 1525](https://github.com/input-output-hk/daedalus/pull/1525))
@@ -61,10 +61,10 @@ Feature: Send Money to Receiver
| title | amount |
| my transaction | <WRONG_AMOUNT> |
Then I should see the following error messages on the wallet send form:
| message |
| wallet.send.form.errors.invalidAmount |
| message |
| <ERROR> |

Examples:
| WRONG_AMOUNT |
| 45000000001 |
| 0 |
| WRONG_AMOUNT | ERROR |
| 99999999 | api.errors.NotEnoughFundsForTransactionError |
| 0 | wallet.send.form.errors.invalidAmount |
@@ -28,7 +28,7 @@ When(/^I open language selection dropdown$/, function() {

When(/^I select Japanese language$/, function() {
return this.waitAndClick(
'//*[@class="SimpleOptions_label"][contains(text(), "Japanese")]'
'//*[@class="SimpleOptions_option"]//*[contains(text(), "Japanese")]'
);
});

@@ -103,7 +103,7 @@ When(

When(/^I select "Strict" assurance level$/, function() {
return this.waitAndClick(
'//*[@class="SimpleOptions_label"][contains(text(), "Strict")]'
'//*[@class="SimpleOptions_option"]//*[contains(text(), "Strict")]'
);
});

@@ -178,7 +178,7 @@
"react-lottie": "1.2.3",
"react-markdown": "3.1.0",
"react-number-format": "3.0.3",
"react-polymorph": "0.8.7",
"react-polymorph": "0.9.0-rc.15",
"react-router": "3.2.1",
"react-svg-inline": "2.1.0",
"react-virtualized": "9.21.0",
@@ -17,16 +17,17 @@ export type RequestOptions = {
},
};

const ALLOWED_ERROR_EXCEPTION_PATHS = [
'/api/internal/next-update', // when nextAdaUpdate receives a 404, it isn't an error
];

function typedRequest<Response>(
httpOptions: RequestOptions,
queryParams?: {},
rawBodyParams?: any
// requestOptions?: { returnMeta: boolean }
): Promise<Response> {
return new Promise((resolve, reject) => {
const allowedErrorExceptionPaths = [
'/api/internal/next-update', // when nextAdaUpdate receives a 404, it isn't an error
];
const options: RequestOptions = Object.assign({}, httpOptions);
// const { returnMeta } = Object.assign({}, requestOptions);
let hasRequestBody = false;
@@ -69,13 +70,7 @@ function typedRequest<Response>(
}

// @API TODO: Delete once HTTPS is supported by the new API
const httpOnlyOptions = {
...options,
hostname: options.hostname,
method: options.method,
path: options.path,
port: options.port,
};
const httpOnlyOptions = omit(options, ['ca', 'cert', 'key']);

// @API TODO: Uncomment / switch once HTTPS is supported by the new API
// const httpsRequest = global.https.request(options);
@@ -96,12 +91,12 @@ function typedRequest<Response>(
response.on('end', () => {
try {
const { statusCode, statusMessage } = response;
const successResponse =
const isSuccessResponse =
(statusCode >= 200 && statusCode <= 206) ||
(statusCode === 404 &&
includes(allowedErrorExceptionPaths, options.path));
includes(ALLOWED_ERROR_EXCEPTION_PATHS, options.path));

if (successResponse) {
if (isSuccessResponse) {
const data =
statusCode === 404
? 'null'
@@ -116,16 +111,16 @@ function typedRequest<Response>(
}
resolve(JSON.parse(body));
} else if (body) {
// Error response with a body
const parsedBody = JSON.parse(body);
if (parsedBody.code && parsedBody.message) {
reject(parsedBody);
} else {
// TODO: find a way to record this case and report to the backend team
reject(new Error('Unknown response from backend.'));
reject(new Error('Unknown API response'));
}
} else {
// TODO: find a way to record this case and report to the backend team
reject(new Error('Unknown response from backend.'));
// Error response without a body
reject(new Error('Unknown API response'));
}
} catch (error) {
// Handle internal server errors (e.g. HTTP 500 - 'Something went wrong')
@@ -20,7 +20,6 @@ import globalMessages from '../../i18n/global-messages';
import WalletSendConfirmationDialog from './WalletSendConfirmationDialog';
import WalletSendConfirmationDialogContainer from '../../containers/wallet/dialogs/WalletSendConfirmationDialogContainer';
import {
formattedAmountToBigNumber,
formattedAmountToNaturalUnits,
formattedAmountToLovelace,
} from '../../utils/formatters';
@@ -207,17 +206,17 @@ export default class WalletSendForm extends Component<Props, State> {
placeholder: `0.${'0'.repeat(
this.props.currencyMaxFractionalDigits
)}`,
value: '',
value: null,
validators: [
async ({ field, form }) => {
const amountValue = field.value;
if (amountValue === '') {
if (field.value === null) {
this._resetTransactionFee();
return [
false,
this.context.intl.formatMessage(messages.fieldIsRequired),
];
}
const amountValue = field.value.toString();
const isValid = await this.props.validateAmount(
formattedAmountToNaturalUnits(amountValue)
);
@@ -252,7 +251,6 @@ export default class WalletSendForm extends Component<Props, State> {
const { intl } = this.context;
const {
currencyUnit,
currencyMaxIntegerDigits,
currencyMaxFractionalDigits,
isDialogOpen,
isRestoreActive,
@@ -267,7 +265,8 @@ export default class WalletSendForm extends Component<Props, State> {
const receiverField = form.$('receiver');
const receiverFieldProps = receiverField.bind();
const amountFieldProps = amountField.bind();
const amount = formattedAmountToBigNumber(amountFieldProps.value);

const amount = new BigNumber(amountFieldProps.value || 0);

let fees = null;
let total = null;
@@ -310,19 +309,21 @@ export default class WalletSendForm extends Component<Props, State> {
{...amountFieldProps}
className="amount"
label={intl.formatMessage(messages.amountLabel)}
maxBeforeDot={currencyMaxIntegerDigits}
maxAfterDot={currencyMaxFractionalDigits}
numberLocaleOptions={{
minimumFractionDigits: currencyMaxFractionalDigits,
}}
error={transactionFeeError || amountField.error}
onChange={value => {
this._isCalculatingFee = true;
amountField.onChange(value || '');
amountField.onChange(value);
}}
// AmountInputSkin props
currency={currencyUnit}
fees={fees}
total={total}
skin={AmountInputSkin}
onKeyPress={this.handleSubmitOnEnter}
allowSigns={false}
/>
</div>

@@ -339,7 +340,7 @@ export default class WalletSendForm extends Component<Props, State> {

{isDialogOpen(WalletSendConfirmationDialog) ? (
<WalletSendConfirmationDialogContainer
amount={amountFieldProps.value}
amount={amount.toFormat(currencyMaxFractionalDigits)}
receiver={receiverFieldProps.value}
totalAmount={total}
transactionFee={fees}
@@ -7460,167 +7460,167 @@
"description": "Label for the \"Title\" text input in the wallet send form.",
"end": {
"column": 3,
"line": 37
"line": 36
},
"file": "source/renderer/app/components/wallet/WalletSendForm.js",
"id": "wallet.send.form.title.label",
"start": {
"column": 14,
"line": 33
"line": 32
}
},
{
"defaultMessage": "!!!E.g: Money for Frank",
"description": "Hint inside the \"Receiver\" text input in the wallet send form.",
"end": {
"column": 3,
"line": 43
"line": 42
},
"file": "source/renderer/app/components/wallet/WalletSendForm.js",
"id": "wallet.send.form.title.hint",
"start": {
"column": 13,
"line": 38
"line": 37
}
},
{
"defaultMessage": "!!!Receiver",
"description": "Label for the \"Receiver\" text input in the wallet send form.",
"end": {
"column": 3,
"line": 48
"line": 47
},
"file": "source/renderer/app/components/wallet/WalletSendForm.js",
"id": "wallet.send.form.receiver.label",
"start": {
"column": 17,
"line": 44
"line": 43
}
},
{
"defaultMessage": "!!!Wallet Address",
"description": "Hint inside the \"Receiver\" text input in the wallet send form.",
"end": {
"column": 3,
"line": 54
"line": 53
},
"file": "source/renderer/app/components/wallet/WalletSendForm.js",
"id": "wallet.send.form.receiver.hint",
"start": {
"column": 16,
"line": 49
"line": 48
}
},
{
"defaultMessage": "!!!Amount",
"description": "Label for the \"Amount\" number input in the wallet send form.",
"end": {
"column": 3,
"line": 59
"line": 58
},
"file": "source/renderer/app/components/wallet/WalletSendForm.js",
"id": "wallet.send.form.amount.label",
"start": {
"column": 15,
"line": 55
"line": 54
}
},
{
"defaultMessage": "!!!Description",
"description": "Label for the \"description\" text area in the wallet send form.",
"end": {
"column": 3,
"line": 65
"line": 64
},
"file": "source/renderer/app/components/wallet/WalletSendForm.js",
"id": "wallet.send.form.description.label",
"start": {
"column": 20,
"line": 60
"line": 59
}
},
{
"defaultMessage": "!!!You can add a message if you want",
"description": "Hint in the \"description\" text area in the wallet send form.",
"end": {
"column": 3,
"line": 70
"line": 69
},
"file": "source/renderer/app/components/wallet/WalletSendForm.js",
"id": "wallet.send.form.description.hint",
"start": {
"column": 19,
"line": 66
"line": 65
}
},
{
"defaultMessage": "!!!Next",
"description": "Label for the next button on the wallet send form.",
"end": {
"column": 3,
"line": 75
"line": 74
},
"file": "source/renderer/app/components/wallet/WalletSendForm.js",
"id": "wallet.send.form.next",
"start": {
"column": 19,
"line": 71
"line": 70
}
},
{
"defaultMessage": "!!!Please enter a valid address.",
"description": "Error message shown when invalid address was entered.",
"end": {
"column": 3,
"line": 80
"line": 79
},
"file": "source/renderer/app/components/wallet/WalletSendForm.js",
"id": "wallet.send.form.errors.invalidAddress",
"start": {
"column": 18,
"line": 76
"line": 75
}
},
{
"defaultMessage": "!!!Please enter a valid amount.",
"description": "Error message shown when invalid amount was entered.",
"end": {
"column": 3,
"line": 85
"line": 84
},
"file": "source/renderer/app/components/wallet/WalletSendForm.js",
"id": "wallet.send.form.errors.invalidAmount",
"start": {
"column": 17,
"line": 81
"line": 80
}
},
{
"defaultMessage": "!!!Please enter a title with at least 3 characters.",
"description": "Error message shown when invalid transaction title was entered.",
"end": {
"column": 3,
"line": 91
"line": 90
},
"file": "source/renderer/app/components/wallet/WalletSendForm.js",
"id": "wallet.send.form.errors.invalidTitle",
"start": {
"column": 16,
"line": 86
"line": 85
}
},
{
"defaultMessage": "!!!This wallet is currently being synced with the blockchain. While synchronisation is in progress transacting is not possible and transaction history is not complete.",
"description": "Syncing transactions message shown during async wallet restore in the wallet send form.",
"end": {
"column": 3,
"line": 98
"line": 97
},
"file": "source/renderer/app/components/wallet/WalletSendForm.js",
"id": "wallet.send.form.syncingTransactionsMessage",
"start": {
"column": 30,
"line": 92
"line": 91
}
}
],

0 comments on commit 5213014

Please sign in to comment.
You can’t perform that action at this time.