UNPKG

@equinor/mad-core

Version:

Core library for the Mobile App Delivery team

455 lines (445 loc) 12.7 kB
import { getPremadeSettings } from "./chunk-45SUJ4GS.js"; import { getRedirectUriFromAuthConfig } from "./chunk-MODG2KVN.js"; import { createStorage } from "./chunk-2OMVVDBU.js"; import { __export, __spreadValues } from "./chunk-CWMXXUWU.js"; // src/store/mad-config/mad-config.ts import { create } from "zustand"; import { devtools } from "zustand/middleware"; import { useMemo } from "react"; var useMadConfigStore = create()( devtools( (set) => ({ config: null, setConfig: (config) => set(() => ({ config })), setEnvironment: (env) => { const newConfig = getPureConfig(); newConfig.currentEnvironment = env; set(() => ({ config: newConfig })); } }), { name: "core/config" } ) ); var MAD_CONFIG_NOT_FOUND_ERROR = "Mad config has not been provided! Make sure you use 'createNativeStackCoreNavigator'/'createStackCoreNavigator' to provide your config"; var useMadConfig = () => { const config = useMadConfigStore().config; if (!config) throw new Error(MAD_CONFIG_NOT_FOUND_ERROR); return useMemo(() => { return createEnvironmentProxy(config.currentEnvironment); }, [config, config.currentEnvironment]); }; var getConfig = () => { const config = useMadConfigStore.getState().config; if (!config) throw new Error(MAD_CONFIG_NOT_FOUND_ERROR); return createEnvironmentProxy(config.currentEnvironment); }; var getPureConfig = () => { const config = useMadConfigStore.getState().config; if (!config) throw new Error(MAD_CONFIG_NOT_FOUND_ERROR); return config; }; var setConfig = (config) => { useMadConfigStore.getState().setConfig(config); }; var setEnvironment = (env) => { useMadConfigStore.getState().setEnvironment(env); }; // src/store/language/language.ts import { create as create2 } from "zustand"; import { devtools as devtools2, persist } from "zustand/middleware"; var getSupportedLanguages = () => getConfig().language.supportedLanguages; var getDefaultLanguage = () => { const supportedLanguages = getSupportedLanguages(); const defaultLanguageCode = getConfig().language.defaultLanguageCode; if (supportedLanguages.length === 0) throw new Error("There are no supported languages"); if (!defaultLanguageCode) return supportedLanguages[0]; const defaultLanguage = supportedLanguages.find( (language4) => language4.code === defaultLanguageCode ); if (!defaultLanguage) throw new Error("defaultLanguageCode was not found within supported languages"); return defaultLanguage; }; var useLanguageStore = create2()( devtools2( persist( (set, get) => ({ selectedLanguage: null, setSelectedLanguage: (code) => { const supportedLanguages = getSupportedLanguages(); set(() => { var _a; return { selectedLanguage: (_a = supportedLanguages.find((language4) => language4.code === code)) != null ? _a : null }; }); }, getLanguage: () => { const { selectedLanguage } = get(); return selectedLanguage != null ? selectedLanguage : getDefaultLanguage(); }, getIsLanguageSelected: () => { const { selectedLanguage } = get(); return !!selectedLanguage; } }), { name: "language", storage: createStorage() } ), { name: "core/language" } ) ); var useLanguage = () => { const store = useLanguageStore(); const language4 = store.getLanguage(); const { setSelectedLanguage: setSelectedLanguage2, getIsLanguageSelected: getIsLanguageSelected2 } = store; const isLanguageSelected = getIsLanguageSelected2(); const defaultLanguage = getDefaultLanguage(); const supportedLanguages = getSupportedLanguages(); return { language: language4, defaultLanguage, setSelectedLanguage: setSelectedLanguage2, supportedLanguages, isLanguageSelected }; }; var { getLanguage, setSelectedLanguage, getIsLanguageSelected } = useLanguageStore.getState(); // src/static/language/en.json var en_exports = {}; __export(en_exports, { common: () => common, createIncident: () => createIncident, default: () => en_default, information: () => information, language: () => language, login: () => login, releaseNotes: () => releaseNotes, serviceMessage: () => serviceMessage, settings: () => settings }); var login = { logIn: "Log in", demo: "Demo" }; var releaseNotes = { whatsNew: "What's new", releaseNotes: "Release notes" }; var createIncident = { title: "Create incident in ServiceNow", info: "We collect information about your device as part of our incident handling process. By submitting, you agree to share the following information:", placeholderTitle: "Write a title for the ServiceNow ticket", placeholderDescription: "Write a complete description of your issue. You do not need to provide information about your device", created1: "Incident ", created2: " created.", error: "An error occurred creating your ticket: " }; var information = { user: "User", deviceBrand: "Device brand", device: "Device", OS: "Operating system", timezone: "Timezone", locale: "Locale" }; var language = { language: "Language", English: "English", Norwegian: "Norwegian" }; var settings = { title: "Settings", aboutApp: "About App", feedback: "Feedback", loggedInAs: "Logged in as:", language: "Language", logOut: "Log out", back: "Back" }; var serviceMessage = { couldNotRetrieve: "Could not retrieve service message" }; var common = { submit: "Submit", ok: "OK", done: "Done", save: "Save" }; var en_default = { login, releaseNotes, createIncident, information, language, settings, serviceMessage, common }; // src/static/language/nb.json var nb_exports = {}; __export(nb_exports, { common: () => common2, createIncident: () => createIncident2, default: () => nb_default, information: () => information2, language: () => language2, login: () => login2, releaseNotes: () => releaseNotes2, serviceMessage: () => serviceMessage2, settings: () => settings2 }); var login2 = { logIn: "Logg inn", demo: "Demo" }; var releaseNotes2 = { whatsNew: "Hva er nytt", releaseNotes: "Utgivelsesnotater" }; var createIncident2 = { title: "Opprett sak i ServiceNow", info: "Vi samler inn informasjon om din enhet som en del av v\xE5r saksbehandlingsprosess. Ved \xE5 sende inn samtykker du i \xE5 dele f\xF8lgende informasjon:", placeholderTitle: "Skriv inn sakstittel", placeholderDescription: "Skriv inn en komplett beskrivelse av saken din. Du trenger ikke oppgi informasjon om din brukerenhet.", created1: "Sak ", created2: " opprettet.", error: "En feil oppstod ved opprettelse av din sak: " }; var information2 = { user: "Bruker", deviceBrand: "Enhetsmerke", device: "Enhet", OS: "Operativsystem", timezone: "Tidssone", locale: "Omr\xE5de" }; var language2 = { language: "Spr\xE5k", English: "Engelsk", Norwegian: "Norsk" }; var settings2 = { title: "Innstillinger", aboutApp: "Om Appen", feedback: "Gi tilbakemelding", loggedInAs: "Logget inn som:", language: "Spr\xE5k", logOut: "Logg av", back: "Tilbake" }; var serviceMessage2 = { couldNotRetrieve: "Kunne ikke hente tjenestemelding" }; var common2 = { submit: "Velg", ok: "OK", done: "Ferdig", save: "Lagre" }; var nb_default = { login: login2, releaseNotes: releaseNotes2, createIncident: createIncident2, information: information2, language: language2, settings: settings2, serviceMessage: serviceMessage2, common: common2 }; // src/static/language/pt.json var pt_exports = {}; __export(pt_exports, { common: () => common3, createIncident: () => createIncident3, default: () => pt_default, information: () => information3, language: () => language3, login: () => login3, releaseNotes: () => releaseNotes3, serviceMessage: () => serviceMessage3, settings: () => settings3 }); var login3 = { logIn: "Conecte-se", demo: "Demonstra\xE7\xE3o" }; var releaseNotes3 = { whatsNew: "What's new", releaseNotes: "Notas de lan\xE7amento" }; var createIncident3 = { title: "Criar incidente no ServiceNow", info: "Coletamos informa\xE7\xF5es sobre seu dispositivo como parte do nosso processo de tratamento de incidentes. Ao enviar, voc\xEA concorda em compartilhar as seguintes informa\xE7\xF5es:", placeholderTitle: "Escreva um t\xEDtulo para o chamado no ServiceNow", placeholderDescription: "Escreva uma descri\xE7\xE3o completa do seu problema. Voc\xEA n\xE3o precisa fornecer informa\xE7\xF5es sobre seu dispositivo", created1: "Incidente ", created2: " criado.", error: "Ocorreu um erro ao criar seu chamado: " }; var information3 = { user: "Usu\xE1rio", deviceBrand: "Marca do dispositivo", device: "Dispositivo", OS: "Sistema operacional", timezone: "Fuso hor\xE1rio", locale: "Localidade" }; var language3 = { language: "Idioma", English: "Ingl\xEAs", Norwegian: "Noruegu\xEAs" }; var settings3 = { title: "Configura\xE7\xF5es", aboutApp: "Sobre o aplicativo", feedback: "Deixar feedback", loggedInAs: "Conectado com:", language: "Idioma", logOut: "Sair", back: "Voltar" }; var serviceMessage3 = { couldNotRetrieve: "N\xE3o foi poss\xEDvel recuperar a mensagem de servi\xE7o" }; var common3 = { submit: "Enviar", ok: "OK", done: "Feito", save: "Salvar" }; var pt_default = { login: login3, releaseNotes: releaseNotes3, createIncident: createIncident3, information: information3, language: language3, settings: settings3, serviceMessage: serviceMessage3, common: common3 }; // src/language/useDictionary.ts var useDictionary = () => { const { language: language4 } = useLanguage(); switch (language4.code) { case "no": case "nb": return withEnglishFallback(nb_exports); case "pt": return withEnglishFallback(pt_exports); default: return en_exports; } }; var withEnglishFallback = (dictionary) => __spreadValues(__spreadValues({}, en_exports), dictionary); // src/store/mad-config/hooks.ts import { useNavigation } from "@react-navigation/native"; var useAuthConfig = () => { const config = useMadConfig(); const { clientId, redirectUri: redirectUriConfig, redirectUriWeb, scopes } = config.authentication; const redirectUri = getRedirectUriFromAuthConfig(redirectUriConfig, redirectUriWeb); return { clientId, scopes, redirectUri }; }; var useLoginScreenConfig = () => { const config = useMadConfig(); return config.login; }; var useAppVersion = () => { const config = useMadConfig(); return config.appVersion; }; var useEnvironment = () => { const config = useMadConfig(); return config.currentEnvironment; }; var useServicePortalName = () => { const config = useMadConfig(); return config.servicePortalName; }; var useAbout = () => { const config = useMadConfig(); return config.about; }; var useExperimentalFeatures = () => { const config = useMadConfig(); return config.experimental; }; var useServiceNow = () => { const config = useMadConfig(); return config.serviceNow; }; var useNavigateToMainRoute = () => { const config = useMadConfig(); const navigation = useNavigation(); return () => config.navigateToMainRouteFn(navigation); }; var useSettingsScreenPremadeConfig = () => { const config = useMadConfig(); const dictionary = useDictionary(); return getPremadeSettings(config, dictionary); }; // src/utils/createEnvironmentProxy.ts function isEnvironmentValuesObject(obj) { if (!obj) return false; const template = ["dev", "test", "qa", "prod", "q87"]; const objectKeys = Object.keys(obj); return objectKeys.every((key) => template.includes(key)); } function createEnvironmentProxy(scheme) { const handler = { get: function(target, property, receiver) { const value = Reflect.get(target, property, receiver); if (typeof value === "object" && !Array.isArray(value) && !!value) { if (isEnvironmentValuesObject(value)) { return value[scheme]; } return new Proxy(value, handler); } return value; } }; return new Proxy(getPureConfig(), handler); } export { createEnvironmentProxy, useMadConfig, getConfig, getPureConfig, setConfig, setEnvironment, useLanguage, getLanguage, setSelectedLanguage, getIsLanguageSelected, useDictionary, useAuthConfig, useLoginScreenConfig, useAppVersion, useEnvironment, useServicePortalName, useAbout, useExperimentalFeatures, useServiceNow, useNavigateToMainRoute, useSettingsScreenPremadeConfig };