Regenerated bindings with wails3 generate bindings (1 service, 29 methods, 25 models) into frontend/bindings/AniTrack as TypeScript; output verified byte-deterministic across regens, so it is committed like wailsjs was.
- 10 Svelte files: wailsjs/go/main/App imports -> import {App} from bindings/AniTrack with App.* call prefixes. No logic or markup changes.
- WebsiteLink.svelte: BrowserOpenURL -> Browser.OpenURL from @wailsio/runtime.
- AvatarMenu.svelte: runtime.Quit -> Application.Quit from @wailsio/runtime.
- package.json: add @wailsio/runtime pinned to 3.0.0-beta.20 (exact, matching the Go framework); lockfile updated, all deps still max in-range, majors deferred.
- Production vite build passes with the new bindings.
82 lines
2.2 KiB
Svelte
82 lines
2.2 KiB
Svelte
<script lang="ts" context="module">
|
|
import {App} from "../../bindings/AniTrack";
|
|
import {
|
|
aniListUser,
|
|
watchListPage,
|
|
animePerPage,
|
|
aniListPrimary,
|
|
aniListLoggedIn,
|
|
aniListWatchlist,
|
|
aniListSort,
|
|
clearApiError,
|
|
setApiError,
|
|
serviceLoggingIn,
|
|
} from "./GlobalVariablesAndHelperFunctions.svelte";
|
|
|
|
let isAniListPrimary: boolean;
|
|
let page: number;
|
|
let perPage: number;
|
|
let sort: string;
|
|
|
|
aniListPrimary.subscribe((value) => (isAniListPrimary = value));
|
|
watchListPage.subscribe((value) => (page = value));
|
|
animePerPage.subscribe((value) => (perPage = value));
|
|
aniListSort.subscribe((value) => (sort = value));
|
|
|
|
export const LoadAniListUser = async () => {
|
|
try {
|
|
await App.GetAniListLoggedInUser().then((user) => {
|
|
aniListUser.set(user);
|
|
});
|
|
} catch (err) {
|
|
const errorMsg = err instanceof Error ? err.message : String(err);
|
|
setApiError(
|
|
"anilist",
|
|
`Failed to load user: ${errorMsg}`,
|
|
undefined,
|
|
true,
|
|
);
|
|
throw err;
|
|
}
|
|
};
|
|
|
|
export const LoadAniListWatchList = async () => {
|
|
try {
|
|
const watchList = await App.GetAniListUserWatchingList(page, perPage, sort);
|
|
aniListWatchlist.set(watchList);
|
|
clearApiError();
|
|
} catch (err) {
|
|
const errorMsg = err instanceof Error ? err.message : String(err);
|
|
setApiError(
|
|
"anilist",
|
|
`Failed to load watch list: ${errorMsg}`,
|
|
undefined,
|
|
true,
|
|
);
|
|
throw err;
|
|
}
|
|
};
|
|
export const CheckIfAniListLoggedInAndLoadWatchList = async () => {
|
|
serviceLoggingIn.update((s) => [...s, "anilist"]);
|
|
try {
|
|
const loggedIn = await App.CheckIfAniListLoggedIn();
|
|
if (loggedIn) {
|
|
await LoadAniListUser();
|
|
if (isAniListPrimary) await LoadAniListWatchList();
|
|
}
|
|
aniListLoggedIn.set(loggedIn);
|
|
} catch (err) {
|
|
const errorMsg = err instanceof Error ? err.message : String(err);
|
|
setApiError(
|
|
"anilist",
|
|
`Authentication failed: ${errorMsg}`,
|
|
undefined,
|
|
true,
|
|
);
|
|
aniListLoggedIn.set(false);
|
|
} finally {
|
|
serviceLoggingIn.update((s) => s.filter((item) => item !== "anilist"));
|
|
}
|
|
};
|
|
</script>
|