src/admin/role.service.ts
Properties |
|
Methods |
|
| Async setContractManager | ||||
setContractManager(contractManagerDto)
|
||||
|
Defined in src/admin/role.service.ts:15
|
||||
|
Parameters :
Returns :
unknown
|
| Private Readonly adminProfileService |
Type : AdminProfileService
|
Decorators :
@Inject(AdminProfileService)
|
|
Defined in src/admin/role.service.ts:13
|
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,
],
});
}
}