import {Alert, Appearance, Dimensions, Image, StyleSheet, Text, View} from 'react-native';
import {Colors} from 'react-native/Libraries/NewAppScreen';
import {PropsWithChildren, useState} from 'react';
import {Button, Card, Modal} from '@ant-design/react-native';
import { V1Field } from '@formstr/sdk/dist/interfaces';
import { InputFiller } from '../Inputs/Inputs';
// import { SendPrescription } from './sendPrescription';
import { Dropdown } from 'react-native-element-dropdown';
import { SimplePool, UnsignedEvent, finalizeEvent, generateSecretKey, getPublicKey, nip04, nip19 } from 'nostr-tools';
type SectionProps = PropsWithChildren<{
title: string;
}>;
const colorScheme = Appearance.getColorScheme();
const backgroundStyle = {
backgroundColor: Colors.darker,
};
const styles = StyleSheet.create({
sectionContainer: {
marginTop: 32,
paddingHorizontal: 24,
width: Dimensions.get('window').width - 80,
},
sectionTitle: {
fontSize: 24,
fontWeight: '600',
},
sectionDescription: {
marginTop: 8,
fontSize: 18,
fontWeight: '400',
},
highlight: {
fontWeight: '500',
},
});
const width = Dimensions.get('window').width; //full width
const height = Dimensions.get('window').height
function Section({children, title}: SectionProps): React.JSX.Element {
return (
{title}
{children}
);
}
const locationData = [
{ label: 'Pharmacy A', value: 'A', npub: 'npub1tea09rtjeuzgk4gjajzry37wuyv7h02d4zw38cpadcrkg5yt0qhqncr7km', relays: ["wss://relay.damus.io"]},
{ label: 'Pharmacy B', value: 'B', npub: 'npub1tea09rtjeuzgk4gjajzry37wuyv7h02d4zw38cpadcrkg5yt0qhqncr7km', relays: ["wss://relay.primal.net"]},
{ label: 'Pharmacy C', value: 'C', npub: 'npub1tea09rtjeuzgk4gjajzry37wuyv7h02d4zw38cpadcrkg5yt0qhqncr7km', relays: ["wss://relay.hllo.live"]},
{ label: 'Pharmacy D', value: 'D', npub: 'npub1tea09rtjeuzgk4gjajzry37wuyv7h02d4zw38cpadcrkg5yt0qhqncr7km', relays: ["wss://nos.lol", "wss://relay.damus.io"]}
]
const locationDummyData = [
{ label: 'Pharmacy A', value: 'A' }
]
export const PrescriptionCreator = ({form} : {form: any}) => {
if(form === null) return Loading...
const [showSendScreen, setShowSendScreen] = useState(false);
const [selectedPharmacyId, setSelectedPharmacyId] = useState("");
const [selectedPharmacyRelays, setSelectedPharmacyRelays] = useState([]);
const renderItem = (item: any) => {
return
{item.label}
Npub: {item.npub}
Relays: {item.relays.join(', ')}
}
const handleLocationChange = (item: any) => {
setSelectedPharmacyId(item.npub)
setSelectedPharmacyRelays(item.relays)
}
const sendPrescription = async () => {
console.log("Will generate IDs")
const sk = generateSecretKey()
const pk = getPublicKey(sk)
const pharmacyId = nip19.decode(selectedPharmacyId).data as string
console.log("Ids generated", sk, pk)
const baseKind4Event: UnsignedEvent = {
kind: 4,
tags: [["p", pharmacyId ]],
content: await nip04.encrypt(sk, pharmacyId, "This is a test message from PeerScribe" ),
created_at: Math.floor(Date.now() / 1000),
pubkey: pk
}
const finalEvent = finalizeEvent(baseKind4Event, sk)
const pool = new SimplePool()
console.log("publishing event")
await Promise.any(pool.publish(selectedPharmacyRelays, finalEvent))
console.log("Event Published")
Alert.alert("Prescription Sent to the pharmacy!")
}
return (
From the practice of {form.name}
{form.fields.map((field: V1Field) => {
return (
{field.question}
{/*
{field.answerType}
*/}
{}} />
);
})}
{/* { setShowSendScreen(false)}}/> */}
);
};