Skip to content

Commit

Permalink
saved the preference language
Browse files Browse the repository at this point in the history
  • Loading branch information
GokuxSS4 committed Feb 17, 2025
1 parent 2b073a2 commit 4c35a28
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 30 deletions.
68 changes: 41 additions & 27 deletions components/watch/VideoContainer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,32 +22,6 @@ type ServerInfoType = {
serverName: HiAnime.AnimeServers;
};

function getFirstServer(
aniServer?: HiAnime.ScrapedEpisodeServers,
): ServerInfoType | null {
if (!aniServer) return null;

if (aniServer.sub?.length) {
return {
watchCategory: "sub",
serverName: aniServer.sub[0].serverName as HiAnime.AnimeServers,
};
}
if (aniServer.dub?.length) {
return {
watchCategory: "dub",
serverName: aniServer.dub[0].serverName as HiAnime.AnimeServers,
};
}
if (aniServer.raw?.length) {
return {
watchCategory: "raw",
serverName: aniServer.raw[0].serverName as HiAnime.AnimeServers,
};
}
return null;
}

export function VideoContainer({
currentEpisode,
title,
Expand Down Expand Up @@ -129,6 +103,42 @@ export function VideoContainer({
}
};

function getFirstServer(
aniServer?: HiAnime.ScrapedEpisodeServers,
category?: "sub" | "dub" | "raw",
): ServerInfoType | null {
if (!aniServer) return null;

if (category) {
if (aniServer[category]?.length) {
return {
watchCategory: category,
serverName: aniServer[category][0].serverName as HiAnime.AnimeServers,
};
}
}

if (aniServer.sub?.length) {
return {
watchCategory: "sub",
serverName: aniServer.sub[0].serverName as HiAnime.AnimeServers,
};
}
if (aniServer.dub?.length) {
return {
watchCategory: "dub",
serverName: aniServer.dub[0].serverName as HiAnime.AnimeServers,
};
}
if (aniServer.raw?.length) {
return {
watchCategory: "raw",
serverName: aniServer.raw[0].serverName as HiAnime.AnimeServers,
};
}
return null;
}

useEffect(() => {
if (
animeEpisodes &&
Expand Down Expand Up @@ -178,7 +188,10 @@ export function VideoContainer({
// Select Initial Server
useEffect(() => {
if (availableServers) {
const initialServer = getFirstServer(availableServers);
const initialServer = getFirstServer(
availableServers,
settings.defaultLanguage,
);
setSelectedServer(initialServer);
}
}, [availableServers]);
Expand Down Expand Up @@ -275,6 +288,7 @@ export function VideoContainer({
watchCategory: category,
serverName: server.serverName as HiAnime.AnimeServers,
});
setSettings({ ...settings, defaultLanguage: category });
setServerResources(null);
setIsServerResourceError(false);
}}
Expand Down
11 changes: 8 additions & 3 deletions components/watch/VideoSettingsProvider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,14 @@ import React, {
ReactNode,
} from "react";

type DefaultLanguageType = "sub" | "dub" | "raw";

interface VideoSettingsContextType {
settings: {
autoSkip: boolean;
autoPlay: boolean;
autoNext: boolean;
defaultLanguage: string;
defaultLanguage: DefaultLanguageType;
};
setSettings: (
settings: Partial<VideoSettingsContextType["settings"]>,
Expand All @@ -39,11 +41,14 @@ interface VideoSettingsProviderProps {
export const VideoSettingsProvider: React.FC<VideoSettingsProviderProps> = ({
children,
}) => {
const [settings, setSettingsState] = useState({
const [settings, setSettingsState] = useState<
VideoSettingsContextType["settings"]
>({
autoSkip: localStorage.getItem("autoSkip") === "true",
autoPlay: localStorage.getItem("autoPlay") === "true",
autoNext: localStorage.getItem("autoNext") === "true",
defaultLanguage: localStorage.getItem("defaultLanguage") || "sub",
defaultLanguage:
(localStorage.getItem("defaultLanguage") as DefaultLanguageType) || "sub",
});

useEffect(() => {
Expand Down

0 comments on commit 4c35a28

Please sign in to comment.