aboutsummaryrefslogtreecommitdiff
path: root/src/routes/history/+page.svelte
blob: 2bb0f12922299ff4db9643c893feeeb6eff1678e (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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<script lang="ts">
	import { activityHistory, type ActivityHistoryEntry } from '$lib/AniList/activity.js';
	import { onMount } from 'svelte';
	import userIdentity from '../../stores/userIdentity.js';
	import { userIdentity as getUserIdentity } from '$lib/AniList/identity';

	export let data;

	let activityHistoryData: Promise<ActivityHistoryEntry[]>;
	let currentUserIdentity = { name: '', id: -1 };
	const timezoneOffset = new Date().getTimezoneOffset() * 60 * 1000;

	onMount(async () => {
		if (data.user !== undefined) {
			if ($userIdentity === '') {
				userIdentity.set(JSON.stringify(await getUserIdentity(data.user)));
			}

			currentUserIdentity = JSON.parse($userIdentity);
			currentUserIdentity.name = currentUserIdentity.name;
			activityHistoryData = activityHistory(currentUserIdentity);
			console.log(fillMissingDays(await activityHistory(currentUserIdentity)));
		}
	});

	const fillMissingDays = (inputActivities: ActivityHistoryEntry[]): ActivityHistoryEntry[] => {
		let activities = inputActivities;
		const firstDate = new Date(activities[0].date * 1000 + timezoneOffset);
		const lastDate = new Date(activities[activities.length - 1].date * 1000 + timezoneOffset);
		const currentDate = firstDate;

		while (currentDate <= lastDate) {
			const current_unix_timestamp = currentDate.getTime();
			let found = false;

			for (let i = 0; i < activities.length; i++) {
				if (activities[i].date * 1000 + timezoneOffset === current_unix_timestamp) {
					found = true;

					break;
				}
			}

			if (!found) {
				activities.push({
					date: current_unix_timestamp / 1000,
					amount: 0
				});
			}

			currentDate.setDate(currentDate.getDate() + 1);
		}

		// activities.sort((a: { date: number }, b: { date: number }) => a.date - b.date);

		return activities;
	};

	// const incrementDate = (date: Date): Date => {
	// 	date.setDate(date.getDate() + 1);

	// 	return date;
	// };
</script>

<details open>
	<summary>Activity History</summary>

	Days in risk of developing an activity history hole. (days with one activity)

	<p />

	{#if data.user === undefined}
		Please log in to view this page.
	{:else}
		{#await activityHistoryData}
			Loading ...
		{:then activities}
			{#if activities === undefined}
				Loading ...
			{:else}
				<ul>
					{#each fillMissingDays(activities) as activity}
						{#if activity.amount === 0}
							<li>
								{new Date(activity.date * 1000 + timezoneOffset).toDateString()}
							</li>
						{/if}
					{/each}
				</ul>
			{/if}
		{/await}
	{/if}
</details>