Fix author mapping call (#5617)

* fix author mapping call

* add deprecation comment
This commit is contained in:
Antoine Estienne 2021-06-16 17:54:40 +02:00 committed by GitHub
parent 2719d8b9ff
commit 92866ab8e1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -46,7 +46,8 @@ function BlockAuthorsBase ({ children }: Props): React.ReactElement<Props> {
let lastHeaders: HeaderExtendedWithMapping[] = [];
let lastBlockAuthors: string[] = [];
let lastBlockNumber = '';
const isAuthorMapping = isFunction(api.query.authorMapping?.mapping);
const isAuthorIds = isFunction(api.query.authorMapping?.authorIds); // TODO-MOONBEAM reevaluate in a month: 07/16/21
const isAuthorMappingWithDeposit = isFunction(api.query.authorMapping?.mappingWithDeposit);
// subscribe to all validators
api.query.session && api.query.session.validators((validatorIds): void => {
@ -61,9 +62,17 @@ function BlockAuthorsBase ({ children }: Props): React.ReactElement<Props> {
if (lastHeader.author) {
thisBlockAuthor = lastHeader.author.toString();
} else if (isAuthorMapping && lastHeader.digest.logs && lastHeader.digest.logs[0] && lastHeader.digest.logs[0].isConsensus && lastHeader.digest.logs[0].asConsensus[1]) {
} else if (isAuthorMappingWithDeposit && lastHeader.digest.logs && lastHeader.digest.logs[0] && lastHeader.digest.logs[0].isConsensus && lastHeader.digest.logs[0].asConsensus[1]) {
// Some blockchains such as Moonbeam need to fetch the author accountId from a mapping
thisBlockAuthor = (await api.query.authorMapping.mapping(lastHeader.digest.logs[0].asConsensus[1])).toString();
thisBlockAuthor = ((await api.query.authorMapping.mappingWithDeposit(lastHeader.digest.logs[0].asConsensus[1])).toHuman() as {
account: string;
deposit: string;
}).account;
lastHeader.authorFromMapping = thisBlockAuthor;
} else if (isAuthorIds && lastHeader.digest.logs && lastHeader.digest.logs[0] && lastHeader.digest.logs[0].isConsensus && lastHeader.digest.logs[0].asConsensus[1]) {
// TODO-MOONBEAM reevaluate in a month: 07/16/21
// Some blockchains such as Moonbeam need to fetch the author accountId from a mapping (function call may differ according to pallet version)
thisBlockAuthor = (await api.query.authorMapping.authorIds(lastHeader.digest.logs[0].asConsensus[1])).toString();
lastHeader.authorFromMapping = thisBlockAuthor;
}