import React from 'react'; import { View, Text, StyleSheet, TouchableOpacity, ScrollView, Modal, SafeAreaView, Alert, } from 'react-native'; import { useTheme } from '@react-navigation/native'; import { Ionicons } from '@expo/vector-icons'; import { Document } from '../services/document'; interface DocumentVersionsProps { isVisible: boolean; documents: Document[]; onClose: () => void; onSelectVersion: (document: Document) => void; onDeleteVersion?: (document: Document) => void; } export default function DocumentVersions({ isVisible, documents, onClose, onSelectVersion, onDeleteVersion }: DocumentVersionsProps) { const { colors } = useTheme(); const formatDate = (dateString: string) => { const date = new Date(dateString); return date.toLocaleString('de-DE', { day: '2-digit', month: '2-digit', year: 'numeric', hour: '2-digit', minute: '2-digit' }); }; const renderVersionItem = (document: Document, isLatest: boolean) => { // Löschen nur anzeigen, wenn es mehr als eine Version gibt und es nicht die neueste ist // oder wenn es die einzige Version ist (nur zur Konsistenz) const canDelete = documents.length > 1 || !isLatest; return ( { console.log('Version auswählen:', document.id); onSelectVersion(document); }} > v{document.version} {isLatest && ( Aktuell )} {formatDate(document.created_at)} {document.content.substring(0, 150)} {document.content.length > 150 ? '...' : ''} {/* Löschen-Button außerhalb der Touchable-Fläche für den Artikel */} {canDelete && onDeleteVersion && ( { console.log("Löschen-Button separat wurde gedrückt für:", document.id); // Direkter Aufruf für Testzwecke if (onDeleteVersion) { console.log("Rufe onDeleteVersion direkt auf für Dokument ID:", document.id); onDeleteVersion(document); // Schließe das Modal nach einer kurzen Verzögerung setTimeout(() => { onClose(); }, 100); } else { console.error("onDeleteVersion ist nicht definiert!"); } }} > Löschen )} ); }; return ( Dokumentversionen {documents.map((document, index) => renderVersionItem(document, index === 0))} {documents.length === 0 && ( Keine Dokumentversionen verfügbar )} ); } const styles = StyleSheet.create({ container: { flex: 1, }, header: { flexDirection: 'row', alignItems: 'center', padding: 16, borderBottomWidth: 1, borderBottomColor: 'rgba(0,0,0,0.1)', }, closeButton: { padding: 8, marginRight: 8, }, title: { fontSize: 18, fontWeight: '600', }, versionsList: { flex: 1, }, versionItem: { padding: 16, borderBottomWidth: 1, }, versionHeader: { flexDirection: 'row', alignItems: 'center', marginBottom: 8, }, versionBadge: { backgroundColor: '#e0e0e0', paddingHorizontal: 8, paddingVertical: 3, borderRadius: 12, }, versionNumber: { fontSize: 12, fontWeight: '600', color: '#333', }, latestBadge: { marginLeft: 8, paddingHorizontal: 8, paddingVertical: 3, borderRadius: 12, }, latestText: { fontSize: 12, fontWeight: '600', color: 'white', }, deleteSeparateButton: { flexDirection: 'row', alignItems: 'center', justifyContent: 'center', marginTop: 8, marginHorizontal: 8, paddingVertical: 8, paddingHorizontal: 12, borderRadius: 8, borderWidth: 1, borderColor: '#ff3b30', }, deleteButtonText: { color: 'red', marginLeft: 6, fontSize: 14, fontWeight: '500', }, versionDate: { fontSize: 13, marginBottom: 8, }, versionPreview: { fontSize: 14, lineHeight: 20, }, emptyState: { alignItems: 'center', justifyContent: 'center', padding: 40, }, emptyText: { marginTop: 16, fontSize: 16, textAlign: 'center', }, });