diff --git a/packages/wallet/backend/src/account/service.ts b/packages/wallet/backend/src/account/service.ts index ce1f5a589..8a34ef957 100644 --- a/packages/wallet/backend/src/account/service.ts +++ b/packages/wallet/backend/src/account/service.ts @@ -109,10 +109,12 @@ export class AccountService implements IAccountService { const accounts = await query if (!includeWalletAddress) { - accounts.forEach(async (acc) => { - const balance = await this.getAccountBalance(acc) - acc.balance = transformBalance(balance, acc.assetScale) - }) + await Promise.all( + accounts.map(async (acc) => { + const balance = await this.getAccountBalance(acc) + acc.balance = transformBalance(balance, acc.assetScale) + }) + ) } return accounts @@ -164,7 +166,7 @@ export class AccountService implements IAccountService { account.gateHubWalletId ) return Number( - balances.find((balance) => balance.vault.assetCode === account.assetCode) + balances.find((balance) => balance.vault.asset_code === account.assetCode) ?.total ?? 0 ) } diff --git a/packages/wallet/backend/src/gatehub/client.ts b/packages/wallet/backend/src/gatehub/client.ts index 1eac5953b..aa4afdec5 100644 --- a/packages/wallet/backend/src/gatehub/client.ts +++ b/packages/wallet/backend/src/gatehub/client.ts @@ -276,14 +276,18 @@ export class GateHubClient { } async createTransaction( - body: ICreateTransactionRequest + body: ICreateTransactionRequest, + managedUserUuid?: string ): Promise { const url = `${this.apiUrl}/core/v1/transactions` const response = await this.request( 'POST', url, - JSON.stringify(body) + JSON.stringify(body), + { + managedUserUuid + } ) return response diff --git a/packages/wallet/backend/src/gatehub/types.ts b/packages/wallet/backend/src/gatehub/types.ts index 346536c36..471af48d3 100644 --- a/packages/wallet/backend/src/gatehub/types.ts +++ b/packages/wallet/backend/src/gatehub/types.ts @@ -95,9 +95,9 @@ export interface IWalletBalance { interface IVault { uuid: string name: string - assetCode: string - createdAt: string - updatedAt: string + asset_code: string + created_at: string + updated_at: string } export interface IConnectUserToGatewayResponse {} diff --git a/packages/wallet/backend/src/rafiki/service.ts b/packages/wallet/backend/src/rafiki/service.ts index dba597db4..dc8e78bd6 100644 --- a/packages/wallet/backend/src/rafiki/service.ts +++ b/packages/wallet/backend/src/rafiki/service.ts @@ -247,21 +247,27 @@ export class RafikiService implements IRafikiService { const walletAddress = await this.getWalletAddress(wh) const debitAmount = this.getAmountFromWebHook(wh) - const { gateHubWalletId: sendingWallet, userId } = - await this.getGateHubWalletAddress(walletAddress) + const { + gateHubWalletId: sendingWallet, + userId, + gateHubUserId + } = await this.getGateHubWalletAddress(walletAddress) if (!this.validateAmount(debitAmount, wh.type)) { return } - await this.gateHubClient.createTransaction({ - amount: this.amountToNumber(debitAmount), - vault_uuid: this.getVaultUuid(debitAmount.assetCode), - sending_address: sendingWallet, - receiving_address: this.env.GATEHUB_SETTLEMENT_WALLET_ADDRESS, - type: HOSTED_TRANSACTION_TYPE, - message: 'Transfer' - }) + await this.gateHubClient.createTransaction( + { + amount: this.amountToNumber(debitAmount), + vault_uuid: this.getVaultUuid(debitAmount.assetCode), + sending_address: sendingWallet, + receiving_address: this.env.GATEHUB_SETTLEMENT_WALLET_ADDRESS, + type: HOSTED_TRANSACTION_TYPE, + message: 'Transfer' + }, + gateHubUserId + ) if (wh.data.balance !== '0') { await this.rafikiClient.withdrawLiqudity(wh.id) @@ -365,9 +371,11 @@ export class RafikiService implements IRafikiService { } private async getGateHubWalletAddress(walletAddress: WalletAddress) { - const account = await Account.query().findById(walletAddress.accountId) + const account = await Account.query() + .findById(walletAddress.accountId) + .withGraphFetched('user') - if (!account || !account.gateHubWalletId) { + if (!account?.gateHubWalletId || !account.user?.gateHubUserId) { throw new BadRequest( 'No account associated to the provided payment pointer' ) @@ -375,7 +383,8 @@ export class RafikiService implements IRafikiService { return { userId: account.userId, - gateHubWalletId: account.gateHubWalletId + gateHubWalletId: account.gateHubWalletId, + gateHubUserId: account.user.gateHubUserId } } }