aboutsummaryrefslogtreecommitdiff
path: root/src/lib/Tools
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/Tools')
-rw-r--r--src/lib/Tools/InputTemplate.svelte9
-rw-r--r--src/lib/Tools/Likes.svelte46
-rw-r--r--src/lib/Tools/Picker.svelte1
-rw-r--r--src/lib/Tools/tools.ts5
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",