From 357be2ead32f9075d78d5f615bd52836059153eb Mon Sep 17 00:00:00 2001 From: ppc Date: Tue, 13 Aug 2024 18:23:56 +0100 Subject: [PATCH] move modal styles to utils --- amnet-native/app/CardAddModal.tsx | 59 +++++++++---------------------- amnet-native/utils/ModalStyles.ts | 35 ++++++++++++++++++ 2 files changed, 52 insertions(+), 42 deletions(-) create mode 100644 amnet-native/utils/ModalStyles.ts diff --git a/amnet-native/app/CardAddModal.tsx b/amnet-native/app/CardAddModal.tsx index 1395a90..d90c54a 100644 --- a/amnet-native/app/CardAddModal.tsx +++ b/amnet-native/app/CardAddModal.tsx @@ -1,31 +1,20 @@ -import {useCallback, useEffect, useMemo, useState} from "react"; +import {useCallback, useEffect, useState} from "react"; +import {TextInput, TouchableOpacity, View} from "react-native"; import {Button, Card, Divider, Paragraph, useTheme} from "react-native-paper"; -import {StyleSheet, TextInput, TouchableOpacity, View} from "react-native"; +import {useModalStyles} from "../utils/ModalStyles"; +import {AMCard} from "../models/AMCard"; import RealmContext from "../models/RealmContext"; import {generateCardNumber} from "../models/AM-API"; -import {AMCard} from "../models/AMCard"; const {useRealm} = RealmContext; export default function CardAddModal({navigation}) { + const realm = useRealm(); const theme = useTheme(); - const themedStylesheet = useMemo(() => StyleSheet.create({ - ...styles, - formItemInput: { - flex: 1, - color: theme.colors.onSurface - }, - formFootnote: { - fontSize: 13, - }, - headerText: { - color: theme.colors.primary - } - }), [theme]); + const modalStyles = useModalStyles(); // state values - const realm = useRealm(); const [cardName, setCardName] = useState(''); const [cardNumber, setCardNumber] = useState(''); @@ -49,30 +38,30 @@ export default function CardAddModal({navigation}) { useEffect(() => { navigation.setOptions({ headerLeft: () => navigation.goBack()}> - Cancel + Cancel , }); - }, [navigation, themedStylesheet]); + }, [navigation, modalStyles]); useEffect(() => { const canSave = cardName.length && cardNumber.length === 20; - const themeOptions = canSave ? themedStylesheet.headerText : {color: theme.colors.outline}; + const themeOptions = canSave ? modalStyles.headerText : {color: theme.colors.outline}; navigation.setOptions({ headerRight: () => cardAddCallback(cardNumber, cardName)}> Save }) - }, [navigation, themedStylesheet, cardName, cardNumber]); + }, [navigation, modalStyles, cardName, cardNumber]); return ( - - + + Card Name - - - + + Matrix Code - - + If you have a physical card, you can enter the 20-digit code on the back. ) } - -const styles = StyleSheet.create({ - formItemName: { - minWidth: 100, - fontWeight: "400" - }, - formItemRow: { - flexDirection: "row", - alignItems: "center" - }, - formItemDivider: { - marginVertical: 15 - } -}) \ No newline at end of file diff --git a/amnet-native/utils/ModalStyles.ts b/amnet-native/utils/ModalStyles.ts new file mode 100644 index 0000000..8b6ba2c --- /dev/null +++ b/amnet-native/utils/ModalStyles.ts @@ -0,0 +1,35 @@ +import {StyleSheet} from "react-native"; +import {useTheme} from "react-native-paper"; +import {useMemo} from "react"; + +const modalStyles = StyleSheet.create({ + formItemName: { + minWidth: 100, + fontWeight: "400" + }, + formItemRow: { + flexDirection: "row", + alignItems: "center" + }, + formItemDivider: { + marginVertical: 15 + } +}); + +export function useModalStyles() { + const theme = useTheme(); + return useMemo(() => StyleSheet.create({ + ...modalStyles, + formItemInput: { + flex: 1, + color: theme.colors.onSurface + }, + formFootnote: { + fontSize: 13, + color: theme.colors.outline + }, + headerText: { + color: theme.colors.primary + } + }), [theme]); +}