54 lines
1.8 KiB
TypeScript
54 lines
1.8 KiB
TypeScript
import { Injectable } from '@angular/core';
|
|
import { environment } from '@src/environments/environment';
|
|
import { CICRegistry, FileGetter } from '@cicnet/cic-client';
|
|
import { TokenRegistry } from '@app/_eth';
|
|
import { HttpGetter } from '@app/_helpers';
|
|
import { Web3Service } from '@app/_services/web3.service';
|
|
|
|
// export interface RegistryCollection {
|
|
// cicRegistry: CICRegistry;
|
|
// tokenRegistry: TokenRegistry;
|
|
// }
|
|
|
|
@Injectable({
|
|
providedIn: 'root',
|
|
})
|
|
export class RegistryService {
|
|
static fileGetter: FileGetter = new HttpGetter();
|
|
private static registry: CICRegistry;
|
|
private static tokenRegistry: TokenRegistry;
|
|
// private static registries: RegistryCollection;
|
|
|
|
public static async getRegistry(): Promise<CICRegistry> {
|
|
if (!RegistryService.registry) {
|
|
RegistryService.registry = new CICRegistry(
|
|
Web3Service.getInstance(),
|
|
environment.registryAddress,
|
|
'Registry',
|
|
RegistryService.fileGetter,
|
|
['../../assets/js/block-sync/data']
|
|
);
|
|
RegistryService.registry.declaratorHelper.addTrust(environment.trustedDeclaratorAddress);
|
|
await RegistryService.registry.load();
|
|
}
|
|
return RegistryService.registry;
|
|
}
|
|
|
|
public static async getTokenRegistry(): Promise<TokenRegistry> {
|
|
if (!RegistryService.tokenRegistry) {
|
|
// then initial it
|
|
const registry = await RegistryService.getRegistry();
|
|
const tokenRegistryAddress = await RegistryService.registry.getContractAddressByName(
|
|
'TokenRegistry'
|
|
);
|
|
RegistryService.tokenRegistry = new TokenRegistry(tokenRegistryAddress);
|
|
return new Promise((resolve, reject) => {
|
|
resolve(RegistryService.tokenRegistry);
|
|
});
|
|
}
|
|
return new Promise((resolve, reject) => {
|
|
resolve(RegistryService.tokenRegistry);
|
|
});
|
|
}
|
|
}
|