mirror of
https://github.com/tapframe/NuvioStreaming.git
synced 2026-04-21 08:41:57 +00:00
Refactor saveLanguagePreference function in LogoSourceSettings for improved AsyncStorage handling
Update the saveLanguagePreference function to utilize async/await for better error handling and clarity. Introduce logic to create new settings if none exist, ensuring user preferences are correctly saved to AsyncStorage. Enhance logging and user feedback with alerts for successful updates and error notifications, improving overall user experience.
This commit is contained in:
parent
303c1ce883
commit
843d31707c
1 changed files with 48 additions and 34 deletions
|
|
@ -17,7 +17,7 @@ import { NavigationProp, useNavigation } from '@react-navigation/native';
|
||||||
import { MaterialIcons } from '@expo/vector-icons';
|
import { MaterialIcons } from '@expo/vector-icons';
|
||||||
import AsyncStorage from '@react-native-async-storage/async-storage';
|
import AsyncStorage from '@react-native-async-storage/async-storage';
|
||||||
import { colors } from '../styles/colors';
|
import { colors } from '../styles/colors';
|
||||||
import { useSettings } from '../hooks/useSettings';
|
import { useSettings, DEFAULT_SETTINGS } from '../hooks/useSettings';
|
||||||
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
||||||
import { TMDBService } from '../services/tmdbService';
|
import { TMDBService } from '../services/tmdbService';
|
||||||
import { logger } from '../utils/logger';
|
import { logger } from '../utils/logger';
|
||||||
|
|
@ -340,46 +340,60 @@ const LogoSourceSettings = () => {
|
||||||
};
|
};
|
||||||
|
|
||||||
// Save language preference with proper persistence
|
// Save language preference with proper persistence
|
||||||
const saveLanguagePreference = (languageCode: string) => {
|
const saveLanguagePreference = async (languageCode: string) => {
|
||||||
// First use the settings hook to update the setting
|
logger.log(`[LogoSourceSettings] Saving TMDB language preference: ${languageCode}`);
|
||||||
updateSetting('tmdbLanguagePreference', languageCode);
|
|
||||||
|
|
||||||
// For extra assurance, also save directly to AsyncStorage
|
|
||||||
try {
|
try {
|
||||||
// Get current settings
|
// First use the settings hook to update the setting - this is crucial
|
||||||
AsyncStorage.getItem('app_settings').then((settingsJson) => {
|
updateSetting('tmdbLanguagePreference', languageCode);
|
||||||
if (settingsJson) {
|
|
||||||
const currentSettings = JSON.parse(settingsJson);
|
// For extra assurance, also save directly to AsyncStorage
|
||||||
// Update the language preference
|
// Get current settings from AsyncStorage
|
||||||
const updatedSettings = {
|
const settingsJson = await AsyncStorage.getItem('app_settings');
|
||||||
...currentSettings,
|
|
||||||
tmdbLanguagePreference: languageCode
|
if (settingsJson) {
|
||||||
};
|
const currentSettings = JSON.parse(settingsJson);
|
||||||
// Save back to AsyncStorage
|
|
||||||
AsyncStorage.setItem('app_settings', JSON.stringify(updatedSettings))
|
// Update the language preference
|
||||||
.then(() => {
|
const updatedSettings = {
|
||||||
logger.log(`[LogoSourceSettings] Successfully saved TMDB language preference '${languageCode}' to AsyncStorage`);
|
...currentSettings,
|
||||||
})
|
tmdbLanguagePreference: languageCode
|
||||||
.catch((error) => {
|
};
|
||||||
logger.error(`[LogoSourceSettings] Error saving TMDB language preference to AsyncStorage:`, error);
|
|
||||||
});
|
// Save back to AsyncStorage using await to ensure it completes
|
||||||
}
|
await AsyncStorage.setItem('app_settings', JSON.stringify(updatedSettings));
|
||||||
}).catch((error) => {
|
logger.log(`[LogoSourceSettings] Successfully saved TMDB language preference '${languageCode}' to AsyncStorage`);
|
||||||
logger.error(`[LogoSourceSettings] Error getting current settings:`, error);
|
} else {
|
||||||
});
|
// If no settings exist yet, create new settings object with this preference
|
||||||
|
const newSettings = {
|
||||||
|
...DEFAULT_SETTINGS,
|
||||||
|
tmdbLanguagePreference: languageCode
|
||||||
|
};
|
||||||
|
|
||||||
|
// Save to AsyncStorage
|
||||||
|
await AsyncStorage.setItem('app_settings', JSON.stringify(newSettings));
|
||||||
|
logger.log(`[LogoSourceSettings] Created new settings with TMDB language preference '${languageCode}'`);
|
||||||
|
}
|
||||||
|
|
||||||
// Clear any cached logo data
|
// Clear any cached logo data
|
||||||
AsyncStorage.removeItem('_last_logos_');
|
await AsyncStorage.removeItem('_last_logos_');
|
||||||
|
|
||||||
|
// Show confirmation toast or feedback
|
||||||
|
Alert.alert(
|
||||||
|
'TMDB Language Updated',
|
||||||
|
`TMDB logo language preference set to ${languageCode.toUpperCase()}. Changes will apply when you navigate to content.`,
|
||||||
|
[{ text: 'OK' }]
|
||||||
|
);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
logger.error(`[LogoSourceSettings] Error in saveLanguagePreference:`, e);
|
logger.error(`[LogoSourceSettings] Error in saveLanguagePreference:`, e);
|
||||||
|
|
||||||
|
// Show error notification
|
||||||
|
Alert.alert(
|
||||||
|
'Error Saving Preference',
|
||||||
|
'There was a problem saving your language preference. Please try again.',
|
||||||
|
[{ text: 'OK' }]
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Show confirmation toast or feedback
|
|
||||||
Alert.alert(
|
|
||||||
'TMDB Language Updated',
|
|
||||||
`TMDB logo language preference set to ${languageCode.toUpperCase()}. Changes will apply when you navigate to content.`,
|
|
||||||
[{ text: 'OK' }]
|
|
||||||
);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Save selected show to AsyncStorage to persist across navigation
|
// Save selected show to AsyncStorage to persist across navigation
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue