refactor: stricter domain: screen-share
This commit is contained in:
@@ -9,11 +9,14 @@ The mixed live-stream workspace is intentionally not part of this domain. It liv
|
|||||||
```
|
```
|
||||||
screen-share/
|
screen-share/
|
||||||
├── application/
|
├── 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)
|
│ └── screen-share-source-picker.service.ts Electron desktop source picker (Promise-based open/confirm/cancel)
|
||||||
│
|
│
|
||||||
├── domain/
|
├── 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/
|
├── feature/
|
||||||
│ ├── screen-share-quality-dialog/ Quality preset picker before capture
|
│ ├── screen-share-quality-dialog/ Quality preset picker before capture
|
||||||
@@ -30,7 +33,7 @@ graph TD
|
|||||||
SSF[ScreenShareFacade]
|
SSF[ScreenShareFacade]
|
||||||
Picker[ScreenShareSourcePickerService]
|
Picker[ScreenShareSourcePickerService]
|
||||||
RSF[RealtimeSessionFacade]
|
RSF[RealtimeSessionFacade]
|
||||||
Config[screen-share.config]
|
Config[screen-share.constants]
|
||||||
Viewer[ScreenShareViewerComponent]
|
Viewer[ScreenShareViewerComponent]
|
||||||
Workspace[VoiceWorkspaceComponent]
|
Workspace[VoiceWorkspaceComponent]
|
||||||
|
|
||||||
@@ -39,12 +42,12 @@ graph TD
|
|||||||
Workspace --> SSF
|
Workspace --> SSF
|
||||||
Picker --> Config
|
Picker --> Config
|
||||||
|
|
||||||
click SSF "application/screen-share.facade.ts" "Proxy to RealtimeSessionFacade" _blank
|
click SSF "application/facades/screen-share.facade.ts" "Proxy to RealtimeSessionFacade" _blank
|
||||||
click Picker "application/screen-share-source-picker.service.ts" "Electron source picker" _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 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 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 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
|
## Starting a screen share
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { Injectable, inject } from '@angular/core';
|
import { Injectable, inject } from '@angular/core';
|
||||||
import { RealtimeSessionFacade } from '../../../core/realtime';
|
import { RealtimeSessionFacade } from '../../../../core/realtime';
|
||||||
import { ScreenShareStartOptions } from '../domain/screen-share.config';
|
import { ScreenShareStartOptions } from '../../domain/constants/screen-share.constants';
|
||||||
|
|
||||||
@Injectable({ providedIn: 'root' })
|
@Injectable({ providedIn: 'root' })
|
||||||
export class ScreenShareFacade {
|
export class ScreenShareFacade {
|
||||||
@@ -3,8 +3,8 @@ import {
|
|||||||
computed,
|
computed,
|
||||||
signal
|
signal
|
||||||
} from '@angular/core';
|
} from '@angular/core';
|
||||||
import { loadVoiceSettingsFromStorage, saveVoiceSettingsToStorage } from '../../voice-session';
|
import { loadVoiceSettingsFromStorage, saveVoiceSettingsToStorage } from '../../../voice-session';
|
||||||
import { ELECTRON_ENTIRE_SCREEN_SOURCE_NAME } from '../domain/screen-share.config';
|
import { ELECTRON_ENTIRE_SCREEN_SOURCE_NAME } from '../../domain/constants/screen-share.constants';
|
||||||
|
|
||||||
export type ScreenShareSourceKind = 'screen' | 'window';
|
export type ScreenShareSourceKind = 'screen' | 'window';
|
||||||
|
|
||||||
@@ -7,7 +7,7 @@ import {
|
|||||||
type ScreenShareQualityPreset,
|
type ScreenShareQualityPreset,
|
||||||
type ScreenShareStartOptions,
|
type ScreenShareStartOptions,
|
||||||
type ScreenShareQuality
|
type ScreenShareQuality
|
||||||
} from '../../../shared-kernel';
|
} from '../../../../shared-kernel';
|
||||||
|
|
||||||
export {
|
export {
|
||||||
DEFAULT_SCREEN_SHARE_QUALITY,
|
DEFAULT_SCREEN_SHARE_QUALITY,
|
||||||
@@ -19,7 +19,7 @@ import {
|
|||||||
lucideMonitor
|
lucideMonitor
|
||||||
} from '@ng-icons/lucide';
|
} 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 { selectOnlineUsers } from '../../../../store/users/users.selectors';
|
||||||
import { User } from '../../../../shared-kernel';
|
import { User } from '../../../../shared-kernel';
|
||||||
import { DEFAULT_VOLUME } from '../../../../core/constants';
|
import { DEFAULT_VOLUME } from '../../../../core/constants';
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
export * from './application/screen-share.facade';
|
export * from './application/facades/screen-share.facade';
|
||||||
export * from './application/screen-share-source-picker.service';
|
export * from './application/services/screen-share-source-picker.service';
|
||||||
export * from './domain/screen-share.config';
|
export * from './domain/constants/screen-share.constants';
|
||||||
|
|
||||||
// Feature components
|
// Feature components
|
||||||
export { ScreenShareViewerComponent } from './feature/screen-share-viewer/screen-share-viewer.component';
|
export { ScreenShareViewerComponent } from './feature/screen-share-viewer/screen-share-viewer.component';
|
||||||
|
|||||||
Reference in New Issue
Block a user