diff --git a/frontend/app/player/web/managers/PagesManager.ts b/frontend/app/player/web/managers/PagesManager.ts index 1b3fd9bdf..4ab78a0ac 100644 --- a/frontend/app/player/web/managers/PagesManager.ts +++ b/frontend/app/player/web/managers/PagesManager.ts @@ -15,7 +15,7 @@ export default class PagesManager extends ListWalker { * e.g. some StringDictionary and other messages before any 'CreateDocument' one * TODO: understand why and fix */ - private currentStringDict: Record = {} + private stringDicts: Record[] = [{}] constructor( private screen: Screen, @@ -26,17 +26,24 @@ export default class PagesManager extends ListWalker { /* Assumed that messages added in a correct time sequence. */ + falseOrder = false appendMessage(m: Message): void { if (m.tp === MType.StringDict) { - if (this.currentStringDict[m.key] !== undefined) { - this.currentStringDict = {} /* refresh stringDict */ - this.last?.setStringDict(this.currentStringDict) + let currentDict = this.stringDicts[0] + if (currentDict[m.key] !== undefined && currentDict[m.key] !== m.value) { + this.falseOrder = true + this.stringDicts.unshift({}) + currentDict = this.stringDicts[0] } - this.currentStringDict[m.key] = m.value + currentDict[m.key] = m.value return } if (m.tp === MType.CreateDocument) { - super.append(new DOMManager(this.screen, this.isMobile, this.currentStringDict, m.time, this.setCssLoading)) + if (!this.falseOrder) { + this.stringDicts.unshift({}) + } + super.append(new DOMManager(this.screen, this.isMobile, this.stringDicts[0], m.time, this.setCssLoading)) + this.falseOrder = false } if (this.last === null) { logger.warn("DOMMessage before any document created, skipping:", m)