feat: add bill math cassette-agnostic solution

fix: multiple generic fixes related with the recyclers
fix: slight UI data changes
This commit is contained in:
Sérgio Salgado 2023-04-26 01:53:54 +01:00
parent 2d010fc359
commit f3ab63766e
15 changed files with 173 additions and 353 deletions

View file

@ -116,7 +116,7 @@ function plugins (settings, deviceId) {
const sumTxs = (sum, tx) => {
// cash-out-helper sends 0 as fallback value, need to filter it out as there are no '0' denominations
const bills = _.filter(it => it.denomination > 0, tx.bills)
const bills = _.filter(it => _.includes('cassette', it.name) && it.denomination > 0, tx.bills)
const sameDenominations = a => a[0]?.denomination === a[1]?.denomination
const doDenominationsMatch = _.every(sameDenominations, _.zip(cassettes, bills))
@ -139,6 +139,7 @@ function plugins (settings, deviceId) {
const computedCassettes = []
_.forEach(it => {
computedCassettes.push({
name: cassettes[it].name,
denomination: cassettes[it].denomination,
count: counts[it]
})
@ -152,7 +153,7 @@ function plugins (settings, deviceId) {
const sumTxs = (sum, tx) => {
// cash-out-helper sends 0 as fallback value, need to filter it out as there are no '0' denominations
const bills = _.filter(it => it.denomination > 0, tx.bills)
const bills = _.filter(it => _.includes('stacker', it.name) && it.denomination > 0, tx.bills)
const sameDenominations = a => a[0]?.denomination === a[1]?.denomination
const doDenominationsMatch = _.every(sameDenominations, _.zip(stackers, bills))
@ -175,6 +176,7 @@ function plugins (settings, deviceId) {
const computedStackers = []
_.forEach(it => {
computedStackers.push({
name: stackers[it].name,
denomination: stackers[it].denomination,
count: counts[it]
})
@ -210,6 +212,7 @@ function plugins (settings, deviceId) {
const cassettes = []
_.forEach(it => {
cassettes.push({
name: `cassette${it + 1}`,
denomination: parseInt(denominations[it], 10),
count: parseInt(counts[it], 10)
})
@ -241,10 +244,10 @@ function plugins (settings, deviceId) {
const denominations = []
_.forEach(it => {
denominations.push(cashOutConfig[`stacker${it + 1}f`], cashOutConfig[`stacker${it + 1}r`])
denominations.push([cashOutConfig[`stacker${it + 1}f`], cashOutConfig[`stacker${it + 1}r`]])
}, _.times(_.identity(), _stackers.numberOfStackers))
const virtualStackers = [Math.max(...denominations) * 2]
const virtualStackers = [Math.max(..._.flatten(denominations)) * 2]
const counts = _stackers.counts
@ -255,10 +258,16 @@ function plugins (settings, deviceId) {
const stackers = []
_.forEach(it => {
stackers.push({
denomination: parseInt(denominations[it], 10),
count: parseInt(counts[it], 10)
name: `stacker${it + 1}f`,
denomination: parseInt(denominations[it][0], 10),
count: parseInt(counts[it][0], 10)
})
}, _.times(_.identity(), _stackers.numberOfStackers * 2))
stackers.push({
name: `stacker${it + 1}r`,
denomination: parseInt(denominations[it][1], 10),
count: parseInt(counts[it][1], 10)
})
}, _.times(_.identity(), _stackers.numberOfStackers))
try {
return {
@ -275,6 +284,11 @@ function plugins (settings, deviceId) {
})
}
function buildAvailableUnits (excludeTxId) {
return Promise.all([buildAvailableCassettes(excludeTxId), buildAvailableStackers(excludeTxId)])
.then(([cassettes, stackers]) => ({ cassettes: cassettes.cassettes, stackers: stackers.stackers }))
}
function fetchCurrentConfigVersion () {
const sql = `select id from user_config
where type=$1
@ -1051,7 +1065,6 @@ function plugins (settings, deviceId) {
sendMessage,
checkBalances,
getMachineNames,
buildAvailableCassettes,
buy,
sell,
getNotificationConfig,
@ -1062,7 +1075,8 @@ function plugins (settings, deviceId) {
isValidWalletScore,
getTransactionHash,
getInputAddresses,
isWalletScoringEnabled
isWalletScoringEnabled,
buildAvailableUnits
}
}