import * as Clipboard from "expo-clipboard"; import {FlatList, 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 {AMCard} from "../models/AMCard"; import {AimeCard} from "../components/AimeCard"; import RealmContext from "../models/RealmContext"; import {EmptyStatePlaceholder} from "../components/EmptyStatePlaceholder"; 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 case "0": await Clipboard.setStringAsync(props.card.code); return; // edit card case "1,0": props.navigation.navigate('add-card', {cardId: props.card.code, cardName: props.card.name}); return; // remove card case "1,1": realm.write(() => realm.delete(props.card)); return; } }, [realm, props.card, props.navigation]); return ( callback(e.nativeEvent?.indexPath)} actions={[ {title: "Copy Card Number", systemIcon: "doc.on.doc"}, { title: "", inlineChildren: true, actions: [ {title: "Edit Card", systemIcon: "square.and.pencil"}, {title: "Delete Card", destructive: true, systemIcon: "trash"}] }]}> ); } export default function CardManager({navigation}) { const query = useQuery(AMCard); const cards = useMemo(() => query.sorted("added", true), [query]); const theme = useTheme(); if (!cards.length) { return ( }/> ) } return ( i._id.toString()} contentContainerStyle={{paddingBottom: 120}} ItemSeparatorComponent={() => } renderItem={i => }/> ) }