Skip to content

Commit

Permalink
reworked transaction logs
Browse files Browse the repository at this point in the history
made soul name metadata store return error codes
  • Loading branch information
H34D committed Mar 24, 2023
1 parent 6e12c6e commit 4049dc5
Show file tree
Hide file tree
Showing 15 changed files with 388 additions and 202 deletions.
53 changes: 34 additions & 19 deletions src/contracts/masa-contracts.ts
Expand Up @@ -26,6 +26,9 @@ import {
} from "./index";
import { IIdentityContracts } from "../interface";
import { verifyTypedData } from "ethers/lib/utils";
import { Log } from "@ethersproject/abstract-provider";
import { LogDescription } from "@ethersproject/abi";

import { generateSignatureDomain, Messages, signTypedData } from "../utils";
import { MasaBase } from "../helpers/masa-base";
import Masa from "../masa";
Expand Down Expand Up @@ -81,7 +84,7 @@ export class MasaContracts extends MasaBase {
);
}

const tx: ContractTransaction = await contract
const { wait, hash } = await contract
.connect(this.masa.config.wallet)
.approve(
// spender
Expand All @@ -91,10 +94,10 @@ export class MasaContracts extends MasaBase {
);

if (this.masa.config.verbose) {
console.info(Messages.WaitingToFinalize(tx.hash));
console.info(Messages.WaitingToFinalize(hash));
}

return await tx.wait();
return await wait();
}
}
},
Expand Down Expand Up @@ -226,6 +229,19 @@ export class MasaContracts extends MasaBase {
},
};

parseLogs = (logs: Log[]): LogDescription[] => {
const parsedLogs: LogDescription[] = [];

for (const contract of Object.values(this.instances)) {
parsedLogs.push(
...logs
.filter((l: Log) => l.address === contract.address)
.map((l: Log) => contract.interface.parseLog(l))
);
}
return parsedLogs;
};

sbt = async <Contract extends MasaSBTSelfSovereign>(
address: string,
factory: ContractFactory = MasaSBTSelfSovereign__factory
Expand Down Expand Up @@ -440,23 +456,22 @@ export class MasaContracts extends MasaBase {
price
);

const addLinkTransactionResponse =
await this.instances.SoulLinkerContract.connect(
this.masa.config.wallet
).addLink(
paymentAddress,
readerIdentityId,
ownerIdentityId,
tokenAddress,
tokenId,
signatureDate,
expirationDate,
signature,
isNativeCurrency(paymentMethod) ? { value: price } : undefined
);
const { hash, wait } = await this.instances.SoulLinkerContract.connect(
this.masa.config.wallet
).addLink(
paymentAddress,
readerIdentityId,
ownerIdentityId,
tokenAddress,
tokenId,
signatureDate,
expirationDate,
signature,
isNativeCurrency(paymentMethod) ? { value: price } : undefined
);

const addLinkTransactionReceipt = await addLinkTransactionResponse.wait();
console.log(addLinkTransactionReceipt.transactionHash);
console.log(Messages.WaitingToFinalize(hash));
await wait();

return true;
},
Expand Down
6 changes: 3 additions & 3 deletions src/credit-score/burn.ts
Expand Up @@ -7,13 +7,13 @@ export const burnCreditScoreById = async (
creditScoreId: BigNumber
): Promise<boolean> => {
try {
const tx =
const { wait, hash } =
await masa.contracts.instances.SoulboundCreditScoreContract.connect(
masa.config.wallet
).burn(creditScoreId);

console.log(Messages.WaitingToFinalize(tx.hash));
await tx.wait();
console.log(Messages.WaitingToFinalize(hash));
await wait();

return true;
} catch (error: unknown) {
Expand Down
8 changes: 4 additions & 4 deletions src/credit-score/create.ts
Expand Up @@ -39,20 +39,20 @@ export const createCreditScore = async (
creditScoreResponse?.authorityAddress
) {
try {
const tx = await masa.contracts.creditScore.mint(
const { hash, wait } = await masa.contracts.creditScore.mint(
paymentMethod,
identityId,
creditScoreResponse.authorityAddress,
creditScoreResponse.signatureDate,
creditScoreResponse.signature
);

console.log(Messages.WaitingToFinalize(tx.hash));
const transactionReceipt = await tx.wait();
console.log(Messages.WaitingToFinalize(hash));
const { transactionHash } = await wait();

console.log("Updating Credit Score Record!");
const creditScoreUpdateResponse = await masa.client.creditScore.update(
transactionReceipt.transactionHash
transactionHash
);

if (masa.config.verbose) {
Expand Down
11 changes: 6 additions & 5 deletions src/green/burn.ts
Expand Up @@ -7,12 +7,13 @@ export const burnGreenById = async (
greenId: BigNumber
): Promise<boolean> => {
try {
const tx = await masa.contracts.instances.SoulboundGreenContract.connect(
masa.config.wallet
).burn(greenId);
const { hash, wait } =
await masa.contracts.instances.SoulboundGreenContract.connect(
masa.config.wallet
).burn(greenId);

console.log(Messages.WaitingToFinalize(tx.hash));
await tx.wait();
console.log(Messages.WaitingToFinalize(hash));
await wait();

return true;
} catch (error: unknown) {
Expand Down
45 changes: 34 additions & 11 deletions src/green/create.ts
Expand Up @@ -5,8 +5,8 @@ import {
VerifyGreenResult,
} from "../interface";
import { PaymentMethod } from "../contracts";
import { BigNumber, Event } from "ethers";
import { Messages } from "../utils";
import { LogDescription } from "@ethersproject/abi";

export const generateGreen = async (
masa: Masa,
Expand Down Expand Up @@ -154,25 +154,48 @@ export const mintGreen = async (
authorityAddress: string,
signatureDate: number,
signature: string
): Promise<{ tokenId: BigNumber } | undefined> => {
const tx = await masa.contracts.green.mint(
): Promise<BaseResult> => {
const result = {
success: false,
message: "Unknown Error",
};

const { hash, wait } = await masa.contracts.green.mint(
paymentMethod,
await masa.config.wallet.getAddress(),
authorityAddress,
signatureDate,
signature
);

console.log(Messages.WaitingToFinalize(tx.hash));
console.log(Messages.WaitingToFinalize(hash));

const receipt = await tx.wait();
const { logs } = await wait();

if (receipt.events) {
const mintEvent = receipt.events.find((e: Event) => e.event === "Mint");
if (mintEvent && mintEvent.args) {
return {
tokenId: mintEvent.args._tokenId,
};
const parsedLogs = masa.contracts.parseLogs(logs);

let tokenId: string | undefined;

const greenMintEvent = parsedLogs.find(
(event: LogDescription) => event.name === "Mint"
);

if (greenMintEvent) {
if (masa.config.verbose) {
console.info({ greenMintEvent });
}

tokenId = greenMintEvent.args._tokenId.toString();
console.log(`Green with ID: '${tokenId}' created.`);
}

if (tokenId) {
return {
success: true,
message: "",
tokenId,
};
}

return result;
};
20 changes: 14 additions & 6 deletions src/helpers/patch-metadata-url.ts
@@ -1,15 +1,23 @@
import Masa from "../masa";

export const patchMetadataUrl = (masa: Masa, tokeUri: string) => {
const apiUrl: string = masa.config.apiUrl;
/**
* todo: fix this thing, its not good
* @param masa
* @param metadataUrl
*/
export const patchMetadataUrl = (masa: Masa, metadataUrl: string) => {
const env: string = masa.config.environment;
// make sure this ends with / otherwise it blows
const apiUrl: string = !masa.config.apiUrl.endsWith("/")
? masa.config.apiUrl + "/"
: masa.config.apiUrl;

if (tokeUri.indexOf("beta") > -1) {
if (metadataUrl.indexOf("beta") > -1) {
if (apiUrl.indexOf("localhost") > -1 || apiUrl.indexOf("127.0.0.1") > -1) {
return tokeUri.replace("https://beta.metadata.masa.finance/", apiUrl);
return metadataUrl.replace("https://beta.metadata.masa.finance/", apiUrl);
} else {
return tokeUri.replace("beta", env);
return metadataUrl.replace("beta", env);
}
}
return tokeUri;
return metadataUrl;
};
11 changes: 6 additions & 5 deletions src/identity/burn.ts
Expand Up @@ -10,12 +10,13 @@ export const burnIdentityById = async (

console.log("Burning Identity");
try {
const tx = await masa.contracts.instances.SoulboundIdentityContract.connect(
masa.config.wallet
).burn(identityId);
const { wait, hash } =
await masa.contracts.instances.SoulboundIdentityContract.connect(
masa.config.wallet
).burn(identityId);

console.log(Messages.WaitingToFinalize(tx.hash));
await tx.wait();
console.log(Messages.WaitingToFinalize(hash));
await wait();

console.log(`Identity with token ID '${identityId}' burned!`);
success = true;
Expand Down

0 comments on commit 4049dc5

Please sign in to comment.