feat(ux): 3-fach entwirrt – Auto-Bearbeitung, Status-Zeile, flache Symbol-Sidebar (v1.4.16)
Auto-Bearbeitung (Lock vereinfacht): - Kein manuelles "Bearbeitung starten" mehr: beim Werkzeugwählen/Zeichnen/Symbol- Antippen wird der Editier-Lock still übernommen (ensureEditing), sofern die Karte frei ist. Lock/Konflikt-Anzeige erscheint nur noch bei echtem Mehrpersonen-Zugriff. - handleStartEditing bekommt silent-Option + boolean-Rückgabe. - "Karte freigeben" bleibt als kleine Aktion für Übergabe. Banner → eine kompakte Status-Zeile: - Übung/Offline/E-Mail/Bearbeitung nicht mehr bis zu 4 Zeilen gestapelt, sondern eine einzige Chip-Zeile, die nur zeigt was zutrifft (sonst gar nichts). Symbol-Sidebar flacher: - Statt zwei verschachtelter Klapp-Sektionen (Meine Symbole/Bibliothek) mit Unter- Kategorie-Tabs jetzt EINE Chip-Reihe (Mandant + Bibliothek) + ein Raster. - Suche zeigt Treffer flach über alle Kategorien. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -186,8 +186,9 @@ export function useRealtimeSync({
|
||||
}
|
||||
}, [currentProject?.id, isEditingByMe])
|
||||
|
||||
const handleStartEditing = useCallback(async () => {
|
||||
if (!currentProject?.id) return
|
||||
// Rückgabe true = Lock erhalten. `silent` unterdrückt den Erfolgs-Toast (für Auto-Bearbeitung).
|
||||
const handleStartEditing = useCallback(async (opts?: { silent?: boolean }): Promise<boolean> => {
|
||||
if (!currentProject?.id) return false
|
||||
setEditingLoading(true)
|
||||
try {
|
||||
const res = await fetch(`/api/projects/${currentProject.id}/editing`, {
|
||||
@@ -198,7 +199,7 @@ export function useRealtimeSync({
|
||||
if (!res.ok) {
|
||||
const data = await res.json()
|
||||
toast({ title: 'Gesperrt', description: data.error || 'Bearbeitung nicht möglich', variant: 'destructive' })
|
||||
return
|
||||
return false
|
||||
}
|
||||
setIsEditingByMe(true)
|
||||
const editingInfo = { id: user!.id, name: user!.name, since: new Date().toISOString() }
|
||||
@@ -210,9 +211,13 @@ export function useRealtimeSync({
|
||||
editingBy: editingInfo,
|
||||
sessionId: sessionIdRef.current,
|
||||
})
|
||||
toast({ title: 'Bearbeitung gestartet', description: 'Sie können jetzt zeichnen und Einträge erstellen.' })
|
||||
if (!opts?.silent) {
|
||||
toast({ title: 'Bearbeitung gestartet', description: 'Sie können jetzt zeichnen und Einträge erstellen.' })
|
||||
}
|
||||
return true
|
||||
} catch (e) {
|
||||
toast({ title: 'Fehler', description: 'Konnte Bearbeitung nicht starten.', variant: 'destructive' })
|
||||
return false
|
||||
} finally {
|
||||
setEditingLoading(false)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user