转账
This commit is contained in:
parent
ae4d97ed66
commit
854262186b
@ -398,6 +398,15 @@ var default_api = 'https://api.global-interaction.com/';
|
|||||||
query: { identity: identity },
|
query: { identity: identity },
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
history: function (identity, limit) {
|
||||||
|
return request('/api/v1/salary-wallet/history', {
|
||||||
|
method: 'GET',
|
||||||
|
query: {
|
||||||
|
identity: identity,
|
||||||
|
page_size: limit || 30,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
searchCoinSeller: function (displayUserID, identity) {
|
searchCoinSeller: function (displayUserID, identity) {
|
||||||
return request('/api/v1/salary-wallet/coin-sellers/search', {
|
return request('/api/v1/salary-wallet/coin-sellers/search', {
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
|
|||||||
@ -224,16 +224,6 @@
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</label>
|
</label>
|
||||||
<div
|
|
||||||
class="exchange-preview transfer-preview"
|
|
||||||
id="transferPreview"
|
|
||||||
hidden
|
|
||||||
>
|
|
||||||
<span data-i18n="withdraw_exchange.estimated_coins"
|
|
||||||
>Estimated coins</span
|
|
||||||
>
|
|
||||||
<strong id="transferPreviewText"></strong>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|||||||
@ -106,6 +106,7 @@
|
|||||||
|
|
||||||
function normalizeIdentity(value) {
|
function normalizeIdentity(value) {
|
||||||
value = String(value || '').trim().toUpperCase().replace(/-/g, '_');
|
value = String(value || '').trim().toUpperCase().replace(/-/g, '_');
|
||||||
|
if (value === 'ADMIN') return 'BD_LEADER';
|
||||||
if (['HOST', 'AGENCY', 'BD', 'BD_LEADER'].indexOf(value) >= 0)
|
if (['HOST', 'AGENCY', 'BD', 'BD_LEADER'].indexOf(value) >= 0)
|
||||||
return value;
|
return value;
|
||||||
if (salaryAssetType === 'AGENCY_SALARY_USD') return 'AGENCY';
|
if (salaryAssetType === 'AGENCY_SALARY_USD') return 'AGENCY';
|
||||||
@ -163,12 +164,6 @@
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function estimatedTransferCoins(value) {
|
|
||||||
var rate = findTransferRate(value);
|
|
||||||
if (!rate) return 0;
|
|
||||||
return Math.round(Number(value || 0) * Number(rate.coin_per_usd || 0));
|
|
||||||
}
|
|
||||||
|
|
||||||
function delay(value) {
|
function delay(value) {
|
||||||
return new Promise(function (resolve) {
|
return new Promise(function (resolve) {
|
||||||
window.setTimeout(function () {
|
window.setTimeout(function () {
|
||||||
@ -241,6 +236,103 @@
|
|||||||
return 'Host salary';
|
return 'Host salary';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function firstValue(source, keys) {
|
||||||
|
if (!source) return '';
|
||||||
|
for (var i = 0; i < keys.length; i += 1) {
|
||||||
|
var value = source[keys[i]];
|
||||||
|
if (value !== undefined && value !== null && value !== '')
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
function timeLabelFromMS(value) {
|
||||||
|
var number = Number(value || 0);
|
||||||
|
if (!Number.isFinite(number) || number <= 0) return '';
|
||||||
|
var date = new Date(number);
|
||||||
|
if (Number.isNaN(date.getTime())) return '';
|
||||||
|
return (
|
||||||
|
date.getFullYear() +
|
||||||
|
'-' +
|
||||||
|
String(date.getMonth() + 1).padStart(2, '0') +
|
||||||
|
'-' +
|
||||||
|
String(date.getDate()).padStart(2, '0') +
|
||||||
|
' ' +
|
||||||
|
String(date.getHours()).padStart(2, '0') +
|
||||||
|
':' +
|
||||||
|
String(date.getMinutes()).padStart(2, '0')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function historyLabelForBizType(bizType, delta) {
|
||||||
|
if (bizType === 'salary_exchange_to_coin') {
|
||||||
|
return {
|
||||||
|
key: 'withdraw_exchange.history_exchange_to_golds',
|
||||||
|
title: 'Exchange to golds',
|
||||||
|
};
|
||||||
|
}
|
||||||
|
if (bizType === 'salary_transfer_to_coin_seller') {
|
||||||
|
return {
|
||||||
|
key: 'withdraw_exchange.transfer',
|
||||||
|
title: 'Transfer',
|
||||||
|
};
|
||||||
|
}
|
||||||
|
if (bizType === 'host_salary_settlement' || delta >= 0) {
|
||||||
|
return {
|
||||||
|
key: historyTitleKey(),
|
||||||
|
title: historyTitle(),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
key: 'withdraw_exchange.withdraw',
|
||||||
|
title: 'Withdraw',
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function normalizeHistoryItem(item, index) {
|
||||||
|
var delta = Number(
|
||||||
|
firstValue(item, ['available_delta', 'availableDelta'])
|
||||||
|
);
|
||||||
|
if (!Number.isFinite(delta)) delta = 0;
|
||||||
|
var balance = Number(
|
||||||
|
firstValue(item, ['available_after', 'availableAfter'])
|
||||||
|
);
|
||||||
|
if (!Number.isFinite(balance)) balance = 0;
|
||||||
|
var label = historyLabelForBizType(
|
||||||
|
String(firstValue(item, ['biz_type', 'bizType']) || ''),
|
||||||
|
delta
|
||||||
|
);
|
||||||
|
return {
|
||||||
|
id:
|
||||||
|
firstValue(item, ['transaction_id', 'transactionId']) ||
|
||||||
|
String(firstValue(item, ['entry_id', 'entryId']) || index),
|
||||||
|
key: label.key,
|
||||||
|
title: label.title,
|
||||||
|
amount: Math.abs(usdMinorToNumber(delta)),
|
||||||
|
balance: usdMinorToNumber(balance),
|
||||||
|
type: delta < 0 ? 1 : 0,
|
||||||
|
date: timeLabelFromMS(firstValue(item, ['created_at_ms', 'createdAtMs'])),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function normalizeHistoryItems(payload) {
|
||||||
|
var source = payload || {};
|
||||||
|
if (source.identity) identity = normalizeIdentity(source.identity);
|
||||||
|
if (source.salary_asset_type) {
|
||||||
|
salaryAssetType = source.salary_asset_type;
|
||||||
|
}
|
||||||
|
var items = Array.isArray(source.items)
|
||||||
|
? source.items
|
||||||
|
: Array.isArray(source.transactions)
|
||||||
|
? source.transactions
|
||||||
|
: Array.isArray(source)
|
||||||
|
? source
|
||||||
|
: [];
|
||||||
|
return items.map(function (item, index) {
|
||||||
|
return normalizeHistoryItem(item || {}, index);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function isValidTrc20(value) {
|
function isValidTrc20(value) {
|
||||||
return /^T[1-9A-HJ-NP-Za-km-z]{33}$/.test(String(value || '').trim());
|
return /^T[1-9A-HJ-NP-Za-km-z]{33}$/.test(String(value || '').trim());
|
||||||
}
|
}
|
||||||
@ -337,17 +429,6 @@
|
|||||||
updateSubmit();
|
updateSubmit();
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderTransferPreview() {
|
|
||||||
var preview = $('transferPreview');
|
|
||||||
if (!preview) return;
|
|
||||||
var value = inputs.transfer ? Number(inputs.transfer.value || 0) : 0;
|
|
||||||
var coins = estimatedTransferCoins(value);
|
|
||||||
preview.hidden = !(currentMode === 'transfer' && value > 0 && coins > 0);
|
|
||||||
if (!preview.hidden) {
|
|
||||||
$('transferPreviewText').textContent = coins.toLocaleString('en-US');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function renderHistory() {
|
function renderHistory() {
|
||||||
$('salaryHistoryTotal').textContent = '$' + money(state.balance);
|
$('salaryHistoryTotal').textContent = '$' + money(state.balance);
|
||||||
var list = $('salaryHistoryList');
|
var list = $('salaryHistoryList');
|
||||||
@ -415,7 +496,6 @@
|
|||||||
(!state.selectedPayee || transferRateMissing));
|
(!state.selectedPayee || transferRateMissing));
|
||||||
button.textContent = activeSubmitLabel();
|
button.textContent = activeSubmitLabel();
|
||||||
button.disabled = disabled;
|
button.disabled = disabled;
|
||||||
renderTransferPreview();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function normalizeAmount(event) {
|
function normalizeAmount(event) {
|
||||||
@ -445,10 +525,16 @@
|
|||||||
);
|
);
|
||||||
var historyRequest = isMock
|
var historyRequest = isMock
|
||||||
? mockRequest('history')
|
? mockRequest('history')
|
||||||
: Promise.resolve([]);
|
: api() && api().history
|
||||||
|
? api().history(identity, 30).then(normalizeHistoryItems)
|
||||||
|
: Promise.resolve([]);
|
||||||
historyRequest.then(function (items) {
|
historyRequest.then(function (items) {
|
||||||
state.historyItems = items || [];
|
state.historyItems = items || [];
|
||||||
renderHistory();
|
renderHistory();
|
||||||
|
}).catch(function (err) {
|
||||||
|
state.historyItems = [];
|
||||||
|
renderHistory();
|
||||||
|
toast(err && err.message ? err.message : t('withdraw_exchange.load_failed', 'Load failed. Try again later.'));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -402,10 +402,6 @@ input {
|
|||||||
font-weight: 950;
|
font-weight: 950;
|
||||||
}
|
}
|
||||||
|
|
||||||
.transfer-preview {
|
|
||||||
margin-top: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.search-payee-button:disabled {
|
.search-payee-button:disabled {
|
||||||
background: var(--button-disabled);
|
background: var(--button-disabled);
|
||||||
color: var(--button-disabled-text);
|
color: var(--button-disabled-text);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user