aboutsummaryrefslogtreecommitdiff
path: root/src/lib/Settings
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-10-09 00:41:20 -0700
committerFuwn <[email protected]>2024-10-09 00:41:43 -0700
commit998b63a35256ac985a5a2714dd1ca451af4dfd8a (patch)
tree50796121a9d5ab0330fdc5d7e098bda2860d9726 /src/lib/Settings
parentfeat(graphql): add badgeCount field (diff)
downloaddue.moe-998b63a35256ac985a5a2714dd1ca451af4dfd8a.tar.xz
due.moe-998b63a35256ac985a5a2714dd1ca451af4dfd8a.zip
chore(prettier): use spaces instead of tabs
Diffstat (limited to 'src/lib/Settings')
-rw-r--r--src/lib/Settings/Categories/Attributions.svelte92
-rw-r--r--src/lib/Settings/Categories/Cache.svelte54
-rw-r--r--src/lib/Settings/Categories/Calculation.svelte106
-rw-r--r--src/lib/Settings/Categories/Debug.svelte74
-rw-r--r--src/lib/Settings/Categories/Display.svelte540
-rw-r--r--src/lib/Settings/Categories/RSSFeeds.svelte64
-rw-r--r--src/lib/Settings/Categories/SettingSync.svelte204
-rw-r--r--src/lib/Settings/Category.svelte18
-rw-r--r--src/lib/Settings/SettingCheckboxToggle.svelte132
-rw-r--r--src/lib/Settings/SettingHint.svelte6
-rw-r--r--src/lib/Settings/SettingToggle.svelte46
-rw-r--r--src/lib/Settings/Verbiage.svelte56
12 files changed, 696 insertions, 696 deletions
diff --git a/src/lib/Settings/Categories/Attributions.svelte b/src/lib/Settings/Categories/Attributions.svelte
index 5ce7f05d..250b08c3 100644
--- a/src/lib/Settings/Categories/Attributions.svelte
+++ b/src/lib/Settings/Categories/Attributions.svelte
@@ -1,35 +1,35 @@
<script>
- import root from '$lib/Utility/root';
+ import root from '$lib/Utility/root';
</script>
<ul>
- <li>
- <a href="https://anilist.co/" target="_blank">AniList</a>: Most data not explicity attributed
- otherwise, excluding primary chapter and volume data, character birthday data, and subtitled
- anime release data
- </li>
- <li><span id="mangadex">MangaDex</span>: <b>Only</b> non-native chapter and volume count data</li>
- <li>
- <a href="https://seiga.nicovideo.jp/manga/" target="_blank">ニコニコ漫画</a>: Native chapter and
- volume count data
- </li>
- <li><a href="https://x.com/YDPFALION" target="_blank">YDPFa</a>: Girls Band Cry Icon Set</li>
- <!-- <li>
+ <li>
+ <a href="https://anilist.co/" target="_blank">AniList</a>: Most data not explicity attributed
+ otherwise, excluding primary chapter and volume data, character birthday data, and subtitled
+ anime release data
+ </li>
+ <li><span id="mangadex">MangaDex</span>: <b>Only</b> non-native chapter and volume count data</li>
+ <li>
+ <a href="https://seiga.nicovideo.jp/manga/" target="_blank">ニコニコ漫画</a>: Native chapter and
+ volume count data
+ </li>
+ <li><a href="https://x.com/YDPFALION" target="_blank">YDPFa</a>: Girls Band Cry Icon Set</li>
+ <!-- <li>
<a href="https://www.animecharactersdatabase.com/index.php" target="_blank">
Anime Characters Database
</a>: primary character birthday data
</li> -->
- <!-- <li>
+ <!-- <li>
<a href="https://www.anisearch.com/" target="_blank">aniSearch</a>: secondary character
birthday data
</li> -->
- <!-- <li>
+ <!-- <li>
<a href="https://www.mangaupdates.com/" target="">Baka-Updates Magna</a>: manga release data
</li> -->
- <!-- <li>
+ <!-- <li>
<a href="https://www.wlnupdates.com/">WLN Updates</a>: web & light novel release data
</li> -->
- <!-- <li>
+ <!-- <li>
<a href="https://subsplease.org/">SubsPlease</a>: subtitle release data
</li> -->
</ul>
@@ -37,38 +37,38 @@
<p />
<details open class="card-clear">
- <summary>Outbound Link Disclaimer</summary>
- <ol>
- <li>
- <a href={root('/')}>due.moe</a>
- does not host or directly link to any less-than-legal anime or manga material and/or distribution
- platforms.
- </li>
- <li>
- <a href={root('/')}>due.moe</a>
- is not affiliated with any of the above or below sites and services.
- </li>
- <li>
- At the moment, <a href={root('/')}>due.moe</a> only ever contains outbound links to the
- following sites and services:
+ <summary>Outbound Link Disclaimer</summary>
+ <ol>
+ <li>
+ <a href={root('/')}>due.moe</a>
+ does not host or directly link to any less-than-legal anime or manga material and/or distribution
+ platforms.
+ </li>
+ <li>
+ <a href={root('/')}>due.moe</a>
+ is not affiliated with any of the above or below sites and services.
+ </li>
+ <li>
+ At the moment, <a href={root('/')}>due.moe</a> only ever contains outbound links to the
+ following sites and services:
- <ul>
- <li><a href="https://anilist.co/">AniList.co</a></li>
- <li><a href="https://myanimelist.net/">MyAnimeList</a> (if selected)</li>
- <li><a href="https://animeschedule.net/">AnimeSchedule.net</a> (if selected)</li>
- <li><a href="https://www.livechart.me/">LiveChart.me</a> (if selected)</li>
- </ul>
- </li>
- </ol>
+ <ul>
+ <li><a href="https://anilist.co/">AniList.co</a></li>
+ <li><a href="https://myanimelist.net/">MyAnimeList</a> (if selected)</li>
+ <li><a href="https://animeschedule.net/">AnimeSchedule.net</a> (if selected)</li>
+ <li><a href="https://www.livechart.me/">LiveChart.me</a> (if selected)</li>
+ </ul>
+ </li>
+ </ol>
</details>
<style>
- #mangadex {
- filter: blur(2.5px);
- transition: filter 0.25s;
- }
+ #mangadex {
+ filter: blur(2.5px);
+ transition: filter 0.25s;
+ }
- #mangadex:hover {
- filter: none;
- }
+ #mangadex:hover {
+ filter: none;
+ }
</style>
diff --git a/src/lib/Settings/Categories/Cache.svelte b/src/lib/Settings/Categories/Cache.svelte
index c59897e1..e65b8081 100644
--- a/src/lib/Settings/Categories/Cache.svelte
+++ b/src/lib/Settings/Categories/Cache.svelte
@@ -1,30 +1,30 @@
<script>
- import tooltip from '$lib/Tooltip/tooltip';
- import settings from '$stores/settings';
+ import tooltip from '$lib/Tooltip/tooltip';
+ import settings from '$stores/settings';
</script>
<small class="opaque">
- All caches are stored in your browser's <code
- title="Local browser key/value pair store"
- use:tooltip>localStorage</code
- >. Clearing
- <a href="https://due.moe">due.moe</a>'s site data will clear these caches too.
+ All caches are stored in your browser's <code
+ title="Local browser key/value pair store"
+ use:tooltip>localStorage</code
+ >. Clearing
+ <a href="https://due.moe">due.moe</a>'s site data will clear these caches too.
</small>
<p />
Re-cache AniList media lists every
<input
- type="number"
- class="no-shadow"
- bind:value={$settings.cacheMinutes}
- min="1"
- max="60"
- placeholder="30"
- size="1"
- on:change={() =>
- ($settings.cacheMinutes < 1 && ($settings.cacheMinutes = 1)) ||
- ($settings.cacheMinutes > 60 && ($settings.cacheMinutes = 60))}
+ type="number"
+ class="no-shadow"
+ bind:value={$settings.cacheMinutes}
+ min="1"
+ max="60"
+ placeholder="30"
+ size="1"
+ on:change={() =>
+ ($settings.cacheMinutes < 1 && ($settings.cacheMinutes = 1)) ||
+ ($settings.cacheMinutes > 60 && ($settings.cacheMinutes = 60))}
/>
minutes
@@ -32,15 +32,15 @@ minutes
Re-cache manga data every
<input
- type="number"
- class="no-shadow"
- bind:value={$settings.cacheMangaMinutes}
- min="5"
- max="1440"
- placeholder="120"
- size="2"
- on:change={() =>
- ($settings.cacheMangaMinutes < 5 && ($settings.cacheMangaMinutes = 5)) ||
- ($settings.cacheMangaMinutes > 1440 && ($settings.cacheMangaMinutes = 1440))}
+ type="number"
+ class="no-shadow"
+ bind:value={$settings.cacheMangaMinutes}
+ min="5"
+ max="1440"
+ placeholder="120"
+ size="2"
+ on:change={() =>
+ ($settings.cacheMangaMinutes < 5 && ($settings.cacheMangaMinutes = 5)) ||
+ ($settings.cacheMangaMinutes > 1440 && ($settings.cacheMangaMinutes = 1440))}
/>
minutes
diff --git a/src/lib/Settings/Categories/Calculation.svelte b/src/lib/Settings/Categories/Calculation.svelte
index bd361fa2..4a202fff 100644
--- a/src/lib/Settings/Categories/Calculation.svelte
+++ b/src/lib/Settings/Categories/Calculation.svelte
@@ -1,90 +1,90 @@
<script lang="ts">
- import { pruneAllManga } from '$lib/Media/Manga/cache';
- import locale from '$stores/locale';
- import settings from '$stores/settings';
- import SettingCheckboxToggle from '../SettingCheckboxToggle.svelte';
- import SettingHint from '../SettingHint.svelte';
+ import { pruneAllManga } from '$lib/Media/Manga/cache';
+ import locale from '$stores/locale';
+ import settings from '$stores/settings';
+ import SettingCheckboxToggle from '../SettingCheckboxToggle.svelte';
+ import SettingHint from '../SettingHint.svelte';
</script>
<SettingCheckboxToggle
- setting="calculatePreferNativeChapterCount"
- text={$locale().settings.calculation.fields.preferNativeChapterCount.title}
- onChange={pruneAllManga}
+ setting="calculatePreferNativeChapterCount"
+ text={$locale().settings.calculation.fields.preferNativeChapterCount.title}
+ onChange={pruneAllManga}
>
- <SettingHint lineBreak>
- {$locale().settings.calculation.fields.preferNativeChapterCount.hint}
- </SettingHint>
+ <SettingHint lineBreak>
+ {$locale().settings.calculation.fields.preferNativeChapterCount.hint}
+ </SettingHint>
</SettingCheckboxToggle>
<br />
<SettingCheckboxToggle
- setting="calculateChaptersRoundedDown"
- text={$locale().settings.calculation.fields.roundDownChapters.title}
+ setting="calculateChaptersRoundedDown"
+ text={$locale().settings.calculation.fields.roundDownChapters.title}
>
- <SettingHint lineBreak>
- {$locale().settings.calculation.fields.roundDownChapters.hint}
- </SettingHint>
+ <SettingHint lineBreak>
+ {$locale().settings.calculation.fields.roundDownChapters.hint}
+ </SettingHint>
</SettingCheckboxToggle>
<br />
<SettingCheckboxToggle
- setting="displayNotStarted"
- text={$locale().settings.calculation.fields.showMediaWithZeroProgress.title}
+ setting="displayNotStarted"
+ text={$locale().settings.calculation.fields.showMediaWithZeroProgress.title}
>
- <SettingHint lineBreak>
- {$locale().settings.calculation.fields.showMediaWithZeroProgress.hint}
- </SettingHint>
+ <SettingHint lineBreak>
+ {$locale().settings.calculation.fields.showMediaWithZeroProgress.hint}
+ </SettingHint>
</SettingCheckboxToggle>
<br />
<SettingCheckboxToggle
- setting="calculateDisableOutOfDateVolumeWarning"
- text={$locale().settings.calculation.fields.hideOutOfDateVolumeWarning.title}
+ setting="calculateDisableOutOfDateVolumeWarning"
+ text={$locale().settings.calculation.fields.hideOutOfDateVolumeWarning.title}
>
- <SettingHint lineBreak>
- Out-of-date volume warnings display an alert when there is a mismatch between the chapter
- progress and number of volumes you have logged for a given title.
- <br />
- For example, an alert would be shown if you have tracked a manga up to Ch. 50 (Vol. 5), but have
- less than 4 volumes logged.
+ <SettingHint lineBreak>
+ Out-of-date volume warnings display an alert when there is a mismatch between the chapter
+ progress and number of volumes you have logged for a given title.
+ <br />
+ For example, an alert would be shown if you have tracked a manga up to Ch. 50 (Vol. 5), but have
+ less than 4 volumes logged.
- <br />
+ <br />
- Disabling this option speeds up refresh times for manga lists.
- </SettingHint>
+ Disabling this option speeds up refresh times for manga lists.
+ </SettingHint>
</SettingCheckboxToggle>
<br />
<SettingCheckboxToggle
- setting="calculateGuessingDisabled"
- text={$locale().settings.calculation.fields.smartChapterCountEstimation.title}
- invert
+ setting="calculateGuessingDisabled"
+ text={$locale().settings.calculation.fields.smartChapterCountEstimation.title}
+ invert
>
- <SettingHint lineBreak>
- Smart chapter count calculation uses statistical methods to estimate the number of chapters
- available for a given title based on user submitted progress.<br />Disabling this setting will
- disable light novel chapter count reporting and will disable smart chapter count calculation for
- titles which you have higher progress than officially reported.
- </SettingHint>
+ <SettingHint lineBreak>
+ Smart chapter count calculation uses statistical methods to estimate the number of chapters
+ available for a given title based on user submitted progress.<br />Disabling this setting will
+ disable light novel chapter count reporting and will disable smart chapter count calculation for
+ titles which you have higher progress than officially reported.
+ </SettingHint>
</SettingCheckboxToggle>
{#if !$settings.calculateGuessingDisabled}
- <br />
+ <br />
- <select bind:value={$settings.calculateGuessMethod} on:change={pruneAllManga}>
- <option value="mode">Mode (fast, moderate to low accuracy)</option>
- <option value="median">Median (moderate speed, high accuracy, recommended)</option>
- <option value="iqr_median">Interquartile Range with Median (slower, high accuracy)</option>
- <option value="iqr_mode">Interquartile Range with Mode (slower, high accuracy)</option>
- </select>
- Smart chapter count calculation method
+ <select bind:value={$settings.calculateGuessMethod} on:change={pruneAllManga}>
+ <option value="mode">Mode (fast, moderate to low accuracy)</option>
+ <option value="median">Median (moderate speed, high accuracy, recommended)</option>
+ <option value="iqr_median">Interquartile Range with Median (slower, high accuracy)</option>
+ <option value="iqr_mode">Interquartile Range with Mode (slower, high accuracy)</option>
+ </select>
+ Smart chapter count calculation method
- <SettingHint lineBreak>
- No chapter count estimation method will be 100% accurate. Since estimated media requires scores
- derived from user submitted progress, high (or low) false-reports skew the data.
- </SettingHint>
+ <SettingHint lineBreak>
+ No chapter count estimation method will be 100% accurate. Since estimated media requires scores
+ derived from user submitted progress, high (or low) false-reports skew the data.
+ </SettingHint>
{/if}
diff --git a/src/lib/Settings/Categories/Debug.svelte b/src/lib/Settings/Categories/Debug.svelte
index 620c226a..79e18c03 100644
--- a/src/lib/Settings/Categories/Debug.svelte
+++ b/src/lib/Settings/Categories/Debug.svelte
@@ -1,60 +1,60 @@
<script lang="ts">
- import settings from '$stores/settings';
- import { getNotificationsContext } from 'svelte-notifications';
- import SettingHint from '../SettingHint.svelte';
- import { options } from '$lib/Notification/options';
- import locale from '$stores/locale';
- import SettingCheckboxToggle from '../SettingCheckboxToggle.svelte';
+ import settings from '$stores/settings';
+ import { getNotificationsContext } from 'svelte-notifications';
+ import SettingHint from '../SettingHint.svelte';
+ import { options } from '$lib/Notification/options';
+ import locale from '$stores/locale';
+ import SettingCheckboxToggle from '../SettingCheckboxToggle.svelte';
- const { addNotification } = getNotificationsContext();
+ const { addNotification } = getNotificationsContext();
</script>
<SettingCheckboxToggle setting="debugDummyLists" text={$locale().debug.dummyLists} />
<button
- on:click={() => {
- localStorage.removeItem('anime');
- localStorage.removeItem('manga');
- addNotification(
- options({
- heading: 'Anime and manga list caches successfully cleared'
- })
- );
- }}>{$locale().debug.clearCaches}</button
+ on:click={() => {
+ localStorage.removeItem('anime');
+ localStorage.removeItem('manga');
+ addNotification(
+ options({
+ heading: 'Anime and manga list caches successfully cleared'
+ })
+ );
+ }}>{$locale().debug.clearCaches}</button
>
<p />
<button
- on:click={() => {
- settings.reset();
- addNotification(
- options({
- heading: 'All settings successfully reset'
- })
- );
- }}
+ on:click={() => {
+ settings.reset();
+ addNotification(
+ options({
+ heading: 'All settings successfully reset'
+ })
+ );
+ }}
>
- {$locale().debug.resetAllSettings.title}
+ {$locale().debug.resetAllSettings.title}
</button>
<SettingHint lineBreak>
- {$locale().debug.resetAllSettings.hint}
+ {$locale().debug.resetAllSettings.hint}
</SettingHint>
<p />
<button
- on:click={() => {
- localStorage.clear();
- addNotification(
- options({
- heading: '<code>localStorage</code> successfully cleared'
- })
- );
- }}>{$locale().debug.clearLocalStorage.title} <code>localStorage</code></button
+ on:click={() => {
+ localStorage.clear();
+ addNotification(
+ options({
+ heading: '<code>localStorage</code> successfully cleared'
+ })
+ );
+ }}>{$locale().debug.clearLocalStorage.title} <code>localStorage</code></button
>
<SettingHint lineBreak>
- {$locale().debug.clearLocalStorage.hint1}
- <br />
- {$locale().debug.clearLocalStorage.hint2}
+ {$locale().debug.clearLocalStorage.hint1}
+ <br />
+ {$locale().debug.clearLocalStorage.hint2}
</SettingHint>
diff --git a/src/lib/Settings/Categories/Display.svelte b/src/lib/Settings/Categories/Display.svelte
index 85a3c922..9f72f1e1 100644
--- a/src/lib/Settings/Categories/Display.svelte
+++ b/src/lib/Settings/Categories/Display.svelte
@@ -1,177 +1,177 @@
<script lang="ts">
- import settings from '$stores/settings';
- import SettingCheckboxToggle from '../SettingCheckboxToggle.svelte';
- import SettingHint from '../SettingHint.svelte';
- import root from '$lib/Utility/root';
- import locale from '$stores/locale';
- import { requestNotifications } from '$lib/Utility/notifications';
- import { getFingerprint } from '$lib/Utility/fingerprint';
-
- const onHelperChange = () => {
- const mai = document.getElementById('mai') as HTMLImageElement;
-
- if (!mai) return;
-
- mai.style.display = 'block';
-
- switch ($settings.displayAoButa) {
- case 'random':
- case 'mai_2':
- {
- mai.src = '/aobuta/mai.png';
- }
- break;
- case 'mai':
- {
- mai.src = '/aobuta/mai_2.webp';
- }
- break;
- case 'nodoka':
- {
- mai.src = '/aobuta/nodoka.webp';
- }
- break;
- case 'kaede':
- {
- mai.src = '/aobuta/kaede.png';
- }
- break;
- case 'rio':
- {
- mai.src = '/aobuta/rio.webp';
- }
- break;
- case 'sakuta':
- {
- mai.src = '/aobuta/sakuta.webp';
- }
- break;
- case 'shouko':
- {
- mai.src = '/aobuta/shouko.webp';
- }
- break;
- case 'tomoe':
- {
- mai.src = '/aobuta/tomoe.webp';
- }
- break;
- case 'none': {
- {
- mai.style.display = 'none';
- }
- break;
- }
- }
- };
+ import settings from '$stores/settings';
+ import SettingCheckboxToggle from '../SettingCheckboxToggle.svelte';
+ import SettingHint from '../SettingHint.svelte';
+ import root from '$lib/Utility/root';
+ import locale from '$stores/locale';
+ import { requestNotifications } from '$lib/Utility/notifications';
+ import { getFingerprint } from '$lib/Utility/fingerprint';
+
+ const onHelperChange = () => {
+ const mai = document.getElementById('mai') as HTMLImageElement;
+
+ if (!mai) return;
+
+ mai.style.display = 'block';
+
+ switch ($settings.displayAoButa) {
+ case 'random':
+ case 'mai_2':
+ {
+ mai.src = '/aobuta/mai.png';
+ }
+ break;
+ case 'mai':
+ {
+ mai.src = '/aobuta/mai_2.webp';
+ }
+ break;
+ case 'nodoka':
+ {
+ mai.src = '/aobuta/nodoka.webp';
+ }
+ break;
+ case 'kaede':
+ {
+ mai.src = '/aobuta/kaede.png';
+ }
+ break;
+ case 'rio':
+ {
+ mai.src = '/aobuta/rio.webp';
+ }
+ break;
+ case 'sakuta':
+ {
+ mai.src = '/aobuta/sakuta.webp';
+ }
+ break;
+ case 'shouko':
+ {
+ mai.src = '/aobuta/shouko.webp';
+ }
+ break;
+ case 'tomoe':
+ {
+ mai.src = '/aobuta/tomoe.webp';
+ }
+ break;
+ case 'none': {
+ {
+ mai.style.display = 'none';
+ }
+ break;
+ }
+ }
+ };
</script>
<b>{$locale().settings.display.categories.includeAdditionalMedia}</b><br />
<SettingCheckboxToggle
- setting="displayPausedMedia"
- text={$locale().settings.media.pausedMedia}
- lineBreak={false}
+ setting="displayPausedMedia"
+ text={$locale().settings.media.pausedMedia}
+ lineBreak={false}
/>
<SettingCheckboxToggle
- setting="displayUnresolved"
- text={$locale().settings.media.unresolvedMedia}
- lineBreak={false}
+ setting="displayUnresolved"
+ text={$locale().settings.media.unresolvedMedia}
+ lineBreak={false}
/>
<SettingCheckboxToggle
- setting="displayPlannedAnime"
- text={$locale().settings.media.plannedAnime}
- lineBreak={false}
+ setting="displayPlannedAnime"
+ text={$locale().settings.media.plannedAnime}
+ lineBreak={false}
/>
<SettingHint lineBreak>
- Media where either the next episode's release date is unknown or the chapter count could not be
- resolved is considered unresolved.
- <p />
- <span>
- Additionally, you hard exclude specific media from <a href={root('/')}>due.moe</a> on AniList.
- To exclude any media from being included in <b>any</b> <a href={root('/')}>due.moe</a>
- calculation, create an anime or manga list with the tag
- <code>#DueIgnore</code> in the list's title and add the media you want to exclude to the list.
- </span>
-
- <br />
-
- <span>
- Inversely, you can selectively include media by creating an anime or manga list with the tag <code
- >#DueInclude</code
- >
- in the list's title, which will include
- <b>only</b>
- media in the list in any <a href={root('/')}>due.moe</a> calculation.
- <code>#DueInclude</code>
- will override <code>#DueIgnore</code>.
- </span>
+ Media where either the next episode's release date is unknown or the chapter count could not be
+ resolved is considered unresolved.
+ <p />
+ <span>
+ Additionally, you hard exclude specific media from <a href={root('/')}>due.moe</a> on AniList.
+ To exclude any media from being included in <b>any</b> <a href={root('/')}>due.moe</a>
+ calculation, create an anime or manga list with the tag
+ <code>#DueIgnore</code> in the list's title and add the media you want to exclude to the list.
+ </span>
+
+ <br />
+
+ <span>
+ Inversely, you can selectively include media by creating an anime or manga list with the tag <code
+ >#DueInclude</code
+ >
+ in the list's title, which will include
+ <b>only</b>
+ media in the list in any <a href={root('/')}>due.moe</a> calculation.
+ <code>#DueInclude</code>
+ will override <code>#DueIgnore</code>.
+ </span>
</SettingHint>
<p />
<b>{$locale().settings.display.categories.hidePanels}</b><br />
<SettingCheckboxToggle
- setting="disableUpcomingAnime"
- text={$locale().settings.media.upcomingAnime}
- lineBreak={false}
- onChange={() => {
- if ($settings.disableAnime && $settings.disableManga) $settings.disableUpcomingAnime = false;
- }}
+ setting="disableUpcomingAnime"
+ text={$locale().settings.media.upcomingAnime}
+ lineBreak={false}
+ onChange={() => {
+ if ($settings.disableAnime && $settings.disableManga) $settings.disableUpcomingAnime = false;
+ }}
/>
<SettingCheckboxToggle
- setting="disableAnime"
- text={$locale().settings.media.anime}
- lineBreak={false}
- onChange={() => {
- if ($settings.disableUpcomingAnime && $settings.disableManga) $settings.disableAnime = false;
-
- if (
- $settings.disableAnime &&
- $settings.disableManga &&
- $settings.displayFiltersIncludeCompleted
- )
- $settings.displayFiltersIncludeCompleted = false;
- }}
+ setting="disableAnime"
+ text={$locale().settings.media.anime}
+ lineBreak={false}
+ onChange={() => {
+ if ($settings.disableUpcomingAnime && $settings.disableManga) $settings.disableAnime = false;
+
+ if (
+ $settings.disableAnime &&
+ $settings.disableManga &&
+ $settings.displayFiltersIncludeCompleted
+ )
+ $settings.displayFiltersIncludeCompleted = false;
+ }}
/>
<SettingCheckboxToggle
- setting="disableManga"
- text={$locale().settings.media.manga}
- onChange={() => {
- if ($settings.disableAnime && $settings.disableUpcomingAnime) $settings.disableManga = false;
-
- if (
- $settings.disableAnime &&
- $settings.disableManga &&
- $settings.displayFiltersIncludeCompleted
- )
- $settings.displayFiltersIncludeCompleted = false;
- }}
+ setting="disableManga"
+ text={$locale().settings.media.manga}
+ onChange={() => {
+ if ($settings.disableAnime && $settings.disableUpcomingAnime) $settings.disableManga = false;
+
+ if (
+ $settings.disableAnime &&
+ $settings.disableManga &&
+ $settings.displayFiltersIncludeCompleted
+ )
+ $settings.displayFiltersIncludeCompleted = false;
+ }}
/>
<SettingCheckboxToggle
- setting="displayFiltersIncludeCompleted"
- text={$locale().settings.display.categories.filtersIncludeCompleted}
- onChange={() => {
- if (
- $settings.displayFiltersIncludeCompleted &&
- $settings.disableAnime &&
- $settings.disableManga
- )
- $settings.disableAnime = false;
- }}
+ setting="displayFiltersIncludeCompleted"
+ text={$locale().settings.display.categories.filtersIncludeCompleted}
+ onChange={() => {
+ if (
+ $settings.displayFiltersIncludeCompleted &&
+ $settings.disableAnime &&
+ $settings.disableManga
+ )
+ $settings.disableAnime = false;
+ }}
/>
<p />
<b>{$locale().settings.display.categories.collapsePanelsByDefault}</b><br />
<SettingCheckboxToggle
- setting="displayUpcomingAnimeCollapsed"
- text={$locale().settings.media.upcomingAnime}
- lineBreak={false}
+ setting="displayUpcomingAnimeCollapsed"
+ text={$locale().settings.media.upcomingAnime}
+ lineBreak={false}
/>
<SettingCheckboxToggle
- setting="displayAnimeCollapsed"
- text={$locale().settings.media.anime}
- lineBreak={false}
+ setting="displayAnimeCollapsed"
+ text={$locale().settings.media.anime}
+ lineBreak={false}
/>
<SettingCheckboxToggle setting="displayMangaCollapsed" text={$locale().settings.media.manga} />
@@ -179,102 +179,102 @@
<b>{$locale().settings.display.categories.motionAndAccessibility.title}</b><br />
<SettingCheckboxToggle
- setting="displayDisableAnimations"
- text={$locale().settings.display.categories.motionAndAccessibility.fields
- .disablePageTransitionAnimations}
+ setting="displayDisableAnimations"
+ text={$locale().settings.display.categories.motionAndAccessibility.fields
+ .disablePageTransitionAnimations}
/>
<SettingCheckboxToggle
- setting="displayDisableNotifications"
- text={$locale().settings.display.categories.motionAndAccessibility.fields.disableNotifications}
+ setting="displayDisableNotifications"
+ text={$locale().settings.display.categories.motionAndAccessibility.fields.disableNotifications}
/>
<SettingCheckboxToggle
- setting="displayLimitListHeight"
- text={$locale().settings.display.categories.motionAndAccessibility.fields
- .limitPanelAreaToScreenHeight}
+ setting="displayLimitListHeight"
+ text={$locale().settings.display.categories.motionAndAccessibility.fields
+ .limitPanelAreaToScreenHeight}
/>
<SettingCheckboxToggle
- setting="displayDataSaver"
- text={$locale().settings.display.categories.dataSaver}
+ setting="displayDataSaver"
+ text={$locale().settings.display.categories.dataSaver}
/>
<select bind:value={$settings.displayLanguage} class="no-shadow">
- <option value="en">
- {$locale({
- locale: 'en'
- }).settings.languages.english}
- </option>
- <option value="ja">
- {$locale({
- locale: 'ja'
- }).settings.languages.japanese}
- </option>
+ <option value="en">
+ {$locale({
+ locale: 'en'
+ }).settings.languages.english}
+ </option>
+ <option value="ja">
+ {$locale({
+ locale: 'ja'
+ }).settings.languages.japanese}
+ </option>
</select>
{$locale().settings.display.categories.motionAndAccessibility.fields.interfaceLanguage}
{#if $settings.displayLanguage !== 'en'}
- <button class="unclickable-button button-badge badge-info">
- {$locale().settings.display.tooltips.beta}
- </button>
+ <button class="unclickable-button button-badge badge-info">
+ {$locale().settings.display.tooltips.beta}
+ </button>
{/if}
<p />
<SettingCheckboxToggle
- setting="displayAniListNotifications"
- text={$locale().settings.display.categories.motionAndAccessibility.fields
- .enableAniListNotifications}
- onChange={() => {
- if ($settings.displayAniListNotifications)
- requestNotifications().then(() => {
- return;
- });
- else
- fetch(`/api/notifications/unsubscribe?p=${getFingerprint()}`, {
- method: 'POST'
- }).then(() => {
- return;
- });
- }}
+ setting="displayAniListNotifications"
+ text={$locale().settings.display.categories.motionAndAccessibility.fields
+ .enableAniListNotifications}
+ onChange={() => {
+ if ($settings.displayAniListNotifications)
+ requestNotifications().then(() => {
+ return;
+ });
+ else
+ fetch(`/api/notifications/unsubscribe?p=${getFingerprint()}`, {
+ method: 'POST'
+ }).then(() => {
+ return;
+ });
+ }}
>
- <SettingHint lineBreak>
- Periodically check for and send recent AniList notifications as native platform notifications
- <br />
- This may be useful for users who have installed due.moe as a PWA or are using due.moe on a mobile
- device, as AniList has no official mobile app, and the AniList website does not send push notifications.
- </SettingHint>
+ <SettingHint lineBreak>
+ Periodically check for and send recent AniList notifications as native platform notifications
+ <br />
+ This may be useful for users who have installed due.moe as a PWA or are using due.moe on a mobile
+ device, as AniList has no official mobile app, and the AniList website does not send push notifications.
+ </SettingHint>
</SettingCheckboxToggle>
<p />
<b>{$locale().settings.display.categories.dateAndTime.title}</b><br />
<SettingCheckboxToggle
- setting="displayCountdownRightAligned"
- text={$locale().settings.display.categories.dateAndTime.fields.rightAlignCountdown}
+ setting="displayCountdownRightAligned"
+ text={$locale().settings.display.categories.dateAndTime.fields.rightAlignCountdown}
/>
<SettingCheckboxToggle
- setting="display24HourTime"
- text={$locale().settings.display.categories.dateAndTime.fields.use24HourTime}
+ setting="display24HourTime"
+ text={$locale().settings.display.categories.dateAndTime.fields.use24HourTime}
/>
<SettingCheckboxToggle
- setting="displayNativeCountdown"
- text={$locale().settings.display.categories.dateAndTime.fields.nativeEpisodeCountdown}
+ setting="displayNativeCountdown"
+ text={$locale().settings.display.categories.dateAndTime.fields.nativeEpisodeCountdown}
/>
<SettingCheckboxToggle
- setting="displayShortCountdown"
- text={$locale().settings.display.categories.dateAndTime.fields.abbreviateCountdown}
+ setting="displayShortCountdown"
+ text={$locale().settings.display.categories.dateAndTime.fields.abbreviateCountdown}
/>
<p />
<SettingCheckboxToggle
- setting="displayDisableLastActivityWarning"
- text={$locale().settings.display.categories.dateAndTime.fields.disableLastActivityWarning}
+ setting="displayDisableLastActivityWarning"
+ text={$locale().settings.display.categories.dateAndTime.fields.disableLastActivityWarning}
>
- <SettingHint lineBreak>
- A warning will appear at the top of <a href={root('/')}>Home</a> and
- <a href={root('/completed')}>Completed</a> if you have not filled in today's activity history
- grid point yet.
- <br />
- This option is useful to those that like maintaining a consistent activity history grid.
- </SettingHint>
+ <SettingHint lineBreak>
+ A warning will appear at the top of <a href={root('/')}>Home</a> and
+ <a href={root('/completed')}>Completed</a> if you have not filled in today's activity history
+ grid point yet.
+ <br />
+ This option is useful to those that like maintaining a consistent activity history grid.
+ </SettingHint>
</SettingCheckboxToggle>
<p />
@@ -283,86 +283,86 @@
<SettingCheckboxToggle setting="displayCoverModeAnime" text="Anime" lineBreak={false} />
<SettingCheckboxToggle setting="displayCoverModeManga" text="Manga" lineBreak={false} />
<SettingCheckboxToggle
- setting="displayScheduleListMode"
- text="Subtitle Schedule"
- lineBreak={false}
- invert
+ setting="displayScheduleListMode"
+ text="Subtitle Schedule"
+ lineBreak={false}
+ invert
/>
{#if $settings.displayCoverModeAnime || $settings.displayCoverModeManga || !$settings.displayScheduleListMode}
- <br />
- <input
- type="number"
- class="no-shadow"
- bind:value={$settings.displayCoverWidth}
- min="50"
- placeholder="116.609"
- size="3"
- on:change={() => {
- if ($settings.displayCoverWidth === null) {
- $settings.displayCoverWidth = 116.609;
-
- return;
- }
-
- $settings.displayCoverWidth < 50 && ($settings.displayCoverWidth = 50);
- }}
- />
- Cover width (px)
- <br />
+ <br />
+ <input
+ type="number"
+ class="no-shadow"
+ bind:value={$settings.displayCoverWidth}
+ min="50"
+ placeholder="116.609"
+ size="3"
+ on:change={() => {
+ if ($settings.displayCoverWidth === null) {
+ $settings.displayCoverWidth = 116.609;
+
+ return;
+ }
+
+ $settings.displayCoverWidth < 50 && ($settings.displayCoverWidth = 50);
+ }}
+ />
+ Cover width (px)
+ <br />
{:else}
- <br />
+ <br />
{/if}
<p />
<b>{$locale().settings.display.categories.media.title}</b><br />
<SettingCheckboxToggle
- setting="displayHoverCover"
- text="Show media cover when hovering on supported media titles"
+ setting="displayHoverCover"
+ text="Show media cover when hovering on supported media titles"
/>
<SettingCheckboxToggle setting="displaySocialButton" text="Show social tab shortcut for media" />
<SettingCheckboxToggle setting="displayBlurAdultContent" text="Blur NSFW media covers" />
<SettingCheckboxToggle
- setting="displayCopyMediaTitleNotLink"
- text="Copy media title instead of linking"
+ setting="displayCopyMediaTitleNotLink"
+ text="Copy media title instead of linking"
/>
<SettingCheckboxToggle
- setting="displayTotalDueEpisodes"
- text="Display total number of due episodes instead of due media count"
+ setting="displayTotalDueEpisodes"
+ text="Display total number of due episodes instead of due media count"
/>
<select bind:value={$settings.displayTitleFormat}>
- <option value="english">
- {$locale().settings.display.categories.media.fields.mediaTitleFormat.options.english}
- </option>
- <option value="romaji">
- {$locale().settings.display.categories.media.fields.mediaTitleFormat.options.romaji}
- </option>
- <option value="native">
- {$locale().settings.display.categories.media.fields.mediaTitleFormat.options.native}
- </option>
+ <option value="english">
+ {$locale().settings.display.categories.media.fields.mediaTitleFormat.options.english}
+ </option>
+ <option value="romaji">
+ {$locale().settings.display.categories.media.fields.mediaTitleFormat.options.romaji}
+ </option>
+ <option value="native">
+ {$locale().settings.display.categories.media.fields.mediaTitleFormat.options.native}
+ </option>
</select>
{$locale().settings.display.categories.media.fields.mediaTitleFormat.title}
{#if $settings.displayTitleFormat === 'native'}
- &nbsp;
- <SettingCheckboxToggle
- setting="displayFurigana"
- text={$locale().settings.display.categories.media.fields.mediaTitleFormat.fields.showFurigana}
- />
+ &nbsp;
+ <SettingCheckboxToggle
+ setting="displayFurigana"
+ text={$locale().settings.display.categories.media.fields.mediaTitleFormat.fields.showFurigana}
+ />
{:else}
- <br />
+ <br />
{/if}
<p />
<select bind:value={$settings.displayOutboundLinksTo}>
- <option value="anilist">AniList</option>
- <option value="livechartme">LiveChart.me</option>
- <option value="animeschedule">AnimeSchedule</option>
- <option value="myanimelist">MyAnimeList</option>
+ <option value="anilist">AniList</option>
+ <option value="livechartme">LiveChart.me</option>
+ <option value="animeschedule">AnimeSchedule</option>
+ <option value="myanimelist">MyAnimeList</option>
</select>
{$locale().settings.display.categories.media.fields.outboundLinks.title}
<SettingHint lineBreak>
- {$locale().settings.display.categories.media.fields.outboundLinks.hint}
+ {$locale().settings.display.categories.media.fields.outboundLinks.hint}
</SettingHint><br />
<!-- <SettingCheckboxToggle setting="displayHoverNavigation" text="Use hovering navigation bar">
@@ -375,27 +375,27 @@
<br />
<SettingCheckboxToggle
- setting="displaySortedByDifference"
- text={$locale().settings.display.categories.media.fields.sortBy.title}
+ setting="displaySortedByDifference"
+ text={$locale().settings.display.categories.media.fields.sortBy.title}
>
- <SettingHint lineBreak>
- {$locale().settings.display.categories.media.fields.sortBy.hint}
- </SettingHint>
+ <SettingHint lineBreak>
+ {$locale().settings.display.categories.media.fields.sortBy.hint}
+ </SettingHint>
</SettingCheckboxToggle>
<br />
<select bind:value={$settings.displayAoButa} on:change={onHelperChange}>
- <option value="mai">{$locale().settings.display.categories.helper.options.mai}</option>
- <option value="mai_2">{$locale().settings.display.categories.helper.options.mai} #2</option>
- <option value="nodoka">{$locale().settings.display.categories.helper.options.nodoka}</option>
- <option value="kaede">{$locale().settings.display.categories.helper.options.kaede}</option>
- <option value="rio">{$locale().settings.display.categories.helper.options.rio}</option>
- <option value="sakuta">{$locale().settings.display.categories.helper.options.sakuta}</option>
- <option value="shouko">{$locale().settings.display.categories.helper.options.shouko}</option>
- <option value="tomoe">{$locale().settings.display.categories.helper.options.tomoe}</option>
- <option value="random">{$locale().settings.display.categories.helper.options.random}</option>
- <option value="none">{$locale().settings.display.categories.helper.options.none}</option>
+ <option value="mai">{$locale().settings.display.categories.helper.options.mai}</option>
+ <option value="mai_2">{$locale().settings.display.categories.helper.options.mai} #2</option>
+ <option value="nodoka">{$locale().settings.display.categories.helper.options.nodoka}</option>
+ <option value="kaede">{$locale().settings.display.categories.helper.options.kaede}</option>
+ <option value="rio">{$locale().settings.display.categories.helper.options.rio}</option>
+ <option value="sakuta">{$locale().settings.display.categories.helper.options.sakuta}</option>
+ <option value="shouko">{$locale().settings.display.categories.helper.options.shouko}</option>
+ <option value="tomoe">{$locale().settings.display.categories.helper.options.tomoe}</option>
+ <option value="random">{$locale().settings.display.categories.helper.options.random}</option>
+ <option value="none">{$locale().settings.display.categories.helper.options.none}</option>
</select>
{$locale().settings.display.categories.helper.title}
<SettingHint lineBreak>{$locale().settings.display.categories.helper.hint}</SettingHint>
diff --git a/src/lib/Settings/Categories/RSSFeeds.svelte b/src/lib/Settings/Categories/RSSFeeds.svelte
index 7217324c..a225b137 100644
--- a/src/lib/Settings/Categories/RSSFeeds.svelte
+++ b/src/lib/Settings/Categories/RSSFeeds.svelte
@@ -1,43 +1,43 @@
<script lang="ts">
- import { options } from '$lib/Notification/options';
- import { getNotificationsContext } from 'svelte-notifications';
- import { env } from '$env/dynamic/public';
- import locale from '$stores/locale';
- import SettingHint from '../SettingHint.svelte';
- import tooltip from '$lib/Tooltip/tooltip';
+ import { options } from '$lib/Notification/options';
+ import { getNotificationsContext } from 'svelte-notifications';
+ import { env } from '$env/dynamic/public';
+ import locale from '$stores/locale';
+ import SettingHint from '../SettingHint.svelte';
+ import tooltip from '$lib/Tooltip/tooltip';
- export let user: any;
+ export let user: any;
- const { addNotification } = getNotificationsContext();
+ const { addNotification } = getNotificationsContext();
</script>
<button
- on:click={() => {
- addNotification(
- options({
- heading: 'RSS feed URL copied to clipboard'
- })
- );
- navigator.clipboard.writeText(
- `https://${
- env.PUBLIC_ANILIST_REDIRECT_URI?.includes('192.168') ? '192.168.1.60:5173' : 'due.moe'
- }/feeds/activity-notifications?token=${user.accessToken}&refresh=${user.refreshToken}`
- );
- }}
+ on:click={() => {
+ addNotification(
+ options({
+ heading: 'RSS feed URL copied to clipboard'
+ })
+ );
+ navigator.clipboard.writeText(
+ `https://${
+ env.PUBLIC_ANILIST_REDIRECT_URI?.includes('192.168') ? '192.168.1.60:5173' : 'due.moe'
+ }/feeds/activity-notifications?token=${user.accessToken}&refresh=${user.refreshToken}`
+ );
+ }}
>
- {$locale().settings.rssFeeds.buttons.copyToClipboard}
+ {$locale().settings.rssFeeds.buttons.copyToClipboard}
</button>
Your AniList notifications RSS feed URL
<SettingHint lineBreak>
- This <a
- href={'#'}
- on:click={(e) => e.preventDefault()}
- target="_blank"
- title={$locale().settings.rssFeeds.tooltips.rss}
- use:tooltip
- data-tooltip-above>RSS</a
- >
- feed will return the currently logged in AniList user's notification feed for external consumption.
- <br />
- Do not share this link with <b>anyone</b>!
+ This <a
+ href={'#'}
+ on:click={(e) => e.preventDefault()}
+ target="_blank"
+ title={$locale().settings.rssFeeds.tooltips.rss}
+ use:tooltip
+ data-tooltip-above>RSS</a
+ >
+ feed will return the currently logged in AniList user's notification feed for external consumption.
+ <br />
+ Do not share this link with <b>anyone</b>!
</SettingHint>
diff --git a/src/lib/Settings/Categories/SettingSync.svelte b/src/lib/Settings/Categories/SettingSync.svelte
index 6a7de8d1..39e62954 100644
--- a/src/lib/Settings/Categories/SettingSync.svelte
+++ b/src/lib/Settings/Categories/SettingSync.svelte
@@ -1,116 +1,116 @@
<script lang="ts">
- import { options } from '$lib/Notification/options';
- import root from '$lib/Utility/root';
- import identity from '$stores/identity';
- import settings from '$stores/settings';
- import { getNotificationsContext } from 'svelte-notifications';
- import SettingHint from '../SettingHint.svelte';
- import locale from '$stores/locale';
- import settingsSyncTimes from '$stores/settingsSyncTimes';
+ import { options } from '$lib/Notification/options';
+ import root from '$lib/Utility/root';
+ import identity from '$stores/identity';
+ import settings from '$stores/settings';
+ import { getNotificationsContext } from 'svelte-notifications';
+ import SettingHint from '../SettingHint.svelte';
+ import locale from '$stores/locale';
+ import settingsSyncTimes from '$stores/settingsSyncTimes';
- const { addNotification } = getNotificationsContext();
+ const { addNotification } = getNotificationsContext();
</script>
{#if !$settings.settingsSync}
- <button
- on:click={() => {
- $settings.settingsSync = true;
+ <button
+ on:click={() => {
+ $settings.settingsSync = true;
- fetch(root(`/api/configuration?id=${$identity.id}`)).then((response) => {
- if (response.ok) {
- response.json().then((data) => {
- if (data && data.configuration) {
- $settings = data.configuration;
+ fetch(root(`/api/configuration?id=${$identity.id}`)).then((response) => {
+ if (response.ok) {
+ response.json().then((data) => {
+ if (data && data.configuration) {
+ $settings = data.configuration;
- addNotification(
- options({
- heading: 'Pulled remote configuration'
- })
- );
- } else {
- fetch(root(`/api/configuration`), {
- method: 'PUT',
- body: JSON.stringify($settings)
- }).then((response) => {
- if (response.ok)
- addNotification(
- options({
- heading: 'Created remote configuration'
- })
- );
- });
- }
- });
- }
- });
- }}
- >
- {$locale().settings.settingsSync.buttons.pull.title}
- </button>
- <SettingHint lineBreak>
- {$locale().settings.settingsSync.buttons.pull.hint}
- </SettingHint>
- <p />
- <button
- on:click={() => {
- $settings.settingsSync = true;
+ addNotification(
+ options({
+ heading: 'Pulled remote configuration'
+ })
+ );
+ } else {
+ fetch(root(`/api/configuration`), {
+ method: 'PUT',
+ body: JSON.stringify($settings)
+ }).then((response) => {
+ if (response.ok)
+ addNotification(
+ options({
+ heading: 'Created remote configuration'
+ })
+ );
+ });
+ }
+ });
+ }
+ });
+ }}
+ >
+ {$locale().settings.settingsSync.buttons.pull.title}
+ </button>
+ <SettingHint lineBreak>
+ {$locale().settings.settingsSync.buttons.pull.hint}
+ </SettingHint>
+ <p />
+ <button
+ on:click={() => {
+ $settings.settingsSync = true;
- fetch(root(`/api/configuration`), {
- method: 'PUT',
- body: JSON.stringify($settings)
- }).then((response) => {
- if (response.ok)
- addNotification(
- options({
- heading: 'Settings Sync',
- description: 'Pushed local configuration to remote'
- })
- );
- });
- }}
- >
- {$locale().settings.settingsSync.buttons.push.title}
- </button>
- <SettingHint lineBreak>
- {$locale().settings.settingsSync.buttons.push.hint}
- </SettingHint>
+ fetch(root(`/api/configuration`), {
+ method: 'PUT',
+ body: JSON.stringify($settings)
+ }).then((response) => {
+ if (response.ok)
+ addNotification(
+ options({
+ heading: 'Settings Sync',
+ description: 'Pushed local configuration to remote'
+ })
+ );
+ });
+ }}
+ >
+ {$locale().settings.settingsSync.buttons.push.title}
+ </button>
+ <SettingHint lineBreak>
+ {$locale().settings.settingsSync.buttons.push.hint}
+ </SettingHint>
{:else}
- <button
- on:click={() => {
- $settings.settingsSync = false;
+ <button
+ on:click={() => {
+ $settings.settingsSync = false;
- addNotification(
- options({
- heading: 'Settings sync disabled'
- })
- );
- }}
- >
- {$locale().settings.settingsSync.buttons.disable}
- </button>
- <button
- on:click={() => {
- fetch(root(`/api/configuration?id=${$identity.id}`), {
- method: 'DELETE'
- }).then((response) => {
- if (response.ok) {
- $settings.settingsSync = false;
+ addNotification(
+ options({
+ heading: 'Settings sync disabled'
+ })
+ );
+ }}
+ >
+ {$locale().settings.settingsSync.buttons.disable}
+ </button>
+ <button
+ on:click={() => {
+ fetch(root(`/api/configuration?id=${$identity.id}`), {
+ method: 'DELETE'
+ }).then((response) => {
+ if (response.ok) {
+ $settings.settingsSync = false;
- addNotification(
- options({
- heading: 'Remote configuration deleted and settings sync disabled'
- })
- );
- }
- });
- }}
- >
- {$locale().settings.settingsSync.buttons.delete}
- </button>
+ addNotification(
+ options({
+ heading: 'Remote configuration deleted and settings sync disabled'
+ })
+ );
+ }
+ });
+ }}
+ >
+ {$locale().settings.settingsSync.buttons.delete}
+ </button>
- <p />
+ <p />
- <b>Last Push</b>: {$locale().dateFormatter($settingsSyncTimes.lastPush)}
- <br />
- <b>Last Pull</b>: {$locale().dateFormatter($settingsSyncTimes.lastPull)}
+ <b>Last Push</b>: {$locale().dateFormatter($settingsSyncTimes.lastPush)}
+ <br />
+ <b>Last Pull</b>: {$locale().dateFormatter($settingsSyncTimes.lastPull)}
{/if}
diff --git a/src/lib/Settings/Category.svelte b/src/lib/Settings/Category.svelte
index ad3ff6d2..a5b3e211 100644
--- a/src/lib/Settings/Category.svelte
+++ b/src/lib/Settings/Category.svelte
@@ -1,18 +1,18 @@
<script lang="ts">
- export let title = '';
- export let id = title.toLowerCase();
- export let open = true;
- export let newLine = true;
+ export let title = '';
+ export let id = title.toLowerCase();
+ export let open = true;
+ export let newLine = true;
</script>
<details {open} {id}>
- {#if title}
- <summary>{title}</summary>
- {/if}
+ {#if title}
+ <summary>{title}</summary>
+ {/if}
- <slot />
+ <slot />
</details>
{#if newLine}
- <p />
+ <p />
{/if}
diff --git a/src/lib/Settings/SettingCheckboxToggle.svelte b/src/lib/Settings/SettingCheckboxToggle.svelte
index 43e9accf..bb4e8893 100644
--- a/src/lib/Settings/SettingCheckboxToggle.svelte
+++ b/src/lib/Settings/SettingCheckboxToggle.svelte
@@ -1,82 +1,82 @@
<script lang="ts">
- import settings, { type Settings } from '$stores/settings';
-
- type BooleanSettingsKeys<T> = {
- [K in keyof T]: T[K] extends boolean ? K : never;
- };
- type SettingsBooleanKeys = BooleanSettingsKeys<Settings>;
-
- export let sectionBreak = false;
- export let disabled = false;
- export let text: string | (() => string);
- export let setting: SettingsBooleanKeys[keyof SettingsBooleanKeys];
- export let lineBreak = true;
- export let onChange: () => void = () => {
- return;
- };
- export let invert = false;
-
- $: checked = setting ? (invert ? !$settings[setting] : $settings[setting]) : false;
- $: field = text instanceof Function ? text() : text;
-
- // const toggler = (key: keyof Settings) => [
- // () =>
- // settings.update((s) => {
- // (s[key] as boolean) = true;
-
- // $settings = s;
-
- // return s;
- // }),
- // () =>
- // settings.update((s) => {
- // (s[key] as boolean) = false;
-
- // $settings = s;
-
- // return s;
- // })
- // ];
-
- const check = (e: Event & { currentTarget: EventTarget & HTMLInputElement }): void => {
- const checked = (e.target as HTMLInputElement).checked;
-
- if (setting) {
- settings.setKey(setting, invert ? !checked : checked);
- onChange();
- }
- };
-
- const flip = () => {
- if (setting) $settings[setting] = !$settings[setting];
- };
+ import settings, { type Settings } from '$stores/settings';
+
+ type BooleanSettingsKeys<T> = {
+ [K in keyof T]: T[K] extends boolean ? K : never;
+ };
+ type SettingsBooleanKeys = BooleanSettingsKeys<Settings>;
+
+ export let sectionBreak = false;
+ export let disabled = false;
+ export let text: string | (() => string);
+ export let setting: SettingsBooleanKeys[keyof SettingsBooleanKeys];
+ export let lineBreak = true;
+ export let onChange: () => void = () => {
+ return;
+ };
+ export let invert = false;
+
+ $: checked = setting ? (invert ? !$settings[setting] : $settings[setting]) : false;
+ $: field = text instanceof Function ? text() : text;
+
+ // const toggler = (key: keyof Settings) => [
+ // () =>
+ // settings.update((s) => {
+ // (s[key] as boolean) = true;
+
+ // $settings = s;
+
+ // return s;
+ // }),
+ // () =>
+ // settings.update((s) => {
+ // (s[key] as boolean) = false;
+
+ // $settings = s;
+
+ // return s;
+ // })
+ // ];
+
+ const check = (e: Event & { currentTarget: EventTarget & HTMLInputElement }): void => {
+ const checked = (e.target as HTMLInputElement).checked;
+
+ if (setting) {
+ settings.setKey(setting, invert ? !checked : checked);
+ onChange();
+ }
+ };
+
+ const flip = () => {
+ if (setting) $settings[setting] = !$settings[setting];
+ };
</script>
<input type="checkbox" on:change={check} bind:checked />
<span
- on:click={flip}
- on:keydown={() => {
- return;
- }}
- role="button"
- tabindex="0"
+ on:click={flip}
+ on:keydown={() => {
+ return;
+ }}
+ role="button"
+ tabindex="0"
>
- {#if disabled}
- <strike>
- {field}
- </strike>
- {:else}
- {field}
- {/if}
+ {#if disabled}
+ <strike>
+ {field}
+ </strike>
+ {:else}
+ {field}
+ {/if}
</span>
<slot />
{#if lineBreak}
- <br />
+ <br />
{/if}
{#if sectionBreak}
- <p />
+ <p />
{/if}
diff --git a/src/lib/Settings/SettingHint.svelte b/src/lib/Settings/SettingHint.svelte
index f9f4a1f6..f82f061c 100644
--- a/src/lib/Settings/SettingHint.svelte
+++ b/src/lib/Settings/SettingHint.svelte
@@ -1,11 +1,11 @@
<script lang="ts">
- export let lineBreak = false;
+ export let lineBreak = false;
</script>
{#if lineBreak}
- <br />
+ <br />
{/if}
<small style="opacity: 80%;">
- <slot />
+ <slot />
</small>
diff --git a/src/lib/Settings/SettingToggle.svelte b/src/lib/Settings/SettingToggle.svelte
index f1fc4cb6..0d177b50 100644
--- a/src/lib/Settings/SettingToggle.svelte
+++ b/src/lib/Settings/SettingToggle.svelte
@@ -1,35 +1,35 @@
<script lang="ts">
- import settings, { type Settings } from '$stores/settings';
+ import settings, { type Settings } from '$stores/settings';
- export let setting: keyof Settings;
- export let on = '';
- export let off = '';
- export let sectionBreak = false;
- export let disabled = false;
+ export let setting: keyof Settings;
+ export let on = '';
+ export let off = '';
+ export let sectionBreak = false;
+ export let disabled = false;
</script>
<a
- href={'#'}
- on:click={() =>
- disabled
- ? {}
- : $settings[setting]
- ? settings.setKey(setting, false)
- : settings.setKey(setting, true)}
+ href={'#'}
+ on:click={() =>
+ disabled
+ ? {}
+ : $settings[setting]
+ ? settings.setKey(setting, false)
+ : settings.setKey(setting, true)}
>
- {#if disabled}
- <strike>
- {$settings[setting] ? on : off}
- <slot />
- </strike>
- {:else}
- {$settings[setting] ? on : off}
- <slot />
- {/if}
+ {#if disabled}
+ <strike>
+ {$settings[setting] ? on : off}
+ <slot />
+ </strike>
+ {:else}
+ {$settings[setting] ? on : off}
+ <slot />
+ {/if}
</a>
<br />
{#if sectionBreak}
- <p />
+ <p />
{/if}
diff --git a/src/lib/Settings/Verbiage.svelte b/src/lib/Settings/Verbiage.svelte
index c355a692..76193c3b 100644
--- a/src/lib/Settings/Verbiage.svelte
+++ b/src/lib/Settings/Verbiage.svelte
@@ -1,34 +1,34 @@
<script>
- import root from '$lib/Utility/root';
+ import root from '$lib/Utility/root';
</script>
<details open={false}>
- <summary>Verbiage</summary>
+ <summary>Verbiage</summary>
- <ul>
- <li>
- <a href={root('/')}>Home</a>, Upcoming Episodes: Anime which you have seen all episodes of
- thus far, and have a scheduled next episode(s) release date
- </li>
- <li>
- <a href={root('/')}>Home</a>, Not Yet Released: Anime which have not yet aired their first
- episode, and have a scheduled next episode(s) release date
- </li>
- <li>
- <a href={root('/')}>Home</a>, Anime: Anime which you have not seen all episodes of thus far,
- and have a scheduled next episode release date
- </li>
- <li>
- <a href={root('/')}>Home</a>, Manga: Manga which you have not read all chapters of thus far,
- and have an available next chapter(s)
- </li>
- <li>
- <a href={root('/completed')}>Completed</a>, Anime: Anime which you have not seen all episodes
- of thus far, and have concluded airing
- </li>
- <li>
- <a href={root('/completed')}>Completed</a>, Manga: Manga which you have not read all chapters
- of thus far, and have concluded publishing
- </li>
- </ul>
+ <ul>
+ <li>
+ <a href={root('/')}>Home</a>, Upcoming Episodes: Anime which you have seen all episodes of
+ thus far, and have a scheduled next episode(s) release date
+ </li>
+ <li>
+ <a href={root('/')}>Home</a>, Not Yet Released: Anime which have not yet aired their first
+ episode, and have a scheduled next episode(s) release date
+ </li>
+ <li>
+ <a href={root('/')}>Home</a>, Anime: Anime which you have not seen all episodes of thus far,
+ and have a scheduled next episode release date
+ </li>
+ <li>
+ <a href={root('/')}>Home</a>, Manga: Manga which you have not read all chapters of thus far,
+ and have an available next chapter(s)
+ </li>
+ <li>
+ <a href={root('/completed')}>Completed</a>, Anime: Anime which you have not seen all episodes
+ of thus far, and have concluded airing
+ </li>
+ <li>
+ <a href={root('/completed')}>Completed</a>, Manga: Manga which you have not read all chapters
+ of thus far, and have concluded publishing
+ </li>
+ </ul>
</details>