UNPKG

@applicaster/zapp-react-native-utils

Version:

Applicaster Zapp React Native utilities package

90 lines (73 loc) 2.56 kB
import { localStorage } from "@applicaster/zapp-react-native-bridge/ZappStorage/LocalStorage"; import { sessionStorage } from "@applicaster/zapp-react-native-bridge/ZappStorage/SessionStorage"; import { createLogger, utilsLogger } from "../../logger"; import { userPreferencesNamespace } from "./conts"; export const preferredAudioLanguageStorageKey = "preferred_audio_language"; export const preferredTextLanguageStorageKey = "preferred_text_language"; export const preferredTextLanguageAuto = "auto"; // used if language is not specified in track metadata export const getUserTextLanguagePreference = async () => localStorage.getItem( preferredTextLanguageStorageKey, userPreferencesNamespace ); export const getUserAudioPreference = async () => { let preferredLanguage = await localStorage.getItem( preferredAudioLanguageStorageKey, userPreferencesNamespace ); if (!preferredLanguage) { const currentLanguage = await sessionStorage.getItem("languageLocale"); preferredLanguage = currentLanguage; } return preferredLanguage; }; const logger = createLogger({ category: "userLanguagePreference", subsystem: "General", parent: utilsLogger, }); const { log_info } = logger; export const setUserLanguagePreference = async ( track: QuickBrickPlayer.TextTrack | QuickBrickPlayer.AudioTrack ): Promise<any> => { if (!track) { return; } if (track.trackType === "audio") { if (track.language?.length > 0) { log_info( `setUserLanguagePreference: set audio language: ${track.language}` ); return localStorage.setItem( preferredAudioLanguageStorageKey, track.language, userPreferencesNamespace ); // Save key to storage } } else if (track.trackType === "text") { if (track.id === "sub:Off") { log_info("setUserLanguagePreference: subtitles disabled"); return localStorage.removeItem( preferredTextLanguageStorageKey, userPreferencesNamespace ); } else if (track.language?.length > 0) { log_info( `setUserLanguagePreference: set subtitles language: ${track.language}` ); return localStorage.setItem( preferredTextLanguageStorageKey, track.language, userPreferencesNamespace ); } else { log_info("setUserLanguagePreference: set subtitles language: 'auto'"); return localStorage.setItem( preferredTextLanguageStorageKey, preferredTextLanguageAuto, userPreferencesNamespace ); } } };