Skip to content

Commit 8d8dbba

Browse files
committed
fix: handle new gql schema properly in frontend
1 parent 9c5f63f commit 8d8dbba

File tree

12 files changed

+64
-62
lines changed

12 files changed

+64
-62
lines changed

localenv/mock-account-servicing-entity/generated/graphql.ts

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/backend/migrations/20250930210751_add_prefix_to_tenant.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ exports.up = function (knex) {
1717
`DELETE FROM "tenantSettings" WHERE "key" = 'WALLET_ADDRESS_URL'`
1818
)
1919
})
20+
.then(() => {
21+
return knex.raw(
22+
`UPDATE "tenants" SET "walletAddressPrefix" = '${process.env.OPEN_PAYMENTS_URL}' WHERE "id" = '${process.env.OPERATOR_TENANT_ID}'`
23+
)
24+
})
2025
.then(() => {
2126
return knex.raw(
2227
`UPDATE "tenants" SET "walletAddressPrefix" = '${process.env.OPEN_PAYMENTS_URL}/' || gen_random_uuid() WHERE "walletAddressPrefix" IS NULL`

packages/backend/src/graphql/generated/graphql.schema.json

Lines changed: 7 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/backend/src/graphql/generated/graphql.ts

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/backend/src/graphql/schema.graphql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1592,7 +1592,7 @@ type Tenant implements Model {
15921592
"Public name for the tenant."
15931593
publicName: String
15941594
"Prefix for wallet addresses belonging to this tenant."
1595-
walletAddressPrefix: String
1595+
walletAddressPrefix: String!
15961596
"The date and time that this tenant was created."
15971597
createdAt: String!
15981598
"The date and time that this tenant was deleted."

packages/frontend/app/components/ui/Select.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ type SelectProps = {
2222
defaultValue?: SelectOption
2323
description?: ReactNode
2424
onChange?: (value: React.SetStateAction<SelectOption | undefined>) => void
25-
bringForward?: boolean
25+
bringForward?: 1 | 2
2626
}
2727

2828
export const Select = ({
@@ -69,7 +69,9 @@ export const Select = ({
6969
{name ? (
7070
<input type='hidden' name={name} value={internalValue.value} />
7171
) : null}
72-
<div className={`relative ${bringForward ? 'forward' : ''}`}>
72+
<div
73+
className={`relative ${bringForward ? `forward-${bringForward}` : ''}`}
74+
>
7375
{label ? (
7476
<Combobox.Label as={Label} htmlFor={id} required={required}>
7577
{label}

packages/frontend/app/generated/graphql.ts

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/frontend/app/lib/api/tenant.server.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ export const listTenants = async (request: Request, args: QueryTenantsArgs) => {
5656
apiSecret
5757
idpConsentUrl
5858
idpSecret
59+
walletAddressPrefix
5960
publicName
6061
createdAt
6162
deletedAt

packages/frontend/app/routes/wallet-addresses.create.tsx

Lines changed: 29 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -14,25 +14,12 @@ import { createWalletAddress } from '~/lib/api/wallet-address.server'
1414
import { messageStorage, setMessageAndRedirect } from '~/lib/message.server'
1515
import { createWalletAddressSchema } from '~/lib/validate.server'
1616
import type { ZodFieldErrors } from '~/shared/types'
17-
import {
18-
getOpenPaymentsUrl,
19-
removeTrailingAndLeadingSlash
20-
} from '~/shared/utils'
17+
import { removeTrailingAndLeadingSlash } from '~/shared/utils'
2118
import { checkAuthAndRedirect } from '../lib/kratos_checks.server'
2219
import { type LoaderFunctionArgs } from '@remix-run/node'
2320
import type { listTenants } from '~/lib/api/tenant.server'
2421
import { whoAmI, loadTenants, getTenantInfo } from '~/lib/api/tenant.server'
2522

26-
const WALLET_ADDRESS_URL_KEY = 'WALLET_ADDRESS_URL'
27-
28-
const findWASetting = (
29-
tenantSettings: Awaited<ReturnType<typeof getTenantInfo>>['settings']
30-
) => {
31-
return tenantSettings.find(
32-
(setting) => setting.key === WALLET_ADDRESS_URL_KEY
33-
)?.value
34-
}
35-
3623
const findTenant = (
3724
tenants: Awaited<ReturnType<typeof listTenants>>['edges'],
3825
tenantId: string
@@ -49,14 +36,10 @@ export const loader = async ({ request }: LoaderFunctionArgs) => {
4936
let tenants
5037
let tenantWAPrefix
5138
if (isOperator) {
52-
const loadedTenants = await loadTenants(request)
53-
tenants = loadedTenants.filter(
54-
(tenant) => findWASetting(tenant.node.settings) || tenant.node.id === id
55-
)
39+
tenants = await loadTenants(request)
5640
} else {
5741
const tenant = await getTenantInfo(request, { id })
58-
const waPrefixSetting = findWASetting(tenant.settings)
59-
tenantWAPrefix = waPrefixSetting ?? getOpenPaymentsUrl()
42+
tenantWAPrefix = tenant.walletAddressPrefix
6043
}
6144
return json({ assets, tenants, tenantWAPrefix })
6245
}
@@ -80,9 +63,6 @@ export default function CreateWalletAddressPage() {
8063

8164
const currentTenant =
8265
tenants && tenantId ? findTenant(tenants, tenantId.value) : null
83-
const waPrefix = currentTenant
84-
? findWASetting(currentTenant.node.settings)
85-
: tenantWAPrefix
8666

8767
return (
8868
<div className='pt-4 flex flex-col space-y-4'>
@@ -107,25 +87,6 @@ export default function CreateWalletAddressPage() {
10787
</div>
10888
<div className='md:col-span-2 bg-white rounded-md shadow-md'>
10989
<div className='w-full p-4 space-y-3'>
110-
<Input
111-
name='waPrefix'
112-
value={waPrefix ?? getOpenPaymentsUrl()}
113-
type={'hidden'}
114-
/>
115-
<Input
116-
required
117-
addOn={waPrefix ?? getOpenPaymentsUrl()}
118-
name='name'
119-
label='Wallet address name'
120-
placeholder='jdoe'
121-
error={response?.errors?.fieldErrors.name}
122-
/>
123-
<Input
124-
name='publicName'
125-
label='Public name'
126-
placeholder='Public name'
127-
error={response?.errors?.fieldErrors.publicName}
128-
/>
12990
{tenants ? (
13091
<Select
13192
options={tenants.map((tenant) => ({
@@ -137,7 +98,7 @@ export default function CreateWalletAddressPage() {
13798
label='Tenant'
13899
required
139100
onChange={(value) => setTenantId(value)}
140-
bringForward
101+
bringForward={2}
141102
/>
142103
) : (
143104
<Select
@@ -150,6 +111,7 @@ export default function CreateWalletAddressPage() {
150111
placeholder='Select asset...'
151112
label='Asset'
152113
required
114+
bringForward={1}
153115
/>
154116
)}
155117
{tenants && tenantId && (
@@ -160,8 +122,32 @@ export default function CreateWalletAddressPage() {
160122
placeholder='Select asset...'
161123
label='Asset'
162124
required
125+
bringForward={1}
163126
/>
164127
)}
128+
<Input
129+
name='waPrefix'
130+
value={
131+
currentTenant?.node.walletAddressPrefix ?? tenantWAPrefix
132+
}
133+
type={'hidden'}
134+
/>
135+
<Input
136+
required
137+
addOn={
138+
currentTenant?.node.walletAddressPrefix ?? tenantWAPrefix
139+
}
140+
name='name'
141+
label='Wallet address name'
142+
placeholder='jdoe'
143+
error={response?.errors?.fieldErrors.name}
144+
/>
145+
<Input
146+
name='publicName'
147+
label='Public name'
148+
placeholder='Public name'
149+
error={response?.errors?.fieldErrors.publicName}
150+
/>
165151
</div>
166152
</div>
167153
</div>

packages/frontend/app/styles/tailwind.css

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ a.default-link {
77
text-decoration: revert;
88
}
99

10-
div.forward {
10+
div.forward-1 {
1111
z-index: 1;
1212
}
13+
14+
div.forward-2 {
15+
z-index: 2;
16+
}

0 commit comments

Comments
 (0)