Merge branch 'spencer/page-reload' into 'master'
Fix 404 on page reload. See merge request grassrootseconomics/cic-staff-client!19
This commit is contained in:
commit
68e520d516
33
README.md
33
README.md
@ -10,7 +10,9 @@ Run `npm install -g @angular/cli` to install the angular CLI.
|
|||||||
|
|
||||||
## Development server
|
## Development server
|
||||||
|
|
||||||
Run `npm run start:dev` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.
|
Run `ng serve` for a local server, `npm run start:dev` for a dev server and `npm run start:prod` for a prod server..
|
||||||
|
|
||||||
|
Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.
|
||||||
|
|
||||||
## Code scaffolding
|
## Code scaffolding
|
||||||
|
|
||||||
@ -22,14 +24,21 @@ Run `ng generate module module-name --route module-name --module app.module` to
|
|||||||
|
|
||||||
## Build
|
## Build
|
||||||
|
|
||||||
set you environment variables - set these via environment variables as found in set-env.ts
|
Run `ng build` to build the project using local configurations.
|
||||||
// TODO create a .env file so people don't have to set these one-by-one
|
The build artifacts will be stored in the `dist/` directory.
|
||||||
|
|
||||||
Run `npm run build:dev` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `build:prod` script for a production build.
|
Use the `npm run build:dev` script for a development build and the `npm run build:prod` script for a production build.
|
||||||
|
|
||||||
|
## PWA
|
||||||
|
|
||||||
|
The app supports Progressive Web App capabilities.
|
||||||
|
|
||||||
|
Run `npm run start:pwa` to run the project in PWA mode.
|
||||||
|
PWA mode works using production configurations.
|
||||||
|
|
||||||
## Running unit tests
|
## Running unit tests
|
||||||
|
|
||||||
Run `npm run test:dev` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
||||||
|
|
||||||
## Running end-to-end tests
|
## Running end-to-end tests
|
||||||
|
|
||||||
@ -37,11 +46,19 @@ Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protrac
|
|||||||
|
|
||||||
## Environment variables
|
## Environment variables
|
||||||
|
|
||||||
Environment variables are contained in the `.env` file. See `.env.example` for a template.
|
Default environment variables are located in the `src/environments/` directory.
|
||||||
|
Custom environment variables are contained in the `.env` file. See `.env.example` for a template.
|
||||||
|
|
||||||
Default environment variables are set in the `set-env.ts` file.
|
Custom environment variables are set via the `set-env.ts` file.
|
||||||
Once loaded they will be populated in the directory `src/environments/`.
|
Once loaded they will be populated in the directory `src/environments/`.
|
||||||
It contains environment variables for development on `environment.ts` and production on `environment.prod.ts`.
|
It contains environment variables for development on `environment.dev.ts` and production on `environment.prod.ts`.
|
||||||
|
|
||||||
|
## Code formatting
|
||||||
|
|
||||||
|
The system has automated code formatting using [Prettier](https://prettier.io/) and [TsLint](https://palantir.github.io/tslint/).
|
||||||
|
To view the styling rules set, check out `.prettierrc` and `tslint.json`.
|
||||||
|
|
||||||
|
Run `npm run format:lint` To perform formatting and linting of the codebase.
|
||||||
|
|
||||||
## Further help
|
## Further help
|
||||||
|
|
||||||
|
@ -9,13 +9,14 @@
|
|||||||
"build:dev": "ng build -c dev",
|
"build:dev": "ng build -c dev",
|
||||||
"build:prod": "ng build --prod",
|
"build:prod": "ng build --prod",
|
||||||
"start:pwa": "npm run build:prod && http-server -p 4200 dist/cic-staff-client",
|
"start:pwa": "npm run build:prod && http-server -p 4200 dist/cic-staff-client",
|
||||||
"test:dev": "ng test",
|
"test": "ng test",
|
||||||
"format:check": "prettier --config ./.prettierrc --list-different \"src/{app,environments,assets}/**/*.{ts,js,json,css,scss}\"",
|
"format:check": "prettier --config ./.prettierrc --list-different \"src/{app,environments,assets}/**/*.{ts,js,json,css,scss}\"",
|
||||||
"format:refactor": "prettier --config ./.prettierrc --write \"src/{app,environments,assets}/**/*.{ts,js,json,css,scss}\"",
|
"format:refactor": "prettier --config ./.prettierrc --write \"src/{app,environments,assets}/**/*.{ts,js,json,css,scss}\"",
|
||||||
"format:fix": "pretty-quick --staged",
|
"format:fix": "pretty-quick --staged",
|
||||||
|
"format:lint": "npm run format:refactor && npm run lint",
|
||||||
"lint": "ng lint",
|
"lint": "ng lint",
|
||||||
"e2e": "ng e2e",
|
"e2e": "ng e2e",
|
||||||
"precommit": "format:fix && lint",
|
"precommit": "npm run format:fix && npm run lint",
|
||||||
"postinstall": "node patch-webpack.js",
|
"postinstall": "node patch-webpack.js",
|
||||||
"prepare": "husky install"
|
"prepare": "husky install"
|
||||||
},
|
},
|
||||||
|
10
set-env.ts
10
set-env.ts
@ -6,7 +6,7 @@ require('dotenv').config();
|
|||||||
const environment = argv.environment;
|
const environment = argv.environment;
|
||||||
const isProduction = environment === 'prod';
|
const isProduction = environment === 'prod';
|
||||||
|
|
||||||
const targetPath = isProduction ? `./src/environments/environment.prod.ts` : `./src/environments/environment.ts`;
|
const targetPath = isProduction ? `./src/environments/environment.prod.ts` : `./src/environments/environment.dev.ts`;
|
||||||
|
|
||||||
const environmentVars = `import {NgxLoggerLevel} from 'ngx-logger';
|
const environmentVars = `import {NgxLoggerLevel} from 'ngx-logger';
|
||||||
|
|
||||||
@ -15,13 +15,13 @@ export const environment = {
|
|||||||
bloxbergChainId: ${process.env.CIC_CHAIN_ID || 8996},
|
bloxbergChainId: ${process.env.CIC_CHAIN_ID || 8996},
|
||||||
logLevel: ${process.env.LOG_LEVEL || 'NgxLoggerLevel.ERROR'},
|
logLevel: ${process.env.LOG_LEVEL || 'NgxLoggerLevel.ERROR'},
|
||||||
serverLogLevel: ${process.env.SERVER_LOG_LEVEL || 'NgxLoggerLevel.OFF'},
|
serverLogLevel: ${process.env.SERVER_LOG_LEVEL || 'NgxLoggerLevel.OFF'},
|
||||||
loggingUrl: '${process.env.CIC_LOGGING_URL || 'http://localhost:8000'}',
|
loggingUrl: '${process.env.CIC_LOGGING_URL || ''}',
|
||||||
cicMetaUrl: '${process.env.CIC_META_URL || 'https://meta.dev.grassrootseconomics.net'}',
|
cicMetaUrl: '${process.env.CIC_META_URL || 'https://meta.dev.grassrootseconomics.net'}',
|
||||||
publicKeysUrl: '${process.env.CIC_KEYS_URL || 'http://localhost:8000/keys.asc'}',
|
publicKeysUrl: '${process.env.CIC_KEYS_URL || 'https://dev.grassrootseconomics.net/.well-known/publickeys'}',
|
||||||
cicCacheUrl: '${process.env.CIC_CACHE_URL || 'https://cache.dev.grassrootseconomics.net'}',
|
cicCacheUrl: '${process.env.CIC_CACHE_URL || 'https://cache.dev.grassrootseconomics.net'}',
|
||||||
web3Provider: '${process.env.CIC_WEB3_PROVIDER || 'ws://localhost:63546'}',
|
web3Provider: '${process.env.CIC_WEB3_PROVIDER || 'wss://bloxberg-ws.dev.grassrootseconomics.net'}',
|
||||||
cicUssdUrl: '${process.env.CIC_USSD_URL || 'https://ussd.dev.grassrootseconomics.net'}',
|
cicUssdUrl: '${process.env.CIC_USSD_URL || 'https://ussd.dev.grassrootseconomics.net'}',
|
||||||
registryAddress: '${process.env.CIC_REGISTRY_ADDRESS || '0x6Ca3cB14aA6F761712E1C18646AfBA4d5Ae249E8'}',
|
registryAddress: '${process.env.CIC_REGISTRY_ADDRESS || '0xea6225212005e86a4490018ded4bf37f3e772161'}',
|
||||||
trustedDeclaratorAddress: '${process.env.CIC_TRUSTED_ADDRESS || '0xEb3907eCad74a0013c259D5874AE7f22DcBcC95C'}'
|
trustedDeclaratorAddress: '${process.env.CIC_TRUSTED_ADDRESS || '0xEb3907eCad74a0013c259D5874AE7f22DcBcC95C'}'
|
||||||
};
|
};
|
||||||
`;
|
`;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { environment } from '@src/environments/environment';
|
import { environment } from '@src/environments/environment';
|
||||||
import Web3 from 'web3';
|
import Web3 from 'web3';
|
||||||
|
|
||||||
const abi: Array<any> = require('@src/assets/js/block-sync/data/AccountRegistry.json');
|
const abi: Array<any> = require('@src/assets/js/block-sync/data/AccountsIndex.json');
|
||||||
const web3: Web3 = new Web3(environment.web3Provider);
|
const web3: Web3 = new Web3(environment.web3Provider);
|
||||||
|
|
||||||
export class AccountIndex {
|
export class AccountIndex {
|
||||||
@ -20,11 +20,11 @@ export class AccountIndex {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public async totalAccounts(): Promise<number> {
|
public async totalAccounts(): Promise<number> {
|
||||||
return await this.contract.methods.count().call();
|
return await this.contract.methods.entryCount().call();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async haveAccount(address: string): Promise<boolean> {
|
public async haveAccount(address: string): Promise<boolean> {
|
||||||
return (await this.contract.methods.accountIndex(address).call()) !== 0;
|
return (await this.contract.methods.have(address).call()) !== 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async last(numberOfAccounts: number): Promise<Array<string>> {
|
public async last(numberOfAccounts: number): Promise<Array<string>> {
|
||||||
@ -35,7 +35,7 @@ export class AccountIndex {
|
|||||||
}
|
}
|
||||||
const accounts: Array<string> = [];
|
const accounts: Array<string> = [];
|
||||||
for (let i = count - 1; i > lowest; i--) {
|
for (let i = count - 1; i > lowest; i--) {
|
||||||
const account: string = await this.contract.methods.accounts(i).call();
|
const account: string = await this.contract.methods.entry(i).call();
|
||||||
accounts.push(account);
|
accounts.push(account);
|
||||||
}
|
}
|
||||||
return accounts;
|
return accounts;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import Web3 from 'web3';
|
import Web3 from 'web3';
|
||||||
import { environment } from '@src/environments/environment';
|
import { environment } from '@src/environments/environment';
|
||||||
|
|
||||||
const abi: Array<any> = require('@src/assets/js/block-sync/data/TokenUniqueSymbolIndex.json');
|
const abi: Array<any> = require('@src/assets/js/block-sync/data/AccountsIndex.json');
|
||||||
const web3: Web3 = new Web3(environment.web3Provider);
|
const web3: Web3 = new Web3(environment.web3Provider);
|
||||||
|
|
||||||
export class TokenRegistry {
|
export class TokenRegistry {
|
||||||
|
@ -13,7 +13,7 @@ export class RegistryService {
|
|||||||
registry: CICRegistry = new CICRegistry(
|
registry: CICRegistry = new CICRegistry(
|
||||||
this.web3,
|
this.web3,
|
||||||
environment.registryAddress,
|
environment.registryAddress,
|
||||||
'CICRegistry',
|
'Registry',
|
||||||
this.fileGetter,
|
this.fileGetter,
|
||||||
['../../assets/js/block-sync/data']
|
['../../assets/js/block-sync/data']
|
||||||
);
|
);
|
||||||
|
@ -16,6 +16,7 @@ const routes: Routes = [
|
|||||||
imports: [
|
imports: [
|
||||||
RouterModule.forRoot(routes, {
|
RouterModule.forRoot(routes, {
|
||||||
preloadingStrategy: PreloadAllModules,
|
preloadingStrategy: PreloadAllModules,
|
||||||
|
useHash: true,
|
||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
exports: [RouterModule],
|
exports: [RouterModule],
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import {ChangeDetectionStrategy, Component, HostListener, OnInit} from '@angular/core';
|
import { ChangeDetectionStrategy, Component, HostListener, OnInit } from '@angular/core';
|
||||||
import {
|
import {
|
||||||
AuthService,
|
AuthService,
|
||||||
ErrorDialogService,
|
ErrorDialogService,
|
||||||
|
@ -8,20 +8,6 @@
|
|||||||
"name": "AccountAdded",
|
"name": "AccountAdded",
|
||||||
"type": "event"
|
"type": "event"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"inputs": [{ "internalType": "uint256", "name": "_idx", "type": "uint256" }],
|
|
||||||
"name": "accounts",
|
|
||||||
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
|
|
||||||
"stateMutability": "view",
|
|
||||||
"type": "function"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"inputs": [{ "internalType": "address", "name": "_account", "type": "address" }],
|
|
||||||
"name": "accountsIndex",
|
|
||||||
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
|
|
||||||
"stateMutability": "view",
|
|
||||||
"type": "function"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"inputs": [{ "internalType": "address", "name": "_account", "type": "address" }],
|
"inputs": [{ "internalType": "address", "name": "_account", "type": "address" }],
|
||||||
"name": "add",
|
"name": "add",
|
||||||
@ -30,24 +16,17 @@
|
|||||||
"type": "function"
|
"type": "function"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"inputs": [{ "internalType": "address", "name": "_writer", "type": "address" }],
|
"inputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
|
||||||
"name": "addWriter",
|
"name": "entry",
|
||||||
"outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
|
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
|
||||||
"stateMutability": "nonpayable",
|
|
||||||
"type": "function"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"inputs": [],
|
|
||||||
"name": "count",
|
|
||||||
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
|
|
||||||
"stateMutability": "view",
|
"stateMutability": "view",
|
||||||
"type": "function"
|
"type": "function"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"inputs": [{ "internalType": "address", "name": "_writer", "type": "address" }],
|
"inputs": [],
|
||||||
"name": "deleteWriter",
|
"name": "entryCount",
|
||||||
"outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
|
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "view",
|
||||||
"type": "function"
|
"type": "function"
|
||||||
},
|
},
|
||||||
{
|
{
|
@ -1,18 +1,28 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
|
"anonymous": false,
|
||||||
"inputs": [
|
"inputs": [
|
||||||
{ "internalType": "address", "name": "_address", "type": "address" },
|
{ "indexed": false, "internalType": "address", "name": "_declarator", "type": "address" },
|
||||||
|
{ "indexed": false, "internalType": "address", "name": "_subject", "type": "address" },
|
||||||
|
{ "indexed": false, "internalType": "bytes32", "name": "_proof", "type": "bytes32" }
|
||||||
|
],
|
||||||
|
"name": "DeclarationAdded",
|
||||||
|
"type": "event"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"inputs": [
|
||||||
|
{ "internalType": "address", "name": "_subject", "type": "address" },
|
||||||
{ "internalType": "bytes32", "name": "_proof", "type": "bytes32" }
|
{ "internalType": "bytes32", "name": "_proof", "type": "bytes32" }
|
||||||
],
|
],
|
||||||
"name": "addDeclaration",
|
"name": "addDeclaration",
|
||||||
"outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
|
"outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
|
||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
"type": "function"
|
"type": "function"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"inputs": [
|
"inputs": [
|
||||||
{ "internalType": "address", "name": "_subjectAddress", "type": "address" },
|
{ "internalType": "address", "name": "_declarator", "type": "address" },
|
||||||
{ "internalType": "address", "name": "_objectAddress", "type": "address" }
|
{ "internalType": "address", "name": "_subject", "type": "address" }
|
||||||
],
|
],
|
||||||
"name": "declaration",
|
"name": "declaration",
|
||||||
"outputs": [{ "internalType": "bytes32[]", "name": "", "type": "bytes32[]" }],
|
"outputs": [{ "internalType": "bytes32[]", "name": "", "type": "bytes32[]" }],
|
||||||
@ -21,7 +31,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"inputs": [
|
"inputs": [
|
||||||
{ "internalType": "address", "name": "_subjectAddress", "type": "address" },
|
{ "internalType": "address", "name": "_declarator", "type": "address" },
|
||||||
{ "internalType": "uint256", "name": "_idx", "type": "uint256" }
|
{ "internalType": "uint256", "name": "_idx", "type": "uint256" }
|
||||||
],
|
],
|
||||||
"name": "declarationAddressAt",
|
"name": "declarationAddressAt",
|
||||||
@ -30,7 +40,7 @@
|
|||||||
"type": "function"
|
"type": "function"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"inputs": [{ "internalType": "address", "name": "_subjectAddress", "type": "address" }],
|
"inputs": [{ "internalType": "address", "name": "_declarator", "type": "address" }],
|
||||||
"name": "declarationCount",
|
"name": "declarationCount",
|
||||||
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
|
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
|
||||||
"stateMutability": "view",
|
"stateMutability": "view",
|
||||||
@ -38,7 +48,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"inputs": [
|
"inputs": [
|
||||||
{ "internalType": "address", "name": "_targetAddress", "type": "address" },
|
{ "internalType": "address", "name": "_subject", "type": "address" },
|
||||||
{ "internalType": "uint256", "name": "_idx", "type": "uint256" }
|
{ "internalType": "uint256", "name": "_idx", "type": "uint256" }
|
||||||
],
|
],
|
||||||
"name": "declaratorAddressAt",
|
"name": "declaratorAddressAt",
|
||||||
@ -47,7 +57,7 @@
|
|||||||
"type": "function"
|
"type": "function"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"inputs": [{ "internalType": "address", "name": "_objectAddress", "type": "address" }],
|
"inputs": [{ "internalType": "address", "name": "_subject", "type": "address" }],
|
||||||
"name": "declaratorCount",
|
"name": "declaratorCount",
|
||||||
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
|
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
|
||||||
"stateMutability": "view",
|
"stateMutability": "view",
|
@ -19,6 +19,17 @@
|
|||||||
"name": "Transfer",
|
"name": "Transfer",
|
||||||
"type": "event"
|
"type": "event"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"anonymous": false,
|
||||||
|
"inputs": [
|
||||||
|
{ "indexed": true, "internalType": "address", "name": "_from", "type": "address" },
|
||||||
|
{ "indexed": true, "internalType": "address", "name": "_to", "type": "address" },
|
||||||
|
{ "indexed": true, "internalType": "address", "name": "_spender", "type": "address" },
|
||||||
|
{ "indexed": false, "internalType": "uint256", "name": "_value", "type": "uint256" }
|
||||||
|
],
|
||||||
|
"name": "TransferFrom",
|
||||||
|
"type": "event"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"inputs": [
|
"inputs": [
|
||||||
{ "internalType": "address", "name": "_owner", "type": "address" },
|
{ "internalType": "address", "name": "_owner", "type": "address" },
|
||||||
@ -39,17 +50,10 @@
|
|||||||
"stateMutability": "nonpayable",
|
"stateMutability": "nonpayable",
|
||||||
"type": "function"
|
"type": "function"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"inputs": [{ "internalType": "address", "name": "", "type": "address" }],
|
|
||||||
"name": "balanceOf",
|
|
||||||
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
|
|
||||||
"stateMutability": "view",
|
|
||||||
"type": "function"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"inputs": [],
|
"inputs": [],
|
||||||
"name": "decimals",
|
"name": "decimals",
|
||||||
"outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }],
|
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
|
||||||
"stateMutability": "view",
|
"stateMutability": "view",
|
||||||
"type": "function"
|
"type": "function"
|
||||||
},
|
},
|
||||||
|
@ -5,52 +5,5 @@
|
|||||||
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
|
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
|
||||||
"stateMutability": "view",
|
"stateMutability": "view",
|
||||||
"type": "function"
|
"type": "function"
|
||||||
},
|
|
||||||
{
|
|
||||||
"inputs": [{ "internalType": "bytes32", "name": "_identifier", "type": "bytes32" }],
|
|
||||||
"name": "chainOf",
|
|
||||||
"outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
|
|
||||||
"stateMutability": "view",
|
|
||||||
"type": "function"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"inputs": [{ "internalType": "bytes32", "name": "_chain", "type": "bytes32" }],
|
|
||||||
"name": "configSumOf",
|
|
||||||
"outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
|
|
||||||
"stateMutability": "view",
|
|
||||||
"type": "function"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"inputs": [],
|
|
||||||
"name": "identifiers",
|
|
||||||
"outputs": [{ "internalType": "bytes32[]", "name": "", "type": "bytes32[]" }],
|
|
||||||
"stateMutability": "view",
|
|
||||||
"type": "function"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"inputs": [],
|
|
||||||
"name": "owner",
|
|
||||||
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
|
|
||||||
"stateMutability": "view",
|
|
||||||
"type": "function"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"inputs": [],
|
|
||||||
"name": "seal",
|
|
||||||
"outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
|
|
||||||
"stateMutability": "nonpayable",
|
|
||||||
"type": "function"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"inputs": [
|
|
||||||
{ "internalType": "bytes32", "name": "_identifier", "type": "bytes32" },
|
|
||||||
{ "internalType": "address", "name": "_address", "type": "address" },
|
|
||||||
{ "internalType": "bytes32", "name": "_chainDescriptor", "type": "bytes32" },
|
|
||||||
{ "internalType": "bytes32", "name": "_chainConfig", "type": "bytes32" }
|
|
||||||
],
|
|
||||||
"name": "set",
|
|
||||||
"outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
|
|
||||||
"stateMutability": "nonpayable",
|
|
||||||
"type": "function"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -11,6 +11,6 @@ export const environment = {
|
|||||||
cicCacheUrl: 'https://cache.dev.grassrootseconomics.net',
|
cicCacheUrl: 'https://cache.dev.grassrootseconomics.net',
|
||||||
web3Provider: 'wss://bloxberg-ws.dev.grassrootseconomics.net',
|
web3Provider: 'wss://bloxberg-ws.dev.grassrootseconomics.net',
|
||||||
cicUssdUrl: 'https://ussd.dev.grassrootseconomics.net',
|
cicUssdUrl: 'https://ussd.dev.grassrootseconomics.net',
|
||||||
registryAddress: '0xAf1B487491073C2d49136Db3FD87E293302CF839',
|
registryAddress: '0xea6225212005e86a4490018ded4bf37f3e772161',
|
||||||
trustedDeclaratorAddress: '0xEb3907eCad74a0013c259D5874AE7f22DcBcC95C',
|
trustedDeclaratorAddress: '0xEb3907eCad74a0013c259D5874AE7f22DcBcC95C',
|
||||||
};
|
};
|
||||||
|
@ -9,7 +9,7 @@ export const environment = {
|
|||||||
cicMetaUrl: 'https://meta.dev.grassrootseconomics.net',
|
cicMetaUrl: 'https://meta.dev.grassrootseconomics.net',
|
||||||
publicKeysUrl: 'https://dev.grassrootseconomics.net/.well-known/publickeys/',
|
publicKeysUrl: 'https://dev.grassrootseconomics.net/.well-known/publickeys/',
|
||||||
cicCacheUrl: 'https://cache.dev.grassrootseconomics.net',
|
cicCacheUrl: 'https://cache.dev.grassrootseconomics.net',
|
||||||
web3Provider: 'ws://localhost:63546',
|
web3Provider: 'wss://bloxberg-ws.dev.grassrootseconomics.net',
|
||||||
cicUssdUrl: 'https://ussd.dev.grassrootseconomics.net',
|
cicUssdUrl: 'https://ussd.dev.grassrootseconomics.net',
|
||||||
registryAddress: '0xea6225212005e86a4490018ded4bf37f3e772161',
|
registryAddress: '0xea6225212005e86a4490018ded4bf37f3e772161',
|
||||||
trustedDeclaratorAddress: '0xEb3907eCad74a0013c259D5874AE7f22DcBcC95C',
|
trustedDeclaratorAddress: '0xEb3907eCad74a0013c259D5874AE7f22DcBcC95C',
|
||||||
|
@ -8,34 +8,34 @@
|
|||||||
<meta content="A fully featured admin client for managing users and transactions in the CIC network." name="description"/>
|
<meta content="A fully featured admin client for managing users and transactions in the CIC network." name="description"/>
|
||||||
<meta content="Spencer Ofwiti" name="author"/>
|
<meta content="Spencer Ofwiti" name="author"/>
|
||||||
<link rel="icon" type="image/x-icon" href="assets/icons/manifest-icon-512.png">
|
<link rel="icon" type="image/x-icon" href="assets/icons/manifest-icon-512.png">
|
||||||
<link rel="apple-touch-icon" href="src/assets/icons/apple-icon-180.png">
|
<link rel="apple-touch-icon" href="assets/icons/apple-icon-180.png">
|
||||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||||
<link rel="apple-touch-startup-image" href="src/assets/icons/apple-splash-2048-2732.jpg" media="(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
|
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-2048-2732.jpg" media="(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
|
||||||
<link rel="apple-touch-startup-image" href="src/assets/icons/apple-splash-2732-2048.jpg" media="(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
|
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-2732-2048.jpg" media="(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
|
||||||
<link rel="apple-touch-startup-image" href="src/assets/icons/apple-splash-1668-2388.jpg" media="(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
|
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-1668-2388.jpg" media="(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
|
||||||
<link rel="apple-touch-startup-image" href="src/assets/icons/apple-splash-2388-1668.jpg" media="(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
|
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-2388-1668.jpg" media="(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
|
||||||
<link rel="apple-touch-startup-image" href="src/assets/icons/apple-splash-1536-2048.jpg" media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
|
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-1536-2048.jpg" media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
|
||||||
<link rel="apple-touch-startup-image" href="src/assets/icons/apple-splash-2048-1536.jpg" media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
|
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-2048-1536.jpg" media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
|
||||||
<link rel="apple-touch-startup-image" href="src/assets/icons/apple-splash-1668-2224.jpg" media="(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
|
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-1668-2224.jpg" media="(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
|
||||||
<link rel="apple-touch-startup-image" href="src/assets/icons/apple-splash-2224-1668.jpg" media="(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
|
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-2224-1668.jpg" media="(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
|
||||||
<link rel="apple-touch-startup-image" href="src/assets/icons/apple-splash-1620-2160.jpg" media="(device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
|
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-1620-2160.jpg" media="(device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
|
||||||
<link rel="apple-touch-startup-image" href="src/assets/icons/apple-splash-2160-1620.jpg" media="(device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
|
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-2160-1620.jpg" media="(device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
|
||||||
<link rel="apple-touch-startup-image" href="src/assets/icons/apple-splash-1284-2778.jpg" media="(device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
|
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-1284-2778.jpg" media="(device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
|
||||||
<link rel="apple-touch-startup-image" href="src/assets/icons/apple-splash-2778-1284.jpg" media="(device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
|
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-2778-1284.jpg" media="(device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
|
||||||
<link rel="apple-touch-startup-image" href="src/assets/icons/apple-splash-1170-2532.jpg" media="(device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
|
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-1170-2532.jpg" media="(device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
|
||||||
<link rel="apple-touch-startup-image" href="src/assets/icons/apple-splash-2532-1170.jpg" media="(device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
|
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-2532-1170.jpg" media="(device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
|
||||||
<link rel="apple-touch-startup-image" href="src/assets/icons/apple-splash-1125-2436.jpg" media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
|
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-1125-2436.jpg" media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
|
||||||
<link rel="apple-touch-startup-image" href="src/assets/icons/apple-splash-2436-1125.jpg" media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
|
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-2436-1125.jpg" media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
|
||||||
<link rel="apple-touch-startup-image" href="src/assets/icons/apple-splash-1242-2688.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
|
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-1242-2688.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
|
||||||
<link rel="apple-touch-startup-image" href="src/assets/icons/apple-splash-2688-1242.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
|
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-2688-1242.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
|
||||||
<link rel="apple-touch-startup-image" href="src/assets/icons/apple-splash-828-1792.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
|
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-828-1792.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
|
||||||
<link rel="apple-touch-startup-image" href="src/assets/icons/apple-splash-1792-828.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
|
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-1792-828.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
|
||||||
<link rel="apple-touch-startup-image" href="src/assets/icons/apple-splash-1242-2208.jpg" media="(device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
|
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-1242-2208.jpg" media="(device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
|
||||||
<link rel="apple-touch-startup-image" href="src/assets/icons/apple-splash-2208-1242.jpg" media="(device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
|
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-2208-1242.jpg" media="(device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
|
||||||
<link rel="apple-touch-startup-image" href="src/assets/icons/apple-splash-750-1334.jpg" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
|
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-750-1334.jpg" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
|
||||||
<link rel="apple-touch-startup-image" href="src/assets/icons/apple-splash-1334-750.jpg" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
|
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-1334-750.jpg" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
|
||||||
<link rel="apple-touch-startup-image" href="src/assets/icons/apple-splash-640-1136.jpg" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
|
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-640-1136.jpg" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
|
||||||
<link rel="apple-touch-startup-image" href="src/assets/icons/apple-splash-1136-640.jpg" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
|
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-1136-640.jpg" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
|
||||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">
|
||||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
|
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
|
||||||
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500&display=swap" rel="stylesheet">
|
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500&display=swap" rel="stylesheet">
|
||||||
|
@ -19,13 +19,13 @@
|
|||||||
],
|
],
|
||||||
"icons": [
|
"icons": [
|
||||||
{
|
{
|
||||||
"src": "src/assets/icons/manifest-icon-192.png",
|
"src": "assets/icons/manifest-icon-192.png",
|
||||||
"sizes": "192x192",
|
"sizes": "192x192",
|
||||||
"type": "image/png",
|
"type": "image/png",
|
||||||
"purpose": "maskable any"
|
"purpose": "maskable any"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"src": "src/assets/icons/manifest-icon-512.png",
|
"src": "assets/icons/manifest-icon-512.png",
|
||||||
"sizes": "512x512",
|
"sizes": "512x512",
|
||||||
"type": "image/png",
|
"type": "image/png",
|
||||||
"purpose": "maskable any"
|
"purpose": "maskable any"
|
||||||
|
Loading…
Reference in New Issue
Block a user