Skip to content

Commit

Permalink
make payment method more prominent down the line
Browse files Browse the repository at this point in the history
added receiver for soul name minting
refactor soul linker
  • Loading branch information
H34D committed Mar 6, 2023
1 parent 4097eed commit 9a425c0
Show file tree
Hide file tree
Showing 14 changed files with 106 additions and 70 deletions.
6 changes: 4 additions & 2 deletions src/contracts/masa-contracts.ts
Expand Up @@ -226,6 +226,7 @@ export class MasaContracts {
* @param metadataURL
* @param authorityAddress
* @param signature
* @param receiver
*/
purchase: async (
paymentMethod: PaymentMethod,
Expand All @@ -234,7 +235,8 @@ export class MasaContracts {
duration: number = 1,
metadataURL: string,
authorityAddress: string,
signature: string
signature: string,
receiver?: string
): Promise<ContractTransaction> => {
const { price, paymentAddress } = await this.soulName.getPrice(
paymentMethod,
Expand All @@ -260,7 +262,7 @@ export class MasaContracts {
BytesLike // signature: PromiseOrValue<BytesLike>
] = [
paymentAddress,
await this.masaConfig.wallet.getAddress(),
receiver || (await this.masaConfig.wallet.getAddress()),
name,
nameLength,
duration,
Expand Down
2 changes: 1 addition & 1 deletion src/credit-score/create.ts
Expand Up @@ -5,7 +5,7 @@ import { Messages } from "../utils";

export const createCreditScore = async (
masa: Masa,
paymentMethod: PaymentMethod = "eth"
paymentMethod: PaymentMethod
): Promise<GenerateCreditScoreResult | undefined> => {
const result: GenerateCreditScoreResult = {
success: false,
Expand Down
4 changes: 3 additions & 1 deletion src/credit-score/credit-score.ts
Expand Up @@ -5,6 +5,7 @@ import { BigNumber } from "ethers";
import Masa from "../masa";
import { MasaSoulLinker } from "../soul-linker";
import { MasaBase } from "../helpers/masa-base";
import { PaymentMethod } from "../contracts";

export class MasaCreditScore extends MasaBase {
public readonly links: MasaSoulLinker;
Expand All @@ -18,7 +19,8 @@ export class MasaCreditScore extends MasaBase {
);
}

create = () => createCreditScore(this.masa);
create = (paymentMethod: PaymentMethod = "eth") =>
createCreditScore(this.masa, paymentMethod);
burn = (creditScoreId: BigNumber) =>
burnCreditScore(this.masa, creditScoreId);
list = (address?: string) => listCreditScores(this.masa, address);
Expand Down
6 changes: 4 additions & 2 deletions src/green/create.ts
Expand Up @@ -101,6 +101,7 @@ export const verifyGreen = async (

export const createGreen = async (
masa: Masa,
paymentMethod: PaymentMethod,
phoneNumber: string,
code: string
): Promise<VerifyGreenResult> => {
Expand Down Expand Up @@ -128,6 +129,7 @@ export const createGreen = async (
// mint
const mintGreenResult = await mintGreen(
masa,
paymentMethod,
verifyGreenResult.authorityAddress,
verifyGreenResult.signatureDate,
verifyGreenResult.signature
Expand All @@ -152,10 +154,10 @@ export const createGreen = async (

export const mintGreen = async (
masa: Masa,
paymentMethod: PaymentMethod,
authorityAddress: string,
signatureDate: number,
signature: string,
paymentMethod: PaymentMethod = "eth"
signature: string
): Promise<{ tokenId: BigNumber } | undefined> => {
const tx = await masa.contracts.green.mint(
paymentMethod,
Expand Down
25 changes: 21 additions & 4 deletions src/green/green.ts
Expand Up @@ -5,6 +5,7 @@ import { BigNumber } from "ethers";
import Masa from "../masa";
import { MasaSoulLinker } from "../soul-linker";
import { MasaBase } from "../helpers/masa-base";
import { PaymentMethod } from "../contracts";

export class MasaGreen extends MasaBase {
public readonly links: MasaSoulLinker;
Expand Down Expand Up @@ -34,20 +35,36 @@ export class MasaGreen extends MasaBase {

/**
* Mints a green based on the previously made verification result
* @param paymentMethod
* @param authorityAddress
* @param signatureDate
* @param signature
*/
mint = (authorityAddress: string, signatureDate: number, signature: string) =>
mintGreen(this.masa, authorityAddress, signatureDate, signature);
mint = (
paymentMethod: PaymentMethod = "eth",
authorityAddress: string,
signatureDate: number,
signature: string
) =>
mintGreen(
this.masa,
paymentMethod,
authorityAddress,
signatureDate,
signature
);

/**
* Does the verification and mint step in one go
* @param paymentMethod
* @param phoneNumber
* @param code
*/
create = (phoneNumber: string, code: string) =>
createGreen(this.masa, phoneNumber, code);
create = (
paymentMethod: PaymentMethod = "eth",
phoneNumber: string,
code: string
) => createGreen(this.masa, paymentMethod, phoneNumber, code);

/**
* Burns a green
Expand Down
4 changes: 2 additions & 2 deletions src/identity/create.ts
Expand Up @@ -72,9 +72,9 @@ export const createIdentity = async (masa: Masa): Promise<boolean> => {

export const createIdentityWithSoulName = async (
masa: Masa,
paymentMethod: PaymentMethod,
soulName: string,
duration: number,
paymentMethod: PaymentMethod
duration: number
): Promise<boolean> => {
let identityCreated = false;

Expand Down
6 changes: 3 additions & 3 deletions src/identity/identity.ts
Expand Up @@ -21,10 +21,10 @@ export class MasaIdentity extends MasaBase {

create = () => createIdentity(this.masa);
createWithSoulName = (
paymentMethod: PaymentMethod,
soulName: string,
duration: number,
paymentMethod: PaymentMethod
) => createIdentityWithSoulName(this.masa, soulName, duration, paymentMethod);
duration: number
) => createIdentityWithSoulName(this.masa, paymentMethod, soulName, duration);
load = (address?: string) => loadIdentityByAddress(this.masa, address);
burn = () => burnIdentity(this.masa);
show = (address?: string) => showIdentity(this.masa, address);
Expand Down
10 changes: 5 additions & 5 deletions src/soul-linker/establish-link.ts
Expand Up @@ -2,23 +2,23 @@ import Masa from "../masa";
import { PaymentMethod } from "../contracts";
import { BigNumber, Contract } from "ethers";
import { BaseResult, IPassport } from "../interface";
import { parsePassport } from "./passport";
import { parsePassport } from "./parse-passport";
import { Messages } from "../utils";

export type EstablishLinkResult = BaseResult;

export const establishLinkFromPassport = async (
masa: Masa,
paymentMethod: PaymentMethod,
contract: Contract,
passport: string,
paymentMethod: PaymentMethod
passport: string
) => {
const unpackedPassport: IPassport = parsePassport(passport);

return establishLink(
masa,
contract,
paymentMethod,
contract,
BigNumber.from(unpackedPassport.tokenId),
BigNumber.from(unpackedPassport.readerIdentityId),
unpackedPassport.signature,
Expand All @@ -29,8 +29,8 @@ export const establishLinkFromPassport = async (

export const establishLink = async (
masa: Masa,
contract: Contract,
paymentMethod: PaymentMethod,
contract: Contract,
tokenId: BigNumber,
readerIdentityId: BigNumber,
signature: string,
Expand Down
40 changes: 5 additions & 35 deletions src/soul-linker/index.ts
@@ -1,38 +1,8 @@
import Masa from "../masa";
import { createLink } from "./create-link";
import { PaymentMethod } from "../contracts";
import { establishLinkFromPassport } from "./establish-link";
import { BigNumber, Contract } from "ethers";
import { verifyLink } from "./verify-link";
import { listLinks } from "./list-links";
import { breakLink } from "./break-link";
import { queryLinkFromPassport } from "./query-link";
import { MasaBase } from "../helpers/masa-base";

export * from "./break-link";
export * from "./create-link";
export * from "./establish-link";
export * from "./verify-link";
export * from "./list-links";

export class MasaSoulLinker extends MasaBase {
constructor(masa: Masa, private contract: Contract) {
super(masa);
}

create = (tokenId: BigNumber, readerIdentityId: BigNumber) =>
createLink(this.masa, this.contract, tokenId, readerIdentityId);
establish = (passport: string, paymentMethod: PaymentMethod = "eth") =>
establishLinkFromPassport(
this.masa,
this.contract,
passport,
paymentMethod
);
verify = (tokenId: BigNumber, readerIdentityId?: BigNumber) =>
verifyLink(this.masa, this.contract, tokenId, readerIdentityId);
list = (tokenId: BigNumber) => listLinks(this.masa, this.contract, tokenId);
break = (tokenId: BigNumber, readerIdentityId: BigNumber) =>
breakLink(this.masa, this.contract, tokenId, readerIdentityId);
query = (passport: string, paymentMethod: PaymentMethod = "eth") =>
queryLinkFromPassport(this.masa, this.contract, passport, paymentMethod);
}
export * from "./parse-passport";
export * from "./query-link";
export * from "./soul-linker";
export * from "./verify-link";
File renamed without changes.
6 changes: 3 additions & 3 deletions src/soul-linker/query-link.ts
Expand Up @@ -2,17 +2,17 @@ import Masa from "../masa";
import { PaymentMethod } from "../contracts";
import { BigNumber, Contract } from "ethers";
import { BaseResult, IPassport } from "../interface";
import { parsePassport } from "./passport";
import { parsePassport } from "./parse-passport";
import { patchMetadataUrl } from "../helpers";
import { Messages } from "../utils";

export type QueryLinkResult = BaseResult;

export const queryLinkFromPassport = async (
masa: Masa,
paymentMethod: PaymentMethod,
contract: Contract,
passport: string,
paymentMethod: PaymentMethod
passport: string
) => {
const unpackedPassport: IPassport = parsePassport(passport);

Expand Down
33 changes: 33 additions & 0 deletions src/soul-linker/soul-linker.ts
@@ -0,0 +1,33 @@
import Masa from "../masa";
import { createLink } from "./create-link";
import { PaymentMethod } from "../contracts";
import { establishLinkFromPassport } from "./establish-link";
import { BigNumber, Contract } from "ethers";
import { verifyLink } from "./verify-link";
import { listLinks } from "./list-links";
import { breakLink } from "./break-link";
import { queryLinkFromPassport } from "./query-link";
import { MasaBase } from "../helpers/masa-base";

export class MasaSoulLinker extends MasaBase {
constructor(masa: Masa, private contract: Contract) {
super(masa);
}

create = (tokenId: BigNumber, readerIdentityId: BigNumber) =>
createLink(this.masa, this.contract, tokenId, readerIdentityId);
establish = (paymentMethod: PaymentMethod = "eth", passport: string) =>
establishLinkFromPassport(
this.masa,
paymentMethod,
this.contract,
passport
);
verify = (tokenId: BigNumber, readerIdentityId?: BigNumber) =>
verifyLink(this.masa, this.contract, tokenId, readerIdentityId);
list = (tokenId: BigNumber) => listLinks(this.masa, this.contract, tokenId);
break = (tokenId: BigNumber, readerIdentityId: BigNumber) =>
breakLink(this.masa, this.contract, tokenId, readerIdentityId);
query = (paymentMethod: PaymentMethod, passport: string) =>
queryLinkFromPassport(this.masa, paymentMethod, this.contract, passport);
}
20 changes: 13 additions & 7 deletions src/soul-name/create.ts
Expand Up @@ -6,9 +6,9 @@ import { Event } from "ethers";

export const getRegistrationPrice = async (
masa: Masa,
paymentMethod: PaymentMethod,
soulName: string,
duration: number,
paymentMethod: PaymentMethod
duration: number
) => {
const { length } = masa.soulName.validate(soulName);

Expand All @@ -25,18 +25,21 @@ export const getRegistrationPrice = async (

const purchaseSoulName = async (
masa: Masa,
paymentMethod: PaymentMethod,
soulName: string,
soulNameLength: number,
duration: number,
paymentMethod: PaymentMethod
receiver?: string
): Promise<{ tokenId: string; soulName: string } | undefined> => {
if (await masa.contracts.soulName.isAvailable(soulName)) {
const extension =
await masa.contracts.instances.SoulNameContract.extension();

receiver = receiver || (await masa.config.wallet.getAddress());

const storeMetadataData = await masa.client.soulName.store(
`${soulName}${extension}`,
await masa.config.wallet.getAddress(),
receiver,
duration,
masa.config.network
);
Expand All @@ -54,7 +57,8 @@ const purchaseSoulName = async (
duration,
soulNameMetadataUrl,
storeMetadataData.authorityAddress,
storeMetadataData.signature
storeMetadataData.signature,
receiver
);

console.log(Messages.WaitingToFinalize(tx.hash));
Expand Down Expand Up @@ -82,9 +86,10 @@ const purchaseSoulName = async (

export const createSoulName = async (
masa: Masa,
paymentMethod: PaymentMethod,
soulName: string,
duration: number,
paymentMethod: PaymentMethod
receiver?: string
): Promise<CreateSoulNameResult> => {
const result: CreateSoulNameResult = {
success: false,
Expand Down Expand Up @@ -112,10 +117,11 @@ export const createSoulName = async (

const soulNameInstance = await purchaseSoulName(
masa,
paymentMethod,
soulName,
length,
duration,
paymentMethod
receiver
);

if (soulNameInstance) {
Expand Down
14 changes: 9 additions & 5 deletions src/soul-name/soul-name.ts
Expand Up @@ -20,19 +20,23 @@ export class MasaSoulName extends MasaBase {
}

getRegistrationPrice = (
paymentMethod: PaymentMethod = "eth",
soulName: string,
duration: number,
paymentMethod: PaymentMethod
) => getRegistrationPrice(this.masa, soulName, duration, paymentMethod);
duration: number
) => getRegistrationPrice(this.masa, paymentMethod, soulName, duration);
list = (address?: string) => listSoulNames(this.masa, address);
loadSoulNamesByIdentityId = (identityId: BigNumber) =>
loadSoulNamesByIdentityId(this.masa, identityId);
loadSoulNameByName = (soulName: string) =>
loadSoulNameByName(this.masa, soulName);
loadSoulNameByTokenId = (tokenId: string | BigNumber) =>
loadSoulNameByTokenId(this.masa, tokenId);
create = (soulName: string, duration: number, paymentMethod: PaymentMethod) =>
createSoulName(this.masa, soulName, duration, paymentMethod);
create = (
paymentMethod: PaymentMethod = "eth",
soulName: string,
duration: number,
receiver?: string
) => createSoulName(this.masa, paymentMethod, soulName, duration, receiver);
burn = (soulName: string) => burnSoulName(this.masa, soulName);
send = (soulName: string, receiver: string) =>
sendSoulName(this.masa, soulName, receiver);
Expand Down

0 comments on commit 9a425c0

Please sign in to comment.