diff --git a/frontend/app/components/shared/SessionItem/SessionItem.tsx b/frontend/app/components/shared/SessionItem/SessionItem.tsx index 6168b0f58..af42caf1d 100644 --- a/frontend/app/components/shared/SessionItem/SessionItem.tsx +++ b/frontend/app/components/shared/SessionItem/SessionItem.tsx @@ -160,6 +160,7 @@ function SessionItem(props: RouteComponentProps & Props) { isDisabled && location.pathname.includes('multiview'); const _metaList = useMemo(() => { + if (!metadata) return []; return Object.keys(metadata).map((key) => ({ label: key, value: metadata[key], diff --git a/frontend/app/player/web/managers/DOM/DOMManager.ts b/frontend/app/player/web/managers/DOM/DOMManager.ts index 9e4f06f8d..6e2a10582 100644 --- a/frontend/app/player/web/managers/DOM/DOMManager.ts +++ b/frontend/app/player/web/managers/DOM/DOMManager.ts @@ -450,7 +450,7 @@ export default class DOMManager extends ListWalker { logger.error('CreateIFrameDocument: Node not found', msg); return; } - // shadow DOM for a custom element + SALESFORCE () + // shadow DOM for a custom element + SALESFORCE () const isCustomElement = vElem.tagName.includes('-') || vElem.tagName === 'SLOT'; const isNotActualIframe = !["IFRAME", "FRAME"].includes(vElem.tagName.toUpperCase()); const isLikelyShadowRoot = isCustomElement && isNotActualIframe; @@ -495,8 +495,9 @@ export default class DOMManager extends ListWalker { logger.warn('No stylesheet was created for ', msg); return; } - // @ts-ignore (configure ts with recent WebaAPI) - styleSheet.replaceSync(msg.text); + + // styleSheet.replaceRule(msg.text); + // styleSheet.whenReady((sheet) => sheet.replaceSync(msg.text)) return; } case MType.AdoptedSsAddOwner: { diff --git a/frontend/app/player/web/managers/DOM/VirtualDOM.ts b/frontend/app/player/web/managers/DOM/VirtualDOM.ts index 15ce85cf4..ec81896da 100644 --- a/frontend/app/player/web/managers/DOM/VirtualDOM.ts +++ b/frontend/app/player/web/managers/DOM/VirtualDOM.ts @@ -1,5 +1,5 @@ import { isRootNode } from 'App/player/guards'; -import { insertRule, deleteRule } from './safeCSSRules'; +import { insertRule, deleteRule, replaceRule } from './safeCSSRules'; function isNode(sth: any): sth is Node { return !!sth && sth.nodeType != null; diff --git a/frontend/app/player/web/managers/DOM/safeCSSRules.ts b/frontend/app/player/web/managers/DOM/safeCSSRules.ts index dd869cbc1..db7b1715c 100644 --- a/frontend/app/player/web/managers/DOM/safeCSSRules.ts +++ b/frontend/app/player/web/managers/DOM/safeCSSRules.ts @@ -24,7 +24,7 @@ export function insertRule( try { sheet.insertRule(msg.rule); } catch (e) { - logger.warn('Cannot insert rule.', e, '\nmessage: ', msg); + logger.warn('Cannot insert rule.', e, '\nmessage: ', msg, sheet); } } } @@ -36,6 +36,18 @@ export function deleteRule( try { sheet.deleteRule(msg.index); } catch (e) { - logger.warn(e, msg); + logger.warn(e, msg, sheet); + } +} + +export function replaceRule( + sheet: { insertRule: (rule: string, index?: number) => void, deleteRule: (index: number) => void }, + msg: { rule: string, index: number }, +) { + try { + sheet.deleteRule(msg.index); + sheet.insertRule(msg.rule, msg.index); + } catch (e) { + logger.warn('Cannot replace rule.', e, '\nmessage: ', msg); } }