fix(player): consider stringDict before any CreateDocument (fastfix)
This commit is contained in:
parent
ffd9318de7
commit
4f41a8303e
2 changed files with 23 additions and 12 deletions
|
|
@ -38,7 +38,6 @@ export default class DOMManager extends ListWalker<Message> {
|
|||
private olStyleSheets: Map<number, OnloadStyleSheet> = new Map()
|
||||
/** @depreacted since tracker 4.0.2 Mapping by nodeID */
|
||||
private olStyleSheetsDeprecated: Map<number, OnloadStyleSheet> = new Map()
|
||||
private stringDict: Record<number,string> = {}
|
||||
|
||||
private upperBodyId: number = -1;
|
||||
private nodeScrollManagers: Map<number, ListWalker<SetNodeScroll>> = new Map()
|
||||
|
|
@ -49,6 +48,7 @@ export default class DOMManager extends ListWalker<Message> {
|
|||
constructor(
|
||||
private readonly screen: Screen,
|
||||
private readonly isMobile: boolean,
|
||||
private stringDict: Record<number,string>,
|
||||
public readonly time: number,
|
||||
setCssLoading: ConstructorParameters<typeof StylesManager>[1],
|
||||
) {
|
||||
|
|
@ -192,7 +192,6 @@ export default class DOMManager extends ListWalker<Message> {
|
|||
// Maybetodo: start Document as 0-node in tracker
|
||||
this.vTexts.clear()
|
||||
this.stylesManager.reset()
|
||||
this.stringDict = {}
|
||||
return
|
||||
}
|
||||
case MType.CreateTextNode: {
|
||||
|
|
@ -227,12 +226,9 @@ export default class DOMManager extends ListWalker<Message> {
|
|||
case MType.SetNodeAttribute:
|
||||
this.setNodeAttribute(msg)
|
||||
return
|
||||
case MType.StringDict:
|
||||
this.stringDict[msg.key] = msg.value
|
||||
return
|
||||
case MType.SetNodeAttributeDict:
|
||||
this.stringDict[msg.nameKey] === undefined && logger.error("No dictionary key for msg 'name': ", msg)
|
||||
this.stringDict[msg.valueKey] === undefined && logger.error("No dictionary key for msg 'value': ", msg)
|
||||
this.stringDict[msg.nameKey] === undefined && logger.error("No dictionary key for msg 'name': ", msg, this.stringDict)
|
||||
this.stringDict[msg.valueKey] === undefined && logger.error("No dictionary key for msg 'value': ", msg, this.stringDict)
|
||||
if (this.stringDict[msg.nameKey] === undefined || this.stringDict[msg.valueKey] === undefined ) { return }
|
||||
this.setNodeAttribute({
|
||||
id: msg.id,
|
||||
|
|
|
|||
|
|
@ -1,13 +1,21 @@
|
|||
import type Screen from '../Screen/Screen';
|
||||
import type { Message } from '../messages';
|
||||
import logger from 'App/logger';
|
||||
|
||||
import { MType } from '../messages';
|
||||
import type Screen from '../Screen/Screen';
|
||||
import type { Message, StringDict } from '../messages';
|
||||
|
||||
import { MType} from '../messages';
|
||||
import ListWalker from '../../common/ListWalker';
|
||||
import DOMManager from './DOM/DOMManager';
|
||||
|
||||
|
||||
export default class PagesManager extends ListWalker<DOMManager> {
|
||||
private currentPage: DOMManager | null = null
|
||||
/**
|
||||
* String Dictionary in tracker may be desync with CreateDocument (why???)
|
||||
* e.g. some StringDictionary and other messages before any 'CreateDocument' one
|
||||
* TODO: understand why and fix
|
||||
*/
|
||||
private currentStringDict: Record<number, string> = {}
|
||||
|
||||
constructor(
|
||||
private screen: Screen,
|
||||
|
|
@ -19,11 +27,18 @@ export default class PagesManager extends ListWalker<DOMManager> {
|
|||
Assumed that messages added in a correct time sequence.
|
||||
*/
|
||||
appendMessage(m: Message): void {
|
||||
if (m.tp === MType.StringDict) {
|
||||
if (this.currentStringDict[m.key] !== undefined) {
|
||||
this.currentStringDict = {} /* refresh stringDict */
|
||||
}
|
||||
this.currentStringDict[m.key] = m.value
|
||||
return
|
||||
}
|
||||
if (m.tp === MType.CreateDocument) {
|
||||
super.append(new DOMManager(this.screen, this.isMobile, m.time, this.setCssLoading))
|
||||
super.append(new DOMManager(this.screen, this.isMobile, this.currentStringDict, m.time, this.setCssLoading))
|
||||
}
|
||||
if (this.last === null) {
|
||||
// Log wrong
|
||||
logger.warn("DOMMessage before any document created, skipping:", m)
|
||||
return;
|
||||
}
|
||||
this.last.append(m)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue