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]);
+}