2022-07-07 11:37:26 +03:00
|
|
|
const sleep = ms => new Promise(r => setTimeout(r, ms))
|
|
|
|
const retryWithDelay = async function (fn, retryCount = 0) {
|
|
|
|
try {
|
|
|
|
await sleep(25)
|
|
|
|
// Do not return the call directly, use result.
|
|
|
|
// Otherwise the error will not be cought in this try-catch block.
|
|
|
|
const result = await fn()
|
|
|
|
return result
|
|
|
|
} catch (err) {
|
|
|
|
if (retryCount > 100) throw err
|
|
|
|
await sleep((retryCount + 1) * 1000)
|
|
|
|
return retryWithDelay(fn, retryCount + 1)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-07-08 15:47:48 +03:00
|
|
|
const mapCharge = (obj, oldObj = {}) => {
|
2022-11-24 11:39:35 +02:00
|
|
|
const charge = {...oldObj, ...obj}
|
2022-07-07 11:37:26 +03:00
|
|
|
|
2022-07-11 15:14:51 +03:00
|
|
|
charge.progress = obj.time_left < 0 ? 1 : 1 - obj.time_left / obj.time
|
|
|
|
charge.time = minutesToTime(obj.time)
|
|
|
|
charge.timeLeft = minutesToTime(obj.time_left)
|
2022-07-11 15:05:12 +03:00
|
|
|
|
2022-07-11 15:14:51 +03:00
|
|
|
charge.displayUrl = ['/satspay/', obj.id].join('')
|
2022-11-24 11:39:35 +02:00
|
|
|
charge.expanded = oldObj.expanded || false
|
2022-07-11 15:14:51 +03:00
|
|
|
charge.pendingBalance = oldObj.pendingBalance || 0
|
2022-12-13 13:36:21 +02:00
|
|
|
charge.extra = charge.extra ? JSON.parse(charge.extra) : charge.extra
|
2022-07-11 15:14:51 +03:00
|
|
|
return charge
|
2022-07-07 11:37:26 +03:00
|
|
|
}
|
2022-07-11 15:05:12 +03:00
|
|
|
|
2022-11-24 14:54:19 +00:00
|
|
|
const mapCSS = (obj, oldObj = {}) => {
|
|
|
|
const theme = _.clone(obj)
|
|
|
|
return theme
|
|
|
|
}
|
|
|
|
|
2022-07-11 15:05:12 +03:00
|
|
|
const minutesToTime = min =>
|
2022-07-11 15:14:51 +03:00
|
|
|
min > 0 ? new Date(min * 1000).toISOString().substring(14, 19) : ''
|