diff --git a/AniListUserFunctions.go b/AniListUserFunctions.go index 0f6c7ed..c439673 100644 --- a/AniListUserFunctions.go +++ b/AniListUserFunctions.go @@ -19,7 +19,11 @@ import ( var aniListJwt AniListJWT var aniRing, _ = keyring.Open(keyring.Config{ - ServiceName: "AniTrack", + ServiceName: "AniTrack", + KeychainName: "AniTrack", + KeychainSynchronizable: false, + KeychainTrustApplication: true, + KeychainAccessibleWhenUnlocked: true, }) var aniCtxShutdown, aniCancel = context.WithCancel(context.Background()) diff --git a/MALUserFunctions.go b/MALUserFunctions.go index ef77a72..04f4d27 100644 --- a/MALUserFunctions.go +++ b/MALUserFunctions.go @@ -23,7 +23,11 @@ import ( var myAnimeListJwt MyAnimeListJWT var myAnimeListRing, _ = keyring.Open(keyring.Config{ - ServiceName: "AniTrack", + ServiceName: "AniTrack", + KeychainName: "AniTrack", + KeychainSynchronizable: false, + KeychainTrustApplication: true, + KeychainAccessibleWhenUnlocked: true, }) var myAnimeListCtxShutdown, myAnimeListCancel = context.WithCancel(context.Background()) diff --git a/SimklUserFunctions.go b/SimklUserFunctions.go index f435a22..ad9b2ba 100644 --- a/SimklUserFunctions.go +++ b/SimklUserFunctions.go @@ -17,7 +17,11 @@ import ( var simklJwt SimklJWT var simklRing, _ = keyring.Open(keyring.Config{ - ServiceName: "AniTrack", + ServiceName: "AniTrack", + KeychainName: "AniTrack", + KeychainSynchronizable: false, + KeychainTrustApplication: true, + KeychainAccessibleWhenUnlocked: true, }) var simklCtxShutdown, simklCancel = context.WithCancel(context.Background()) diff --git a/frontend/src/helperComponents/Anime.svelte b/frontend/src/helperComponents/Anime.svelte index 353076b..4967702 100644 --- a/frontend/src/helperComponents/Anime.svelte +++ b/frontend/src/helperComponents/Anime.svelte @@ -6,26 +6,26 @@ malLoggedIn, simklAnime, simklLoggedIn, - } from "../helperModules/GlobalVariablesAndHelperFunctions.svelte" - import { push } from "svelte-spa-router" - import { Button } from "flowbite-svelte" - import type { AniListGetSingleAnime } from "../anilist/types/AniListCurrentUserWatchListType" - import Rating from "./Rating.svelte" - import convertAniListDateToString from "../helperFunctions/convertAniListDateToString" - import AnimeTable from "./AnimeTable.svelte" + } from "../helperModules/GlobalVariablesAndHelperFunctions.svelte"; + import { push } from "svelte-spa-router"; + import { Button } from "flowbite-svelte"; + import type { AniListGetSingleAnime } from "../anilist/types/AniListCurrentUserWatchListType"; + import Rating from "./Rating.svelte"; + import convertAniListDateToString from "../helperFunctions/convertAniListDateToString"; + import AnimeTable from "./AnimeTable.svelte"; import type { MALAnime, MalListStatus, MALUploadStatus, - } from "../mal/types/MALTypes" - import type { SimklAnime } from "../simkl/types/simklTypes" - import { writable } from "svelte/store" + } from "../mal/types/MALTypes"; + import type { SimklAnime } from "../simkl/types/simklTypes"; + import { writable } from "svelte/store"; import type { StatusOption, StatusOptions, - } from "../helperTypes/StatusTypes" - import type { AniListUpdateVariables } from "../anilist/types/AniListTypes" - import convertDateStringToAniList from "../helperFunctions/convertDateStringToAniList" + } from "../helperTypes/StatusTypes"; + import type { AniListUpdateVariables } from "../anilist/types/AniListTypes"; + import convertDateStringToAniList from "../helperFunctions/convertDateStringToAniList"; import { AniListDeleteEntry, AniListUpdateEntry, @@ -35,32 +35,32 @@ SimklSyncRating, SimklSyncRemove, SimklSyncStatus, - } from "../../wailsjs/go/main/App" - import { AddAnimeServiceToTable } from "../helperModules/AddAnimeServiceToTable.svelte" - import { CheckIfAniListLoggedInAndLoadWatchList } from "../helperModules/CheckIfAniListLoggedInAndLoadWatchList.svelte" + } from "../../wailsjs/go/main/App"; + import { AddAnimeServiceToTable } from "../helperModules/AddAnimeServiceToTable.svelte"; + import { CheckIfAniListLoggedInAndLoadWatchList } from "../helperModules/CheckIfAniListLoggedInAndLoadWatchList.svelte"; - let isAniListLoggedIn: boolean - let isMalLoggedIn: boolean - let isSimklLoggedIn: boolean - let currentAniListAnime: AniListGetSingleAnime - let currentMalAnime: MALAnime - let currentSimklAnime: SimklAnime - let submitting = writable(false) - let isSubmitting: boolean - let submitSuccess = writable(false) + let isAniListLoggedIn: boolean; + let isMalLoggedIn: boolean; + let isSimklLoggedIn: boolean; + let currentAniListAnime: AniListGetSingleAnime; + let currentMalAnime: MALAnime; + let currentSimklAnime: SimklAnime; + let submitting = writable(false); + let isSubmitting: boolean; + let submitSuccess = writable(false); - aniListLoggedIn.subscribe((value) => (isAniListLoggedIn = value)) - malLoggedIn.subscribe((value) => (isMalLoggedIn = value)) - simklLoggedIn.subscribe((value) => (isSimklLoggedIn = value)) - aniListAnime.subscribe((value) => (currentAniListAnime = value)) - malAnime.subscribe((value) => (currentMalAnime = value)) - simklAnime.subscribe((value) => (currentSimklAnime = value)) - submitting.subscribe((value) => (isSubmitting = value)) + aniListLoggedIn.subscribe((value) => (isAniListLoggedIn = value)); + malLoggedIn.subscribe((value) => (isMalLoggedIn = value)); + simklLoggedIn.subscribe((value) => (isSimklLoggedIn = value)); + aniListAnime.subscribe((value) => (currentAniListAnime = value)); + malAnime.subscribe((value) => (currentMalAnime = value)); + simklAnime.subscribe((value) => (currentSimklAnime = value)); + submitting.subscribe((value) => (isSubmitting = value)); const title = currentAniListAnime.data.MediaList.media.title.english !== "" ? currentAniListAnime.data.MediaList.media.title.english - : currentAniListAnime.data.MediaList.media.title.romaji + : currentAniListAnime.data.MediaList.media.title.romaji; const statusOptions: StatusOptions = [ { id: 0, aniList: "CURRENT", mal: "watching", simkl: "watching" }, { @@ -73,17 +73,17 @@ { id: 3, aniList: "DROPPED", mal: "dropped", simkl: "dropped" }, { id: 4, aniList: "PAUSED", mal: "on_hold", simkl: "hold" }, { id: 5, aniList: "REPEATING", mal: "rewatching", simkl: "watching" }, - ] + ]; let startingAnilistStatusOption: StatusOption = statusOptions.filter( (option) => currentAniListAnime.data.MediaList.status === option.aniList, - )[0] + )[0]; const startedAtDate = convertAniListDateToString( currentAniListAnime.data.MediaList.startedAt, - ) + ); const completedAtDate = convertAniListDateToString( currentAniListAnime.data.MediaList.completedAt, - ) + ); if (isAniListLoggedIn) AddAnimeServiceToTable({ @@ -101,7 +101,7 @@ score: currentAniListAnime.data.MediaList.score, repeat: currentAniListAnime.data.MediaList.repeat, notes: currentAniListAnime.data.MediaList.notes, - }) + }); if (isMalLoggedIn) AddAnimeServiceToTable({ @@ -115,7 +115,7 @@ score: currentMalAnime.my_list_status.score, repeat: currentMalAnime.my_list_status.num_times_rewatched, notes: currentMalAnime.my_list_status.comments, - }) + }); if (isSimklLoggedIn && Object.keys(currentSimklAnime).length > 0) AddAnimeServiceToTable({ @@ -129,18 +129,18 @@ score: currentSimklAnime.user_rating, repeat: 0, notes: "", - }) + }); const handleSubmit = async (e: any) => { - submitting.set(true) + submitting.set(true); let submitData: { - rating: number - episodes: number - status: StatusOption - startedAt: string - completedAt: string - repeat: number - notes: string + rating: number; + episodes: number; + status: StatusOption; + startedAt: string; + completedAt: string; + repeat: number; + notes: string; } = { rating: 0, episodes: 0, @@ -154,27 +154,27 @@ completedAt: "", repeat: 0, notes: "", - } - const formData = new FormData(e.target) + }; + const formData = new FormData(e.target); for (let field of formData) { - const [key, value] = field + const [key, value] = field; if (key === "rating") { - submitData.rating = Number(value) * 2 - continue + submitData.rating = Number(value) * 2; + continue; } if (key === "episodes") { - submitData.episodes = Number(value) - continue + submitData.episodes = Number(value); + continue; } if (key === "repeat") { - submitData.repeat = Number(value) - continue + submitData.repeat = Number(value); + continue; } if (key === "status") { - submitData.status = startingAnilistStatusOption - continue + submitData.status = startingAnilistStatusOption; + continue; } - submitData[key] = value + submitData[key] = value; } if ( @@ -190,16 +190,16 @@ notes: submitData.notes, startedAt: convertDateStringToAniList(submitData.startedAt), completedAt: convertDateStringToAniList(submitData.completedAt), - } + }; await AniListUpdateEntry(body).then( (value: AniListGetSingleAnime) => { // in future when you inevitably add tags to typescript, until Anilist fixes the api bug // where tags break the SaveMediaListEntry return, you'll want to use this delete line // delete value.data.MediaList.media.tags aniListAnime.update((newValue) => { - newValue = value - return newValue - }) + newValue = value; + return newValue; + }); AddAnimeServiceToTable({ id: `a-${currentAniListAnime.data.MediaList.mediaId}`, title, @@ -215,9 +215,9 @@ score: currentAniListAnime.data.MediaList.score, repeat: currentAniListAnime.data.MediaList.repeat, notes: currentAniListAnime.data.MediaList.notes, - }) + }); }, - ) + ); } if (malLoggedIn && currentMalAnime.id !== 0) { @@ -228,22 +228,22 @@ num_watched_episodes: submitData.episodes, num_times_rewatched: submitData.repeat, comments: submitData.notes, - } + }; await MyAnimeListUpdate(currentMalAnime, body).then( (malAnimeReturn: MalListStatus) => { malAnime.update((value) => { - value.my_list_status.status = malAnimeReturn.status + value.my_list_status.status = malAnimeReturn.status; value.my_list_status.is_rewatching = - malAnimeReturn.is_rewatching - value.my_list_status.score = malAnimeReturn.score + malAnimeReturn.is_rewatching; + value.my_list_status.score = malAnimeReturn.score; value.my_list_status.num_episodes_watched = - malAnimeReturn.num_episodes_watched + malAnimeReturn.num_episodes_watched; value.my_list_status.num_times_rewatched = - malAnimeReturn.num_times_rewatched - value.my_list_status.comments = malAnimeReturn.comments - return value - }) + malAnimeReturn.num_times_rewatched; + value.my_list_status.comments = malAnimeReturn.comments; + return value; + }); AddAnimeServiceToTable({ id: `m-${currentMalAnime.id}`, title: currentMalAnime.title, @@ -257,9 +257,9 @@ repeat: currentMalAnime.my_list_status .num_times_rewatched, notes: currentMalAnime.my_list_status.comments, - }) + }); }, - ) + ); } if (simklLoggedIn && currentSimklAnime.show.ids.simkl !== 0) { @@ -281,12 +281,12 @@ score: value.user_rating, repeat: 0, notes: "", - }) + }); simklAnime.update((newValue) => { - newValue = value - return newValue - }) - }) + newValue = value; + return newValue; + }); + }); } if (currentSimklAnime.user_rating !== submitData.rating) { @@ -305,12 +305,12 @@ score: value.user_rating, repeat: 0, notes: "", - }) + }); simklAnime.update((newValue) => { - newValue = value - return newValue - }) - }) + newValue = value; + return newValue; + }); + }); } if (currentSimklAnime.status !== submitData.status.simkl) { @@ -329,27 +329,27 @@ score: value.user_rating, repeat: 0, notes: "", - }) + }); simklAnime.update((newValue) => { - newValue = value - return newValue - }) - }) + newValue = value; + return newValue; + }); + }); } } - submitting.set(false) - submitSuccess.set(true) - setTimeout(() => submitSuccess.set(false), 2000) - } + submitting.set(false); + submitSuccess.set(true); + setTimeout(() => submitSuccess.set(false), 2000); + }; const deleteEntries = async () => { - submitting.set(true) + submitting.set(true); if ( isAniListLoggedIn && currentAniListAnime.data.MediaList.mediaId !== 0 ) { - await AniListDeleteEntry(currentAniListAnime.data.MediaList.id) + await AniListDeleteEntry(currentAniListAnime.data.MediaList.id); AddAnimeServiceToTable({ id: `a-${currentAniListAnime.data.MediaList.mediaId}`, title, @@ -361,10 +361,10 @@ score: 0, repeat: 0, notes: "", - }) + }); } if (malLoggedIn && currentMalAnime.id !== 0) { - await DeleteMyAnimeListEntry(currentMalAnime.id) + await DeleteMyAnimeListEntry(currentMalAnime.id); AddAnimeServiceToTable({ id: `m-${currentMalAnime.id}`, title: currentMalAnime.title, @@ -376,10 +376,10 @@ score: 0, repeat: 0, notes: "", - }) + }); } if (simklLoggedIn && currentSimklAnime.show.ids.simkl !== 0) { - await SimklSyncRemove(currentSimklAnime) + await SimklSyncRemove(currentSimklAnime); AddAnimeServiceToTable({ id: `s-${currentSimklAnime.show.ids.simkl}`, title: currentSimklAnime.show.title, @@ -391,12 +391,12 @@ score: 0, repeat: 0, notes: "", - }) + }); } - submitting.set(false) - submitSuccess.set(true) - setTimeout(() => submitSuccess.set(false), 2000) - } + submitting.set(false); + submitSuccess.set(true); + setTimeout(() => submitSuccess.set(false), 2000); + };