Skip to content

Commit a6779ab

Browse files
committed
fix(rpc): prevent opening on fail
1 parent e76ea3e commit a6779ab

6 files changed

+17
-8
lines changed

src/background/messaging/messaging-utils.ts

+6-3
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,8 @@ export function encodePostConditions(postConditions: PostConditionWire[]) {
101101
return postConditions.map(pc => serializePostConditionWire(pc));
102102
}
103103

104+
type ValidationResult = 'success' | 'failure';
105+
104106
interface ValidateRequestParamsArgs {
105107
id: string;
106108
method: RpcMethodNames;
@@ -114,7 +116,7 @@ export function validateRequestParams({
114116
params,
115117
port,
116118
schema,
117-
}: ValidateRequestParamsArgs) {
119+
}: ValidateRequestParamsArgs): { status: ValidationResult } {
118120
if (isUndefined(params)) {
119121
void trackRpcRequestError({ endpoint: method, error: RpcErrorMessage.UndefinedParams });
120122
chrome.tabs.sendMessage(
@@ -124,7 +126,7 @@ export function validateRequestParams({
124126
error: { code: RpcErrorCode.INVALID_REQUEST, message: RpcErrorMessage.UndefinedParams },
125127
})
126128
);
127-
return;
129+
return { status: 'failure' };
128130
}
129131

130132
if (!validateRpcParams(params, schema)) {
@@ -140,8 +142,9 @@ export function validateRequestParams({
140142
},
141143
})
142144
);
143-
return;
145+
return { status: 'failure' };
144146
}
147+
return { status: 'success' };
145148
}
146149

147150
type BaseStacksTransactionRpcParams = z.infer<typeof baseStacksTransactionConfigSchema>;

src/background/messaging/rpc-methods/stx-call-contract.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,14 @@ export async function rpcStxCallContract(
3333
port: chrome.runtime.Port
3434
) {
3535
const { id: requestId, method, params } = message;
36-
validateRequestParams({
36+
const { status } = validateRequestParams({
3737
id: requestId,
3838
method,
3939
params,
4040
port,
4141
schema: stxCallContract.params,
4242
});
43+
if (status === 'failure') return;
4344
const requestParams: RequestParams = [
4445
['requestId', requestId],
4546
['request', createUnsecuredToken(getMessageParamsToTransactionRequest(message.params))],

src/background/messaging/rpc-methods/stx-deploy-contract.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,14 @@ export async function rpcStxDeployContract(
3030
port: chrome.runtime.Port
3131
) {
3232
const { id: requestId, method, params } = message;
33-
validateRequestParams({
33+
const { status } = validateRequestParams({
3434
id: requestId,
3535
method,
3636
params,
3737
port,
3838
schema: stxDeployContract.params,
3939
});
40+
if (status === 'failure') return;
4041
const request = getMessageParamsToTransactionRequest(params);
4142
const requestParams: RequestParams = [
4243
['requestId', requestId],

src/background/messaging/rpc-methods/stx-transfer-sip10-ft.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -76,13 +76,15 @@ export async function rpcStxTransferSip10Ft(
7676
port: chrome.runtime.Port
7777
) {
7878
const { id: requestId, method, params } = message;
79-
validateRequestParams({
79+
80+
const { status } = validateRequestParams({
8081
id: requestId,
8182
method,
8283
params,
8384
port,
8485
schema: stxTransferSip10Ft.params,
8586
});
87+
if (status === 'failure') return;
8688
const txRequest = await getMessageParamsToTransactionRequest(params);
8789
const requestParams: RequestParams = [
8890
['requestId', requestId],

src/background/messaging/rpc-methods/stx-transfer-sip9-nft.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -74,13 +74,14 @@ export async function rpcStxTransferSip9Nft(
7474
port: chrome.runtime.Port
7575
) {
7676
const { id: requestId, method, params } = message;
77-
validateRequestParams({
77+
const { status } = validateRequestParams({
7878
id: requestId,
7979
method,
8080
params,
8181
port,
8282
schema: stxTransferSip9Nft.params,
8383
});
84+
if (status === 'failure') return;
8485
const txRequest = await getMessageParamsToTransactionRequest(params);
8586
const requestParams: RequestParams = [
8687
['requestId', requestId],

src/background/messaging/rpc-methods/stx-transfer-stx.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,14 @@ export async function rpcStxTransferStx(
2929
port: chrome.runtime.Port
3030
) {
3131
const { id: requestId, method, params } = message;
32-
validateRequestParams({
32+
const { status } = validateRequestParams({
3333
id: requestId,
3434
method,
3535
params,
3636
port,
3737
schema: stxTransferStx.params,
3838
});
39+
if (status === 'failure') return;
3940
const request = getMessageParamsToTransactionRequest(params);
4041
const requestParams: RequestParams = [
4142
['requestId', requestId],

0 commit comments

Comments
 (0)