Skip to content

Commit

Permalink
refactor: refactor getAllData into generic function
Browse files Browse the repository at this point in the history
  • Loading branch information
YamenMerhi committed Jul 14, 2023
1 parent ad34165 commit ee8445b
Showing 1 changed file with 12 additions and 48 deletions.
60 changes: 12 additions & 48 deletions src/provider/providerWrapper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -208,71 +208,35 @@ export class ProviderWrapper {

switch (erc725Version) {
case ERC725_VERSION.ERC725_v5:
return this._getAllDataBatch(address, keyHashes);
return this._getAllDataGeneric(
address,
keyHashes,
Method.GET_DATA_BATCH,
);
case ERC725_VERSION.ERC725_v2:
return this._getAllData(address, keyHashes);
return this._getAllDataGeneric(address, keyHashes, Method.GET_DATA);
case ERC725_VERSION.ERC725_LEGACY:
return this._getAllDataLegacy(address, keyHashes);
default:
return [];
}
}

private async _getAllDataBatch(
address: string,
keyHashes: string[],
): Promise<GetDataReturn[]> {
if (this.type === ProviderTypes.ETHEREUM) {
const encodedResults = await this.callContract(
constructJSONRPC(
address,
Method.GET_DATA_BATCH,
abiCoder.encodeParameter('bytes32[]', keyHashes),
),
);

const decodedValues = decodeResult(Method.GET_DATA_BATCH, encodedResults);

return keyHashes.map<GetDataReturn>((keyHash, index) => ({
key: keyHash,
value: decodedValues ? decodedValues[index] : decodedValues,
}));
}

const payload: JsonRpc[] = [
constructJSONRPC(
address,
Method.GET_DATA_BATCH,
abiCoder.encodeParameter('bytes32[]', keyHashes),
),
];

const results: any = await this.callContract(payload);
const decodedValues = decodeResult(
Method.GET_DATA_BATCH,
results[0].result,
);

return keyHashes.map<GetDataReturn>((key, index) => ({
key,
value: decodedValues ? decodedValues[index] : decodedValues,
}));
}

private async _getAllData(
private async _getAllDataGeneric(
address: string,
keyHashes: string[],
method: Method,
): Promise<GetDataReturn[]> {
if (this.type === ProviderTypes.ETHEREUM) {
const encodedResults = await this.callContract(
constructJSONRPC(
address,
Method.GET_DATA,
method,
abiCoder.encodeParameter('bytes32[]', keyHashes),
),
);

const decodedValues = decodeResult(Method.GET_DATA, encodedResults);
const decodedValues = decodeResult(method, encodedResults);

return keyHashes.map<GetDataReturn>((keyHash, index) => ({
key: keyHash,
Expand All @@ -283,13 +247,13 @@ export class ProviderWrapper {
const payload: JsonRpc[] = [
constructJSONRPC(
address,
Method.GET_DATA,
method,
abiCoder.encodeParameter('bytes32[]', keyHashes),
),
];

const results: any = await this.callContract(payload);
const decodedValues = decodeResult(Method.GET_DATA, results[0].result);
const decodedValues = decodeResult(method, results[0].result);

return keyHashes.map<GetDataReturn>((key, index) => ({
key,
Expand Down

0 comments on commit ee8445b

Please sign in to comment.