refactor: Modularize UI components and utilities
- Extract UI components into separate JS files - Centralize configuration values in config.js - Introduce a dedicated logger module - Improve file tree drag-and-drop and undo functionality - Refactor modal handling to a single manager - Add URL routing support for SPA navigation - Implement view mode for read-only access
This commit is contained in:
@@ -78,27 +78,36 @@ class MarkdownEditorApp:
|
||||
# Root and index.html
|
||||
if path == '/' or path == '/index.html':
|
||||
return self.handle_index(environ, start_response)
|
||||
|
||||
|
||||
# Static files
|
||||
if path.startswith('/static/'):
|
||||
return self.handle_static(environ, start_response)
|
||||
|
||||
|
||||
# Health check
|
||||
if path == '/health' and method == 'GET':
|
||||
start_response('200 OK', [('Content-Type', 'text/plain')])
|
||||
return [b'OK']
|
||||
|
||||
|
||||
# API for collections
|
||||
if path == '/fs/' and method == 'GET':
|
||||
return self.handle_collections_list(environ, start_response)
|
||||
|
||||
# Check if path starts with a collection name (for SPA routing)
|
||||
# This handles URLs like /notes/ttt or /documents/file.md
|
||||
# MUST be checked BEFORE WebDAV routing to prevent WebDAV from intercepting SPA routes
|
||||
path_parts = path.strip('/').split('/')
|
||||
if path_parts and path_parts[0] in self.collections:
|
||||
# This is a SPA route for a collection, serve index.html
|
||||
# The client-side router will handle the path
|
||||
return self.handle_index(environ, start_response)
|
||||
|
||||
# All other /fs/ requests go to WebDAV
|
||||
if path.startswith('/fs/'):
|
||||
return self.webdav_app(environ, start_response)
|
||||
|
||||
# Fallback for anything else (shouldn't happen with correct linking)
|
||||
start_response('404 Not Found', [('Content-Type', 'text/plain')])
|
||||
return [b'Not Found']
|
||||
# Fallback: Serve index.html for all other routes (SPA routing)
|
||||
# This allows client-side routing to handle any other paths
|
||||
return self.handle_index(environ, start_response)
|
||||
|
||||
def handle_collections_list(self, environ, start_response):
|
||||
"""Return list of available collections"""
|
||||
|
||||
Reference in New Issue
Block a user