Skip to content

Commit dfbbe4e

Browse files
authored
Syncing dark mode between planet page and main page (#4321)
* Update index.html moving script for dark mode to Planet.js * Update Planet.js * Syncing planet darkmode * Update planetInterface.js Making the Dark mode works well in Planet
1 parent e908288 commit dfbbe4e

File tree

4 files changed

+36
-8
lines changed

4 files changed

+36
-8
lines changed

js/activity.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6677,10 +6677,18 @@ class Activity {
66776677
// Function to toggle theme mode
66786678
this.toggleThemeMode = () => {
66796679
if (this.storage.myThemeName === "darkMode") {
6680-
// If currently in dark mode, remove the theme
66816680
delete this.storage.myThemeName;
6681+
localStorage.setItem("darkMode", "disabled");
66826682
} else {
66836683
this.storage.myThemeName = "darkMode";
6684+
localStorage.setItem("darkMode", "enabled");
6685+
}
6686+
const planetIframe = document.getElementById("planet-iframe");
6687+
if (planetIframe) {
6688+
planetIframe.contentWindow.postMessage(
6689+
{ darkMode: localStorage.getItem("darkMode") },
6690+
"*"
6691+
);
66846692
}
66856693
try {
66866694
window.location.reload();

js/planetInterface.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,6 @@ class PlanetInterface {
307307
*/
308308
this.init = async () => {
309309
this.iframe = document.getElementById("planet-iframe");
310-
this.iframe.style.backgroundColor = platformColor.background;
311310
try {
312311
await this.iframe.contentWindow.makePlanet(
313312
_THIS_IS_MUSIC_BLOCKS_,

planet/index.html

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -338,11 +338,5 @@ <h4 id="projectviewer-title"></h4>
338338
</div>
339339
</div>
340340
</div>
341-
<script>
342-
// Dark Mode Toggle Functionality
343-
document.getElementById('toggle-dark-mode').addEventListener('click', function () {
344-
document.body.classList.toggle('dark-mode');
345-
});
346-
</script>
347341
</body>
348342
</html>

planet/js/Planet.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,3 +150,30 @@ class Planet {
150150
};
151151

152152
}
153+
154+
// trigger and sync the dark mode of the planet with the main page
155+
document.addEventListener("DOMContentLoaded", function () {
156+
const toggleButton = document.getElementById("toggle-dark-mode");
157+
158+
if (localStorage.getItem("darkMode") === "enabled") {
159+
document.body.classList.add("dark-mode");
160+
}
161+
if (toggleButton) {
162+
toggleButton.addEventListener("click", function () {
163+
document.body.classList.toggle("dark-mode");
164+
const newMode = document.body.classList.contains("dark-mode") ? "enabled" : "disabled";
165+
166+
localStorage.setItem("darkMode", newMode);
167+
localStorage.setItem("darkModeTrigger", Date.now());
168+
});
169+
}
170+
window.addEventListener("storage", function (event) {
171+
if (event.key === "darkMode" || event.key === "darkModeTrigger") {
172+
if (localStorage.getItem("darkMode") === "enabled") {
173+
document.body.classList.add("dark-mode");
174+
} else {
175+
document.body.classList.remove("dark-mode");
176+
}
177+
}
178+
});
179+
});

0 commit comments

Comments
 (0)