aboutsummaryrefslogtreecommitdiff
path: root/src/lib/Tools
diff options
context:
space:
mode:
authorFuwn <[email protected]>2023-12-03 15:49:02 -0800
committerFuwn <[email protected]>2023-12-03 15:49:02 -0800
commit877df50ff0996559fe70dc4a309ab32e31cd2fa0 (patch)
treeb952cf1b1c85631307e6979be9cdd5c380671398 /src/lib/Tools
parentrefactor(birthdays): move to modules (diff)
downloaddue.moe-877df50ff0996559fe70dc4a309ab32e31cd2fa0.tar.xz
due.moe-877df50ff0996559fe70dc4a309ab32e31cd2fa0.zip
fix(birthdays): remove duplicates
Diffstat (limited to 'src/lib/Tools')
-rw-r--r--src/lib/Tools/CharacterBirthdays.svelte52
1 files changed, 33 insertions, 19 deletions
diff --git a/src/lib/Tools/CharacterBirthdays.svelte b/src/lib/Tools/CharacterBirthdays.svelte
index 2a14bbbb..2f37fc1b 100644
--- a/src/lib/Tools/CharacterBirthdays.svelte
+++ b/src/lib/Tools/CharacterBirthdays.svelte
@@ -19,25 +19,39 @@
anisearchBirthdays = aniSearchBirthdays(month, day);
});
- const combineBirthdaySources = (
- acdbArray: ACDBBirthday[],
- aniSearchArray: aniSearchBirthday[]
- ): Birthday[] =>
- Array.from(
- new Map(
- [
- ...aniSearchArray.map((entry) => ({
- name: entry.name,
- image: entry.image
- })),
- ...acdbArray.map((entry) => ({
- name: entry.name,
- image: entry.character_image,
- origin: entry.origin
- }))
- ].map((entry) => [entry.name, entry])
- ).values()
- );
+ function normalizeName(name: string): string {
+ return name.toLowerCase().split(' ').sort().join(' ');
+ }
+
+ function combineBirthdaySources(
+ acdb: ACDBBirthday[],
+ aniSearch: aniSearchBirthday[]
+ ): Birthday[] {
+ const nameMap = new Map<string, Birthday>();
+
+ for (const entry of aniSearch.map((entry) => ({
+ ...entry,
+ normalized_name: normalizeName(entry.name)
+ }))) {
+ nameMap.set(entry.normalized_name, {
+ name: entry.name,
+ image: entry.image
+ });
+ }
+
+ for (const entry of acdb) {
+ const normalized_name = normalizeName(entry.name);
+ if (!nameMap.has(normalized_name)) {
+ nameMap.set(normalized_name, {
+ name: entry.name,
+ image: entry.character_image,
+ origin: entry.origin
+ });
+ }
+ }
+
+ return Array.from(nameMap.values());
+ }
</script>
{#await ACDBBirthdays(month, day)}