mirror of
https://github.com/pezkuwichain/pezkuwi-ui.git
synced 2026-07-08 10:17:23 +00:00
Initial add from apps
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
// Copyright 2017-2018 @polkadot/ui-keyring authors & contributors
|
||||
// This software may be modified and distributed under the terms
|
||||
// of the Apache-2.0 license. See the LICENSE file for details.
|
||||
|
||||
import { accountKey } from '../defaults';
|
||||
|
||||
import genericSubject from './genericSubject';
|
||||
|
||||
export default genericSubject(accountKey, true);
|
||||
@@ -0,0 +1,9 @@
|
||||
// Copyright 2017-2018 @polkadot/ui-keyring authors & contributors
|
||||
// This software may be modified and distributed under the terms
|
||||
// of the Apache-2.0 license. See the LICENSE file for details.
|
||||
|
||||
import { addressKey } from '../defaults';
|
||||
|
||||
import genericSubject from './genericSubject';
|
||||
|
||||
export default genericSubject(addressKey);
|
||||
@@ -0,0 +1,16 @@
|
||||
// Copyright 2017-2018 @polkadot/ui-keyring authors & contributors
|
||||
// This software may be modified and distributed under the terms
|
||||
// of the Apache-2.0 license. See the LICENSE file for details.
|
||||
|
||||
import { BehaviorSubject } from 'rxjs';
|
||||
|
||||
const subject = new BehaviorSubject(false);
|
||||
|
||||
export default {
|
||||
isDevelopment: (): boolean =>
|
||||
subject.getValue(),
|
||||
set: (isDevelopment: boolean): void => {
|
||||
subject.next(isDevelopment);
|
||||
},
|
||||
subject
|
||||
};
|
||||
@@ -0,0 +1,61 @@
|
||||
// Copyright 2017-2018 @polkadot/ui-keyring authors & contributors
|
||||
// This software may be modified and distributed under the terms
|
||||
// of the Apache-2.0 license. See the LICENSE file for details.
|
||||
|
||||
import { BehaviorSubject } from 'rxjs';
|
||||
import { SubjectInfo, AddressSubject, SingleAddress } from './types';
|
||||
import { KeyringJson } from '../types';
|
||||
|
||||
import store from 'store';
|
||||
|
||||
import createOptionItem from '../options/item';
|
||||
import development from './development';
|
||||
|
||||
export default function genericSubject (keyCreator: (address: string) => string, withTest: boolean = false): AddressSubject {
|
||||
let current: SubjectInfo = {};
|
||||
const subject = new BehaviorSubject({});
|
||||
const next = (): void => {
|
||||
const isDevMode = development.isDevelopment();
|
||||
|
||||
subject.next(
|
||||
Object
|
||||
.keys(current)
|
||||
.reduce((filtered, key) => {
|
||||
const { json: { meta: { isTesting = false } = {} } = {} } = current[key];
|
||||
|
||||
if (!withTest || isDevMode || isTesting !== true) {
|
||||
filtered[key] = current[key];
|
||||
}
|
||||
|
||||
return filtered;
|
||||
}, {} as SubjectInfo)
|
||||
);
|
||||
};
|
||||
|
||||
development.subject.subscribe(next);
|
||||
|
||||
return {
|
||||
add: (address: string, json: KeyringJson): SingleAddress => {
|
||||
current = { ...current };
|
||||
|
||||
current[address] = {
|
||||
json,
|
||||
option: createOptionItem(address, json.meta.name)
|
||||
};
|
||||
|
||||
store.set(keyCreator(address), json);
|
||||
next();
|
||||
|
||||
return current[address];
|
||||
},
|
||||
remove: (address: string) => {
|
||||
current = { ...current };
|
||||
|
||||
delete current[address];
|
||||
|
||||
store.remove(keyCreator(address));
|
||||
next();
|
||||
},
|
||||
subject
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
// Copyright 2017-2018 @polkadot/ui-keyring authors & contributors
|
||||
// This software may be modified and distributed under the terms
|
||||
// of the Apache-2.0 license. See the LICENSE file for details.
|
||||
|
||||
import { combineLatest } from 'rxjs';
|
||||
import { map } from 'rxjs/operators';
|
||||
|
||||
import accounts from './accounts';
|
||||
import addresses from './addresses';
|
||||
|
||||
export default combineLatest(
|
||||
accounts.subject,
|
||||
addresses.subject
|
||||
).pipe(
|
||||
map(([accounts, addresses]) => ({
|
||||
accounts,
|
||||
addresses
|
||||
}))
|
||||
);
|
||||
@@ -0,0 +1,33 @@
|
||||
// Copyright 2017-2018 @polkadot/ui-keyring authors & contributors
|
||||
// This software may be modified and distributed under the terms
|
||||
// of the Apache-2.0 license. See the LICENSE file for details.
|
||||
|
||||
import { BehaviorSubject } from 'rxjs';
|
||||
import { KeyringSectionOption } from '../options/types';
|
||||
import { KeyringJson } from '../types';
|
||||
|
||||
export type SingleAccount = {
|
||||
json: KeyringJson,
|
||||
option: KeyringSectionOption
|
||||
};
|
||||
|
||||
export type SingleAddress = {
|
||||
json: KeyringJson,
|
||||
option: KeyringSectionOption
|
||||
};
|
||||
|
||||
export type SubjectInfo = {
|
||||
[index: string]: SingleAddress
|
||||
};
|
||||
|
||||
export type AccountSubject = {
|
||||
add: (account: string, json: KeyringJson) => SingleAccount,
|
||||
remove: (account: string) => void,
|
||||
subject: BehaviorSubject<SubjectInfo>
|
||||
};
|
||||
|
||||
export type AddressSubject = {
|
||||
add: (address: string, json: KeyringJson) => SingleAddress,
|
||||
remove: (address: string) => void,
|
||||
subject: BehaviorSubject<SubjectInfo>
|
||||
};
|
||||
Reference in New Issue
Block a user