diff --git a/backend/src/graphql/resolver/TransactionLinkResolver.ts b/backend/src/graphql/resolver/TransactionLinkResolver.ts index 8acbd7b53..faae12e56 100644 --- a/backend/src/graphql/resolver/TransactionLinkResolver.ts +++ b/backend/src/graphql/resolver/TransactionLinkResolver.ts @@ -14,7 +14,7 @@ import { User } from '@model/User' import { QueryLinkResult } from '@union/QueryLinkResult' import { Decay, interpretEncryptedTransferArgs, TransactionTypeId } from 'core' import { - AppDatabase, Community as DbCommunity, Contribution as DbContribution, + AppDatabase, Contribution as DbContribution, ContributionLink as DbContributionLink, FederatedCommunity as DbFederatedCommunity, Transaction as DbTransaction, TransactionLink as DbTransactionLink, User as DbUser, @@ -36,7 +36,7 @@ import { Context, getClientTimezoneOffset, getUser } from '@/server/context' import { calculateBalance } from '@/util/validate' import { fullName } from 'core' import { TRANSACTION_LINK_LOCK, TRANSACTIONS_LOCK } from 'database' -import { calculateDecay, decode, DisburseJwtPayloadType, encode, encryptAndSign, EncryptedJWEJwtPayloadType, RedeemJwtPayloadType, verify } from 'shared' +import { calculateDecay, compoundInterest, decayFormula, decode, DisburseJwtPayloadType, encode, encryptAndSign, EncryptedJWEJwtPayloadType, RedeemJwtPayloadType, verify } from 'shared' import { LOG4JS_BASE_CATEGORY_NAME } from '@/config/const' import { DisbursementClient as V1_0_DisbursementClient } from '@/federation/client/1_0/DisbursementClient' @@ -48,7 +48,6 @@ import { randombytes_random } from 'sodium-native' import { executeTransaction } from './TransactionResolver' import { getAuthenticatedCommunities, - getCommunityByIdentifier, getCommunityByPublicKey, getCommunityByUuid, } from './util/communities' @@ -90,7 +89,7 @@ export class TransactionLinkResolver { const createdDate = new Date() const validUntil = transactionLinkExpireDate(createdDate) - const holdAvailableAmount = amount.minus(calculateDecay(amount, createdDate, validUntil).decay) + const holdAvailableAmount = compoundInterest(amount, CODE_VALID_DAYS_DURATION * 24 * 60 * 60) // validate amount const sendBalance = await calculateBalance(user.id, holdAvailableAmount.mul(-1), createdDate) diff --git a/frontend/src/components/GddSend/TransactionConfirmationLink.vue b/frontend/src/components/GddSend/TransactionConfirmationLink.vue index f31d043a0..d964f3e80 100644 --- a/frontend/src/components/GddSend/TransactionConfirmationLink.vue +++ b/frontend/src/components/GddSend/TransactionConfirmationLink.vue @@ -20,20 +20,29 @@ {{ $t('advanced-calculation') }} - {{ $t('form.current_balance') }} + {{ $t('form.current_available') }} {{ $filters.GDD(balance) }} - {{ $t('form.your_amount') }} + {{ $t('form.link_amount') }} - + {{ $filters.GDD(amount * -1) }} - {{ $t('form.new_balance') }} - {{ $filters.GDD(balance - amount) }} + {{ $t('decay.decay') }} + {{ $filters.GDD(amount - blockedAmount) }} + + + {{ $t('form.available_after') }} + {{ $filters.GDD(balance - blockedAmount) }} + + + + {{ $t('form.link_decay_description') }} + @@ -57,6 +66,7 @@