@equinor/mad-core
Version:
Core library for the Mobile App Delivery team
455 lines (445 loc) • 12.7 kB
JavaScript
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
};