31 lines
1.1 KiB
TypeScript
31 lines
1.1 KiB
TypeScript
// Copyright 2017-2019 @polkadot/app-staking authors & contributors
|
|
// This software may be modified and distributed under the terms
|
|
// of the Apache-2.0 license. See the LICENSE file for details.
|
|
|
|
import { AccountId } from '@polkadot/types/interfaces';
|
|
import { DerivedStakingOnlineStatus, DerivedHeartbeats } from '@polkadot/api-derive/types';
|
|
|
|
export function updateOnlineStatus (recentlyOnline: DerivedHeartbeats = {}): (sessionIds: AccountId[] | null, onlineStatus: DerivedStakingOnlineStatus) => DerivedStakingOnlineStatus {
|
|
return (sessionIds: AccountId[] | null, onlineStatus: DerivedStakingOnlineStatus): DerivedStakingOnlineStatus => {
|
|
if (!recentlyOnline || !sessionIds) {
|
|
return onlineStatus;
|
|
}
|
|
|
|
const available = Object.keys(recentlyOnline);
|
|
const sessionId = sessionIds.find((sessionId): boolean => available.includes(sessionId.toString()));
|
|
|
|
return {
|
|
...onlineStatus,
|
|
...(
|
|
sessionId
|
|
? {
|
|
online: {
|
|
isOnline: recentlyOnline[sessionId.toString()]
|
|
}
|
|
}
|
|
: {}
|
|
)
|
|
};
|
|
};
|
|
}
|