@equinor/mad-core
Version:
Core library for the Mobile App Delivery team
119 lines (116 loc) • 3.9 kB
JavaScript
import {
ChangeLog
} from "./chunk-XLQYZR5C.js";
import {
getShortDate
} from "./chunk-OCWASWDK.js";
import {
useNavigateFromWhatsNewScreen
} from "./chunk-X33ICKCC.js";
import {
useScreenTitleFromDictionary
} from "./chunk-27KFGUGY.js";
import {
whats_new_exports
} from "./chunk-4DXH3SPN.js";
import {
fetchReleaseNotes
} from "./chunk-5FMD2ENO.js";
import {
useReleaseNotesVersion
} from "./chunk-5BVQKJQB.js";
import {
useDemoMode
} from "./chunk-UZ6YMQV2.js";
import {
useAppVersion,
useEnvironment,
useServicePortalName
} from "./chunk-WWNTKXBS.js";
import {
__spreadProps,
__spreadValues
} from "./chunk-CWMXXUWU.js";
// src/components/screens/release-notes/WhatsNewScreen.tsx
import React, { useEffect, useState } from "react";
import {
Button,
Cell,
CircularProgress,
EDSStyleSheet,
Typography,
useStyles
} from "@equinor/mad-components";
import { ScrollView, View } from "react-native";
import { useIsFocused } from "@react-navigation/native";
var WhatsNewScreen = () => {
useScreenTitleFromDictionary((dic) => dic.releaseNotes.whatsNew);
const styles = useStyles(whatsNewStyles);
const environment = useEnvironment();
const releaseNotesVersion = useReleaseNotesVersion();
const servicePortalName = useServicePortalName();
const navigate = useNavigateFromWhatsNewScreen();
const isFocused = useIsFocused();
const demoMode = useDemoMode();
const appVersion = useAppVersion();
const [release, setRelease] = useState(null);
const [error, setError] = useState("");
const [isFetching, setIsFetching] = useState(true);
const enableIsFetching = () => setIsFetching(true);
const disableIsFetching = () => setIsFetching(false);
useEffect(() => {
enableIsFetching();
if (demoMode.isEnabled) {
setRelease(whats_new_exports);
disableIsFetching();
} else {
fetchReleaseNotes(environment, servicePortalName, appVersion).then(setRelease).catch(setError).finally(disableIsFetching);
}
}, [demoMode.isEnabled, environment, servicePortalName, appVersion]);
if (isFocused && (error || !isFetching && !release)) {
navigate();
}
if (!release) {
return /* @__PURE__ */ React.createElement(View, { style: styles.spinnerContainer }, /* @__PURE__ */ React.createElement(CircularProgress, null));
}
return /* @__PURE__ */ React.createElement(View, { style: styles.container }, /* @__PURE__ */ React.createElement(ScrollView, null, /* @__PURE__ */ React.createElement(Cell, { style: styles.scrollContainer }, /* @__PURE__ */ React.createElement(Typography, { style: styles.versionHeader }, release.version), /* @__PURE__ */ React.createElement(Typography, { style: styles.subtitleHeader }, getShortDate(new Date(release.releaseDate))), /* @__PURE__ */ React.createElement(ChangeLog, { release })), /* @__PURE__ */ React.createElement(View, { style: styles.footer }, /* @__PURE__ */ React.createElement(
Button,
{
title: "OK",
onPress: () => {
if (!demoMode.isEnabled)
releaseNotesVersion.setLastDisplayedReleaseNotesVersion(appVersion);
navigate();
},
style: { width: 81 }
}
))));
};
var whatsNewStyles = EDSStyleSheet.create((theme) => ({
spinnerContainer: {
height: "100%",
justifyContent: "center",
alignItems: "center"
},
container: {
flex: 1,
paddingTop: theme.geometry.dimension.cell.minHeight
},
scrollContainer: {
justifyContent: "center",
borderTopWidth: 0,
borderBottomWidth: 0
},
versionHeader: theme.typography.basic.h1,
subtitleHeader: __spreadProps(__spreadValues({}, theme.typography.basic.h4), {
marginVertical: theme.spacing.container.paddingVertical
}),
footer: {
alignItems: "flex-end",
marginHorizontal: theme.spacing.container.paddingHorizontal,
marginVertical: theme.spacing.container.paddingVertical
}
}));
export {
WhatsNewScreen
};