refactor: stricter domain: screen-share

This commit is contained in:
2026-04-11 14:42:12 +02:00
parent a6bdac1a25
commit 3fb5515c3a
6 changed files with 19 additions and 16 deletions

View File

@@ -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
│ ├── 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

View File

@@ -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 {

View File

@@ -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';

View File

@@ -7,7 +7,7 @@ import {
type ScreenShareQualityPreset,
type ScreenShareStartOptions,
type ScreenShareQuality
} from '../../../shared-kernel';
} from '../../../../shared-kernel';
export {
DEFAULT_SCREEN_SHARE_QUALITY,

View File

@@ -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';

View File

@@ -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';