import React, { useEffect, useState } from 'react';
import { View, StyleSheet, Pressable } from 'react-native';
import { TextInput, Chip } from 'react-native-paper';
import MaterialIcons from 'react-native-vector-icons/MaterialIcons';
import API from './../API.js';
import i18n from "../i18nMessages.js";
import { useNavigation } from '@react-navigation/native';
import { useSnapshot } from 'valtio';
import GlobalState from '../contexts/GlobalState.js';
import { createBibleToken } from '../utils/bibleReferences.js';
const CircleIconAction = ({ icon, onPress, color = "#6b7280", disabled = false }) => (
({
width: 36,
height: 36,
borderRadius: 18,
alignItems: "center",
justifyContent: "center",
backgroundColor: disabled ? "#f3f4f6" : (pressed ? "#e5e7eb" : "#f9fafb"),
marginHorizontal: 2,
transform: [{ scale: pressed ? 0.96 : 1 }],
})}
>
);
let NewComment = ({ postid, newComentAdded }) => {
const gState = useSnapshot(GlobalState);
const [commentContent, setCommentContent] = useState('');
const [bibleReferences, setBibleReferences] = useState([]);
const navigation = useNavigation();
const biblePickerSelectionTs = gState?.biblePickerSelection?.ts;
const hasContent = commentContent.trim().length > 0;
useEffect(() => {
const selection = gState?.biblePickerSelection;
if (!selection || selection.target !== "comment" || !selection.reference) return;
setBibleReferences((prev) => {
if (prev.includes(selection.reference)) return prev;
return prev.concat(selection.reference);
});
GlobalState.biblePickerSelection = null;
}, [biblePickerSelectionTs, gState?.biblePickerSelection]);
const handleSubmit = () => {
if (!hasContent && bibleReferences.length === 0) return;
const trimmedComment = commentContent.trim();
const bibleTokens = bibleReferences.map((reference) => createBibleToken(reference)).filter(Boolean);
setCommentContent('');
setBibleReferences([]);
API.newPostComment(postid, [trimmedComment, bibleTokens.join(" ")].join(" ").trim()).then((newPost) => {
if (newComentAdded) newComentAdded(newPost);
});
};
return (
navigation.navigate("BiblePicker", { target: "comment" })}
color="#6b7280"
/>
{bibleReferences.length ? (
{bibleReferences.map((reference) => (
navigation.navigate("BibleChapter", { reference })}
onClose={() => {
setBibleReferences((prev) => prev.filter((item) => item !== reference));
}}
>
{reference}
))}
) : null}
);
}
export default NewComment;
const styles = StyleSheet.create({
newComment: {
marginHorizontal: 10,
marginTop: 10,
marginBottom: 6,
},
composerShell: {
borderWidth: 1,
borderColor: "#e5e7eb",
borderRadius: 28,
backgroundColor: "#ffffff",
paddingHorizontal: 4,
paddingVertical: 2,
flexDirection: "row",
alignItems: "flex-end",
shadowColor: "#111827",
shadowOpacity: 0.08,
shadowRadius: 10,
shadowOffset: { width: 0, height: 3 },
elevation: 2,
},
inputWrap: {
flex: 1,
paddingRight: 2,
},
input: {
backgroundColor: "transparent",
maxHeight: 120,
},
inputContent: {
paddingVertical: 10,
},
referencesWrap: {
flexDirection: "row",
flexWrap: "wrap",
marginTop: 8,
},
referenceChip: {
marginRight: 6,
marginBottom: 6,
},
});