File

src/admin/role.service.ts

Index

Properties
Methods

Methods

Async setContractManager
setContractManager(contractManagerDto)
Parameters :
Name Optional
contractManagerDto No
Returns : unknown

Properties

Private Readonly adminProfileService
Type : AdminProfileService
Decorators :
@Inject(AdminProfileService)
import { BadRequestException, Inject, Injectable } from "@nestjs/common";
import { transactionSubmitter } from "src/common/provider";
import { RoleRegistry } from "src/shared/artifacts/RoleRegistry";
import { ContractName, TransactionNames } from "src/common/interfaces";
import { encodeBytes32String } from "ethers";
import { getContractByName } from "src/common/provider/web3/web3Provider";
import { ContractManagerDto } from "./dtos/set-contractManager.dto";
import { AdminProfileService } from "../admin-profile/admin-profile.service";

@Injectable()
export class RoleService {
  @Inject(AdminProfileService)
  private readonly adminProfileService: AdminProfileService;

  async setContractManager(
    contractManagerDto: ContractManagerDto & { email: string },
  ) {
    if (
      !contractManagerDto.registryName &&
      !contractManagerDto.contractAddress
    ) {
      throw new BadRequestException(
        "Registry name or contract address missing",
      );
    }
    const roleBytes = encodeBytes32String(contractManagerDto.roleName);

    return await transactionSubmitter({
      signerKey: (
        await this.adminProfileService.getCustodial(contractManagerDto.email)
      ).privateKey,
      contractAddress: RoleRegistry.address,
      transactionName: TransactionNames.setContractManager,
      contractName: ContractName.RoleRegistry,
      args: [
        contractManagerDto.contractAddress
          ? contractManagerDto.contractAddress
          : getContractByName[contractManagerDto.registryName].address,
        roleBytes,
      ],
    });
  }
}

results matching ""

    No results matching ""