refactor: stricter domain: voice-session
This commit is contained in:
@@ -9,15 +9,20 @@ The actual mixed live-stream workspace UI lives in `features/room/voice-workspac
|
|||||||
```
|
```
|
||||||
voice-session/
|
voice-session/
|
||||||
├── application/
|
├── application/
|
||||||
│ ├── voice-session.facade.ts Tracks active voice session, drives floating controls
|
│ ├── facades/
|
||||||
|
│ │ └── voice-session.facade.ts Tracks active voice session, drives floating controls
|
||||||
|
│ └── services/
|
||||||
│ └── voice-workspace.service.ts Workspace mode (hidden/expanded/minimized), focused stream, mini-window position
|
│ └── voice-workspace.service.ts Workspace mode (hidden/expanded/minimized), focused stream, mini-window position
|
||||||
│
|
│
|
||||||
├── domain/
|
├── domain/
|
||||||
│ ├── voice-session.logic.ts isViewingVoiceSessionServer, buildVoiceSessionRoom
|
│ ├── logic/
|
||||||
│ └── voice-session.models.ts VoiceSessionInfo interface
|
│ │ └── voice-session.logic.ts isViewingVoiceSessionServer, buildVoiceSessionRoom
|
||||||
|
│ └── models/
|
||||||
|
│ └── voice-session.model.ts VoiceSessionInfo interface
|
||||||
│
|
│
|
||||||
├── infrastructure/
|
├── infrastructure/
|
||||||
│ └── voice-settings.storage.ts Persists audio device IDs, volumes, bitrate, latency, noise reduction to localStorage
|
│ └── util/
|
||||||
|
│ └── voice-settings-storage.util.ts Persists audio device IDs, volumes, bitrate, latency, noise reduction to localStorage
|
||||||
│
|
│
|
||||||
├── feature/
|
├── feature/
|
||||||
│ ├── voice-controls/ Full voice control panel (mic, camera, deafen, devices, screen share, settings)
|
│ ├── voice-controls/ Full voice control panel (mic, camera, deafen, devices, screen share, settings)
|
||||||
@@ -49,10 +54,10 @@ graph TD
|
|||||||
VSF --> Store
|
VSF --> Store
|
||||||
VWS --> VSF
|
VWS --> VSF
|
||||||
|
|
||||||
click VSF "application/voice-session.facade.ts" "Tracks active voice session" _blank
|
click VSF "application/facades/voice-session.facade.ts" "Tracks active voice session" _blank
|
||||||
click VWS "application/voice-workspace.service.ts" "Workspace mode and focused stream" _blank
|
click VWS "application/services/voice-workspace.service.ts" "Workspace mode and focused stream" _blank
|
||||||
click VSS "infrastructure/voice-settings.storage.ts" "localStorage persistence for audio settings" _blank
|
click VSS "infrastructure/util/voice-settings-storage.util.ts" "localStorage persistence for audio settings" _blank
|
||||||
click Logic "domain/voice-session.logic.ts" "Pure helper functions" _blank
|
click Logic "domain/logic/voice-session.logic.ts" "Pure helper functions" _blank
|
||||||
click VC "feature/voice-controls/" "Full voice control panel" _blank
|
click VC "feature/voice-controls/" "Full voice control panel" _blank
|
||||||
click FC "feature/floating-voice-controls/" "Minimal floating overlay" _blank
|
click FC "feature/floating-voice-controls/" "Minimal floating overlay" _blank
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ import {
|
|||||||
inject
|
inject
|
||||||
} from '@angular/core';
|
} from '@angular/core';
|
||||||
import { Store } from '@ngrx/store';
|
import { Store } from '@ngrx/store';
|
||||||
import { RoomsActions } from '../../../store/rooms/rooms.actions';
|
import { RoomsActions } from '../../../../store/rooms/rooms.actions';
|
||||||
import { buildVoiceSessionRoom, isViewingVoiceSessionServer } from '../domain/voice-session.logic';
|
import { buildVoiceSessionRoom, isViewingVoiceSessionServer } from '../../domain/logic/voice-session.logic';
|
||||||
import type { VoiceSessionInfo } from '../domain/voice-session.models';
|
import type { VoiceSessionInfo } from '../../domain/models/voice-session.model';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tracks the user's current voice session across client-side
|
* Tracks the user's current voice session across client-side
|
||||||
@@ -7,7 +7,7 @@ import {
|
|||||||
signal
|
signal
|
||||||
} from '@angular/core';
|
} from '@angular/core';
|
||||||
|
|
||||||
import { VoiceSessionFacade } from './voice-session.facade';
|
import { VoiceSessionFacade } from '../facades/voice-session.facade';
|
||||||
|
|
||||||
export type VoiceWorkspaceMode = 'hidden' | 'expanded' | 'minimized';
|
export type VoiceWorkspaceMode = 'hidden' | 'expanded' | 'minimized';
|
||||||
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import type { Room } from '../../../shared-kernel';
|
import type { Room } from '../../../../shared-kernel';
|
||||||
import type { VoiceSessionInfo } from './voice-session.models';
|
import type { VoiceSessionInfo } from '../models/voice-session.model';
|
||||||
|
|
||||||
export function isViewingVoiceSessionServer(
|
export function isViewingVoiceSessionServer(
|
||||||
session: VoiceSessionInfo | null,
|
session: VoiceSessionInfo | null,
|
||||||
@@ -19,8 +19,8 @@ import {
|
|||||||
lucideArrowLeft
|
lucideArrowLeft
|
||||||
} from '@ng-icons/lucide';
|
} from '@ng-icons/lucide';
|
||||||
|
|
||||||
import { VoiceSessionFacade } from '../../application/voice-session.facade';
|
import { VoiceSessionFacade } from '../../application/facades/voice-session.facade';
|
||||||
import { loadVoiceSettingsFromStorage, saveVoiceSettingsToStorage } from '../../infrastructure/voice-settings.storage';
|
import { loadVoiceSettingsFromStorage, saveVoiceSettingsToStorage } from '../../infrastructure/util/voice-settings-storage.util';
|
||||||
import { VoiceConnectionFacade } from '../../../../domains/voice-connection';
|
import { VoiceConnectionFacade } from '../../../../domains/voice-connection';
|
||||||
import { VoicePlaybackService } from '../../../../domains/voice-connection';
|
import { VoicePlaybackService } from '../../../../domains/voice-connection';
|
||||||
import { ScreenShareFacade, ScreenShareQuality } from '../../../../domains/screen-share';
|
import { ScreenShareFacade, ScreenShareQuality } from '../../../../domains/screen-share';
|
||||||
|
|||||||
@@ -22,8 +22,8 @@ import {
|
|||||||
lucideHeadphones
|
lucideHeadphones
|
||||||
} from '@ng-icons/lucide';
|
} from '@ng-icons/lucide';
|
||||||
|
|
||||||
import { VoiceSessionFacade } from '../../application/voice-session.facade';
|
import { VoiceSessionFacade } from '../../application/facades/voice-session.facade';
|
||||||
import { loadVoiceSettingsFromStorage, saveVoiceSettingsToStorage } from '../../infrastructure/voice-settings.storage';
|
import { loadVoiceSettingsFromStorage, saveVoiceSettingsToStorage } from '../../infrastructure/util/voice-settings-storage.util';
|
||||||
import { VoiceActivityService, VoiceConnectionFacade } from '../../../../domains/voice-connection';
|
import { VoiceActivityService, VoiceConnectionFacade } from '../../../../domains/voice-connection';
|
||||||
import { PlaybackOptions, VoicePlaybackService } from '../../../../domains/voice-connection';
|
import { PlaybackOptions, VoicePlaybackService } from '../../../../domains/voice-connection';
|
||||||
import { ScreenShareFacade, ScreenShareQuality } from '../../../../domains/screen-share';
|
import { ScreenShareFacade, ScreenShareQuality } from '../../../../domains/screen-share';
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
export * from './application/voice-session.facade';
|
export * from './application/facades/voice-session.facade';
|
||||||
export * from './application/voice-workspace.service';
|
export * from './application/services/voice-workspace.service';
|
||||||
export * from './domain/voice-session.models';
|
export * from './domain/models/voice-session.model';
|
||||||
export * from './infrastructure/voice-settings.storage';
|
export * from './infrastructure/util/voice-settings-storage.util';
|
||||||
|
|
||||||
// Feature components
|
// Feature components
|
||||||
export { VoiceControlsComponent } from './feature/voice-controls/voice-controls.component';
|
export { VoiceControlsComponent } from './feature/voice-controls/voice-controls.component';
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { STORAGE_KEY_VOICE_SETTINGS } from '../../../core/constants';
|
import { STORAGE_KEY_VOICE_SETTINGS } from '../../../../core/constants';
|
||||||
import {
|
import {
|
||||||
DEFAULT_LATENCY_PROFILE,
|
DEFAULT_LATENCY_PROFILE,
|
||||||
DEFAULT_SCREEN_SHARE_QUALITY,
|
DEFAULT_SCREEN_SHARE_QUALITY,
|
||||||
@@ -6,7 +6,7 @@ import {
|
|||||||
SCREEN_SHARE_QUALITIES,
|
SCREEN_SHARE_QUALITIES,
|
||||||
type LatencyProfile,
|
type LatencyProfile,
|
||||||
type ScreenShareQuality
|
type ScreenShareQuality
|
||||||
} from '../../../shared-kernel';
|
} from '../../../../shared-kernel';
|
||||||
|
|
||||||
export interface VoiceSettings {
|
export interface VoiceSettings {
|
||||||
inputDevice: string;
|
inputDevice: string;
|
||||||
Reference in New Issue
Block a user