Skip to content
Snippets Groups Projects
parent.ts 1.61 KiB
Newer Older
David Langley's avatar
David Langley committed
Copyright 2025 New Vector Ltd.
Copyright 2022 The Matrix.org Foundation C.I.C.

David Langley's avatar
David Langley committed
SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
Please see LICENSE files in the repository root for full details.
RMidhunSuresh's avatar
RMidhunSuresh committed
import { resizeIframe, toggleIframe, removeIframe } from "./iframe";
import { loadStartButton } from "./load";
Midhun Suresh's avatar
Midhun Suresh committed
import "./parent-style.css";
(window as any).isIframeLoaded = false;
(window as any).__chatterbox = () => (document.querySelector(".chatterbox-iframe") as HTMLIFrameElement)?.contentWindow;
Midhun Suresh's avatar
Midhun Suresh committed

RMidhunSuresh's avatar
RMidhunSuresh committed
function setUnreadCount(count) {
    const notification = document.querySelector(".notification-badge") as HTMLSpanElement;
    if (count === 0) {
        notification.classList.add("hidden");
    }
    else {
        notification.innerText = count;
        notification.classList.remove("hidden");
    }
}

Midhun Suresh's avatar
Midhun Suresh committed
window.addEventListener("message", event => {
    const { action } = event.data;
    switch (action) {
        case "resize-iframe":
RMidhunSuresh's avatar
RMidhunSuresh committed
            if (event.data.view === "timeline") {
                // Chatterbox has made it to the timeline!
                // Store this is info in localStorage so that we know to load chatterbox in background
                // in subsequent visits.
                window.localStorage.setItem("chatterbox-should-load-in-background", "true");
            }
            resizeIframe(event.data);
Midhun Suresh's avatar
Midhun Suresh committed
            break;
        case "minimize":
            toggleIframe();
Midhun Suresh's avatar
Midhun Suresh committed
            break;
RMidhunSuresh's avatar
RMidhunSuresh committed
        case "unread-message":
            setUnreadCount(event.data.count);
            break;
RMidhunSuresh's avatar
RMidhunSuresh committed
        case "error":
            removeIframe();
            break;
Midhun Suresh's avatar
Midhun Suresh committed
    }
});

loadStartButton();