From 3fb5515c3afb9bf30e0363ff0e012340d38e4b09 Mon Sep 17 00:00:00 2001 From: Myx Date: Sat, 11 Apr 2026 14:42:12 +0200 Subject: [PATCH] refactor: stricter domain: screen-share --- toju-app/src/app/domains/screen-share/README.md | 17 ++++++++++------- .../{ => facades}/screen-share.facade.ts | 4 ++-- .../screen-share-source-picker.service.ts | 4 ++-- .../screen-share.constants.ts} | 2 +- .../screen-share-viewer.component.ts | 2 +- toju-app/src/app/domains/screen-share/index.ts | 6 +++--- 6 files changed, 19 insertions(+), 16 deletions(-) rename toju-app/src/app/domains/screen-share/application/{ => facades}/screen-share.facade.ts (88%) rename toju-app/src/app/domains/screen-share/application/{ => services}/screen-share-source-picker.service.ts (96%) rename toju-app/src/app/domains/screen-share/domain/{screen-share.config.ts => constants/screen-share.constants.ts} (93%) diff --git a/toju-app/src/app/domains/screen-share/README.md b/toju-app/src/app/domains/screen-share/README.md index 5fd4554..337e6f4 100644 --- a/toju-app/src/app/domains/screen-share/README.md +++ b/toju-app/src/app/domains/screen-share/README.md @@ -9,11 +9,14 @@ The mixed live-stream workspace is intentionally not part of this domain. It liv ``` screen-share/ ├── application/ -│ ├── screen-share.facade.ts Proxy to RealtimeSessionFacade for screen share signals and methods -│ └── screen-share-source-picker.service.ts Electron desktop source picker (Promise-based open/confirm/cancel) +│ ├── facades/ +│ │ └── screen-share.facade.ts Proxy to RealtimeSessionFacade for screen share signals and methods +│ └── services/ +│ └── screen-share-source-picker.service.ts Electron desktop source picker (Promise-based open/confirm/cancel) │ ├── domain/ -│ └── screen-share.config.ts Quality presets and types (re-exported from shared-kernel) +│ └── constants/ +│ └── screen-share.constants.ts Quality presets and types (re-exported from shared-kernel) │ ├── feature/ │ ├── screen-share-quality-dialog/ Quality preset picker before capture @@ -30,7 +33,7 @@ graph TD SSF[ScreenShareFacade] Picker[ScreenShareSourcePickerService] RSF[RealtimeSessionFacade] - Config[screen-share.config] + Config[screen-share.constants] Viewer[ScreenShareViewerComponent] Workspace[VoiceWorkspaceComponent] @@ -39,12 +42,12 @@ graph TD Workspace --> SSF Picker --> Config - click SSF "application/screen-share.facade.ts" "Proxy to RealtimeSessionFacade" _blank - click Picker "application/screen-share-source-picker.service.ts" "Electron source picker" _blank + click SSF "application/facades/screen-share.facade.ts" "Proxy to RealtimeSessionFacade" _blank + click Picker "application/services/screen-share-source-picker.service.ts" "Electron source picker" _blank click RSF "../../infrastructure/realtime/realtime-session.service.ts" "Low-level WebRTC composition root" _blank click Viewer "feature/screen-share-viewer/screen-share-viewer.component.ts" "Single-stream player" _blank click Workspace "../../features/room/voice-workspace/voice-workspace.component.ts" "Room-level live stream workspace" _blank - click Config "domain/screen-share.config.ts" "Quality presets" _blank + click Config "domain/constants/screen-share.constants.ts" "Quality presets" _blank ``` ## Starting a screen share diff --git a/toju-app/src/app/domains/screen-share/application/screen-share.facade.ts b/toju-app/src/app/domains/screen-share/application/facades/screen-share.facade.ts similarity index 88% rename from toju-app/src/app/domains/screen-share/application/screen-share.facade.ts rename to toju-app/src/app/domains/screen-share/application/facades/screen-share.facade.ts index 2ffb2c0..d96c047 100644 --- a/toju-app/src/app/domains/screen-share/application/screen-share.facade.ts +++ b/toju-app/src/app/domains/screen-share/application/facades/screen-share.facade.ts @@ -1,6 +1,6 @@ import { Injectable, inject } from '@angular/core'; -import { RealtimeSessionFacade } from '../../../core/realtime'; -import { ScreenShareStartOptions } from '../domain/screen-share.config'; +import { RealtimeSessionFacade } from '../../../../core/realtime'; +import { ScreenShareStartOptions } from '../../domain/constants/screen-share.constants'; @Injectable({ providedIn: 'root' }) export class ScreenShareFacade { diff --git a/toju-app/src/app/domains/screen-share/application/screen-share-source-picker.service.ts b/toju-app/src/app/domains/screen-share/application/services/screen-share-source-picker.service.ts similarity index 96% rename from toju-app/src/app/domains/screen-share/application/screen-share-source-picker.service.ts rename to toju-app/src/app/domains/screen-share/application/services/screen-share-source-picker.service.ts index 395567c..6be843b 100644 --- a/toju-app/src/app/domains/screen-share/application/screen-share-source-picker.service.ts +++ b/toju-app/src/app/domains/screen-share/application/services/screen-share-source-picker.service.ts @@ -3,8 +3,8 @@ import { computed, signal } from '@angular/core'; -import { loadVoiceSettingsFromStorage, saveVoiceSettingsToStorage } from '../../voice-session'; -import { ELECTRON_ENTIRE_SCREEN_SOURCE_NAME } from '../domain/screen-share.config'; +import { loadVoiceSettingsFromStorage, saveVoiceSettingsToStorage } from '../../../voice-session'; +import { ELECTRON_ENTIRE_SCREEN_SOURCE_NAME } from '../../domain/constants/screen-share.constants'; export type ScreenShareSourceKind = 'screen' | 'window'; diff --git a/toju-app/src/app/domains/screen-share/domain/screen-share.config.ts b/toju-app/src/app/domains/screen-share/domain/constants/screen-share.constants.ts similarity index 93% rename from toju-app/src/app/domains/screen-share/domain/screen-share.config.ts rename to toju-app/src/app/domains/screen-share/domain/constants/screen-share.constants.ts index 2319248..c9858f1 100644 --- a/toju-app/src/app/domains/screen-share/domain/screen-share.config.ts +++ b/toju-app/src/app/domains/screen-share/domain/constants/screen-share.constants.ts @@ -7,7 +7,7 @@ import { type ScreenShareQualityPreset, type ScreenShareStartOptions, type ScreenShareQuality -} from '../../../shared-kernel'; +} from '../../../../shared-kernel'; export { DEFAULT_SCREEN_SHARE_QUALITY, diff --git a/toju-app/src/app/domains/screen-share/feature/screen-share-viewer/screen-share-viewer.component.ts b/toju-app/src/app/domains/screen-share/feature/screen-share-viewer/screen-share-viewer.component.ts index f30715d..b9e3e6a 100644 --- a/toju-app/src/app/domains/screen-share/feature/screen-share-viewer/screen-share-viewer.component.ts +++ b/toju-app/src/app/domains/screen-share/feature/screen-share-viewer/screen-share-viewer.component.ts @@ -19,7 +19,7 @@ import { lucideMonitor } from '@ng-icons/lucide'; -import { ScreenShareFacade } from '../../application/screen-share.facade'; +import { ScreenShareFacade } from '../../application/facades/screen-share.facade'; import { selectOnlineUsers } from '../../../../store/users/users.selectors'; import { User } from '../../../../shared-kernel'; import { DEFAULT_VOLUME } from '../../../../core/constants'; diff --git a/toju-app/src/app/domains/screen-share/index.ts b/toju-app/src/app/domains/screen-share/index.ts index bb43f94..f45d3ec 100644 --- a/toju-app/src/app/domains/screen-share/index.ts +++ b/toju-app/src/app/domains/screen-share/index.ts @@ -1,6 +1,6 @@ -export * from './application/screen-share.facade'; -export * from './application/screen-share-source-picker.service'; -export * from './domain/screen-share.config'; +export * from './application/facades/screen-share.facade'; +export * from './application/services/screen-share-source-picker.service'; +export * from './domain/constants/screen-share.constants'; // Feature components export { ScreenShareViewerComponent } from './feature/screen-share-viewer/screen-share-viewer.component';