frontend: Refactors project structure for better organization
Moves code into domain-specific folders for better modularity. Updates imports to reflect the new directory structure.
This commit is contained in:
parent
dac64bb1a9
commit
8afed3a2f8
@ -1,7 +1,7 @@
|
||||
import { inject } from '@angular/core';
|
||||
import { ActivatedRouteSnapshot, CanActivateFn, RouterStateSnapshot } from '@angular/router';
|
||||
import { AuthService } from '../../domains/auth/services/auth.service';
|
||||
import { NavigationService } from '../services';
|
||||
import { NavigationService } from '../../../shared/services';
|
||||
import { AuthService } from '../services';
|
||||
|
||||
export const checkUserAuthenticatedGuard: CanActivateFn = async (
|
||||
_route: ActivatedRouteSnapshot,
|
||||
@ -0,0 +1 @@
|
||||
export * from './auth.guard';
|
||||
@ -1,3 +1,4 @@
|
||||
export * from './guards';
|
||||
export * from './interceptor-handlers';
|
||||
export * from './pages';
|
||||
export * from './services';
|
||||
|
||||
@ -8,7 +8,7 @@ import { MatIconModule } from '@angular/material/icon';
|
||||
import { MatInputModule } from '@angular/material/input';
|
||||
import { MatTooltipModule } from '@angular/material/tooltip';
|
||||
import { ActivatedRoute, RouterModule } from '@angular/router';
|
||||
import { NavigationService } from '../../../../shared';
|
||||
import { NavigationService } from '../../../../shared/services/navigation.service';
|
||||
import { AuthService } from '../../services/auth.service';
|
||||
|
||||
@Component({
|
||||
|
||||
@ -1,7 +1,9 @@
|
||||
import { HttpErrorResponse } from '@angular/common/http';
|
||||
import { Injectable } from '@angular/core';
|
||||
import { MeetUserDTO, MeetUserRole } from '@openvidu-meet/typings';
|
||||
import { HttpService, NavigationService, TokenStorageService } from '../../../shared/services';
|
||||
import { HttpService } from '../../../shared/services/http.service';
|
||||
import { NavigationService } from '../../../shared/services/navigation.service';
|
||||
import { TokenStorageService } from '../../../shared/services/token-storage.service';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
|
||||
@ -7,22 +7,24 @@ import { MatSidenav, MatSidenavModule } from '@angular/material/sidenav';
|
||||
import { MatToolbarModule } from '@angular/material/toolbar';
|
||||
import { MatTooltipModule } from '@angular/material/tooltip';
|
||||
import { RouterModule } from '@angular/router';
|
||||
import { AppDataService, ConsoleNavLink, ThemeService } from '../../../../shared';
|
||||
import { ConsoleNavLink } from '../../../../shared/models/sidenav.model';
|
||||
import { AppDataService } from '../../../../shared/services/app-data.service';
|
||||
import { ThemeService } from '../../../../shared/services/theme.service';
|
||||
|
||||
@Component({
|
||||
selector: 'ov-console-nav',
|
||||
imports: [
|
||||
CommonModule,
|
||||
MatToolbarModule,
|
||||
MatListModule,
|
||||
MatButtonModule,
|
||||
MatIconModule,
|
||||
MatSidenavModule,
|
||||
MatTooltipModule,
|
||||
RouterModule
|
||||
],
|
||||
templateUrl: './console-nav.component.html',
|
||||
styleUrl: './console-nav.component.scss'
|
||||
selector: 'ov-console-nav',
|
||||
imports: [
|
||||
CommonModule,
|
||||
MatToolbarModule,
|
||||
MatListModule,
|
||||
MatButtonModule,
|
||||
MatIconModule,
|
||||
MatSidenavModule,
|
||||
MatTooltipModule,
|
||||
RouterModule
|
||||
],
|
||||
templateUrl: './console-nav.component.html',
|
||||
styleUrl: './console-nav.component.scss'
|
||||
})
|
||||
export class ConsoleNavComponent {
|
||||
@ViewChild(MatSidenav) sidenav!: MatSidenav;
|
||||
|
||||
@ -1,13 +1,13 @@
|
||||
import { Component } from '@angular/core';
|
||||
import { ConsoleNavLink } from '../../../../shared';
|
||||
import { ConsoleNavLink } from '../../../../shared/models/sidenav.model';
|
||||
import { AuthService } from '../../../auth/services/auth.service';
|
||||
import { ConsoleNavComponent } from '../../components';
|
||||
import { ConsoleNavComponent } from '../../components/console-nav/console-nav.component';
|
||||
|
||||
@Component({
|
||||
selector: 'ov-console',
|
||||
imports: [ConsoleNavComponent],
|
||||
templateUrl: './console.component.html',
|
||||
styleUrl: './console.component.scss'
|
||||
selector: 'ov-console',
|
||||
imports: [ConsoleNavComponent],
|
||||
templateUrl: './console.component.html',
|
||||
styleUrl: './console.component.scss'
|
||||
})
|
||||
export class ConsoleComponent {
|
||||
navLinks: ConsoleNavLink[] = [
|
||||
|
||||
@ -10,23 +10,25 @@ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
||||
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
||||
import { MatTooltipModule } from '@angular/material/tooltip';
|
||||
import { MeetApiKey } from '@openvidu-meet/typings';
|
||||
import { ApiKeyService, GlobalConfigService, NotificationService } from '../../../../shared';
|
||||
import { ApiKeyService } from '../../../../shared/services/api-key.service';
|
||||
import { GlobalConfigService } from '../../../../shared/services/global-config.service';
|
||||
import { NotificationService } from '../../../../shared/services/notification.service';
|
||||
|
||||
@Component({
|
||||
selector: 'ov-embedded',
|
||||
imports: [
|
||||
MatCardModule,
|
||||
MatButtonModule,
|
||||
MatIconModule,
|
||||
MatInputModule,
|
||||
MatFormFieldModule,
|
||||
MatSlideToggleModule,
|
||||
MatTooltipModule,
|
||||
ReactiveFormsModule,
|
||||
MatProgressSpinnerModule
|
||||
],
|
||||
templateUrl: './embedded.component.html',
|
||||
styleUrl: './embedded.component.scss'
|
||||
selector: 'ov-embedded',
|
||||
imports: [
|
||||
MatCardModule,
|
||||
MatButtonModule,
|
||||
MatIconModule,
|
||||
MatInputModule,
|
||||
MatFormFieldModule,
|
||||
MatSlideToggleModule,
|
||||
MatTooltipModule,
|
||||
ReactiveFormsModule,
|
||||
MatProgressSpinnerModule
|
||||
],
|
||||
templateUrl: './embedded.component.html',
|
||||
styleUrl: './embedded.component.scss'
|
||||
})
|
||||
export class EmbeddedComponent implements OnInit {
|
||||
isLoading = signal(true);
|
||||
|
||||
@ -3,10 +3,11 @@ import { MatButtonModule } from '@angular/material/button';
|
||||
import { MatCardModule } from '@angular/material/card';
|
||||
import { MatIconModule } from '@angular/material/icon';
|
||||
import { ActivatedRoute } from '@angular/router';
|
||||
import { AppDataService, NavigationService, } from '../../../../shared';
|
||||
import { NavigationErrorReason } from '../../../../shared/models/navigation.model';
|
||||
import { AppDataService } from '../../../../shared/services/app-data.service';
|
||||
import { NavigationService } from '../../../../shared/services/navigation.service';
|
||||
import { AuthService } from '../../../auth/services/auth.service';
|
||||
import { MeetingWebComponentManagerService } from '../../../meeting/services';
|
||||
import { MeetingWebComponentManagerService } from '../../../meeting/services/meeting-webcomponent-manager.service';
|
||||
|
||||
@Component({
|
||||
selector: 'ov-error',
|
||||
|
||||
@ -4,7 +4,8 @@ import { MatCardModule } from '@angular/material/card';
|
||||
import { MatGridListModule } from '@angular/material/grid-list';
|
||||
import { MatIconModule } from '@angular/material/icon';
|
||||
import { MeetAnalytics } from '@openvidu-meet/typings';
|
||||
import { AnalyticsService, NavigationService } from '../../../../shared';
|
||||
import { AnalyticsService } from '../../../../shared/services/analytics.service';
|
||||
import { NavigationService } from '../../../../shared/services/navigation.service';
|
||||
|
||||
@Component({
|
||||
selector: 'ov-overview',
|
||||
|
||||
@ -19,26 +19,27 @@ import { MatSelectModule } from '@angular/material/select';
|
||||
import { MatTooltipModule } from '@angular/material/tooltip';
|
||||
// import { ProFeatureBadgeComponent } from '../components';
|
||||
import { AuthMode } from '@openvidu-meet/typings';
|
||||
import { GlobalConfigService, NotificationService } from '../../../../shared';
|
||||
import { GlobalConfigService } from '../../../../shared/services/global-config.service';
|
||||
import { NotificationService } from '../../../../shared/services/notification.service';
|
||||
import { AuthService } from '../../../auth/services/auth.service';
|
||||
|
||||
@Component({
|
||||
selector: 'ov-users-permissions',
|
||||
imports: [
|
||||
MatCardModule,
|
||||
MatButtonModule,
|
||||
MatIconModule,
|
||||
MatInputModule,
|
||||
MatFormFieldModule,
|
||||
MatSelectModule,
|
||||
MatTooltipModule,
|
||||
MatProgressSpinnerModule,
|
||||
MatDividerModule,
|
||||
ReactiveFormsModule,
|
||||
// ProFeatureBadgeComponent
|
||||
],
|
||||
templateUrl: './users-permissions.component.html',
|
||||
styleUrl: './users-permissions.component.scss'
|
||||
selector: 'ov-users-permissions',
|
||||
imports: [
|
||||
MatCardModule,
|
||||
MatButtonModule,
|
||||
MatIconModule,
|
||||
MatInputModule,
|
||||
MatFormFieldModule,
|
||||
MatSelectModule,
|
||||
MatTooltipModule,
|
||||
MatProgressSpinnerModule,
|
||||
MatDividerModule,
|
||||
ReactiveFormsModule
|
||||
// ProFeatureBadgeComponent
|
||||
],
|
||||
templateUrl: './users-permissions.component.html',
|
||||
styleUrl: './users-permissions.component.scss'
|
||||
})
|
||||
export class UsersPermissionsComponent implements OnInit {
|
||||
isLoading = signal(true);
|
||||
|
||||
@ -6,7 +6,7 @@ import { MatCardModule } from '@angular/material/card';
|
||||
import { MatFormFieldModule } from '@angular/material/form-field';
|
||||
import { MatIconModule } from '@angular/material/icon';
|
||||
import { MatInputModule } from '@angular/material/input';
|
||||
import { ShareMeetingLinkComponent } from '../../components';
|
||||
import { ShareMeetingLinkComponent } from '../../components/share-meeting-link/share-meeting-link.component';
|
||||
import { MeetingLobbyService } from '../../services/meeting-lobby.service';
|
||||
import { MeetingService } from '../../services/meeting.service';
|
||||
|
||||
|
||||
@ -1,19 +1,19 @@
|
||||
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
import { MatButtonModule } from '@angular/material/button';
|
||||
import { MatCardModule } from '@angular/material/card';
|
||||
import { MatIconModule } from '@angular/material/icon';
|
||||
import { ActivatedRoute } from '@angular/router';
|
||||
import { LeftEventReason } from '@openvidu-meet/typings';
|
||||
import { AppDataService, NavigationService, } from '../../../../shared';
|
||||
import { AppDataService } from '../../../../shared/services/app-data.service';
|
||||
import { NavigationService } from '../../../../shared/services/navigation.service';
|
||||
import { AuthService } from '../../../auth/services/auth.service';
|
||||
import { MeetingWebComponentManagerService } from '../../services';
|
||||
import { MeetingWebComponentManagerService } from '../../services/meeting-webcomponent-manager.service';
|
||||
|
||||
@Component({
|
||||
selector: 'ov-end-meeting',
|
||||
imports: [MatCardModule, MatButtonModule, MatIconModule],
|
||||
templateUrl: './end-meeting.component.html',
|
||||
styleUrl: './end-meeting.component.scss'
|
||||
selector: 'ov-end-meeting',
|
||||
imports: [MatCardModule, MatButtonModule, MatIconModule],
|
||||
templateUrl: './end-meeting.component.html',
|
||||
styleUrl: './end-meeting.component.scss'
|
||||
})
|
||||
export class EndMeetingComponent implements OnInit {
|
||||
disconnectedTitle = 'You Left the Meeting';
|
||||
|
||||
@ -13,16 +13,18 @@ import {
|
||||
ViewportService
|
||||
} from 'openvidu-components-angular';
|
||||
import { Subject } from 'rxjs';
|
||||
import {
|
||||
ApplicationFeatures,
|
||||
FeatureConfigurationService,
|
||||
GlobalConfigService,
|
||||
NotificationService
|
||||
} from '../../../../shared';
|
||||
import { RoomMemberService, } from '../../../rooms/services';
|
||||
import { ApplicationFeatures } from '../../../../shared/models/app.model';
|
||||
import { FeatureConfigurationService } from '../../../../shared/services/feature-configuration.service';
|
||||
import { GlobalConfigService } from '../../../../shared/services/global-config.service';
|
||||
import { NotificationService } from '../../../../shared/services/notification.service';
|
||||
import { RoomMemberService } from '../../../rooms/services/room-member.service';
|
||||
import { MeetingLobbyComponent } from '../../components/meeting-lobby/meeting-lobby.component';
|
||||
import { MeetingParticipantItemComponent } from '../../customization';
|
||||
import { MeetingContextService, MeetingEventHandlerService, MeetingLobbyService, MeetingService, MeetingWebComponentManagerService } from '../../services';
|
||||
import { MeetingParticipantItemComponent } from '../../customization/meeting-participant-item/meeting-participant-item.component';
|
||||
import { MeetingContextService } from '../../services/meeting-context.service';
|
||||
import { MeetingEventHandlerService } from '../../services/meeting-event-handler.service';
|
||||
import { MeetingLobbyService } from '../../services/meeting-lobby.service';
|
||||
import { MeetingWebComponentManagerService } from '../../services/meeting-webcomponent-manager.service';
|
||||
import { MeetingService } from '../../services/meeting.service';
|
||||
|
||||
@Component({
|
||||
selector: 'ov-meeting',
|
||||
|
||||
@ -18,15 +18,14 @@ import {
|
||||
Room,
|
||||
RoomEvent
|
||||
} from 'openvidu-components-angular';
|
||||
import { MeetingContextService, MeetingWebComponentManagerService } from '.';
|
||||
import {
|
||||
FeatureConfigurationService,
|
||||
NavigationService,
|
||||
SessionStorageService,
|
||||
TokenStorageService
|
||||
} from '../../../shared';
|
||||
import { RecordingService } from '../../recordings/services';
|
||||
import { RoomMemberService } from '../../rooms/services';
|
||||
import { FeatureConfigurationService } from '../../../shared/services/feature-configuration.service';
|
||||
import { NavigationService } from '../../../shared/services/navigation.service';
|
||||
import { SessionStorageService } from '../../../shared/services/session-storage.service';
|
||||
import { TokenStorageService } from '../../../shared/services/token-storage.service';
|
||||
import { RecordingService } from '../../recordings/services/recording.service';
|
||||
import { RoomMemberService } from '../../rooms/services/room-member.service';
|
||||
import { MeetingContextService } from './meeting-context.service';
|
||||
import { MeetingWebComponentManagerService } from './meeting-webcomponent-manager.service';
|
||||
|
||||
/**
|
||||
* Service that handles all LiveKit/OpenVidu room events.
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
import { computed, DestroyRef, effect, inject, Injectable, signal } from '@angular/core';
|
||||
import { Participant, Room } from 'livekit-client';
|
||||
import { LayoutService, LoggerService, ViewportService } from 'openvidu-components-angular';
|
||||
import { MeetStorageService } from '../../../shared';
|
||||
import { MeetLayoutMode } from '../models';
|
||||
import { MeetStorageService } from '../../../shared/services/storage.service';
|
||||
import { MeetLayoutMode } from '../models/layout.model';
|
||||
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class MeetingLayoutService extends LayoutService {
|
||||
|
||||
@ -3,21 +3,17 @@ import { FormControl, FormGroup, Validators } from '@angular/forms';
|
||||
import { ActivatedRoute } from '@angular/router';
|
||||
import { MeetRoomStatus } from '@openvidu-meet/typings';
|
||||
import { LoggerService } from 'openvidu-components-angular';
|
||||
import {
|
||||
MeetingContextService,
|
||||
MeetingService,
|
||||
|
||||
MeetingWebComponentManagerService
|
||||
} from '.';
|
||||
import { AppDataService, NavigationService } from '../../../shared';
|
||||
import { NavigationErrorReason } from '../../../shared/models/navigation.model';
|
||||
import { AppDataService } from '../../../shared/services/app-data.service';
|
||||
import { NavigationService } from '../../../shared/services/navigation.service';
|
||||
import { AuthService } from '../../auth/services/auth.service';
|
||||
import { RecordingService } from '../../recordings/services';
|
||||
import {
|
||||
RoomMemberService,
|
||||
RoomService,
|
||||
} from '../../rooms/services';
|
||||
import { RecordingService } from '../../recordings/services/recording.service';
|
||||
import { RoomMemberService } from '../../rooms/services/room-member.service';
|
||||
import { RoomService } from '../../rooms/services/room.service';
|
||||
import { LobbyState } from '../models/lobby.model';
|
||||
import { MeetingContextService } from './meeting-context.service';
|
||||
import { MeetingWebComponentManagerService } from './meeting-webcomponent-manager.service';
|
||||
import { MeetingService } from './meeting.service';
|
||||
|
||||
/**
|
||||
* Service that manages the meeting lobby phase state and operations.
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
import { effect, inject, Injectable } from '@angular/core';
|
||||
import { AppDataService } from '@openvidu-meet/shared-components';
|
||||
import {
|
||||
WebComponentCommand,
|
||||
WebComponentEvent,
|
||||
@ -7,8 +6,10 @@ import {
|
||||
WebComponentOutboundEventMessage
|
||||
} from '@openvidu-meet/typings';
|
||||
import { LoggerService, OpenViduService } from 'openvidu-components-angular';
|
||||
import { MeetingContextService, MeetingService } from '.';
|
||||
import { RoomMemberService } from '../../rooms/services';
|
||||
import { AppDataService } from '../../../shared/services/app-data.service';
|
||||
import { RoomMemberService } from '../../rooms/services/room-member.service';
|
||||
import { MeetingContextService } from './meeting-context.service';
|
||||
import { MeetingService } from './meeting.service';
|
||||
|
||||
/**
|
||||
* Service to manage the commands from OpenVidu Meet WebComponent/Iframe.
|
||||
|
||||
@ -27,7 +27,7 @@ import { MatToolbarModule } from '@angular/material/toolbar';
|
||||
import { MatTooltipModule } from '@angular/material/tooltip';
|
||||
import { MeetRecordingInfo, MeetRecordingStatus } from '@openvidu-meet/typings';
|
||||
import { ViewportService } from 'openvidu-components-angular';
|
||||
import { formatBytes, formatDurationToHMS } from '../../../../shared';
|
||||
import { formatBytes, formatDurationToHMS } from '../../../../shared/utils/format.utils';
|
||||
|
||||
export interface RecordingTableAction {
|
||||
recordings: MeetRecordingInfo[];
|
||||
|
||||
@ -15,26 +15,26 @@ import { MatInputModule } from '@angular/material/input';
|
||||
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
||||
import { MatRadioModule } from '@angular/material/radio';
|
||||
import { MatTooltipModule } from '@angular/material/tooltip';
|
||||
import { RecordingService } from '../../services';
|
||||
import { RecordingService } from '../../services/recording.service';
|
||||
|
||||
@Component({
|
||||
selector: 'ov-share-recording-dialog',
|
||||
imports: [
|
||||
FormsModule,
|
||||
MatRadioModule,
|
||||
MatFormFieldModule,
|
||||
MatInputModule,
|
||||
MatButtonModule,
|
||||
MatIconModule,
|
||||
MatDialogTitle,
|
||||
MatDialogContent,
|
||||
MatDialogActions,
|
||||
MatDialogClose,
|
||||
MatTooltipModule,
|
||||
MatProgressSpinnerModule
|
||||
],
|
||||
templateUrl: './recording-share-dialog.component.html',
|
||||
styleUrl: './recording-share-dialog.component.scss'
|
||||
selector: 'ov-share-recording-dialog',
|
||||
imports: [
|
||||
FormsModule,
|
||||
MatRadioModule,
|
||||
MatFormFieldModule,
|
||||
MatInputModule,
|
||||
MatButtonModule,
|
||||
MatIconModule,
|
||||
MatDialogTitle,
|
||||
MatDialogContent,
|
||||
MatDialogActions,
|
||||
MatDialogClose,
|
||||
MatTooltipModule,
|
||||
MatProgressSpinnerModule
|
||||
],
|
||||
templateUrl: './recording-share-dialog.component.html',
|
||||
styleUrl: './recording-share-dialog.component.scss'
|
||||
})
|
||||
export class RecordingShareDialogComponent implements OnInit {
|
||||
accessType: 'private' | 'public' = 'public';
|
||||
|
||||
@ -4,9 +4,13 @@ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
||||
import { ActivatedRoute } from '@angular/router';
|
||||
import { MeetRecordingFilters, MeetRecordingInfo } from '@openvidu-meet/typings';
|
||||
import { ILogger, LoggerService } from 'openvidu-components-angular';
|
||||
import { NotificationService } from '../../../../shared';
|
||||
import { RecordingListsComponent, RecordingTableAction, RecordingTableFilter } from '../../components';
|
||||
import { RecordingService } from '../../services';
|
||||
import { NotificationService } from '../../../../shared/services/notification.service';
|
||||
import {
|
||||
RecordingListsComponent,
|
||||
RecordingTableAction,
|
||||
RecordingTableFilter
|
||||
} from '../../components/recording-lists/recording-lists.component';
|
||||
import { RecordingService } from '../../services/recording.service';
|
||||
|
||||
@Component({
|
||||
selector: 'ov-recordings',
|
||||
|
||||
@ -9,9 +9,10 @@ import { MatTooltipModule } from '@angular/material/tooltip';
|
||||
import { ActivatedRoute, Router } from '@angular/router';
|
||||
import { MeetRecordingInfo, MeetRecordingStatus } from '@openvidu-meet/typings';
|
||||
import { ViewportService } from 'openvidu-components-angular';
|
||||
import { formatDurationToTime, NotificationService } from '../../../../shared';
|
||||
import { RecordingVideoPlayerComponent } from '../../components';
|
||||
import { RecordingService } from '../../services';
|
||||
import { NotificationService } from '../../../../shared/services/notification.service';
|
||||
import { formatDurationToTime } from '../../../../shared/utils/format.utils';
|
||||
import { RecordingVideoPlayerComponent } from '../../components/recording-video-player/recording-video-player.component';
|
||||
import { RecordingService } from '../../services/recording.service';
|
||||
|
||||
@Component({
|
||||
selector: 'ov-view-recording',
|
||||
|
||||
@ -2,14 +2,12 @@ import { Injectable } from '@angular/core';
|
||||
import { MatDialog } from '@angular/material/dialog';
|
||||
import { MeetRecordingFilters, MeetRecordingInfo } from '@openvidu-meet/typings';
|
||||
import { LoggerService } from 'openvidu-components-angular';
|
||||
import {
|
||||
FeatureConfigurationService,
|
||||
GlobalConfigService,
|
||||
HttpService,
|
||||
TokenStorageService
|
||||
} from '../../../shared/services';
|
||||
import { FeatureConfigurationService } from '../../../shared/services/feature-configuration.service';
|
||||
import { GlobalConfigService } from '../../../shared/services/global-config.service';
|
||||
import { HttpService } from '../../../shared/services/http.service';
|
||||
import { TokenStorageService } from '../../../shared/services/token-storage.service';
|
||||
import { AuthService } from '../../auth/services/auth.service';
|
||||
import { RecordingShareDialogComponent } from '../components';
|
||||
import { RecordingShareDialogComponent } from '../components/recording-share-dialog/recording-share-dialog.component';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
|
||||
@ -6,11 +6,16 @@ import { MatToolbarModule } from '@angular/material/toolbar';
|
||||
import { ActivatedRoute } from '@angular/router';
|
||||
import { MeetRecordingFilters, MeetRecordingInfo } from '@openvidu-meet/typings';
|
||||
import { ILogger, LoggerService } from 'openvidu-components-angular';
|
||||
import { NavigationService, NotificationService } from '../../../../shared';
|
||||
import { NavigationService } from '../../../../shared/services/navigation.service';
|
||||
import { NotificationService } from '../../../../shared/services/notification.service';
|
||||
import { MeetingContextService } from '../../../meeting/services';
|
||||
import { RecordingListsComponent, RecordingTableAction, RecordingTableFilter } from '../../../recordings/components';
|
||||
import { RecordingService } from '../../../recordings/services';
|
||||
import { RoomMemberService } from '../../services';
|
||||
import {
|
||||
RecordingListsComponent,
|
||||
RecordingTableAction,
|
||||
RecordingTableFilter
|
||||
} from '../../../recordings/components/recording-lists/recording-lists.component';
|
||||
import { RecordingService } from '../../../recordings/services/recording.service';
|
||||
import { RoomMemberService } from '../../services/room-member.service';
|
||||
|
||||
@Component({
|
||||
selector: 'ov-room-recordings',
|
||||
|
||||
@ -5,10 +5,13 @@ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
||||
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
||||
import { ActivatedRoute } from '@angular/router';
|
||||
import { MeetRoomOptions } from '@openvidu-meet/typings';
|
||||
import { NavigationService, NotificationService, } from '../../../../shared';
|
||||
import { StepIndicatorComponent, WizardNavComponent } from '../../components';
|
||||
import { WizardNavigationConfig, WizardStep } from '../../models';
|
||||
import { RoomService, RoomWizardStateService } from '../../services';
|
||||
import { NavigationService } from '../../../../shared/services/navigation.service';
|
||||
import { NotificationService } from '../../../../shared/services/notification.service';
|
||||
import { StepIndicatorComponent } from '../../components/step-indicator/step-indicator.component';
|
||||
import { WizardNavComponent } from '../../components/wizard-nav/wizard-nav.component';
|
||||
import { WizardNavigationConfig, WizardStep } from '../../models/wizard.model';
|
||||
import { RoomService } from '../../services/room.service';
|
||||
import { RoomWizardStateService } from '../../services/wizard-state.service';
|
||||
import { RoomBasicCreationComponent } from '../room-basic-creation/room-basic-creation.component';
|
||||
import { RecordingConfigComponent } from './steps/recording-config/recording-config.component';
|
||||
import { RecordingLayoutComponent } from './steps/recording-layout/recording-layout.component';
|
||||
|
||||
@ -8,8 +8,12 @@ import { MatRadioModule } from '@angular/material/radio';
|
||||
import { MatSelectModule } from '@angular/material/select';
|
||||
import { MeetRecordingAccess, MeetRoomOptions } from '@openvidu-meet/typings';
|
||||
import { Subject, takeUntil } from 'rxjs';
|
||||
import { SelectableCardComponent, SelectableCardOption, SelectionCardEvent } from '../../../../../../shared';
|
||||
import { RoomWizardStateService } from '../../../../services';
|
||||
import {
|
||||
SelectableCardComponent,
|
||||
SelectableCardOption,
|
||||
SelectionCardEvent
|
||||
} from '../../../../../../shared/components/selectable-card/selectable-card.component';
|
||||
import { RoomWizardStateService } from '../../../../services/wizard-state.service';
|
||||
|
||||
interface RecordingAccessOption {
|
||||
value: MeetRecordingAccess;
|
||||
|
||||
@ -6,8 +6,13 @@ import { MatCardModule } from '@angular/material/card';
|
||||
import { MatIconModule } from '@angular/material/icon';
|
||||
import { MatRadioModule } from '@angular/material/radio';
|
||||
import { MeetRecordingLayout } from '@openvidu-meet/typings';
|
||||
import { SelectableCardComponent, SelectableCardOption, SelectionCardEvent, ThemeService } from '../../../../../../shared';
|
||||
import { RoomWizardStateService } from '../../../../services';
|
||||
import {
|
||||
SelectableCardComponent,
|
||||
SelectableCardOption,
|
||||
SelectionCardEvent
|
||||
} from '../../../../../../shared/components/selectable-card/selectable-card.component';
|
||||
import { ThemeService } from '../../../../../../shared/services/theme.service';
|
||||
import { RoomWizardStateService } from '../../../../services/wizard-state.service';
|
||||
|
||||
@Component({
|
||||
selector: 'ov-recording-layout',
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
|
||||
import { Component, OnDestroy } from '@angular/core';
|
||||
import { FormGroup, ReactiveFormsModule } from '@angular/forms';
|
||||
import { MatButtonModule } from '@angular/material/button';
|
||||
@ -6,21 +5,25 @@ import { MatCardModule } from '@angular/material/card';
|
||||
import { MatIconModule } from '@angular/material/icon';
|
||||
import { MatRadioModule } from '@angular/material/radio';
|
||||
import { Subject, takeUntil } from 'rxjs';
|
||||
import { SelectableCardComponent, SelectableCardOption, SelectionCardEvent } from '../../../../../../shared';
|
||||
import { RoomWizardStateService } from '../../../../services';
|
||||
import {
|
||||
SelectableCardComponent,
|
||||
SelectableCardOption,
|
||||
SelectionCardEvent
|
||||
} from '../../../../../../shared//components/selectable-card/selectable-card.component';
|
||||
import { RoomWizardStateService } from '../../../../services/wizard-state.service';
|
||||
|
||||
@Component({
|
||||
selector: 'ov-recording-trigger',
|
||||
imports: [
|
||||
ReactiveFormsModule,
|
||||
MatButtonModule,
|
||||
MatIconModule,
|
||||
MatCardModule,
|
||||
MatRadioModule,
|
||||
SelectableCardComponent
|
||||
],
|
||||
templateUrl: './recording-trigger.component.html',
|
||||
styleUrl: './recording-trigger.component.scss'
|
||||
selector: 'ov-recording-trigger',
|
||||
imports: [
|
||||
ReactiveFormsModule,
|
||||
MatButtonModule,
|
||||
MatIconModule,
|
||||
MatCardModule,
|
||||
MatRadioModule,
|
||||
SelectableCardComponent
|
||||
],
|
||||
templateUrl: './recording-trigger.component.html',
|
||||
styleUrl: './recording-trigger.component.scss'
|
||||
})
|
||||
export class RecordingTriggerComponent implements OnDestroy {
|
||||
triggerForm: FormGroup;
|
||||
|
||||
@ -25,9 +25,17 @@ import {
|
||||
MeetRoomStatus
|
||||
} from '@openvidu-meet/typings';
|
||||
import { ILogger, LoggerService } from 'openvidu-components-angular';
|
||||
import { DeleteRoomDialogComponent, DeleteRoomDialogOptions, NavigationService, NotificationService } from '../../../../shared';
|
||||
import { RoomsListsComponent, RoomTableAction, RoomTableFilter } from '../../components';
|
||||
import { RoomService } from '../../services';
|
||||
import { NavigationService } from '../../../../shared/services/navigation.service';
|
||||
import { NotificationService } from '../../../../shared/services/notification.service';
|
||||
|
||||
import { DeleteRoomDialogComponent } from '../../../../shared/components/dialogs/delete-room-dialog/delete-room-dialog.component';
|
||||
import { DeleteRoomDialogOptions } from '../../../../shared/models/notification.model';
|
||||
import {
|
||||
RoomsListsComponent,
|
||||
RoomTableAction,
|
||||
RoomTableFilter
|
||||
} from '../../components/rooms-lists/rooms-lists.component';
|
||||
import { RoomService } from '../../services/room.service';
|
||||
|
||||
@Component({
|
||||
selector: 'ov-rooms',
|
||||
|
||||
@ -6,7 +6,10 @@ import {
|
||||
MeetRoomMemberTokenOptions
|
||||
} from '@openvidu-meet/typings';
|
||||
import { E2eeService, LoggerService } from 'openvidu-components-angular';
|
||||
import { FeatureConfigurationService, HttpService, TokenStorageService, getValidDecodedToken } from '../../../shared';
|
||||
import { FeatureConfigurationService } from '../../../shared/services/feature-configuration.service';
|
||||
import { HttpService } from '../../../shared/services/http.service';
|
||||
import { TokenStorageService } from '../../../shared/services/token-storage.service';
|
||||
import { getValidDecodedToken } from '../../../shared/utils/token.utils';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
|
||||
@ -11,7 +11,8 @@ import {
|
||||
MeetRoomStatus
|
||||
} from '@openvidu-meet/typings';
|
||||
import { ILogger, LoggerService } from 'openvidu-components-angular';
|
||||
import { FeatureConfigurationService, HttpService } from '../../../shared';
|
||||
import { FeatureConfigurationService } from '../../../shared/services/feature-configuration.service';
|
||||
import { HttpService } from '../../../shared/services/http.service';
|
||||
|
||||
/**
|
||||
* RoomService - Persistence Layer for Room Data
|
||||
|
||||
@ -10,7 +10,7 @@ import {
|
||||
MatDialogTitle
|
||||
} from '@angular/material/dialog';
|
||||
import { MatIconModule } from '@angular/material/icon';
|
||||
import type { DialogOptions } from '../../../models';
|
||||
import type { DialogOptions } from '../../../models/notification.model';
|
||||
|
||||
@Component({
|
||||
selector: 'ov-dialog',
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
||||
import { MatIconModule } from '@angular/material/icon';
|
||||
import { ProFeatureBadgeComponent } from '../';
|
||||
import { ProFeatureBadgeComponent } from '../pro-feature-badge/pro-feature-badge.component';
|
||||
|
||||
/**
|
||||
* Interface for selectable card option data
|
||||
|
||||
@ -1,10 +1,12 @@
|
||||
import { inject } from '@angular/core';
|
||||
import { ActivatedRouteSnapshot, CanActivateFn } from '@angular/router';
|
||||
import { WebComponentProperty } from '@openvidu-meet/typings';
|
||||
import { MeetingContextService } from '../../domains/meeting/services';
|
||||
import { RoomMemberService } from '../../domains/rooms/services';
|
||||
import { MeetingContextService } from '../../domains/meeting/services/meeting-context.service';
|
||||
import { RoomMemberService } from '../../domains/rooms/services/room-member.service';
|
||||
import { NavigationErrorReason } from '../models/navigation.model';
|
||||
import { AppDataService, NavigationService, SessionStorageService } from '../services';
|
||||
import { AppDataService } from '../services/app-data.service';
|
||||
import { NavigationService } from '../services/navigation.service';
|
||||
import { SessionStorageService } from '../services/session-storage.service';
|
||||
|
||||
export const extractRoomQueryParamsGuard: CanActivateFn = (route: ActivatedRouteSnapshot) => {
|
||||
const navigationService = inject(NavigationService);
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
export * from './auth.guard';
|
||||
export * from './extract-query-params.guard';
|
||||
export * from './remove-query-params.guard';
|
||||
export * from './run-serially.guard';
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
export * from './components/index';
|
||||
export * from './guards/index';
|
||||
export * from './interceptors/index';
|
||||
export * from './models/index';
|
||||
export * from './components';
|
||||
export * from './guards';
|
||||
export * from './interceptors';
|
||||
export * from './models';
|
||||
export * from './routes/base-routes';
|
||||
export * from './services/index';
|
||||
export * from './utils/index';
|
||||
export * from './services';
|
||||
export * from './utils';
|
||||
|
||||
|
||||
@ -1,40 +1,25 @@
|
||||
import { Routes } from '@angular/router';
|
||||
import { WebComponentProperty } from '@openvidu-meet/typings';
|
||||
import { LoginComponent } from '../../domains/auth/pages/login/login.component';
|
||||
import { checkUserAuthenticatedGuard, checkUserNotAuthenticatedGuard } from '../../domains/auth/guards/auth.guard';
|
||||
import { validateRecordingAccessGuard } from '../../domains/recordings/guards/recording-validate-access.guard';
|
||||
import { checkEditableRoomGuard } from '../../domains/rooms/guards/room-edit-check.guard';
|
||||
import {
|
||||
ConfigComponent,
|
||||
ConsoleComponent,
|
||||
EmbeddedComponent,
|
||||
OverviewComponent,
|
||||
UsersPermissionsComponent
|
||||
} from '../../domains/console/pages';
|
||||
import { ErrorComponent } from '../../domains/console/pages/error/error.component';
|
||||
import { EndMeetingComponent, MeetingComponent } from '../../domains/meeting/pages';
|
||||
import { validateRecordingAccessGuard } from '../../domains/recordings/guards';
|
||||
import { RecordingsComponent, ViewRecordingComponent } from '../../domains/recordings/pages';
|
||||
import {
|
||||
checkEditableRoomGuard, validateRoomAccessGuard,
|
||||
validateRoomAccessGuard,
|
||||
validateRoomRecordingsAccessGuard
|
||||
} from '../../domains/rooms/guards';
|
||||
import { RoomRecordingsComponent, RoomsComponent, RoomWizardComponent } from '../../domains/rooms/pages';
|
||||
import {
|
||||
checkUserAuthenticatedGuard,
|
||||
checkUserNotAuthenticatedGuard,
|
||||
extractRecordingQueryParamsGuard,
|
||||
extractRoomQueryParamsGuard,
|
||||
removeQueryParamsGuard,
|
||||
runGuardsSerially,
|
||||
} from '../guards';
|
||||
|
||||
} from '../../domains/rooms/guards/room-validate-access.guard';
|
||||
import { extractRecordingQueryParamsGuard, extractRoomQueryParamsGuard } from '../guards/extract-query-params.guard';
|
||||
import { removeQueryParamsGuard } from '../guards/remove-query-params.guard';
|
||||
import { runGuardsSerially } from '../guards/run-serially.guard';
|
||||
export const baseRoutes: Routes = [
|
||||
{
|
||||
path: 'login',
|
||||
component: LoginComponent,
|
||||
loadComponent: () => import('../../domains/auth/pages/login/login.component').then((m) => m.LoginComponent),
|
||||
canActivate: [checkUserNotAuthenticatedGuard]
|
||||
},
|
||||
{
|
||||
path: 'room/:room-id',
|
||||
component: MeetingComponent,
|
||||
loadComponent: () =>
|
||||
import('../../domains/meeting/pages/meeting/meeting.component').then((m) => m.MeetingComponent),
|
||||
canActivate: [
|
||||
runGuardsSerially(
|
||||
extractRoomQueryParamsGuard,
|
||||
@ -45,7 +30,10 @@ export const baseRoutes: Routes = [
|
||||
},
|
||||
{
|
||||
path: 'room/:room-id/recordings',
|
||||
component: RoomRecordingsComponent,
|
||||
loadComponent: () =>
|
||||
import('../../domains/rooms/pages/room-recordings/room-recordings.component').then(
|
||||
(m) => m.RoomRecordingsComponent
|
||||
),
|
||||
canActivate: [
|
||||
runGuardsSerially(
|
||||
extractRecordingQueryParamsGuard,
|
||||
@ -56,14 +44,25 @@ export const baseRoutes: Routes = [
|
||||
},
|
||||
{
|
||||
path: 'recording/:recording-id',
|
||||
component: ViewRecordingComponent,
|
||||
loadComponent: () =>
|
||||
import('../../domains/recordings/pages/view-recording/view-recording.component').then(
|
||||
(m) => m.ViewRecordingComponent
|
||||
),
|
||||
canActivate: [validateRecordingAccessGuard]
|
||||
},
|
||||
{ path: 'disconnected', component: EndMeetingComponent },
|
||||
{ path: 'error', component: ErrorComponent },
|
||||
{
|
||||
path: 'disconnected',
|
||||
loadComponent: () =>
|
||||
import('../../domains/meeting/pages/end-meeting/end-meeting.component').then((m) => m.EndMeetingComponent)
|
||||
},
|
||||
{
|
||||
path: 'error',
|
||||
loadComponent: () => import('../../domains/console/pages/error/error.component').then((m) => m.ErrorComponent)
|
||||
},
|
||||
{
|
||||
path: '',
|
||||
component: ConsoleComponent,
|
||||
loadComponent: () =>
|
||||
import('../../domains/console/pages/console/console.component').then((m) => m.ConsoleComponent),
|
||||
canActivate: [checkUserAuthenticatedGuard],
|
||||
children: [
|
||||
{
|
||||
@ -73,36 +72,53 @@ export const baseRoutes: Routes = [
|
||||
},
|
||||
{
|
||||
path: 'overview',
|
||||
component: OverviewComponent
|
||||
loadComponent: () =>
|
||||
import('../../domains/console/pages/overview/overview.component').then((m) => m.OverviewComponent)
|
||||
},
|
||||
{
|
||||
path: 'rooms',
|
||||
component: RoomsComponent
|
||||
loadComponent: () =>
|
||||
import('../../domains/rooms/pages/rooms/rooms.component').then((m) => m.RoomsComponent)
|
||||
},
|
||||
{
|
||||
path: 'rooms/new',
|
||||
component: RoomWizardComponent
|
||||
|
||||
loadComponent: () =>
|
||||
import('../../domains/rooms/pages/room-wizard/room-wizard.component').then(
|
||||
(m) => m.RoomWizardComponent
|
||||
)
|
||||
},
|
||||
{
|
||||
path: 'rooms/:roomId/edit',
|
||||
component: RoomWizardComponent,
|
||||
loadComponent: () =>
|
||||
import('../../domains/rooms/pages/room-wizard/room-wizard.component').then(
|
||||
(m) => m.RoomWizardComponent
|
||||
),
|
||||
canActivate: [checkEditableRoomGuard]
|
||||
},
|
||||
{
|
||||
path: 'recordings',
|
||||
component: RecordingsComponent
|
||||
loadComponent: () =>
|
||||
import('../../domains/recordings/pages/recordings/recordings.component').then(
|
||||
(m) => m.RecordingsComponent
|
||||
)
|
||||
},
|
||||
{
|
||||
path: 'embedded',
|
||||
component: EmbeddedComponent
|
||||
loadComponent: () =>
|
||||
import('../../domains/console/pages/embedded/embedded.component').then((m) => m.EmbeddedComponent)
|
||||
},
|
||||
{
|
||||
path: 'users-permissions',
|
||||
component: UsersPermissionsComponent
|
||||
loadComponent: () =>
|
||||
import('../../domains/console/pages/users-permissions/users-permissions.component').then(
|
||||
(m) => m.UsersPermissionsComponent
|
||||
)
|
||||
},
|
||||
{
|
||||
path: 'config',
|
||||
component: ConfigComponent
|
||||
loadComponent: () =>
|
||||
import('../../domains/console/pages/config/config.component').then((m) => m.ConfigComponent)
|
||||
},
|
||||
// {
|
||||
// path: 'about',
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { MeetApiKey } from '@openvidu-meet/typings';
|
||||
import { HttpService } from '.';
|
||||
import { HttpService } from './http.service';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
|
||||
@ -1,7 +1,8 @@
|
||||
import { inject, Injectable } from '@angular/core';
|
||||
import { AuthMode, MeetAppearanceConfig, SecurityConfig, WebhookConfig } from '@openvidu-meet/typings';
|
||||
import { ILogger, LoggerService } from 'openvidu-components-angular';
|
||||
import { FeatureConfigurationService, HttpService } from '.';
|
||||
import { FeatureConfigurationService } from './feature-configuration.service';
|
||||
import { HttpService } from './http.service';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
|
||||
@ -1,7 +1,8 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Params, Router, UrlTree } from '@angular/router';
|
||||
import { AppDataService, SessionStorageService } from '.';
|
||||
import { NavigationErrorReason } from '../models/navigation.model';
|
||||
import { AppDataService } from './app-data.service';
|
||||
import { SessionStorageService } from './session-storage.service';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
|
||||
@ -3,7 +3,9 @@ import { ComponentPortal } from '@angular/cdk/portal';
|
||||
import { Injectable } from '@angular/core';
|
||||
import { MatDialog } from '@angular/material/dialog';
|
||||
import { MatSnackBar } from '@angular/material/snack-bar';
|
||||
import { DialogComponent, DialogOptions, SpinnerComponent } from '..';
|
||||
import { DialogComponent } from '../components/dialogs/basic-dialog/dialog.component';
|
||||
import { SpinnerComponent } from '../components/spinner/spinner.component';
|
||||
import { DialogOptions } from '../models/notification.model';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
|
||||
@ -1,12 +1,14 @@
|
||||
/*
|
||||
* Public API Surface of shared-meet-components
|
||||
*/
|
||||
|
||||
// Export shared infrastructure first (no dependencies on domains)
|
||||
export * from './lib/shared';
|
||||
|
||||
// Then export domains (which depend on shared)
|
||||
export * from './lib/domains/auth';
|
||||
export * from './lib/domains/console';
|
||||
export * from './lib/domains/meeting';
|
||||
export * from './lib/domains/recordings';
|
||||
export * from './lib/domains/rooms';
|
||||
|
||||
|
||||
export * from './lib/shared/index';
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user