Refine Dark Mode code

This commit is contained in:
nanxiaobei 2019-10-16 11:27:49 +08:00
parent dce88cdd44
commit 6725cb9806
1 changed files with 15 additions and 16 deletions

View File

@ -39,40 +39,39 @@
<!-- Script --> <!-- Script -->
<script> <script>
function setTheme() { function setTheme() {
const now = Date.now();
const prev = Number(localStorage.getItem('time')); const prev = Number(localStorage.getItem('time'));
const now = Date.now();
let sunrise;
let sunset;
function setBodyClass(sunrise, sunset) { function setBodyClass() {
if (now > sunrise && now < sunset) return; if (now > sunrise && now < sunset) return;
const body = document.querySelector('body'); document.body.classList.add('sunset');
body.classList.add('dark');
} }
if (now - prev > 24 * 60 * 60 * 10000) { if (now - prev > 24 * 60 * 60 * 10000) {
let light;
let dark;
fetch('https://api.ipgeolocation.io/astronomy?apiKey=5ed37d85103e4defa5df4c5298ed5215') fetch('https://api.ipgeolocation.io/astronomy?apiKey=5ed37d85103e4defa5df4c5298ed5215')
.then(res => res.json()) .then(res => res.json())
.then(data => { .then(data => {
light = data.sunrise.split(':'); sunrise = data.sunrise.split(':').map(Number);
dark = data.sunset.split(':'); sunset = data.sunset.split(':').map(Number);
}) })
.catch(() => { .catch(() => {
light = [7, 0]; sunrise = [7, 0];
dark = [19, 0]; sunset = [19, 0];
}) })
.finally(() => { .finally(() => {
const sunrise = new Date().setHours(light[0], light[1], 0); sunrise = new Date().setHours(sunrise[0], sunrise[1], 0);
const sunset = new Date().setHours(dark[0], dark[1], 0); sunset = new Date().setHours(sunset[0], sunset[1], 0);
setBodyClass(sunrise, sunset); setBodyClass();
localStorage.setItem('sunrise', sunrise); localStorage.setItem('sunrise', sunrise);
localStorage.setItem('sunset', sunset); localStorage.setItem('sunset', sunset);
}); });
localStorage.setItem('time', now); localStorage.setItem('time', now);
} else { } else {
const sunrise = Number(localStorage.getItem('sunrise')); sunrise = Number(localStorage.getItem('sunrise'));
const sunset = Number(localStorage.getItem('sunset')); sunset = Number(localStorage.getItem('sunset'));
setBodyClass(sunrise, sunset); setBodyClass();
} }
} }
</script> </script>