UNPKG

@nori-zk/mina-token-bridge

Version:

Nori ethereum state settelment and nETH token bridge zkApp

23 lines 1.16 kB
import { combineLatest, distinctUntilChanged, interval, map, switchMap, } from 'rxjs'; export const getBridgeStateWithTimings$ = (bridgeStateTopic$, bridgeTimingsTopic$) => // Ensure both topics have fired and merge them into a single observable combineLatest([bridgeStateTopic$, bridgeTimingsTopic$]).pipe( // Supress bridgeTimingsTopic$ changes until bridgeStateTopic$ changes. distinctUntilChanged((prev, curr) => JSON.stringify(prev[0]) === JSON.stringify(curr[0])), // Calculate the time remaining map(([bridgeState, bridgeTimings]) => { // FIXME this mixed casing is awful. const { stage_name, elapsed_sec } = bridgeState; const expectedDuration = bridgeTimings.extension[stage_name]; let timeRemaining = expectedDuration - elapsed_sec; return { bridgeState, timeRemaining }; }), // Emit bridgeState with time_remaining_sec and elapsed_sec countdown. switchMap(({ bridgeState, timeRemaining }) => { return interval(1000).pipe(map((elapsedSeconds) => ({ ...bridgeState, time_remaining_sec: timeRemaining - elapsedSeconds, elapsed_sec: elapsedSeconds, }))); })); //# sourceMappingURL=state.js.map