Skip to content

Commit 95d0f6e

Browse files
Merge pull request #2066 from Gauravjeetsingh/chromecase-issues
Cast to chromecast after animation is complete
2 parents 9917960 + 2afb730 commit 95d0f6e

File tree

1 file changed

+38
-8
lines changed

1 file changed

+38
-8
lines changed

www/main/viewer/utils/chromecast.js

Lines changed: 38 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,12 @@ const getSanitizedViewer = () => {
6161
const viewerHtml = document.querySelector('#viewer-container')
6262
? document.querySelector('#viewer-container').cloneNode(true)
6363
: '';
64-
viewerHtml.querySelector('.viewer-logo').remove();
65-
viewerHtml.querySelector('.slide-quicktools').remove();
66-
if (viewerHtml.querySelector('video')) {
67-
viewerHtml.querySelector('video').remove();
68-
}
69-
viewerHtml.querySelector('.shabad-deck').removeAttribute('style');
70-
viewerHtml.querySelector('.verse-slide-wrapper').removeAttribute('style');
64+
viewerHtml.querySelector('.viewer-logo')?.remove();
65+
viewerHtml.querySelector('.slide-quicktools')?.remove();
66+
viewerHtml.querySelector('video')?.remove();
67+
viewerHtml.querySelector('.shabad-deck')?.removeAttribute('style');
68+
viewerHtml.querySelector('.verse-slide-wrapper')?.removeAttribute('style');
69+
7170
return viewerHtml.innerHTML;
7271
};
7372

@@ -105,7 +104,38 @@ export const sendMessage = (message) => {
105104
};
106105

107106
export const castToReceiver = () => {
108-
sendMessage(JSON.stringify(getSanitizedViewer()));
107+
const waitForAnimationComplete = (attempts = 0) => {
108+
if (attempts > 30) {
109+
appendMessage('Animation timeout reached, casting anyway');
110+
sendMessage(JSON.stringify(getSanitizedViewer()));
111+
return;
112+
}
113+
114+
const fadeElements = document.querySelectorAll(
115+
'.fade-enter, .fade-enter-active, .fade-exit, .fade-exit-active',
116+
);
117+
118+
if (fadeElements.length > 0) {
119+
setTimeout(() => waitForAnimationComplete(attempts + 1), 50);
120+
return;
121+
}
122+
123+
const viewerContainer = document.querySelector('#viewer-container');
124+
if (viewerContainer) {
125+
const computedStyle = window.getComputedStyle(viewerContainer);
126+
const opacity = parseFloat(computedStyle.opacity);
127+
128+
if (opacity < 1) {
129+
setTimeout(() => waitForAnimationComplete(attempts + 1), 50);
130+
return;
131+
}
132+
}
133+
134+
appendMessage('Fade animation complete, sending content to Chromecast');
135+
sendMessage(JSON.stringify(getSanitizedViewer()));
136+
};
137+
138+
waitForAnimationComplete();
109139
};
110140

111141
const onRequestSessionSuccess = (e) => {

0 commit comments

Comments
 (0)