diff --git a/app/routes/imap.py b/app/routes/imap.py index d2c8a84..f8374b5 100644 --- a/app/routes/imap.py +++ b/app/routes/imap.py @@ -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', diff --git a/app/static/css/animations.css b/app/static/css/animations.css deleted file mode 100644 index 1881c4e..0000000 --- a/app/static/css/animations.css +++ /dev/null @@ -1,98 +0,0 @@ -/* Modal transition animations using Tailwind classes */ -/* -.slide-left-move { - transform: translateX(0); - opacity: 1; - transition: all 300ms ease-out; -} - -.slide-left-enter-from { - transform: translateX(100%); - opacity: 0; -} - -.slide-left-enter-to { - transform: translateX(0); - opacity: 1; - transition: all 300ms ease-out; -} - -.slide-left-leave-from { - transform: translateX(0); - opacity: 1; -} - -.slide-left-leave-to { - transform: translateX(-100%); - opacity: 0; - transition: all 300ms ease-in; -} - -.slide-right-move { - transform: translateX(0); - opacity: 1; - transition: all 300ms ease-out; -} - -.slide-right-enter-from { - transform: translateX(-100%); - opacity: 0; -} - -.slide-right-enter-to { - transform: translateX(0); - opacity: 1; - transition: all 300ms ease-out; -} - -.slide-right-leave-from { - transform: translateX(0); - opacity: 1; -} - -.slide-right-leave-to { - transform: translateX(100%); - opacity: 0; - transition: all 300ms ease-in; -} - -.translate-up-move { - transform: translateY(0); - opacity: 1; - transition: all 300ms ease-out; -} - -.translate-up-enter-from { - transform: translateY(100%); - opacity: 0; -} - -.translate-up-enter-to { - transform: translateY(0); - opacity: 1; - transition: all 300ms ease-out; -} - -.translate-up-leave-from { - transform: translateY(0); - opacity: 1; -} - -.translate-up-leave-to { - transform: translateY(-100%); - opacity: 0; - transition: all 300ms ease-in; -} - -.step-1 .steps .step:first-child, -.step-2 .steps .step:last-child { - --tw-step-text: hsl(var(--bc)); - --tw-step-primary: hsl(var(--p)); -} - -.step-1 .steps .step:last-child, -.step-2 .steps .step:first-child { - --tw-step-text: hsl(var(--bc)); - color: hsl(var(--bc)); -} -*/ \ No newline at end of file diff --git a/app/templates/base.html b/app/templates/base.html index 078f792..b5eb412 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -13,7 +13,6 @@ -