import { GET_JOB_BY_PK } from "@/graphql/jobs.queries"; import { useQuery } from "@apollo/client"; import { AntDesign } from "@expo/vector-icons"; import { useGlobalSearchParams } from "expo-router"; import { DateTime } from "luxon"; import React, { useCallback, useState } from "react"; import { useTranslation } from "react-i18next"; import { FlatList, RefreshControl, View } from "react-native"; import { ActivityIndicator, Button, Card, Text } from "react-native-paper"; import ErrorDisplay from "../error/error-display"; import NewNoteModal from "./new-note-modal"; export default function JobNotes() { const { jobId } = useGlobalSearchParams(); const [noteModalVisible, setNoteModalVisible] = useState(false); const showNoteModal = () => setNoteModalVisible(true); const hideNoteModal = () => setNoteModalVisible(false); const { loading, error, data, refetch } = useQuery(GET_JOB_BY_PK, { variables: { id: jobId, }, skip: !jobId, }); const handleNoteCreated = useCallback(() => { hideNoteModal(); refetch(); }, [refetch]); const { t } = useTranslation(); const onRefresh = async () => { return refetch(); }; if (loading) { return ; } if (error) { return ; } if (!data?.jobs_by_pk) { return ; } const job = data.jobs_by_pk; return ( {job.notes.length === 0 ? ( {t("jobdetail.labels.nojobnotes")} ) : ( } style={{ flex: 1 }} data={job.notes} renderItem={(object) => } /> )} ); } function NoteListItem({ item }) { return ( {item.text} {item.private && ( )} {item.critical && ( )} {item.created_by} {DateTime.fromISO(item.created_at).toLocaleString( DateTime.DATETIME_SHORT )} ); }