diff --git a/packages/react-query/src/BlockAuthors.tsx b/packages/react-query/src/BlockAuthors.tsx index c05581d84f..f4619e8779 100644 --- a/packages/react-query/src/BlockAuthors.tsx +++ b/packages/react-query/src/BlockAuthors.tsx @@ -46,7 +46,8 @@ function BlockAuthorsBase ({ children }: Props): React.ReactElement { 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 { 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; }