aboutsummaryrefslogtreecommitdiff
path: root/src/lib/Home/LastActivity.svelte
blob: 61cf6c7df69bd619976c89dbf3178590a7d18f34 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<script lang="ts">
  import userIdentity from '$stores/identity';
  import { onMount } from 'svelte';
  import type { AniListAuthorisation } from '$lib/Data/AniList/identity';
  import { lastActivityDate } from '../Data/AniList/activity';
  import settings from '$stores/settings';

  let { user }: { user: AniListAuthorisation } = $props();
  let lastActivityWasToday = $state(true);

  onMount(async () => {
    if (!$settings.displayDisableLastActivityWarning && user !== undefined) {
      lastActivityWasToday =
        (await lastActivityDate($userIdentity, 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 !$settings.displayDisableLastActivityWarning && !lastActivityWasToday}
  <blockquote>
    You don't have any new activity statuses from the past day! Create one within {timeLeftToday()}
    to keep your streak!
  </blockquote>
{/if}