mindnet/app/frontend/ui_callbacks.py
2025-12-14 12:55:13 +01:00

37 lines
1.5 KiB
Python

import streamlit as st
from ui_utils import build_markdown_doc
def switch_to_editor_callback(note_payload):
"""
Callback für den 'Bearbeiten'-Button im Graphen.
Bereitet den Session-State vor, damit der Editor im Update-Modus startet.
"""
# 1. Inhalt extrahieren (Fulltext bevorzugt, sonst Fallback)
content = note_payload.get('fulltext', '')
if not content:
content = build_markdown_doc(note_payload, "Inhalt konnte nicht geladen werden (nur Metadaten verfügbar).")
# 2. Single Source of Truth: 'path' Feld (Absoluter Pfad)
origin_fname = note_payload.get('path')
# Fallback: Falls 'path' leer ist (Legacy Daten)
if not origin_fname:
origin_fname = note_payload.get('file_path') or note_payload.get('filename')
# Notfall-Fallback: Konstruktion aus ID
if not origin_fname and 'note_id' in note_payload:
origin_fname = f"{note_payload['note_id']}.md"
# 3. Message in den Chat-Verlauf injecten
# WICHTIG: query_id muss mit 'edit_' beginnen, damit render_manual_editor sie erkennt!
st.session_state.messages.append({
"role": "assistant",
"intent": "INTERVIEW",
"content": content,
"query_id": f"edit_{note_payload['note_id']}", # Trigger für Erkennung
"origin_filename": origin_fname,
"origin_note_id": note_payload['note_id']
})
# 4. Modus umschalten (erzwingt Wechsel zum Editor-Tab beim nächsten Re-Run)
st.session_state["sidebar_mode_selection"] = "📝 Manueller Editor"