Added new pulled state, to stop infinite callback for useEffect hookt in MediaContext

This commit is contained in:
Alex Kim
2024-12-12 15:44:53 +11:00
parent aab806bbf4
commit 9e0a7f047c
3 changed files with 12 additions and 21 deletions

2
.gitignore vendored
View File

@@ -34,4 +34,4 @@ credentials.json
*.apk
*.ipa
.continuerc.json
.vscode/

17
.vscode/settings.json vendored
View File

@@ -1,17 +0,0 @@
{
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
},
"[typescriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
},
"[swift]": {
"editor.defaultFormatter": "sswg.swift-lang"
},
"java.configuration.updateBuildConfiguration": "interactive",
"java.compile.nullAnalysis.mode": "automatic"
}

View File

@@ -1,6 +1,12 @@
import { Settings, useSettings } from "@/utils/atoms/settings";
import { useAtomValue } from "jotai";
import React, { createContext, useContext, ReactNode, useEffect } from "react";
import React, {
createContext,
useContext,
ReactNode,
useEffect,
useState,
} from "react";
import { apiAtom } from "@/providers/JellyfinProvider";
import { getLocalizationApi, getUserApi } from "@jellyfin/sdk/lib/utils/api";
import {
@@ -31,6 +37,7 @@ export const MediaProvider = ({ children }: { children: ReactNode }) => {
const [settings, updateSettings] = useSettings();
const api = useAtomValue(apiAtom);
const queryClient = useQueryClient();
const [pulledPreferences, setPulledPreferences] = useState(false);
const updateSetingsWrapper = (update: Partial<Settings>) => {
const updateUserConfiguration = async (
@@ -111,7 +118,7 @@ export const MediaProvider = ({ children }: { children: ReactNode }) => {
// Set default settings from user configuration.s
useEffect(() => {
if (user && cultures) {
if (user && cultures.length != 0 && !pulledPreferences) {
const userSubtitlePreference =
user?.Configuration?.SubtitleLanguagePreference;
const userAudioPreference = user?.Configuration?.AudioLanguagePreference;
@@ -132,8 +139,9 @@ export const MediaProvider = ({ children }: { children: ReactNode }) => {
rememberSubtitleSelections:
user?.Configuration?.RememberSubtitleSelections,
});
setPulledPreferences(true);
}
}, [user, cultures]);
}, [user, cultures, pulledPreferences]);
if (!api) return null;