Internal derive adjustments (#4888)
This commit is contained in:
@@ -35,7 +35,7 @@ function parseFlags (address: AccountId | Address | string | null | undefined, [
|
||||
};
|
||||
}
|
||||
|
||||
export function flagsBase (instanceId: string, api: DeriveApi): () => Observable<FlagsIntermediate> {
|
||||
export function _flags (instanceId: string, api: DeriveApi): () => Observable<FlagsIntermediate> {
|
||||
return memo(instanceId, (): Observable<FlagsIntermediate> => {
|
||||
const results: unknown[] = [undefined, [], [], [], undefined];
|
||||
const calls = [
|
||||
@@ -73,7 +73,7 @@ export function flagsBase (instanceId: string, api: DeriveApi): () => Observable
|
||||
*/
|
||||
export function flags (instanceId: string, api: DeriveApi): (address?: AccountId | Address | string | null) => Observable<DeriveAccountFlags> {
|
||||
return memo(instanceId, (address?: AccountId | Address | string | null): Observable<DeriveAccountFlags> =>
|
||||
api.derive.accounts.flagsBase().pipe(
|
||||
api.derive.accounts._flags().pipe(
|
||||
map((r) => parseFlags(address, r))
|
||||
)
|
||||
);
|
||||
|
||||
@@ -71,9 +71,10 @@ function getParent (api: DeriveApi, identityOfOpt: Option<PalletIdentityRegistra
|
||||
} else if (superOfOpt?.isSome) {
|
||||
const superOf = superOfOpt.unwrap();
|
||||
|
||||
// we have a super
|
||||
return combineLatest([
|
||||
api.query.identity.identityOf(superOf[0]),
|
||||
api.derive.accounts._identity(superOf[0]).pipe(
|
||||
map(([info]) => info)
|
||||
),
|
||||
of(superOf)
|
||||
]);
|
||||
}
|
||||
@@ -82,13 +83,15 @@ function getParent (api: DeriveApi, identityOfOpt: Option<PalletIdentityRegistra
|
||||
return of([undefined, undefined]);
|
||||
}
|
||||
|
||||
function getBase (api: DeriveApi, accountId?: AccountId | Uint8Array | string): Observable<[Option<PalletIdentityRegistration> | undefined, Option<ITuple<[AccountId, Data]>> | undefined]> {
|
||||
return accountId && api.query.identity?.identityOf
|
||||
? combineLatest([
|
||||
api.query.identity.identityOf(accountId),
|
||||
api.query.identity.superOf(accountId)
|
||||
])
|
||||
: of([undefined, undefined]);
|
||||
export function _identity (instanceId: string, api: DeriveApi): (accountId?: AccountId | Uint8Array | string) => Observable<[Option<PalletIdentityRegistration> | undefined, Option<ITuple<[AccountId, Data]>> | undefined]> {
|
||||
return memo(instanceId, (accountId?: AccountId | Uint8Array | string): Observable<[Option<PalletIdentityRegistration> | undefined, Option<ITuple<[AccountId, Data]>> | undefined]> =>
|
||||
accountId && api.query.identity?.identityOf
|
||||
? combineLatest([
|
||||
api.query.identity.identityOf(accountId),
|
||||
api.query.identity.superOf(accountId)
|
||||
])
|
||||
: of([undefined, undefined])
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -97,9 +100,13 @@ function getBase (api: DeriveApi, accountId?: AccountId | Uint8Array | string):
|
||||
*/
|
||||
export function identity (instanceId: string, api: DeriveApi): (accountId?: AccountId | Uint8Array | string) => Observable<DeriveAccountRegistration> {
|
||||
return memo(instanceId, (accountId?: AccountId | Uint8Array | string): Observable<DeriveAccountRegistration> =>
|
||||
getBase(api, accountId).pipe(
|
||||
switchMap(([identityOfOpt, superOfOpt]) => getParent(api, identityOfOpt, superOfOpt)),
|
||||
map(([identityOfOpt, superOf]) => extractIdentity(identityOfOpt, superOf))
|
||||
api.derive.accounts._identity(accountId).pipe(
|
||||
switchMap(([identityOfOpt, superOfOpt]) =>
|
||||
getParent(api, identityOfOpt, superOfOpt)
|
||||
),
|
||||
map(([identityOfOpt, superOf]) =>
|
||||
extractIdentity(identityOfOpt, superOf)
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -39,12 +39,14 @@ export function keysMulti (instanceId: string, api: DeriveApi): (stashIds: (Uint
|
||||
combineLatest([
|
||||
of(queuedKeys),
|
||||
api.consts.session?.dedupKeyPrefix
|
||||
? api.query.session.nextKeys.multi(stashIds.map((stashId) => [api.consts.session.dedupKeyPrefix, stashId]))
|
||||
? api.query.session.nextKeys.multi(stashIds.map((s) => [api.consts.session.dedupKeyPrefix, s]))
|
||||
: combineLatest(stashIds.map((s) => api.query.session.nextKeys(s)))
|
||||
])
|
||||
),
|
||||
map(([queuedKeys, nextKeys]) =>
|
||||
stashIds.map((stashId, index) => extractsIds(stashId, queuedKeys, nextKeys[index]))
|
||||
stashIds.map((stashId, index) =>
|
||||
extractsIds(stashId, queuedKeys, nextKeys[index])
|
||||
)
|
||||
)
|
||||
)
|
||||
: of([])
|
||||
|
||||
Reference in New Issue
Block a user