Skip to content

Commit 1ad6be0

Browse files
refactor: make DefaultInputs type clearer with chain being a required field
Before you could pass to the config just a token in defaultInputs object but everywhere defaultInputs is referenced chain is required and you can't just pass a token
1 parent 6171fc5 commit 1ad6be0

3 files changed

Lines changed: 37 additions & 32 deletions

File tree

src/config/ui.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,14 @@ export type Experimental = {
4747
[Experiment in Experiments]?: boolean;
4848
};
4949

50+
export interface ChainTokenSelection {
51+
chain: Chain;
52+
token?: string;
53+
}
54+
5055
export interface DefaultInputs {
51-
fromChain?: Chain;
52-
toChain?: Chain;
53-
fromToken?: string; // Address or symbol
54-
toToken?: string; // Address or symbol
56+
from?: ChainTokenSelection;
57+
to?: ChainTokenSelection;
5558
requiredChain?: Chain;
5659
preferredRouteName?: string;
5760
}

src/config/utils.ts

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -135,72 +135,72 @@ export const validateDefaults = (
135135
tokens: TokenCache,
136136
) => {
137137
if (!defaults) return;
138-
if (defaults.fromChain) {
139-
const chain = chains[defaults.fromChain];
138+
if (defaults.from?.chain) {
139+
const chain = chains[defaults.from.chain];
140140
if (!chain) {
141141
error(
142-
`Invalid chain name "${defaults.fromChain}" specified for defaultInputs.fromChain`,
142+
`Invalid chain name "${defaults.from.chain}" specified for defaultInputs.fromChain`,
143143
);
144-
delete defaults.fromChain;
144+
delete defaults.from;
145145
}
146146
}
147-
if (defaults.toChain) {
148-
const chain = chains[defaults.toChain];
147+
if (defaults.to?.chain) {
148+
const chain = chains[defaults.to.chain];
149149
if (!chain) {
150150
error(
151-
`Invalid chain name "${defaults.toChain}" specified for defaultInputs.toChain`,
151+
`Invalid chain name "${defaults.to.chain}" specified for defaultInputs.toChain`,
152152
);
153-
delete defaults.fromChain;
153+
delete defaults.to;
154154
}
155155
}
156-
if (defaults.fromChain && defaults.toChain) {
157-
if (defaults.fromChain === defaults.toChain) {
156+
if (defaults.from?.chain && defaults.to?.chain) {
157+
if (defaults.from.chain === defaults.to.chain) {
158158
error(
159159
`Source and destination chain cannot be the same, check the defaultInputs configuration`,
160160
);
161161
}
162162
}
163163

164-
if (defaults.fromChain && defaults.toChain && defaults.requiredChain) {
164+
if (defaults.from?.chain && defaults.to?.chain && defaults.requiredChain) {
165165
const requiredConfig = chains[defaults.requiredChain];
166166
if (!requiredConfig) {
167167
error(
168168
`Invalid network value "${defaults.requiredChain}" specified for defaultInputs.requiredChain`,
169169
);
170170
}
171171
if (
172-
defaults.toChain !== defaults.requiredChain &&
173-
defaults.fromChain !== defaults.requiredChain
172+
defaults.to.chain !== defaults.requiredChain &&
173+
defaults.from.chain !== defaults.requiredChain
174174
) {
175175
error(
176176
`Source chain or destination chain must equal the required network`,
177177
);
178178
}
179179
}
180180

181-
if (defaults.fromChain && defaults.fromToken) {
181+
if (defaults.from?.chain && defaults.from?.token) {
182182
const token = tokens.findByAddressOrSymbol(
183-
defaults.fromChain,
184-
defaults.fromToken,
183+
defaults.from.chain,
184+
defaults.from.token,
185185
);
186186
if (!token) {
187187
error(
188-
`Invalid token "${defaults.fromToken}" specified for defaultInputs.fromToken`,
188+
`Invalid token "${defaults.from?.token}" specified for defaultInputs.fromToken`,
189189
);
190-
delete defaults.fromToken;
190+
delete defaults.from.token;
191191
}
192192
}
193193

194-
if (defaults.toChain && defaults.toToken) {
194+
if (defaults.to?.chain && defaults.to?.token) {
195195
const token = tokens.findByAddressOrSymbol(
196-
defaults.toChain,
197-
defaults.toToken,
196+
defaults.to.chain,
197+
defaults.to.token,
198198
);
199199
if (!token) {
200200
error(
201-
`Invalid token "${defaults.toToken}" specified for defaultInputs.toToken`,
201+
`Invalid token "${defaults.to?.token}" specified for defaultInputs.toToken`,
202202
);
203-
delete defaults.toToken;
203+
delete defaults.to.token;
204204
}
205205
}
206206

src/store/transferInput.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,15 +51,17 @@ export interface TransferInputState {
5151

5252
// This is a function because config might have changed since we last cleared this store
5353
function getInitialState(): TransferInputState {
54-
const { fromChain, toChain, fromToken, toToken } =
55-
config.ui.defaultInputs || {};
56-
54+
const { from, to } = config.ui.defaultInputs || {};
55+
const fromChain = from?.chain;
56+
const fromToken = from?.token;
57+
const toChain = to?.chain;
58+
const toToken = to?.token;
5759
const fromTokenTuple =
58-
fromChain && fromToken
60+
fromToken && fromChain
5961
? config.tokens.findByAddressOrSymbol(fromChain, fromToken)?.tuple
6062
: undefined;
6163
const toTokenTuple =
62-
toChain && toToken
64+
toToken && toChain
6365
? config.tokens.findByAddressOrSymbol(toChain, toToken)?.tuple
6466
: undefined;
6567

0 commit comments

Comments
 (0)