aboutsummaryrefslogtreecommitdiff
path: root/src/routes/settings/+page.svelte
blob: b93414e64f37eb19a7525232673428025236d138 (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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<script lang="ts">
	/* eslint svelte/no-at-html-tags: "off" */

	import { chapterDatabase } from '$lib/chapterDatabase';
	import manga from '../../stores/manga';
	import anime from '../../stores/anime';
	import settings from '../../stores/settings';
	import SettingToggle from '$lib/SettingToggle.svelte';

	export let data;

	const pruneUnresolved = async () => {
		const unresolved = await chapterDatabase.chapters.where('chapters').equals(-1).toArray();
		const ids = unresolved.map((m) => m.id);

		manga.set('');
		anime.set('');
		await chapterDatabase.chapters.bulkDelete(ids);
	};
	const pruneAll = async () => {
		const all = await chapterDatabase.chapters.toArray();
		const ids = all.map((m) => m.id);

		manga.set('');
		await chapterDatabase.chapters.bulkDelete(ids);
	};
</script>

<a href="/">Home</a>

<p />

{#if data.user === undefined}
	Please log in to modify settings.
{:else}
	<h2>Display</h2>

	<SettingToggle setting={'forceLightTheme'} on={'Use preferred'} off={'Force light'}>
		theme
	</SettingToggle>
	<SettingToggle
		setting={'linkToAniList'}
		on={'Link anime to LiveChart.me'}
		off={'Link anime to AniList'}
	/>
	<SettingToggle setting={'showCompletedAnime'} on={'Hide'} off={'Show'}>
		completed anime
	</SettingToggle>
	<SettingToggle setting={'displayPausedMedia'} on={'Hide'} off={'Show'}>
		paused media
	</SettingToggle>

	<p />

	<SettingToggle setting={'displayUnresolved'} on={'Hide'} off={'Show'}>unresolved</SettingToggle>
	<small style="opacity: 50%;">Displays unresolved chapter counts as "?"</small>

	<p />

	<SettingToggle setting={'displayNotStarted'} on={'Hide'} off={'Show'}>
		media with zero progress
	</SettingToggle>
	<small style="opacity: 50%;">
		May cause <a href="https://en.wikipedia.org/wiki/Rate_limiting" target="_blank">
			rate-limiting
		</a> depending on how much releasing manga are on your lists
	</small>

	<p />

	<SettingToggle setting={'closeAnimeByDefault'} on={'Expand'} off={'Close'}>
		anime panel by default
	</SettingToggle>
	<SettingToggle setting={'closeMangaByDefault'} on={'Expand'} off={'Close'}>
		manga panel by default
	</SettingToggle>
	<SettingToggle setting={'sortByDifference'}>
		Sort anime by {@html !$settings.sortByDifference
			? 'difference between last watched and next episode'
			: 'days left until next episode'}
	</SettingToggle>

	<h2>Calculation</h2>

	<SettingToggle setting={'roundDownChapters'} on={'Maintain'} off={'Round down'}>
		chapters
	</SettingToggle>
	<small style="opacity: 50%;">
		50/50.6 would {@html $settings.roundDownChapters ? '<b>not</b>' : ''} be due
	</small>

	<h2>Cache</h2>

	<a href={'#'} on:click={pruneUnresolved}>Re-cache <b>ALL</b> unresolved manga</a>

	<br />

	<a href={'#'} on:click={pruneAll}>Re-cache <b>ALL</b> manga</a>

	<br />

	Re-cache <b>ALL</b> media keys every
	<input type="number" bind:value={$settings.cacheMinutes} min="1" max="60" placeholder="30" />
	minutes

	<p />

	<span>Re-cache <b>ALL</b> manga chapter counts every</span>
	<input
		type="number"
		bind:value={$settings.cacheMangaMinutes}
		min="1"
		max="1440"
		placeholder="60"
	/>
	minutes
	<br />
	<small style="opacity: 50%;">
		Low values may cause <a href="https://en.wikipedia.org/wiki/Rate_limiting" target="_blank">
			rate-limiting
		</a> depending on how much releasing manga are on your lists
	</small>

	<h2>Reset</h2>

	<a href={'#'} on:click={settings.reset}>Reset <b>ALL</b> settings</a>

	<p />

	<a href={'#'} on:click={() => localStorage.clear()}>Clear <code>localStorage</code> </a>
	<br />
	<small style="opacity: 50%;">
		Doesn't break anything, but resets all settings and key caches. Recommended after updates
	</small>
{/if}