Skip to content

Commit

Permalink
VIH-10652 add state management with NGRX (#2145)
Browse files Browse the repository at this point in the history
* WIP add actions and reducers for conference

* feat: Update conference actions to include endpoint status updates and endpoint list modifications

* add tests

* feat: Add conference status to video web service and VHConference model

* add more tests for reducer functions

* feat: Add upsertPexipParticipant action to conference reducer

* feat: Update room and participant information in conference reducer

The code changes in this commit update the conference reducer to handle room and participant information. It adds the ability to update a room and its associated participants, as well as transfer participants between rooms. The changes also include updating the available rooms list and ensuring that the room information is correctly reflected in the participants and endpoints.

* subscribe to active conference in the base waiting room

* refactor: Update participant and room information handling in conference reducer
migrate to ngrx models for participant list component and child components

* handle removal of pexip participant
retain pexip info between participant updates and conference udpates

* disable linting fules for test setup class since it does not honour rules

* add new rule to ignore tests set file
  • Loading branch information
shaed-parkar authored May 31, 2024
1 parent 3232d64 commit 05f2e6e
Show file tree
Hide file tree
Showing 67 changed files with 2,923 additions and 1,189 deletions.
358 changes: 172 additions & 186 deletions VideoWeb/VideoWeb/ClientApp/angular.json
Original file line number Diff line number Diff line change
@@ -1,192 +1,178 @@
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"VideoWeb": {
"root": "",
"sourceRoot": "src",
"projectType": "application",
"prefix": "app",
"schematics": {},
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"progress": true,
"outputPath": "dist",
"index": "src/index.html",
"main": "src/main.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "src/tsconfig.app.json",
"assets": [
"src/assets",
{
"glob": "*",
"input": "node_modules/govuk-frontend/govuk/assets/fonts",
"output": "assets/fonts/"
},
"src/scripts"
],
"styles": [
"src/styles.scss",
"node_modules/ngx-toastr/toastr.css"
],
"stylePreprocessorOptions": {
"includePaths": [
"src/sass"
]
},
"scripts": [
"src/scripts/EdgePF.js",
"src/scripts/IEPF.js",
"src/scripts/Heartbeat.js",
"node_modules/govuk-frontend/govuk/all.js",
"node_modules/chart.js/dist/chart.umd.js",
"node_modules/@mediapipe/camera_utils/camera_utils.js",
"node_modules/@mediapipe/control_utils/control_utils.js",
"node_modules/@mediapipe/drawing_utils/drawing_utils.js",
"node_modules/@mediapipe/selfie_segmentation/selfie_segmentation.js"
],
"allowedCommonJsDependencies": [
"guid-typescript",
"sdp",
"@mediapipe/camera_utils",
"@mediapipe/selfie_segmentation",
"moment"
],
"vendorChunk": true,
"extractLicenses": false,
"buildOptimizer": false,
"sourceMap": true,
"optimization": false,
"namedChunks": true
},
"configurations": {
"development": {},
"production": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"namedChunks": false,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true
}
},
"defaultConfiguration": ""
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"publicHost": "0.0.0.0:0",
"buildTarget": "VideoWeb:build"
},
"configurations": {
"production": {
"buildTarget": "VideoWeb:build:production"
},
"development": {
"buildTarget": "VideoWeb:build:development"
},
"defaultConfiguration": "development"
}
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
"options": {
"buildTarget": "VideoWeb:build"
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "src/test.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "src/tsconfig.spec.json",
"karmaConfig": "src/karma.conf.js",
"codeCoverageExclude": [
"src/app/testing/**",
"src/app/services/clients/**",
"src/app/vh-officer/helper.ts",
"src/app/services/audio-only-image.service.ts"
],
"styles": [
"src/styles.scss"
],
"stylePreprocessorOptions": {
"includePaths": [
"src/sass"
]
},
"scripts": [
"src/scripts/vodafone/pexrtc.js",
"src/scripts/EdgePF.js",
"src/scripts/IEPF.js",
"src/scripts/Heartbeat.js",
"node_modules/chart.js/dist/chart.umd.js"
],
"assets": [
"src/assets",
{
"glob": "*",
"input": "node_modules/govuk-frontend/govuk/assets/fonts",
"output": "assets/fonts/"
}
]
}
},
"server": {
"builder": "@angular-devkit/build-angular:server",
"options": {
"outputPath": "dist-server",
"main": "src/main.ts",
"tsConfig": "src/tsconfig.server.json",
"sourceMap": true,
"optimization": false,
"buildOptimizer": false
},
"configurations": {
"dev": {
"optimization": true,
"outputHashing": "all",
"namedChunks": false,
"extractLicenses": true,
"buildOptimizer": true
},
"production": {
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"namedChunks": false,
"extractLicenses": true,
"buildOptimizer": true
}
},
"defaultConfiguration": ""
},
"lint": {
"builder": "@angular-eslint/builder:lint",
"options": {
"lintFilePatterns": [
"src/**/*.ts",
"src/**/*.html"
]
}
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"VideoWeb": {
"root": "",
"sourceRoot": "src",
"projectType": "application",
"prefix": "app",
"schematics": {},
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"progress": true,
"outputPath": "dist",
"index": "src/index.html",
"main": "src/main.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "src/tsconfig.app.json",
"assets": [
"src/assets",
{
"glob": "*",
"input": "node_modules/govuk-frontend/govuk/assets/fonts",
"output": "assets/fonts/"
},
"src/scripts"
],
"styles": ["src/styles.scss", "node_modules/ngx-toastr/toastr.css"],
"stylePreprocessorOptions": {
"includePaths": ["src/sass"]
},
"scripts": [
"src/scripts/EdgePF.js",
"src/scripts/IEPF.js",
"src/scripts/Heartbeat.js",
"node_modules/govuk-frontend/govuk/all.js",
"node_modules/chart.js/dist/chart.umd.js",
"node_modules/@mediapipe/camera_utils/camera_utils.js",
"node_modules/@mediapipe/control_utils/control_utils.js",
"node_modules/@mediapipe/drawing_utils/drawing_utils.js",
"node_modules/@mediapipe/selfie_segmentation/selfie_segmentation.js"
],
"allowedCommonJsDependencies": [
"guid-typescript",
"sdp",
"@mediapipe/camera_utils",
"@mediapipe/selfie_segmentation",
"moment"
],
"vendorChunk": true,
"extractLicenses": false,
"buildOptimizer": false,
"sourceMap": true,
"optimization": false,
"namedChunks": true
},
"configurations": {
"development": {},
"production": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"namedChunks": false,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true
}
},
"defaultConfiguration": ""
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"publicHost": "0.0.0.0:0",
"buildTarget": "VideoWeb:build"
},
"configurations": {
"production": {
"buildTarget": "VideoWeb:build:production"
},
"development": {
"buildTarget": "VideoWeb:build:development"
},
"defaultConfiguration": "development"
}
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
"options": {
"buildTarget": "VideoWeb:build"
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "src/test.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "src/tsconfig.spec.json",
"karmaConfig": "src/karma.conf.js",
"codeCoverageExclude": [
"src/app/testing/**",
"src/app/services/clients/**",
"src/app/vh-officer/helper.ts",
"src/app/services/audio-only-image.service.ts"
],
"styles": ["src/styles.scss"],
"stylePreprocessorOptions": {
"includePaths": ["src/sass"]
},
"scripts": [
"src/scripts/vodafone/pexrtc.js",
"src/scripts/EdgePF.js",
"src/scripts/IEPF.js",
"src/scripts/Heartbeat.js",
"node_modules/chart.js/dist/chart.umd.js"
],
"assets": [
"src/assets",
{
"glob": "*",
"input": "node_modules/govuk-frontend/govuk/assets/fonts",
"output": "assets/fonts/"
}
]
}
},
"server": {
"builder": "@angular-devkit/build-angular:server",
"options": {
"outputPath": "dist-server",
"main": "src/main.ts",
"tsConfig": "src/tsconfig.server.json",
"sourceMap": true,
"optimization": false,
"buildOptimizer": false
},
"configurations": {
"dev": {
"optimization": true,
"outputHashing": "all",
"namedChunks": false,
"extractLicenses": true,
"buildOptimizer": true
},
"production": {
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"namedChunks": false,
"extractLicenses": true,
"buildOptimizer": true
}
},
"defaultConfiguration": ""
},
"lint": {
"builder": "@angular-eslint/builder:lint",
"options": {
"lintFilePatterns": ["src/**/*.ts", "src/**/*.html"]
}
}
},
"cli": {
"analytics": "d98edcd7-fbf7-457b-8b1a-674a89b98183",
"schematicCollections": [
"@angular-eslint/schematics"
]
}
}
},
"cli": {
"analytics": "d98edcd7-fbf7-457b-8b1a-674a89b98183",
"schematicCollections": ["@angular-eslint/schematics", "@ngrx/schematics"]
}
}
Loading

0 comments on commit 05f2e6e

Please sign in to comment.