转账
This commit is contained in:
parent
ae4d97ed66
commit
854262186b
@ -398,6 +398,15 @@ var default_api = 'https://api.global-interaction.com/';
|
||||
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) {
|
||||
return request('/api/v1/salary-wallet/coin-sellers/search', {
|
||||
method: 'GET',
|
||||
|
||||
@ -224,16 +224,6 @@
|
||||
/>
|
||||
</div>
|
||||
</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>
|
||||
</section>
|
||||
|
||||
|
||||
@ -106,6 +106,7 @@
|
||||
|
||||
function normalizeIdentity(value) {
|
||||
value = String(value || '').trim().toUpperCase().replace(/-/g, '_');
|
||||
if (value === 'ADMIN') return 'BD_LEADER';
|
||||
if (['HOST', 'AGENCY', 'BD', 'BD_LEADER'].indexOf(value) >= 0)
|
||||
return value;
|
||||
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) {
|
||||
return new Promise(function (resolve) {
|
||||
window.setTimeout(function () {
|
||||
@ -241,6 +236,103 @@
|
||||
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) {
|
||||
return /^T[1-9A-HJ-NP-Za-km-z]{33}$/.test(String(value || '').trim());
|
||||
}
|
||||
@ -337,17 +429,6 @@
|
||||
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() {
|
||||
$('salaryHistoryTotal').textContent = '$' + money(state.balance);
|
||||
var list = $('salaryHistoryList');
|
||||
@ -415,7 +496,6 @@
|
||||
(!state.selectedPayee || transferRateMissing));
|
||||
button.textContent = activeSubmitLabel();
|
||||
button.disabled = disabled;
|
||||
renderTransferPreview();
|
||||
}
|
||||
|
||||
function normalizeAmount(event) {
|
||||
@ -445,10 +525,16 @@
|
||||
);
|
||||
var historyRequest = isMock
|
||||
? mockRequest('history')
|
||||
: Promise.resolve([]);
|
||||
: api() && api().history
|
||||
? api().history(identity, 30).then(normalizeHistoryItems)
|
||||
: Promise.resolve([]);
|
||||
historyRequest.then(function (items) {
|
||||
state.historyItems = items || [];
|
||||
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;
|
||||
}
|
||||
|
||||
.transfer-preview {
|
||||
margin-top: 12px;
|
||||
}
|
||||
|
||||
.search-payee-button:disabled {
|
||||
background: var(--button-disabled);
|
||||
color: var(--button-disabled-text);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user