Add playback performance metrics. Closes #1930

This commit is contained in:
Gabe Kangas
2022-06-02 14:23:51 -07:00
parent 04597908a5
commit 221b9c8f0f
5 changed files with 68 additions and 39 deletions

View File

@@ -82,6 +82,11 @@ export const fatalErrorStateAtom = atom<DisplayableError>({
default: null,
});
export const clockSkewAtom = atom<Number>({
key: 'clockSkewAtom',
default: 0.0,
});
// Chat is visible if the user wishes it to be visible AND the required
// chat state is set.
export const isChatVisibleSelector = selector({
@@ -132,6 +137,7 @@ export function ClientConfigStore() {
const setChatDisplayName = useSetRecoilState<string>(chatDisplayNameAtom);
const setClientConfig = useSetRecoilState<ClientConfig>(clientConfigStateAtom);
const setServerStatus = useSetRecoilState<ServerStatus>(serverStatusState);
const setClockSkew = useSetRecoilState<Number>(clockSkewAtom);
const [chatMessages, setChatMessages] = useRecoilState<ChatMessage[]>(chatMessagesAtom);
const [accessToken, setAccessToken] = useRecoilState<string>(accessTokenAtom);
const setAppState = useSetRecoilState<AppStateOptions>(appStateAtom);
@@ -170,6 +176,10 @@ export function ClientConfigStore() {
try {
const status = await ServerStatusService.getStatus();
setServerStatus(status);
const { serverTime } = status;
const clockSkew = new Date(serverTime).getTime() - Date.now();
setClockSkew(clockSkew);
if (status.online) {
sendEvent(AppStateEvent.Online);