progress
This commit is contained in:
@@ -39,37 +39,40 @@ def imap_folders_modal():
|
||||
if not imap_folders:
|
||||
return jsonify({'error': 'No folders found on IMAP server'}), 400
|
||||
|
||||
# Deduplicate folders by name to prevent creating multiple entries for the same folder
|
||||
# Get all existing folders in a single query
|
||||
existing_folders = Folder.query.filter(
|
||||
Folder.user_id == current_user.id
|
||||
).all()
|
||||
|
||||
# Create a dictionary for quick lookup
|
||||
existing_folders_dict = {folder.name: folder for folder in existing_folders}
|
||||
|
||||
# Process folders
|
||||
unique_folders = []
|
||||
seen_names = set()
|
||||
for imap_folder in imap_folders:
|
||||
folder_name = imap_folder['name']
|
||||
folder_name = imap_folder['name'].strip()
|
||||
|
||||
# Skip special folders that might not be needed
|
||||
if folder_name.lower() in ['sent', 'drafts', 'spam', 'trash']:
|
||||
continue
|
||||
|
||||
# Use case-insensitive comparison for deduplication
|
||||
folder_name_lower = folder_name.lower()
|
||||
if folder_name_lower not in seen_names:
|
||||
# Check if this folder already exists in the database
|
||||
existing_folder = Folder.query.filter_by(
|
||||
user_id=current_user.id,
|
||||
name=folder_name
|
||||
).first()
|
||||
|
||||
# Add folder type if it exists
|
||||
if existing_folder:
|
||||
imap_folder['folder_type'] = existing_folder.folder_type
|
||||
imap_folder['selected'] = True
|
||||
else:
|
||||
# Set default folder type
|
||||
imap_folder['folder_type'] = 'tidy' if folder_name.lower().strip() == 'inbox' else 'destination'
|
||||
imap_folder['selected'] = True
|
||||
|
||||
unique_folders.append(imap_folder)
|
||||
seen_names.add(folder_name_lower)
|
||||
# Check if this folder already exists in the database
|
||||
existing_folder = existing_folders_dict.get(folder_name)
|
||||
|
||||
# Add folder type and subscribed status if it exists
|
||||
if existing_folder:
|
||||
imap_folder['folder_type'] = existing_folder.folder_type
|
||||
imap_folder['subscribed'] = True
|
||||
imap_folder['selected'] = True
|
||||
else:
|
||||
# Set default folder type
|
||||
imap_folder['folder_type'] = 'tidy' if folder_name.lower() == 'inbox' else 'destination'
|
||||
imap_folder['subscribed'] = False
|
||||
imap_folder['selected'] = True
|
||||
|
||||
unique_folders.append(imap_folder)
|
||||
|
||||
print(unique_folders, existing_folders_dict)
|
||||
# Return the folder selection modal
|
||||
response = make_response(render_template('partials/folder_selection_modal.html', folders=unique_folders))
|
||||
response.headers['hx-retarget'] = "#modal-holder"
|
||||
@@ -137,7 +140,7 @@ def test_imap_connection():
|
||||
# Redirect to folder selection modal after successful connection
|
||||
response = make_response('')
|
||||
response.headers['HX-Trigger'] = 'open-modal'
|
||||
response.headers['HX-Location'] = '/api/imap/folders/modal'
|
||||
response.headers['HX-location'] = '/api/imap/folders/modal'
|
||||
else:
|
||||
print(message)
|
||||
response = make_response(render_template('partials/imap_config_modal.html',
|
||||
|
||||
Reference in New Issue
Block a user