import type { FeedbackEntry } from "convex-feedback"; import { Stack } from "expo-router"; import { useRef, useState } from "react"; import { ActivityIndicator, KeyboardAvoidingView, Platform, ScrollView, Text, View, } from "react-native"; import { useFeedbackUi } from "../../shared/context/FeedbackProvider.js"; import type { FeedbackColorProps } from "../../shared/types/context.js"; import { FeedbackBoard } from "../shared/ui/primitives.js"; import { EditEntryForm, type EditEntryFormRef, type EditEntryFormState, } from "../shared/ui/EditEntry.js"; import type { FeedbackAndroidToolbarIcons, FeedbackStackScreenOptions, } from "./types.js"; export function EditEntryStackScreen({ entry, onRequestClose, colors, androidToolbarIcons = {}, stackOptions, }: { entry: FeedbackEntry | null | undefined; onRequestClose: () => void; colors?: FeedbackColorProps; androidToolbarIcons?: FeedbackAndroidToolbarIcons; stackOptions?: FeedbackStackScreenOptions; }) { const { messages, theme } = useFeedbackUi(); const formRef = useRef(null); const [formState, setFormState] = useState({ canSave: false, pending: false, }); const isIos = Platform.OS === "ios"; const backgroundColor = colors?.backgroundColor ?? theme.colors.background; const primaryColor = colors?.primaryColor ?? theme.colors.primary; const textColor = colors?.textColor ?? theme.colors.text; const mutedColor = colors?.mutedColor ?? theme.colors.mutedText; const canSave = entry !== undefined && entry !== null && formState.canSave && !formState.pending; const formContent = entry === undefined || entry === null ? null : ( ); return ( <> {entry === undefined ? ( {messages.board.loading} ) : entry === null ? ( {messages.form.editNotFound} ) : isIos ? ( formContent ) : ( {formContent} )} {messages.form.cancel} formRef.current?.save()} tintColor={primaryColor} > {messages.form.saveChanges} ); }