diff options
| author | Fuwn <[email protected]> | 2024-01-02 02:22:58 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2024-01-02 02:22:58 -0800 |
| commit | 67c392e288c9876e9542b7724f4f84d4c4dcd61a (patch) | |
| tree | 6054bf701b3dbd18c5f46fede5b6eae53190a98d /src/lib | |
| parent | refactor(media): move hover cover (diff) | |
| download | due.moe-67c392e288c9876e9542b7724f4f84d4c4dcd61a.tar.xz due.moe-67c392e288c9876e9542b7724f4f84d4c4dcd61a.zip | |
refactor(lastactivity): move info to component
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/LastActivity.svelte | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/lib/LastActivity.svelte b/src/lib/LastActivity.svelte new file mode 100644 index 00000000..bd0d6fae --- /dev/null +++ b/src/lib/LastActivity.svelte @@ -0,0 +1,69 @@ +<script lang="ts"> + import userIdentity from '$stores/userIdentity'; + import { onMount } from 'svelte'; + import { + userIdentity as getUserIdentity, + type AniListAuthorisation + } from '$lib/AniList/identity'; + import { lastActivityDate } from './AniList/activity'; + import settings from '$stores/settings'; + + export let user: AniListAuthorisation; + + let currentUserIdentity = { name: '', id: -1 }; + let lastActivityWasToday = true; + + onMount(async () => { + if (user !== undefined) { + if ($userIdentity === '') { + userIdentity.set(JSON.stringify(await getUserIdentity(user))); + } + + currentUserIdentity = JSON.parse($userIdentity); + currentUserIdentity.name = currentUserIdentity.name; + lastActivityWasToday = + (await lastActivityDate(currentUserIdentity, user)).date.toDateString() >= + new Date().toDateString(); + + if (!lastActivityWasToday) { + if ($settings.displayLimitListHeight) { + document.querySelectorAll('.list').forEach((list) => { + (list as HTMLElement).style.maxHeight = `calc((100vh - ${ + document.querySelector('#list-container')?.getBoundingClientRect().top + }px) - 5rem)`; + }); + } + } + } + }); + + const timeLeftToday = () => { + const now = new Date(); + const currentHour = now.getHours(); + const currentMinute = now.getMinutes(); + const hoursLeft = 24 - currentHour; + let minutesLeft = 0; + let timeLeft = ''; + + if (hoursLeft > 0) { + minutesLeft = hoursLeft * 60 - currentMinute; + } else { + minutesLeft = 24 * 60 - (currentHour * 60 + currentMinute); + } + + if (minutesLeft > 60) { + timeLeft = `${Math.round(minutesLeft / 60)} hours`; + } else { + timeLeft = `${minutesLeft} minutes`; + } + + return timeLeft; + }; +</script> + +{#if !lastActivityWasToday} + <p> + You don't have any new activity statuses from the past day! Create one within {timeLeftToday()} + to keep your streak! + </p> +{/if} |