Skip to content

Commit 98886ca

Browse files
committed
Refactor to integrate current bank context across services and components
1 parent 7fea43e commit 98886ca

File tree

10 files changed

+51
-39
lines changed

10 files changed

+51
-39
lines changed

gui/config.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@ const config = {
55
bic: 'TESTGETBXXX',
66
client: {
77
name: 'Marcus Vellon',
8-
id: '226793bc-f5f4-4ce6-92fa-402ea8e486cc'
8+
id: '1'
99
}
1010
},
1111
bankB: {
1212
name: 'Bank B' as const,
1313
bic: 'TESTUKLLXXX',
1414
client: {
1515
name: 'Lena Brightfield',
16-
id: 'd4e5f6g7-h8i9-0j1k-2l3m-4n5o6p7q8r9s'
16+
id: '2'
1717
}
1818
}
1919
}

gui/src/components/TransferFundsWidget.vue

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ import { fetchTransactionFormData, newTransaction } from '../services/transactio
88
import type { Account, Currency } from '../services/mock-backend/types'
99
import { calculateExchangeValue } from '../utils/calculateExchangeValue'
1010
import { useToasts } from '../composables/useToasts'
11+
import { useCurrentBank } from '../composables/useCurrentBank'
1112
12-
const { state: utils } = useAsyncState(fetchTransactionFormData(), null)
13+
const { state: utils } = useAsyncState(fetchTransactionFormData(useCurrentBank()), null)
1314
1415
const { addToast } = useToasts()
1516
@@ -81,7 +82,7 @@ async function startTransaction() {
8182
}
8283
isSending.value = true
8384
try {
84-
await newTransaction({
85+
await newTransaction(useCurrentBank(), {
8586
debtor: {
8687
bic: ownBic,
8788
accountId: chosenAccount.value.id,

gui/src/composables/useClientInfo.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
import { useAsyncState } from '@vueuse/core'
22
import { useRoute } from 'vue-router'
33
import { fetchClientData } from '../services/clients'
4+
import { useCurrentBank } from './useCurrentBank'
45

56
export function useClientInfo() {
67
const route = useRoute()
78
const clientId = route.meta.clientId as string
89

9-
const { state: client, isLoading } = useAsyncState(() => fetchClientData(clientId), null)
10+
const currentBank = useCurrentBank()
11+
12+
const { state: client, isLoading } = useAsyncState(() => fetchClientData(currentBank, clientId), null)
1013

1114
async function refresh() {
1215
isLoading.value = true
13-
const newData = await fetchClientData(clientId)
16+
const newData = await fetchClientData(currentBank, clientId)
1417
if (JSON.stringify(newData) === JSON.stringify(client.value)) {
1518
isLoading.value = false
1619
return
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { useRoute } from 'vue-router'
2+
import { type BankName } from '../../config.js'
3+
4+
export function useCurrentBank(): BankName {
5+
const route = useRoute()
6+
return route.meta.bankName as BankName
7+
}

gui/src/pages/admin/TransactionStatusPage.vue

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,18 @@ import { computed, ref } from 'vue'
77
import { formatAccountBalance } from '../../utils/formatNumber'
88
import { useFakeSocket } from '../../composables/useFakeSocket'
99
import { useHead } from '@unhead/vue'
10+
import { useCurrentBank } from '../../composables/useCurrentBank'
1011
1112
useHead({
1213
title: 'Transaction Status'
1314
})
1415
const route = useRoute()
1516
const uetr = route.params.uetr as string
1617
17-
const { state: transactionDetails, isLoading } = useAsyncState(() => fetchTransactionDetails(uetr), null)
18+
const { state: transactionDetails, isLoading } = useAsyncState(
19+
() => fetchTransactionDetails(useCurrentBank(), uetr),
20+
null
21+
)
1822
1923
// Track expanded items
2024
const expandedItems = ref<Set<string>>(new Set())
@@ -41,7 +45,7 @@ function isExpanded(messageId: string) {
4145
4246
async function refresh() {
4347
isLoading.value = true
44-
transactionDetails.value = await fetchTransactionDetails(uetr)
48+
transactionDetails.value = await fetchTransactionDetails(useCurrentBank(), uetr)
4549
isLoading.value = false
4650
}
4751

gui/src/pages/admin/TransactionsHistoryPage.vue

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { fetchTransactions, subscribeToTransactionsUpdates } from '../../service
55
import TransactionsTable from '../../components/TransactionsTable.vue'
66
import { useRoute } from 'vue-router'
77
import { useHead } from '@unhead/vue'
8+
import { useCurrentBank } from '../../composables/useCurrentBank.js'
89
910
useHead({
1011
title: 'Transactions History'
@@ -13,10 +14,10 @@ useHead({
1314
const route = useRoute()
1415
const bic = route.meta.bic as string
1516
16-
const { state: transactions } = useAsyncState(() => fetchTransactions(bic), [])
17+
const { state: transactions } = useAsyncState(() => fetchTransactions(useCurrentBank(), bic), [])
1718
1819
const { state: unsubscribe } = useAsyncState(
19-
subscribeToTransactionsUpdates(bic, (transactionsUpdated) => {
20+
subscribeToTransactionsUpdates(useCurrentBank(), bic, (transactionsUpdated) => {
2021
transactions.value = transactionsUpdated
2122
}),
2223
() => {}

gui/src/pages/clients/ExchangePage.vue

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ import { calculateExchangeValue } from '../../utils/calculateExchangeValue'
88
import { exchangeCurrency } from '../../services/clients'
99
import Breadcrumbs from '../../components/Breadcrumbs.vue'
1010
import { useBankRoute } from '../../composables/useBankRoute'
11+
import { useCurrentBank } from '../../composables/useCurrentBank'
1112
12-
const { state: utils } = useAsyncState(fetchTransactionFormData(), null)
13+
const { state: utils } = useAsyncState(fetchTransactionFormData(useCurrentBank()), null)
1314
1415
interface ExchangeForm {
1516
fromCurrency: string

gui/src/pages/clients/SingleClientPage.vue

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,14 @@ import { useFakeSocket } from '../../composables/useFakeSocket'
99
import BalanceWidget from '../../components/BalanceWidget.vue'
1010
import { computed } from 'vue'
1111
import { useHead } from '@unhead/vue'
12+
import { useCurrentBank } from '../../composables/useCurrentBank'
1213
1314
const route = useRoute()
1415
const clientId = route.meta.clientId as string
16+
const currentBank = useCurrentBank()
1517
const { client, isLoading, refresh: refreshClientInfo } = useClientInfo()
1618
const { state: transactions, isLoading: isLoadingTransactions } = useAsyncState(
17-
() => fetchClientTransactions(clientId),
19+
() => fetchClientTransactions(currentBank, clientId),
1820
[]
1921
)
2022
@@ -26,7 +28,7 @@ useHead({ title })
2628
2729
async function refreshTransactions() {
2830
isLoadingTransactions.value = true
29-
transactions.value = await fetchClientTransactions(clientId)
31+
transactions.value = await fetchClientTransactions(currentBank, clientId)
3032
isLoadingTransactions.value = false
3133
}
3234

gui/src/services/clients.ts

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,28 @@
1-
import { useRoute } from 'vue-router'
2-
import config from '../../config.js'
1+
import config, { type BankName } from '../../config.js'
32
import type { Client, JSONify, Account, Currency, Transaction } from './mock-backend/types.js'
4-
import type { BankName } from '../../config.js'
53
import * as api from './backend/api.js'
64

7-
function currentBankName(): BankName {
8-
const route = useRoute()
9-
return route.meta.bankName as BankName
10-
}
11-
125
export interface ClientDataResponse extends JSONify<Client> {
136
accounts: JSONify<Account>[]
147
}
158

16-
export async function fetchClientData(clientId: string): Promise<ClientDataResponse | null> {
9+
export async function fetchClientData(currentBank: BankName, clientId: string): Promise<ClientDataResponse | null> {
1710
if (config.useMock) {
1811
const { getClientData } = await import('./mock-backend/api.js')
1912
return getClientData(clientId)
2013
}
21-
return api.getClientPageData(currentBankName(), clientId)
14+
return api.getClientPageData(currentBank, clientId)
2215
}
2316

24-
export async function fetchClientTransactions(clientId: string): Promise<JSONify<Transaction>[]> {
17+
export async function fetchClientTransactions(
18+
currentBank: BankName,
19+
clientId: string
20+
): Promise<JSONify<Transaction>[]> {
2521
if (config.useMock) {
2622
const { getClientTransactions } = await import('./mock-backend/api.js')
2723
return getClientTransactions(clientId)
2824
}
29-
return api.getClientTransfers(currentBankName(), clientId)
25+
return api.getClientTransfers(currentBank, clientId)
3026
}
3127

3228
// Not used at the moment

gui/src/services/transactions.ts

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,17 @@
1-
import { useRoute } from 'vue-router'
21
import config, { type BankName } from '../../config.js'
32
import type { Transaction, JSONify, TransactionMessageStatus } from './mock-backend/types.js'
43
import * as api from './backend/api.js'
54

6-
function currentBankName(): BankName {
7-
const route = useRoute()
8-
return route.meta.bankName as BankName
9-
}
10-
11-
export async function fetchTransactions(bic: string): Promise<JSONify<Transaction[]>> {
5+
export async function fetchTransactions(currentBank: BankName, bic: string): Promise<JSONify<Transaction[]>> {
126
if (config.useMock) {
137
const { getTransactions } = await import('./mock-backend/api.js')
148
return getTransactions().filter((tx) => tx.debtor.bic === bic || tx.creditor.bic === bic)
159
}
16-
return api.getTransfers(currentBankName())
10+
return api.getTransfers(currentBank)
1711
}
1812

1913
export async function subscribeToTransactionsUpdates(
14+
currentBank: BankName,
2015
bic: string,
2116
callback: (transactions: JSONify<Transaction>[]) => void
2217
): Promise<() => void> {
@@ -29,21 +24,22 @@ export async function subscribeToTransactionsUpdates(
2924
return subscribeToTransactionsUpdates(filteredCallback)
3025
}
3126
const interval = setInterval(async () => {
32-
const transactions = await fetchTransactions(bic)
27+
const transactions = await fetchTransactions(currentBank, bic)
3328
callback(transactions)
3429
}, 5000)
3530
return () => clearInterval(interval)
3631
}
3732

38-
export async function fetchTransactionFormData(): ReturnType<typeof api.getTransferHelpers> {
33+
export async function fetchTransactionFormData(currentBank: BankName): ReturnType<typeof api.getTransferHelpers> {
3934
if (config.useMock) {
4035
const { getTransactionFormData } = await import('./mock-backend/api.js')
41-
return getTransactionFormData(currentBankName())
36+
return getTransactionFormData(currentBank)
4237
}
43-
return api.getTransferHelpers(currentBankName())
38+
return api.getTransferHelpers(currentBank)
4439
}
4540

4641
export async function newTransaction(
42+
currentBank: BankName,
4743
transaction: Omit<Transaction, 'uetr' | 'createdAt' | 'updatedAt' | 'status'> & {
4844
comment: string | null
4945
}
@@ -52,15 +48,16 @@ export async function newTransaction(
5248
const { newTransaction } = await import('./mock-backend/api.js')
5349
return newTransaction(transaction)
5450
}
55-
return api.makeTransfer(currentBankName(), transaction)
51+
return api.makeTransfer(currentBank, transaction)
5652
}
5753

5854
export async function fetchTransactionDetails(
55+
currentBank: BankName,
5956
uetr: string
6057
): Promise<JSONify<{ transaction: Transaction; messages: JSONify<TransactionMessageStatus>[] }> | null> {
6158
if (config.useMock) {
6259
const { getTransactionDetails } = await import('./mock-backend/api.js')
6360
return getTransactionDetails(uetr)
6461
}
65-
return api.getTransferStatus(currentBankName(), uetr)
62+
return api.getTransferStatus(currentBank, uetr)
6663
}

0 commit comments

Comments
 (0)