feat: Freigaben-Aenderung live + "Ordner nicht mehr verfuegbar"-Handling
Backend: set_permission und remove_permission feuern jetzt ein SSE-Event vom Typ 'permission' an Target-User + Owner + weitere Share-Empfaenger. Damit aktualisieren sich die Dateilisten aller Beteiligten in Echtzeit - auch beim Betroffenen, der gerade seinen Zugriff verliert. Frontend: FilesView wrapped loadFiles in safeLoadCurrentFolder(). Bei 403/404 erscheint ein Toast "Dieser Ordner wurde geloescht oder die Freigabe wurde entfernt" und nach 600ms wird zurueck zum Root navigiert. Greift beim Direktaufruf, beim Ordnerwechsel und bei durch SSE ausgeloesten Auto-Reloads. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -665,6 +665,11 @@ def set_permission(file_id):
|
||||
|
||||
db.session.commit()
|
||||
|
||||
# SSE: notify target user (they just got/updated access) + owner + other
|
||||
# share recipients so everyone's file list refreshes.
|
||||
notify_file_change(f.owner_id, f.id, 'permission',
|
||||
shared_with=[target.id, *_share_recipients(f)])
|
||||
|
||||
# Notify user via email
|
||||
if is_new:
|
||||
try:
|
||||
@@ -692,8 +697,13 @@ def remove_permission(file_id, perm_id):
|
||||
if not is_owner and perm.granted_by != user.id:
|
||||
return jsonify({'error': 'Du kannst nur selbst erstellte Freigaben entfernen'}), 403
|
||||
|
||||
target_user_id = perm.user_id
|
||||
db.session.delete(perm)
|
||||
db.session.commit()
|
||||
|
||||
notify_file_change(f.owner_id, f.id, 'permission',
|
||||
shared_with=[target_user_id, *_share_recipients(f)])
|
||||
|
||||
return jsonify({'message': 'Berechtigung entfernt'}), 200
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user