@applicaster/zapp-react-native-utils
Version:
Applicaster Zapp React Native utilities package
90 lines (73 loc) • 2.56 kB
text/typescript
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
);
}
}
};