nexushub-commands 2.6.0 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commands/deposit/Deposit.command.js +3 -2
- package/lib/commands/deposit/GetDepositOrder.command.js +3 -2
- package/lib/convert.js +17 -8
- package/package.json +1 -1
- package/src/commands/deposit/Deposit.command.ts +32 -28
- package/src/commands/deposit/GetDepositOrder.command.ts +7 -6
- package/src/convert.ts +50 -42
|
@@ -125,7 +125,7 @@ let DepositCommand = DepositCommand_1 = class DepositCommand extends evogram_1.C
|
|
|
125
125
|
message: order.card ?
|
|
126
126
|
`<b>💳 Реквизиты:</b> <code>${maskExceptLast4(order.card.requisites)}</code>\n` +
|
|
127
127
|
`<b>👩🏻💼 Получатель:</b> ${order.card.holder || '-'}`
|
|
128
|
-
: '',
|
|
128
|
+
: order.qrcode ? '<b>📸 Метод:</b> QR-code' : '',
|
|
129
129
|
keyboard: [[{ text: '🚀 Оплатить счет', callback_data: `PaidOrderCommand?orderId=${order.id}` }]],
|
|
130
130
|
}, {
|
|
131
131
|
thumbnail: 'https://i.ibb.co/MDrGBbQR/image.png',
|
|
@@ -343,6 +343,7 @@ tslib_1.__decorate([
|
|
|
343
343
|
const keyboard = [
|
|
344
344
|
buttons.slice(0, 3), // Первый ряд
|
|
345
345
|
buttons.slice(3, 6), // Второй ряд
|
|
346
|
+
[{ text: 'Своя сумма', command: DepositCommand, payload: Object.assign(Object.assign({}, args), { suggestedDepositAmounts: false }) }],
|
|
346
347
|
].filter((row) => row.length > 0); // Убираем пустые ряды
|
|
347
348
|
return (yield context.sendFormattedQuestion({
|
|
348
349
|
//@ts-ignore
|
|
@@ -352,7 +353,7 @@ tslib_1.__decorate([
|
|
|
352
353
|
error: error === null || error === void 0 ? void 0 : error.message,
|
|
353
354
|
}, {
|
|
354
355
|
reply_markup: {
|
|
355
|
-
inline_keyboard: keyboard,
|
|
356
|
+
inline_keyboard: args.suggestedDepositAmounts === false ? undefined : keyboard,
|
|
356
357
|
},
|
|
357
358
|
})).text;
|
|
358
359
|
}),
|
|
@@ -25,6 +25,7 @@ let GetDepositOrderCommand = class GetDepositOrderCommand extends evogram_1.Comm
|
|
|
25
25
|
{
|
|
26
26
|
title: 'ℹ️ Информация о счете',
|
|
27
27
|
data: [
|
|
28
|
+
['ID', `{{ ${order.id} }}`],
|
|
28
29
|
['Сумма', `{{ ${Number(order.amount).toLocaleString('ru')} ${order.currency} }}`],
|
|
29
30
|
['Дата', `{{ ${new Date().toLocaleString('ru')} }}`],
|
|
30
31
|
],
|
|
@@ -49,7 +50,7 @@ let GetDepositOrderCommand = class GetDepositOrderCommand extends evogram_1.Comm
|
|
|
49
50
|
body: [
|
|
50
51
|
{
|
|
51
52
|
title: 'ℹ️ Информация о реквизитах',
|
|
52
|
-
data: [['Реквизиты', `{{ ${order.card.requisites} }}`], order.card.bank && ['Банк', `{{ ${order.card.bank} }}`], order.card.holder && ['Получатель', `{{ ${order.card.holder} }}`], ['Сумма оплаты', `{{ ${Number(order.amount).toLocaleString('ru')} ${order.currency} }}`]],
|
|
53
|
+
data: [['ID', `{{ ${order.id} }}`], ['Реквизиты', `{{ ${order.card.requisites} }}`], order.card.bank && ['Банк', `{{ ${order.card.bank} }}`], order.card.holder && ['Получатель', `{{ ${order.card.holder} }}`], ['Сумма оплаты', `{{ ${Number(order.amount).toLocaleString('ru')} ${order.currency} }}`]],
|
|
53
54
|
},
|
|
54
55
|
],
|
|
55
56
|
footer: '<i>Реквизиты действительны 10 минут.</i>',
|
|
@@ -69,7 +70,7 @@ let GetDepositOrderCommand = class GetDepositOrderCommand extends evogram_1.Comm
|
|
|
69
70
|
designImages: order.qrcode.qrcode ? undefined : ['deposit-qrcode', 'deposit'],
|
|
70
71
|
photo: order.qrcode.qrcode || config.images.deposit,
|
|
71
72
|
// prettier-ignore
|
|
72
|
-
header:
|
|
73
|
+
header: `<blockquote><b>📥 Создана заявка на пополнение [ID {{ ${order.id} }}]</b></blockquote>` +
|
|
73
74
|
(!order.qrcode.link ? '\n\n<b>Сохраните данный QR-код на устройство и загрузите его в приложение банка для оплаты.</b>' : ''),
|
|
74
75
|
footer: `<i>Заявка действительна ${Math.ceil((new Date(order.expiresAt).getTime() - new Date().getTime()) / 60000)} минут.</i>`,
|
|
75
76
|
}, {
|
package/lib/convert.js
CHANGED
|
@@ -24,6 +24,19 @@ Number.prototype.convert = function (params) {
|
|
|
24
24
|
const { to = 'RUB', from = 'RUB', round, ceiled } = params;
|
|
25
25
|
const fromCurrency = from.toUpperCase();
|
|
26
26
|
const currency = to.toUpperCase();
|
|
27
|
+
if (fromCurrency === 'TRX') {
|
|
28
|
+
const rates = yield CoinBase_service_1.CoinBaseService.getInstance().getRates(fromCurrency);
|
|
29
|
+
const targetRate = rates[currency];
|
|
30
|
+
let convertedAmount = this * Number(targetRate);
|
|
31
|
+
if (!convertedAmount)
|
|
32
|
+
convertedAmount = this;
|
|
33
|
+
if (round)
|
|
34
|
+
convertedAmount = Math.round(convertedAmount);
|
|
35
|
+
else if (ceiled)
|
|
36
|
+
convertedAmount = Math.ceil(convertedAmount);
|
|
37
|
+
//@ts-ignore
|
|
38
|
+
return new ConvertedNumber(convertedAmount, `${convertedAmount.toLocaleString('ru', { maximumFractionDigits: 2 })} ${currency}`);
|
|
39
|
+
}
|
|
27
40
|
if (currency === 'RUB' && fromCurrency === 'RUB') {
|
|
28
41
|
const value = round ? Math.round(this) : ceiled ? Math.ceil(this) : this;
|
|
29
42
|
//@ts-ignore
|
|
@@ -35,12 +48,10 @@ Number.prototype.convert = function (params) {
|
|
|
35
48
|
let convertedAmount = this * Number(targetRate);
|
|
36
49
|
if (!convertedAmount)
|
|
37
50
|
convertedAmount = this;
|
|
38
|
-
if (round)
|
|
51
|
+
if (round)
|
|
39
52
|
convertedAmount = Math.round(convertedAmount);
|
|
40
|
-
|
|
41
|
-
else if (ceiled) {
|
|
53
|
+
else if (ceiled)
|
|
42
54
|
convertedAmount = Math.ceil(convertedAmount);
|
|
43
|
-
}
|
|
44
55
|
//@ts-ignore
|
|
45
56
|
return new ConvertedNumber(convertedAmount, `${convertedAmount.toLocaleString('ru', { maximumFractionDigits: 2 })} ${currency}`);
|
|
46
57
|
}
|
|
@@ -49,12 +60,10 @@ Number.prototype.convert = function (params) {
|
|
|
49
60
|
let convertedAmount = this * Number(targetRate);
|
|
50
61
|
if (!convertedAmount)
|
|
51
62
|
convertedAmount = this;
|
|
52
|
-
if (round)
|
|
63
|
+
if (round)
|
|
53
64
|
convertedAmount = Math.round(convertedAmount);
|
|
54
|
-
|
|
55
|
-
else if (ceiled) {
|
|
65
|
+
else if (ceiled)
|
|
56
66
|
convertedAmount = Math.ceil(convertedAmount);
|
|
57
|
-
}
|
|
58
67
|
//@ts-ignore
|
|
59
68
|
return new ConvertedNumber(convertedAmount, `${convertedAmount.toLocaleString('ru', { maximumFractionDigits: 2 })} ${targetRate ? currency : 'RUB'}`);
|
|
60
69
|
});
|
package/package.json
CHANGED
|
@@ -49,7 +49,7 @@ export class DepositCommand extends Command {
|
|
|
49
49
|
reply_markup: {
|
|
50
50
|
inline_keyboard: [...(allowedMethods.includes('card') ? [[{ text: '💳 Банковская карта', command: DepositCommand, payload: { method: 'card' } }]] : []), [{ text: '🪙 Криптовалюта', command: DepositCommand, payload: { method: 'cryptowallet' } }], [{ text: '🎫 Промокод', command: DepositByPromocodeCommand }]],
|
|
51
51
|
},
|
|
52
|
-
}
|
|
52
|
+
},
|
|
53
53
|
)
|
|
54
54
|
} else if (value === 'cryptowallet') {
|
|
55
55
|
await context.sendFormatted(
|
|
@@ -67,7 +67,7 @@ export class DepositCommand extends Command {
|
|
|
67
67
|
],
|
|
68
68
|
],
|
|
69
69
|
},
|
|
70
|
-
}
|
|
70
|
+
},
|
|
71
71
|
)
|
|
72
72
|
}
|
|
73
73
|
})
|
|
@@ -97,7 +97,7 @@ export class DepositCommand extends Command {
|
|
|
97
97
|
},
|
|
98
98
|
]),
|
|
99
99
|
},
|
|
100
|
-
}
|
|
100
|
+
},
|
|
101
101
|
)
|
|
102
102
|
} else {
|
|
103
103
|
const wallets = await config.API.get(`/crypto/coins/${value}/wallets`).then((x) => x.data)
|
|
@@ -122,7 +122,7 @@ export class DepositCommand extends Command {
|
|
|
122
122
|
},
|
|
123
123
|
]),
|
|
124
124
|
},
|
|
125
|
-
}
|
|
125
|
+
},
|
|
126
126
|
)
|
|
127
127
|
}
|
|
128
128
|
})
|
|
@@ -236,6 +236,7 @@ export class DepositCommand extends Command {
|
|
|
236
236
|
const keyboard = [
|
|
237
237
|
buttons.slice(0, 3), // Первый ряд
|
|
238
238
|
buttons.slice(3, 6), // Второй ряд
|
|
239
|
+
[{ text: 'Своя сумма', command: DepositCommand, payload: { ...args, suggestedDepositAmounts: false } }],
|
|
239
240
|
].filter((row) => row.length > 0) // Убираем пустые ряды
|
|
240
241
|
|
|
241
242
|
return (
|
|
@@ -249,9 +250,9 @@ export class DepositCommand extends Command {
|
|
|
249
250
|
},
|
|
250
251
|
{
|
|
251
252
|
reply_markup: {
|
|
252
|
-
inline_keyboard: keyboard,
|
|
253
|
+
inline_keyboard: args.suggestedDepositAmounts === false ? undefined : keyboard,
|
|
253
254
|
},
|
|
254
|
-
}
|
|
255
|
+
},
|
|
255
256
|
)
|
|
256
257
|
).text
|
|
257
258
|
},
|
|
@@ -277,9 +278,9 @@ export class DepositCommand extends Command {
|
|
|
277
278
|
if (Number(value) < Number(validateArgs.minAmount)) throw new Error(`Минимальная сумма пополнения: ${Number(validateArgs.minAmount).toLocaleString('ru')} ${config.currency}`)
|
|
278
279
|
|
|
279
280
|
return value
|
|
280
|
-
}
|
|
281
|
+
},
|
|
281
282
|
)
|
|
282
|
-
deposit: number
|
|
283
|
+
deposit: number,
|
|
283
284
|
) {
|
|
284
285
|
const config = Client.config(context)
|
|
285
286
|
let interval: NodeJS.Timeout
|
|
@@ -362,7 +363,7 @@ export class DepositCommand extends Command {
|
|
|
362
363
|
reply_markup: {
|
|
363
364
|
inline_keyboard: [[{ text: `💸 Пополнить на ${await minAmount.convert({ from: 'RUB', to: config.currency })}`, command: DepositCommand, payload: { method: 'card', deposit: minAmount } }]],
|
|
364
365
|
},
|
|
365
|
-
}
|
|
366
|
+
},
|
|
366
367
|
)
|
|
367
368
|
}
|
|
368
369
|
}
|
|
@@ -378,7 +379,7 @@ export class DepositCommand extends Command {
|
|
|
378
379
|
reply_markup: {
|
|
379
380
|
inline_keyboard: [[{ text: '👩💻 Поддержка', url: `t.me/${config.support.username}` }]],
|
|
380
381
|
},
|
|
381
|
-
}
|
|
382
|
+
},
|
|
382
383
|
)
|
|
383
384
|
}
|
|
384
385
|
|
|
@@ -391,7 +392,7 @@ export class DepositCommand extends Command {
|
|
|
391
392
|
from: order.currency,
|
|
392
393
|
to: 'RUB',
|
|
393
394
|
ceiled: true,
|
|
394
|
-
|
|
395
|
+
})})`
|
|
395
396
|
: ``
|
|
396
397
|
}`,
|
|
397
398
|
{
|
|
@@ -400,12 +401,12 @@ export class DepositCommand extends Command {
|
|
|
400
401
|
order.card ?
|
|
401
402
|
`<b>💳 Реквизиты:</b> <code>${maskExceptLast4(order.card.requisites)}</code>\n` +
|
|
402
403
|
`<b>👩🏻💼 Получатель:</b> ${order.card.holder || '-'}`
|
|
403
|
-
: '',
|
|
404
|
+
: order.qrcode ? '<b>📸 Метод:</b> QR-code' : '',
|
|
404
405
|
keyboard: [[{ text: '🚀 Оплатить счет', callback_data: `PaidOrderCommand?orderId=${order.id}` }]],
|
|
405
406
|
},
|
|
406
407
|
{
|
|
407
408
|
thumbnail: 'https://i.ibb.co/MDrGBbQR/image.png',
|
|
408
|
-
}
|
|
409
|
+
},
|
|
409
410
|
)
|
|
410
411
|
|
|
411
412
|
if (Number(deposit) !== Number(order.amount) && method !== 'cryptoWallet') {
|
|
@@ -418,26 +419,29 @@ export class DepositCommand extends Command {
|
|
|
418
419
|
reply_markup: {
|
|
419
420
|
inline_keyboard: [[{ text: '📖 Да, я все понял, продолжить', command: GetDepositOrderCommand, payload: { orderId: order.id } }]],
|
|
420
421
|
},
|
|
421
|
-
}
|
|
422
|
+
},
|
|
422
423
|
)
|
|
423
424
|
}
|
|
424
425
|
|
|
425
|
-
setTimeout(
|
|
426
|
-
|
|
427
|
-
|
|
426
|
+
setTimeout(
|
|
427
|
+
async () => {
|
|
428
|
+
const neworder = await config.API.get(`/orders/${order.id}`).then((x) => x.data)
|
|
429
|
+
if (['paid', 'fakepaid'].includes(neworder.status) || neworder.cheque) return
|
|
428
430
|
|
|
429
|
-
|
|
430
|
-
|
|
431
|
+
const msgInfo = await context.client.database.config.get(`order${order.id}`)
|
|
432
|
+
if (!msgInfo) return
|
|
431
433
|
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
434
|
+
context.client.api.deleteMessage({ chat_id: msgInfo.value.chatId, message_id: msgInfo.value.messageId })
|
|
435
|
+
context.sendFormatted({
|
|
436
|
+
designImages: ['deposit-time-expired', 'deposit'],
|
|
437
|
+
header: `<blockquote><b>⚠️ Время на оплату истекло</b></blockquote>\n\n<i>Мы не получили пополнение по нашим реквизитам. Они больше недоступны для пополнения</i>\n\n<b>ℹ️ Если Вы оплатили, а система не определила Ваш перевод - <a href="t.me/${context.mirror.projectMirror.design.supportBot?.username}">обратитесь в тех. поддержку</a></b>`,
|
|
438
|
+
reply_markup: {
|
|
439
|
+
inline_keyboard: [[{ text: '🔄 Проверить оплату', command: CheckPaidOrderCommand, payload: { orderId: order.id } }]],
|
|
440
|
+
},
|
|
441
|
+
})
|
|
442
|
+
},
|
|
443
|
+
new Date(order.expiresAt).getTime() - new Date().getTime(),
|
|
444
|
+
)
|
|
441
445
|
}
|
|
442
446
|
|
|
443
447
|
context.redirect(GetDepositOrderCommand, { orderId: order.id, repeat: order.isRepeat })
|
|
@@ -25,6 +25,7 @@ export class GetDepositOrderCommand extends Command {
|
|
|
25
25
|
{
|
|
26
26
|
title: 'ℹ️ Информация о счете',
|
|
27
27
|
data: [
|
|
28
|
+
['ID', `{{ ${order.id} }}`],
|
|
28
29
|
['Сумма', `{{ ${Number(order.amount).toLocaleString('ru')} ${order.currency} }}`],
|
|
29
30
|
['Дата', `{{ ${new Date().toLocaleString('ru')} }}`],
|
|
30
31
|
],
|
|
@@ -40,7 +41,7 @@ export class GetDepositOrderCommand extends Command {
|
|
|
40
41
|
reply_markup: {
|
|
41
42
|
inline_keyboard: [[{ text: '🔗 Перейти к оплате', url: order.cryptoBot.url }], [{ text: '🔄 Проверить оплату', command: CheckPaidOrderCommand, payload: { orderId: order.id } }]],
|
|
42
43
|
},
|
|
43
|
-
}
|
|
44
|
+
},
|
|
44
45
|
)
|
|
45
46
|
|
|
46
47
|
break
|
|
@@ -53,7 +54,7 @@ export class GetDepositOrderCommand extends Command {
|
|
|
53
54
|
body: [
|
|
54
55
|
{
|
|
55
56
|
title: 'ℹ️ Информация о реквизитах',
|
|
56
|
-
data: [['Реквизиты', `{{ ${order.card.requisites} }}`], order.card.bank && ['Банк', `{{ ${order.card.bank} }}`], order.card.holder && ['Получатель', `{{ ${order.card.holder} }}`], ['Сумма оплаты', `{{ ${Number(order.amount).toLocaleString('ru')} ${order.currency} }}`]],
|
|
57
|
+
data: [['ID', `{{ ${order.id} }}`], ['Реквизиты', `{{ ${order.card.requisites} }}`], order.card.bank && ['Банк', `{{ ${order.card.bank} }}`], order.card.holder && ['Получатель', `{{ ${order.card.holder} }}`], ['Сумма оплаты', `{{ ${Number(order.amount).toLocaleString('ru')} ${order.currency} }}`]],
|
|
57
58
|
},
|
|
58
59
|
],
|
|
59
60
|
footer: '<i>Реквизиты действительны 10 минут.</i>',
|
|
@@ -67,7 +68,7 @@ export class GetDepositOrderCommand extends Command {
|
|
|
67
68
|
],
|
|
68
69
|
],
|
|
69
70
|
},
|
|
70
|
-
}
|
|
71
|
+
},
|
|
71
72
|
)
|
|
72
73
|
break
|
|
73
74
|
case 'qrcode':
|
|
@@ -77,7 +78,7 @@ export class GetDepositOrderCommand extends Command {
|
|
|
77
78
|
photo: order.qrcode.qrcode || config.images.deposit,
|
|
78
79
|
// prettier-ignore
|
|
79
80
|
header:
|
|
80
|
-
|
|
81
|
+
`<blockquote><b>📥 Создана заявка на пополнение [ID {{ ${order.id} }}]</b></blockquote>` +
|
|
81
82
|
|
|
82
83
|
(!order.qrcode.link ? '\n\n<b>Сохраните данный QR-код на устройство и загрузите его в приложение банка для оплаты.</b>' : ''),
|
|
83
84
|
footer: `<i>Заявка действительна ${Math.ceil((new Date(order.expiresAt).getTime() - new Date().getTime()) / 60000)} минут.</i>`,
|
|
@@ -92,7 +93,7 @@ export class GetDepositOrderCommand extends Command {
|
|
|
92
93
|
],
|
|
93
94
|
],
|
|
94
95
|
},
|
|
95
|
-
}
|
|
96
|
+
},
|
|
96
97
|
)
|
|
97
98
|
break
|
|
98
99
|
case 'crypto':
|
|
@@ -122,7 +123,7 @@ export class GetDepositOrderCommand extends Command {
|
|
|
122
123
|
],
|
|
123
124
|
],
|
|
124
125
|
},
|
|
125
|
-
}
|
|
126
|
+
},
|
|
126
127
|
)
|
|
127
128
|
break
|
|
128
129
|
}
|
package/src/convert.ts
CHANGED
|
@@ -1,91 +1,99 @@
|
|
|
1
|
-
import { CoinBaseService } from './utils/CoinBase.service'
|
|
1
|
+
import { CoinBaseService } from './utils/CoinBase.service'
|
|
2
2
|
|
|
3
3
|
interface ConvertParams {
|
|
4
|
-
from?: string
|
|
5
|
-
to: string
|
|
6
|
-
round?: boolean
|
|
7
|
-
ceiled?: boolean
|
|
4
|
+
from?: string
|
|
5
|
+
to: string
|
|
6
|
+
round?: boolean
|
|
7
|
+
ceiled?: boolean
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
interface CurrencyConverter {
|
|
11
|
-
convert(params: ConvertParams): Promise<number
|
|
11
|
+
convert(params: ConvertParams): Promise<number>
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
class ConvertedNumber {
|
|
15
|
-
private value: number
|
|
16
|
-
private stringValue: string
|
|
15
|
+
private value: number
|
|
16
|
+
private stringValue: string
|
|
17
17
|
|
|
18
18
|
constructor(value: number, stringValue: string) {
|
|
19
|
-
this.value = value
|
|
20
|
-
this.stringValue = stringValue
|
|
19
|
+
this.value = value
|
|
20
|
+
this.stringValue = stringValue
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
// Переопределяем метод toString
|
|
24
24
|
toString() {
|
|
25
|
-
return this.stringValue
|
|
25
|
+
return this.stringValue
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
// Добавляем valueOf для корректного сравнения
|
|
29
29
|
valueOf() {
|
|
30
|
-
return this.value
|
|
30
|
+
return this.value
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
convert(params: ConvertParams) {
|
|
34
|
-
return this.value.convert(params)
|
|
34
|
+
return this.value.convert(params)
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
declare global {
|
|
39
39
|
interface String extends CurrencyConverter {
|
|
40
|
-
translate(language: string, ...args: any[]): Promise<string
|
|
40
|
+
translate(language: string, ...args: any[]): Promise<string>
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
interface Number extends CurrencyConverter {}
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
Number.prototype.convert = async function (this: number, params: ConvertParams): Promise<number> {
|
|
47
|
-
const { to = 'RUB', from = 'RUB', round, ceiled } = params
|
|
47
|
+
const { to = 'RUB', from = 'RUB', round, ceiled } = params
|
|
48
48
|
|
|
49
|
-
const fromCurrency = from.toUpperCase()
|
|
50
|
-
const currency = to.toUpperCase()
|
|
49
|
+
const fromCurrency = from.toUpperCase()
|
|
50
|
+
const currency = to.toUpperCase()
|
|
51
|
+
|
|
52
|
+
if (fromCurrency === 'TRX') {
|
|
53
|
+
const rates = await CoinBaseService.getInstance().getRates(fromCurrency)
|
|
54
|
+
const targetRate = rates[currency]
|
|
55
|
+
|
|
56
|
+
let convertedAmount = this * Number(targetRate)
|
|
57
|
+
if (!convertedAmount) convertedAmount = this
|
|
58
|
+
|
|
59
|
+
if (round) convertedAmount = Math.round(convertedAmount)
|
|
60
|
+
else if (ceiled) convertedAmount = Math.ceil(convertedAmount)
|
|
61
|
+
|
|
62
|
+
//@ts-ignore
|
|
63
|
+
return new ConvertedNumber(convertedAmount, `${convertedAmount.toLocaleString('ru', { maximumFractionDigits: 2 })} ${currency}`)
|
|
64
|
+
}
|
|
51
65
|
|
|
52
66
|
if (currency === 'RUB' && fromCurrency === 'RUB') {
|
|
53
|
-
const value = round ? Math.round(this) : ceiled ? Math.ceil(this) : this
|
|
67
|
+
const value = round ? Math.round(this) : ceiled ? Math.ceil(this) : this
|
|
54
68
|
//@ts-ignore
|
|
55
|
-
return new ConvertedNumber(value, `${value.toLocaleString('ru', { maximumFractionDigits: 2 })} RUB`)
|
|
69
|
+
return new ConvertedNumber(value, `${value.toLocaleString('ru', { maximumFractionDigits: 2 })} RUB`)
|
|
56
70
|
} else if (currency === 'RUB') {
|
|
57
|
-
const rates = await CoinBaseService.getInstance().getRates('RUB')
|
|
58
|
-
const targetRate = 1 / Number(rates[fromCurrency])
|
|
71
|
+
const rates = await CoinBaseService.getInstance().getRates('RUB')
|
|
72
|
+
const targetRate = 1 / Number(rates[fromCurrency])
|
|
59
73
|
|
|
60
|
-
let convertedAmount = this * Number(targetRate)
|
|
61
|
-
if (!convertedAmount) convertedAmount = this
|
|
74
|
+
let convertedAmount = this * Number(targetRate)
|
|
75
|
+
if (!convertedAmount) convertedAmount = this
|
|
62
76
|
|
|
63
|
-
if (round)
|
|
64
|
-
|
|
65
|
-
} else if (ceiled) {
|
|
66
|
-
convertedAmount = Math.ceil(convertedAmount);
|
|
67
|
-
}
|
|
77
|
+
if (round) convertedAmount = Math.round(convertedAmount)
|
|
78
|
+
else if (ceiled) convertedAmount = Math.ceil(convertedAmount)
|
|
68
79
|
|
|
69
80
|
//@ts-ignore
|
|
70
|
-
return new ConvertedNumber(convertedAmount, `${convertedAmount.toLocaleString('ru', { maximumFractionDigits: 2 })} ${currency}`)
|
|
81
|
+
return new ConvertedNumber(convertedAmount, `${convertedAmount.toLocaleString('ru', { maximumFractionDigits: 2 })} ${currency}`)
|
|
71
82
|
}
|
|
72
83
|
|
|
73
|
-
const rates = await CoinBaseService.getInstance().getRates(fromCurrency)
|
|
74
|
-
const targetRate = rates[currency]
|
|
84
|
+
const rates = await CoinBaseService.getInstance().getRates(fromCurrency)
|
|
85
|
+
const targetRate = rates[currency]
|
|
75
86
|
|
|
76
|
-
let convertedAmount = this * Number(targetRate)
|
|
77
|
-
if (!convertedAmount) convertedAmount = this
|
|
87
|
+
let convertedAmount = this * Number(targetRate)
|
|
88
|
+
if (!convertedAmount) convertedAmount = this
|
|
78
89
|
|
|
79
|
-
if (round)
|
|
80
|
-
|
|
81
|
-
} else if (ceiled) {
|
|
82
|
-
convertedAmount = Math.ceil(convertedAmount);
|
|
83
|
-
}
|
|
90
|
+
if (round) convertedAmount = Math.round(convertedAmount)
|
|
91
|
+
else if (ceiled) convertedAmount = Math.ceil(convertedAmount)
|
|
84
92
|
|
|
85
93
|
//@ts-ignore
|
|
86
|
-
return new ConvertedNumber(convertedAmount, `${convertedAmount.toLocaleString('ru', { maximumFractionDigits: 2 })} ${targetRate ? currency : 'RUB'}`)
|
|
87
|
-
}
|
|
94
|
+
return new ConvertedNumber(convertedAmount, `${convertedAmount.toLocaleString('ru', { maximumFractionDigits: 2 })} ${targetRate ? currency : 'RUB'}`)
|
|
95
|
+
}
|
|
88
96
|
|
|
89
97
|
String.prototype.convert = function (this: string, params: ConvertParams) {
|
|
90
|
-
return Number(this).convert(params)
|
|
91
|
-
}
|
|
98
|
+
return Number(this).convert(params)
|
|
99
|
+
}
|