import * as Clipboard from "expo-clipboard"; import {FlatList, Platform, View} from "react-native"; import React, {useCallback, useMemo} from "react"; import {Button, useTheme} from "react-native-paper"; import {CreditCard, Plus} from "lucide-react-native"; import ContextMenu from "react-native-context-menu-view"; import {ICCard} from "../components/ICCard"; import {EmptyStatePlaceholder} from "../components/EmptyStatePlaceholder"; import {AMCard} from "../models/AMCard"; import RealmContext from "../models/RealmContext"; const {useQuery, useRealm} = RealmContext; function CardEntry(props: { card: AMCard, navigation: any }) { const realm = useRealm(); const callback = useCallback(async (indexPath: number[]) => { if (!props.card.isValid()) { return; } switch (indexPath.toString()) { // copy card access code case "0": case "0,0": await Clipboard.setStringAsync(props.card.code); return; // edit card case "1,0": props.navigation.navigate('edit-card', {cardId: props.card._id.toHexString()}); return; // remove card case "1,1": AMCard.delete(realm, props.card); return; } }, [realm, props.card, props.navigation]); return ( callback(e.nativeEvent?.indexPath)} actions={[ {title: "Copy Card Number", systemIcon: "doc.on.doc"}, { title: Platform.OS === 'ios' ? "" : "Additional Actions", inlineChildren: true, actions: [ {title: "Edit Card", systemIcon: "square.and.pencil"}, {title: "Delete Card", destructive: true, systemIcon: "trash"}] }]}> ); } export default function CardManager({navigation}) { const theme = useTheme(); const query = useQuery(AMCard); const cards = useMemo(() => query.sorted("added", false), [query]); if (!cards.length) { return ( }/> ) } return ( i._id.toString()} contentContainerStyle={{paddingBottom: 120}} renderItem={i => } ItemSeparatorComponent={() => } ListFooterComponent={() => Platform.OS === "ios" ? null : ( )} /> ) }