ui: fix filekey on prefetched sessions
This commit is contained in:
parent
23820b7ea5
commit
f93ee6fb8f
7 changed files with 13 additions and 10 deletions
|
|
@ -88,7 +88,7 @@ function WebPlayer(props: any) {
|
||||||
);
|
);
|
||||||
if (usePrefetched) {
|
if (usePrefetched) {
|
||||||
if (mobData?.data) {
|
if (mobData?.data) {
|
||||||
WebPlayerInst.preloadFirstFile(mobData?.data);
|
WebPlayerInst.preloadFirstFile(mobData?.data, mobData?.fileKey);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setContextValue({ player: WebPlayerInst, store: PlayerStore });
|
setContextValue({ player: WebPlayerInst, store: PlayerStore });
|
||||||
|
|
|
||||||
|
|
@ -182,6 +182,7 @@ function SessionItem(props: RouteComponentProps & Props) {
|
||||||
await sessionStore.getFirstMob(sessionId);
|
await sessionStore.getFirstMob(sessionId);
|
||||||
setPrefetched(PREFETCH_STATE.fetched);
|
setPrefetched(PREFETCH_STATE.fetched);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
setPrefetched(PREFETCH_STATE.none)
|
||||||
console.error('Error while prefetching first mob', e);
|
console.error('Error while prefetching first mob', e);
|
||||||
}
|
}
|
||||||
}, [prefetchState, live, isAssist, isMobile, sessionStore, sessionId]);
|
}, [prefetchState, live, isAssist, isMobile, sessionStore, sessionId]);
|
||||||
|
|
|
||||||
|
|
@ -200,7 +200,7 @@ export default class SessionStore {
|
||||||
|
|
||||||
userTimezone = '';
|
userTimezone = '';
|
||||||
|
|
||||||
prefetchedMobUrls: Record<string, { data: Uint8Array; entryNum: number }> =
|
prefetchedMobUrls: Record<string, { data: Uint8Array; entryNum: number, fileKey?: string }> =
|
||||||
{};
|
{};
|
||||||
|
|
||||||
prefetched: boolean = false;
|
prefetched: boolean = false;
|
||||||
|
|
@ -230,13 +230,13 @@ export default class SessionStore {
|
||||||
};
|
};
|
||||||
|
|
||||||
getFirstMob = async (sessionId: string) => {
|
getFirstMob = async (sessionId: string) => {
|
||||||
const { domURL } = await sessionService.getFirstMobUrl(sessionId);
|
const { domURL, fileKey } = await sessionService.getFirstMobUrl(sessionId);
|
||||||
await loadFile(domURL[0], (data) =>
|
await loadFile(domURL[0], (data) =>
|
||||||
this.setPrefetchedMobUrl(sessionId, data),
|
this.setPrefetchedMobUrl(sessionId, data, fileKey),
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
setPrefetchedMobUrl = (sessionId: string, fileData: Uint8Array) => {
|
setPrefetchedMobUrl = (sessionId: string, fileData: Uint8Array, fileKey?: string) => {
|
||||||
const keys = Object.keys(this.prefetchedMobUrls);
|
const keys = Object.keys(this.prefetchedMobUrls);
|
||||||
const toLimit = 10 - keys.length;
|
const toLimit = 10 - keys.length;
|
||||||
if (toLimit < 0) {
|
if (toLimit < 0) {
|
||||||
|
|
@ -255,6 +255,7 @@ export default class SessionStore {
|
||||||
: 0;
|
: 0;
|
||||||
this.prefetchedMobUrls[sessionId] = {
|
this.prefetchedMobUrls[sessionId] = {
|
||||||
data: fileData,
|
data: fileData,
|
||||||
|
fileKey,
|
||||||
entryNum: nextEntryNum,
|
entryNum: nextEntryNum,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ export interface SessionFilesInfo {
|
||||||
devtoolsURL: string[];
|
devtoolsURL: string[];
|
||||||
/** deprecated */
|
/** deprecated */
|
||||||
mobsUrl: string[];
|
mobsUrl: string[];
|
||||||
fileKey: string | null;
|
fileKey?: string | null;
|
||||||
events: Record<string, any>[];
|
events: Record<string, any>[];
|
||||||
stackEvents: Record<string, any>[];
|
stackEvents: Record<string, any>[];
|
||||||
frustrations: Record<string, any>[];
|
frustrations: Record<string, any>[];
|
||||||
|
|
|
||||||
|
|
@ -224,7 +224,8 @@ export default class MessageLoader {
|
||||||
|
|
||||||
preloaded = false;
|
preloaded = false;
|
||||||
|
|
||||||
async preloadFirstFile(data: Uint8Array) {
|
async preloadFirstFile(data: Uint8Array, fileKey?: string) {
|
||||||
|
this.session.fileKey = fileKey;
|
||||||
this.mobParser = this.createNewParser(true, this.processMessages, 'p:dom');
|
this.mobParser = this.createNewParser(true, this.processMessages, 'p:dom');
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
|
||||||
|
|
@ -102,8 +102,8 @@ export default class WebPlayer extends Player {
|
||||||
window.playerJumpToTime = this.jump.bind(this);
|
window.playerJumpToTime = this.jump.bind(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
preloadFirstFile(data: Uint8Array) {
|
preloadFirstFile(data: Uint8Array, fileKey?: string) {
|
||||||
void this.messageLoader.preloadFirstFile(data);
|
void this.messageLoader.preloadFirstFile(data, fileKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
reinit(session: SessionFilesInfo) {
|
reinit(session: SessionFilesInfo) {
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ export default class SettingsService {
|
||||||
.catch((e) => Promise.reject(e));
|
.catch((e) => Promise.reject(e));
|
||||||
}
|
}
|
||||||
|
|
||||||
getFirstMobUrl(sessionId: string): Promise<{ domURL: string[] }> {
|
getFirstMobUrl(sessionId: string): Promise<{ domURL: string[], fileKey?: string }> {
|
||||||
return this.client
|
return this.client
|
||||||
.get(`/sessions/${sessionId}/first-mob`)
|
.get(`/sessions/${sessionId}/first-mob`)
|
||||||
.then((r) => r.json())
|
.then((r) => r.json())
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue