execute method

USyncSubscribeReposMessage execute(
  1. dynamic data
)

Implementation

USyncSubscribeReposMessage execute(final dynamic data) {
  final repos = const FirehoseAdaptor().execute(data);

  if (_isCommit(repos)) {
    return const USyncSubscribeReposMessageConverter().fromJson({
      ...repos,
      'ops': _getOps(repos),
      'blocks': _getBlocks(repos),
      'commit': _getCidLink(repos['commit']),
      //! `prevData` (sync v1.1) is a CID link the relay adds to every commit.
      //! Without converting it the whole commit degraded to `unknown`.
      'prevData': _getCidLink(repos['prevData']),
    });
  }

  if (_isSync(repos)) {
    //! `#sync` frames (account migration/recovery) carry the commit as a CAR
    //! in `blocks`; decode it so a typed `Sync` event is produced.
    return const USyncSubscribeReposMessageConverter().fromJson({
      ...repos,
      'blocks': _getBlocks(repos),
    });
  }

  return const USyncSubscribeReposMessageConverter().fromJson(repos);
}