Skip to content

Refactor/frontend separation of concerns#6

Merged
medy17 merged 5 commits intomainfrom
refactor/frontend-separation-of-concerns
Dec 8, 2025
Merged

Refactor/frontend separation of concerns#6
medy17 merged 5 commits intomainfrom
refactor/frontend-separation-of-concerns

Conversation

@medy17
Copy link
Owner

@medy17 medy17 commented Dec 8, 2025

Major refactoring of frontend codebase to improve modularity:

Transfer modules (frontend/src/js/transfer/):

  • opfsHandler.js (139 lines) - OPFS storage operations
  • etrCalculator.js (97 lines) - Speed tracking + ETR
  • fileSender.js (207 lines) - File sending with Worker
  • fileReceiver.js (320 lines) - File receiving + auto-download
  • queueManager.js (132 lines) - Queue ops + drag/drop
  • transferUI.js (219 lines) - Queue item HTML
  • fileHandler.js (43 lines) - Thin orchestrator (was 841 lines, -95%)

Feature modules (frontend/src/js/features/):

  • chat/: chatPanel, chatMessages, chatEvents
  • theme/: index.js
  • settings/: settingsData, settingsUI
  • invite/: inviteModal
  • zip/: zipModal
  • contact/: contactModal

UI modules (frontend/src/js/ui/):

  • streaming.js - Screen share UI
  • drawer.js - Side drawer
  • modals.js (242 lines, was 808, -70%)
  • view.js (316 lines, was 700, -55%)

Key improvements:

  • Single responsibility per module
  • Better testability
  • Improved maintainability
  • Code reuse via imports

Some changes were also made to docs to reflect the changes.

Major refactoring of frontend codebase to improve modularity:

Transfer modules (frontend/src/js/transfer/):
- opfsHandler.js (139 lines) - OPFS storage operations
- etrCalculator.js (97 lines) - Speed tracking + ETR
- fileSender.js (207 lines) - File sending with Worker
- fileReceiver.js (320 lines) - File receiving + auto-download
- queueManager.js (132 lines) - Queue ops + drag/drop
- transferUI.js (219 lines) - Queue item HTML
- fileHandler.js (43 lines) - Thin orchestrator (was 841 lines, -95%)

Feature modules (frontend/src/js/features/):
- chat/: chatPanel, chatMessages, chatEvents
- theme/: index.js
- settings/: settingsData, settingsUI
- invite/: inviteModal
- zip/: zipModal
- contact/: contactModal

UI modules (frontend/src/js/ui/):
- streaming.js - Screen share UI
- drawer.js - Side drawer
- modals.js (242 lines, was 808, -70%)
- view.js (316 lines, was 700, -55%)

Key improvements:
- Single responsibility per module
- Better testability
- Improved maintainability
- Code reuse via imports
Moved getSettingsSummary to features/settings/settingsData.js
Format: 'Sounds: On • Analytics: On • Theme: Light • Animation: Basic • Font: Default • Auto-Download: Off • PPTX Preview: Ask • Safe Mode (OPFS): Off'
fileReceiver.js
 where incomingFileInfo could be null during EOF or chunk processing. Also fixed
opfsHandler.js
 to avoid aggressive file clearing which caused NoModificationAllowedError.
@vercel
Copy link

vercel bot commented Dec 8, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
dropsilk Ready Ready Preview Comment Dec 8, 2025 4:24pm

@medy17 medy17 merged commit 03fb6a8 into main Dec 8, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant