ux pattern cleanup.
This commit is contained in:
@@ -78,12 +78,8 @@ def add_folder():
|
||||
db.session.add(folder)
|
||||
db.session.commit()
|
||||
|
||||
# Get updated list of folders for the current user
|
||||
folders = Folder.query.filter_by(user_id=current_user.id).all()
|
||||
|
||||
response = make_response(render_template('partials/folders_list.html', folders=folders))
|
||||
response.headers['HX-Trigger'] = 'close-modal'
|
||||
response.headers["HX-Target"] = '#folders-list'
|
||||
response = make_response('')
|
||||
response.headers['HX-Trigger'] = 'close-modal, folder-list-invalidated'
|
||||
response.status_code = 201
|
||||
return response
|
||||
|
||||
@@ -110,8 +106,9 @@ def delete_folder(folder_id):
|
||||
|
||||
if not folder:
|
||||
# Folder not found
|
||||
folders = Folder.query.filter_by(user_id=current_user.id).all()
|
||||
return render_template('partials/folders_list.html', folders=folders)
|
||||
response = make_response('')
|
||||
response.headers['HX-Trigger'] = 'folder-list-invalidated'
|
||||
return response
|
||||
|
||||
# Delete all associated processed emails first
|
||||
from app.models import ProcessedEmail
|
||||
@@ -121,17 +118,18 @@ def delete_folder(folder_id):
|
||||
db.session.delete(folder)
|
||||
db.session.commit()
|
||||
|
||||
folders = Folder.query.filter_by(user_id=current_user.id).all()
|
||||
return render_template('partials/folders_list.html', folders=folders)
|
||||
response = make_response('')
|
||||
response.headers['HX-Trigger'] = 'folder-list-invalidated'
|
||||
return response
|
||||
|
||||
except Exception as e:
|
||||
# Print unhandled exceptions to the console as required
|
||||
logging.exception("Error deleting folder: %s", e)
|
||||
db.session.rollback()
|
||||
# Return the folders list unchanged
|
||||
folders = Folder.query.filter_by(user_id=current_user.id).all()
|
||||
# Return both sections
|
||||
return render_template('partials/folders_list.html', folders=folders)
|
||||
response = make_response('')
|
||||
response.headers['HX-Trigger'] = 'folder-list-invalidated'
|
||||
return response
|
||||
|
||||
@folders_bp.route('/api/folders/<folder_id>/type', methods=['PUT'])
|
||||
@login_required
|
||||
@@ -160,10 +158,9 @@ def update_folder_type(folder_id):
|
||||
|
||||
db.session.commit()
|
||||
|
||||
# Get updated list of folders for the current user
|
||||
folders = Folder.query.filter_by(user_id=current_user.id).all()
|
||||
|
||||
return render_template('partials/folders_list.html', folders=folders)
|
||||
response = make_response('')
|
||||
response.headers['HX-Trigger'] = 'folder-list-invalidated'
|
||||
return response
|
||||
|
||||
except Exception as e:
|
||||
# Print unhandled exceptions to the console as required
|
||||
@@ -202,8 +199,9 @@ def update_folder(folder_id):
|
||||
|
||||
if not folder:
|
||||
# Folder not found
|
||||
folders = Folder.query.filter_by(user_id=current_user.id).all()
|
||||
return render_template('partials/folders_list.html', folders=folders)
|
||||
response = make_response('')
|
||||
response.headers['HX-Trigger'] = 'close-modal, folder-list-invalidated'
|
||||
return response
|
||||
|
||||
# Get form data
|
||||
name = request.form.get('name')
|
||||
@@ -229,8 +227,6 @@ def update_folder(folder_id):
|
||||
# If there are validation errors, return the modal with errors
|
||||
if errors:
|
||||
response = make_response(render_template('partials/folder_modal.html', folder=folder, errors=errors, name=name, rule_text=rule_text, priority=priority))
|
||||
response.headers['HX-Retarget'] = '#folder-modal'
|
||||
response.headers['HX-Reswap'] = 'outerHTML'
|
||||
return response
|
||||
|
||||
# Update folder
|
||||
@@ -248,13 +244,8 @@ def update_folder(folder_id):
|
||||
|
||||
db.session.commit()
|
||||
|
||||
# Get updated list of folders for the current user
|
||||
folders = Folder.query.filter_by(user_id=current_user.id).all()
|
||||
|
||||
# Return both sections
|
||||
section = render_template('partials/folders_list.html', folders=folders)
|
||||
response = make_response(section)
|
||||
response.headers['HX-Trigger'] = 'close-modal'
|
||||
response = make_response('')
|
||||
response.headers['HX-Trigger'] = 'close-modal, folder-list-invalidated'
|
||||
return response
|
||||
|
||||
except Exception as e:
|
||||
@@ -272,11 +263,22 @@ def update_folder(folder_id):
|
||||
@login_required
|
||||
def get_folders():
|
||||
"""Get folders with optional filtering."""
|
||||
# Check if this is an event-triggered request
|
||||
is_event_triggered = request.headers.get('HX-Trigger') == 'folder-list-invalidated'
|
||||
|
||||
# Get filter parameter from query string
|
||||
filter_type = request.args.get('filter', 'all')
|
||||
folder_type = request.args.get('type', None)
|
||||
show_hidden = request.args.get('show_hidden', 'off').lower() == 'on'
|
||||
|
||||
# For event-triggered requests, maintain current filter state
|
||||
if is_event_triggered:
|
||||
# If this is an event trigger, we need to preserve the current filter state
|
||||
# The event listener will have the current state in the DOM
|
||||
# So we just return the full list with current show_hidden state
|
||||
folders = Folder.query.filter_by(user_id=current_user.id).all()
|
||||
return render_template('partials/folders_list.html', folders=folders, show_hidden=show_hidden)
|
||||
|
||||
# Get folders for the current authenticated user
|
||||
if folder_type:
|
||||
# Filter by folder type
|
||||
|
||||
@@ -192,13 +192,13 @@ def sync_imap_folders():
|
||||
if synced_count > 0:
|
||||
# Return the folder type selection modal
|
||||
response = make_response(render_template('partials/folder_type_selection_modal.html', folders=folders_to_process))
|
||||
response.headers['hx-retarget'] = "#modal-holder"
|
||||
response.headers['HX-Trigger'] = 'open-modal'
|
||||
return response
|
||||
else:
|
||||
# Just return the updated folders list
|
||||
folders = Folder.query.filter_by(user_id=current_user.id).all()
|
||||
response=make_response(render_template('partials/folders_list.html', folders=folders))
|
||||
response.headers['HX-Trigger'] = 'close-modal'
|
||||
# Just trigger the folder list update
|
||||
response = make_response('')
|
||||
response.headers['HX-Trigger'] = 'close-modal, folder-list-invalidated'
|
||||
return response
|
||||
|
||||
except Exception as e:
|
||||
|
||||
Reference in New Issue
Block a user