fix(ui): fix player automatic jump and start issues

This commit is contained in:
nick-delirium 2023-04-19 17:03:26 +02:00
parent 14efb62e68
commit d890a584e5
2 changed files with 19 additions and 12 deletions

View file

@ -57,11 +57,7 @@ function WebPlayer(props: any) {
}
})
const jumpToTime = props.query.get('jumpto');
const freeze = props.query.get('freeze')
if (jumpToTime) {
WebPlayerInst.jump(parseInt(jumpToTime));
}
if (freeze) {
WebPlayerInst.freeze()
}
@ -73,22 +69,29 @@ function WebPlayer(props: any) {
}
}, [session.events, session.errors, contextValue.player])
const { ready: isPlayerReady, firstVisualEvent: visualOffset } = contextValue.store?.get() || {}
const { ready: isPlayerReady, firstVisualEvent: visualOffset, messagesProcessed } = contextValue.store?.get() || {}
React.useEffect(() => {
if (showNoteModal) {
if (showNoteModal || activeTab !== '') {
contextValue.player.pause()
}
if (activeTab === '' && !showNoteModal && isPlayerReady && contextValue.player) {
contextValue.player.play()
if (activeTab === '' && !showNoteModal && messagesProcessed && contextValue.player) {
const jumpToTime = props.query.get('jumpto');
const shouldAdjustOffset = visualOffset !== 0 && !visuallyAdjusted
if (visualOffset !== 0 && !visuallyAdjusted) {
contextValue.player.jump(visualOffset)
setAdjusted(true)
if (jumpToTime || shouldAdjustOffset) {
if (jumpToTime > visualOffset) {
contextValue.player.jump(parseInt(jumpToTime));
} else {
contextValue.player.jump(visualOffset)
setAdjusted(true)
}
}
contextValue.player.play()
}
}, [activeTab, isPlayerReady, showNoteModal, visualOffset])
}, [activeTab, showNoteModal, visualOffset, messagesProcessed])
// LAYOUT (TODO: local layout state - useContext or something..)
useEffect(

View file

@ -66,6 +66,7 @@ export interface State extends ScreenState, ListsState {
ready: boolean,
lastMessageTime: number,
firstVisualEvent: number,
messagesProcessed: boolean,
}
@ -93,6 +94,7 @@ export default class MessageManager {
ready: false,
lastMessageTime: 0,
firstVisualEvent: 0,
messagesProcessed: false,
}
private locationEventManager: ListWalker<any>/*<LocationEvent>*/ = new ListWalker();
@ -207,11 +209,13 @@ export default class MessageManager {
}
private onFileReadFinally = () => {
this.waitingForFiles = false
this.state.update({ messagesProcessed: true })
// this.setMessagesLoading(false)
// this.state.update({ filesLoaded: true })
}
async loadMessages(isClickmap: boolean = false) {
this.state.update({ messagesProcessed: false })
this.setMessagesLoading(true)
// TODO: reusable decryptor instance
const createNewParser = (shouldDecrypt = true, file?: string) => {