fix(ui): fix jump to first visual element

This commit is contained in:
nick-delirium 2023-03-31 12:26:11 +02:00
parent 3588eddfd3
commit b5600605a7
3 changed files with 12 additions and 14 deletions

View file

@ -74,21 +74,21 @@ function WebPlayer(props: any) {
}
}, [session.events, session.errors, contextValue.player])
const isPlayerReady = contextValue.store?.get().ready
const { ready: isPlayerReady, firstVisualEvent: visualOffset } = contextValue.store?.get() || {}
React.useEffect(() => {
if (showNoteModal) {
contextValue.player.pause()
}
if (activeTab === '' && !showNoteModal && isPlayerReady) {
contextValue.player && contextValue.player.play()
if (activeTab === '' && !showNoteModal && isPlayerReady && contextValue.player) {
contextValue.player.play()
if (visualOffset !== 0) {
contextValue.player.jump(visualOffset)
}
}
const visualOffset = contextValue.player?.checkVisualOffset?.() || 0
if (visualOffset !== 0) {
contextValue.player.jump(visualOffset)
}
}, [activeTab, isPlayerReady, showNoteModal])
}, [activeTab, isPlayerReady, showNoteModal, visualOffset])
// LAYOUT (TODO: local layout state - useContext or something..)
useEffect(

View file

@ -65,6 +65,7 @@ export interface State extends ScreenState, ListsState {
ready: boolean,
lastMessageTime: number,
firstVisualEvent: number,
}
@ -91,6 +92,7 @@ export default class MessageManager {
cssLoading: false,
ready: false,
lastMessageTime: 0,
firstVisualEvent: 0,
}
private locationEventManager: ListWalker<any>/*<LocationEvent>*/ = new ListWalker();
@ -116,7 +118,7 @@ export default class MessageManager {
private sessionStart: number;
private navigationStartOffset: number = 0;
private lastMessageTime: number = 0;
public firstVisualEvent: number = 0;
private firstVisualEventSet = false;
constructor(
private readonly session: any /*Session*/,
@ -468,7 +470,7 @@ export default class MessageManager {
default:
switch (msg.tp) {
case MType.CreateDocument:
if (this.firstVisualEvent === 0) this.firstVisualEvent = msg.time;
if (!this.firstVisualEventSet) this.state.update({ firstVisualEvent: msg.time });
this.windowNodeCounter.reset();
this.performanceTrackManager.setCurrentNodesCount(this.windowNodeCounter.count);
break;

View file

@ -146,10 +146,6 @@ export default class WebPlayer extends Player {
this.screen.cursor.showTag(name)
}
checkVisualOffset = () => {
return this.messageManager.firstVisualEvent
}
clean = () => {
super.clean()
this.screen.clean()