diff options
Diffstat (limited to 'src/lib/Tools')
| -rw-r--r-- | src/lib/Tools/InputTemplate.svelte | 9 | ||||
| -rw-r--r-- | src/lib/Tools/Likes.svelte | 46 | ||||
| -rw-r--r-- | src/lib/Tools/Picker.svelte | 1 | ||||
| -rw-r--r-- | src/lib/Tools/tools.ts | 5 |
4 files changed, 61 insertions, 0 deletions
diff --git a/src/lib/Tools/InputTemplate.svelte b/src/lib/Tools/InputTemplate.svelte index d0e37f98..42eb695d 100644 --- a/src/lib/Tools/InputTemplate.svelte +++ b/src/lib/Tools/InputTemplate.svelte @@ -1,6 +1,7 @@ <script lang="ts"> import { clearAllParameters } from '$lib/Utility/parameters'; import { onMount } from 'svelte'; + import SettingHint from '$lib/Settings/SettingHint.svelte'; export let field: string; export let submission: string; @@ -11,6 +12,7 @@ return; }; export let prompt = `Enter a ${field.toLowerCase()} to search for to continue.`; + export let hint: string | undefined = undefined; let input = ''; @@ -47,6 +49,13 @@ > {submitText} </button> + + {#if hint !== undefined} + <br /> + <div style="margin-top: .25rem;"> + <SettingHint>{hint}</SettingHint> + </div> + {/if} </p> {#if submission !== ''} diff --git a/src/lib/Tools/Likes.svelte b/src/lib/Tools/Likes.svelte new file mode 100644 index 00000000..e54923bb --- /dev/null +++ b/src/lib/Tools/Likes.svelte @@ -0,0 +1,46 @@ +<script lang="ts"> + import { activityLikes } from '$lib/AniList/activity'; + import { threadLikes } from '$lib/AniList/forum'; + import RateLimited from '$lib/Error/RateLimited.svelte'; + import InputTemplate from './InputTemplate.svelte'; + + let submission = ''; + + $: normalisedSubmission = submission.replace(/.*\/(activity|thread)\/(\d+).*/, '$2'); + $: submissionType = submission.replace(/.*\/(activity|thread)\/(\d+).*/, '$1'); + $: likesPromise = + submissionType === 'activity' + ? activityLikes(Number(normalisedSubmission)) + : threadLikes(Number(normalisedSubmission)); +</script> + +<InputTemplate + field="Activity or Thread URL" + bind:submission + event="Get All Likes" + submitText="Get All Likes" +> + {#if submission.match(/https:\/\/anilist.co\/(activity|forum\/thread)\/\d+/)} + {#await likesPromise} + Loading {submissionType} ... 50% + {:then likes} + {#if likes && likes.length > 0} + <ul> + {#each likes as like} + <li> + <a href={`https://anilist.co/user/${like.name}`} target="_blank"> + {like.name} + </a> + </li> + {/each} + </ul> + {:else} + No likes were found for that {submissionType}. + {/if} + {:catch} + <RateLimited type="Likes" list={false} /> + {/await} + {:else} + Please enter a valid Activity or Thread URL. + {/if} +</InputTemplate> diff --git a/src/lib/Tools/Picker.svelte b/src/lib/Tools/Picker.svelte index 6ead9624..5276e023 100644 --- a/src/lib/Tools/Picker.svelte +++ b/src/lib/Tools/Picker.svelte @@ -19,6 +19,7 @@ <option value="discussions">Episode Discussion Collector</option> <option value="random_follower">Random Follower Finder</option> <option value="dump_profile">Dump Profile</option> + <option value="likes">Likes</option> <option value="activity_history">Activity History Analyser</option> </select> </blockquote> diff --git a/src/lib/Tools/tools.ts b/src/lib/Tools/tools.ts index c0e499b2..96aaeb47 100644 --- a/src/lib/Tools/tools.ts +++ b/src/lib/Tools/tools.ts @@ -31,6 +31,11 @@ export const tools: { [key: string]: { name: string; description?: string; id: s description: 'Find a random follower of any given user', id: 'random_follower' }, + likes: { + name: 'Likes', + description: 'Get All Likes of an Activity or Forum Thread', + id: 'likes' + }, dump_profile: { name: 'Dump Profile', description: "Dump a user's profile to JSON", |