Skip to content

Commit

Permalink
Merge branch 'main' into feat-room-countdown-timer
Browse files Browse the repository at this point in the history
  • Loading branch information
N7Remus authored Nov 18, 2024
2 parents 7f8f890 + 7058d6b commit e7b8800
Show file tree
Hide file tree
Showing 76 changed files with 8,672 additions and 1,773 deletions.
15 changes: 7 additions & 8 deletions .github/workflows/sonarqube.yml
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
name: SonarQube CI
on: push
jobs:
sonarQubeTrigger:
name: SonarQube Trigger
sonarqube:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: SonarQube Scan
uses: kitabisa/sonarqube-action@v1.2.1
with:
host: ${{ secrets.SONARQUBE_HOST }}
login: ${{ secrets.SONARQUBE_TOKEN }}
- name: SonarQube Scaner
uses: sonarsource/sonarqube-scan-action@v3.0.0
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
SONAR_HOST_URL: ${{ vars.SONAR_HOST_URL }}
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,5 +76,9 @@ can be found here: [config.example.js](public/config/config.example.js).
| buttonControlBar | If true, the media control buttons will be shown in separate control bar, not in the ME container. | `"boolean"` | ``false`` |
| logo | If not null, it shows the logo loaded from the specified URL, otherwise it shows the title. | `"url"` | ``"images/logo.edumeet.svg"`` |
| title | The title to show if the logo is not specified. | `"string"` | ``"edumeet"`` |
| randomizeOnBlank | Enable or disable randomize room name when it is blank. | `"boolean"` | ``true`` |
| transcriptionEnabled | Enable or disable transcription. | `"boolean"` | ``true`` |
| imprintUrl | Show a link to an imprint in the edumeet UI, keep blank to not show a link | `"string"` | ``""`` |
| privacyUrl | Show a link to a privacy notice in the edumeet UI, keep blank to not show a link | `"string"` | ``""`` |

---
1 change: 1 addition & 0 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
/>
<meta name='description' content='edumeet - Simple web meetings'>
<meta name='theme-color' content='#000000' />
<meta name="keywords" content="edumeet,letsmeet,multiparty,videoconference,meet,WebRTC,room,rooms,geant,video conferencing, video conference, online meetings, web meeting, video meeting, cloud meeting, cloud video, group video call, group video chat, screen share, application share, mobility, mobile collaboration, desktop share, video collaboration">

<link rel='preconnect' href='https://fonts.googleapis.com/css?family=Roboto' rel='stylesheet'>
<link rel='shortcut icon' href='/images/favicon.ico' />
Expand Down
88 changes: 46 additions & 42 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,44 +6,48 @@
"author": "Håvar Aambø Fosstveit <[email protected]>",
"license": "MIT",
"dependencies": {
"@emotion/cache": "^11.11.0",
"@emotion/react": "^11.11.1",
"@emotion/styled": "^11.11.0",
"@feathersjs/authentication-client": "^5.0.11",
"@feathersjs/feathers": "^5.0.11",
"@feathersjs/rest-client": "^5.0.11",
"@mui/icons-material": "^5.14.16",
"@mui/material": "^5.14.16",
"@observertc/client-monitor-js": "^3.5.0",
"@emotion/cache": "^11.13.1",
"@emotion/react": "^11.13.3",
"@emotion/styled": "^11.13.0",
"@feathersjs/authentication-client": "^5.0.30",
"@feathersjs/feathers": "^5.0.30",
"@feathersjs/rest-client": "^5.0.30",
"@feathersjs/socketio-client": "^5.0.30",
"@mui/icons-material": "^6.1.5",
"@mui/material": "^6.1.5",
"@mui/x-date-pickers": "^7.22.0",
"@observertc/client-monitor-js": "^3.11.0",
"@observertc/samples-encoder": "^2.2.12",
"@reduxjs/toolkit": "^1.9.7",
"awaitqueue": "^3.0.2",
"bowser": "^2.11.0",
"debug": "^4.3.4",
"dompurify": "^3.0.6",
"moment": "^2.29.4",
"debug": "^4.3.7",
"dompurify": "^3.1.6",
"file-saver": "^2.0.5",
"fscreen": "^1.2.0",
"hark": "^1.2.3",
"marked": "^9.1.4",
"mediasoup-client": "^3.7.3",
"marked": "^9.1.6",
"material-react-table": "^3.0.1",
"mediasoup-client": "^3.7.16",
"native-file-system-adapter": "^3.0.1",
"notistack": "^3.0.1",
"ortc-p2p": "havfo/ortc-p2p#0.1.1",
"ortc-p2p": "github:havfo/ortc-p2p#0.1.1",
"random-string": "^0.2.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-flip-toolkit": "^7.1.0",
"react-intl": "^6.5.1",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-flip-toolkit": "^7.2.4",
"react-intl": "^6.7.0",
"react-qrcode-logo": "^3.0.0",
"react-redux": "^8.1.3",
"react-router-dom": "^6.18.0",
"react-router-dom": "^6.26.2",
"redux-logger": "^3.0.6",
"redux-persist": "^6.0.0",
"reselect": "^4.1.8",
"socket.io-client": "^4.7.4",
"typescript": "^5.2.2",
"socket.io-client": "^4.8.0",
"typescript": "^5.6.2",
"uuid": "^9.0.1",
"webtorrent": "^2.1.27"
"webtorrent": "^2.5.1"
},
"scripts": {
"start": "vite",
Expand All @@ -64,29 +68,29 @@
]
},
"devDependencies": {
"@types/debug": "^4.1.10",
"@types/dompurify": "^3.0.4",
"@types/file-saver": "^2.0.6",
"@types/fscreen": "^1.0.3",
"@types/hark": "^1.2.4",
"@types/node": "^20.8.10",
"@types/debug": "^4.1.12",
"@types/dompurify": "^3.0.5",
"@types/file-saver": "^2.0.7",
"@types/fscreen": "^1.0.4",
"@types/hark": "^1.2.5",
"@types/node": "^20.16.5",
"@types/random-string": "^0.0.30",
"@types/react": "^18.2.33",
"@types/react-dom": "^18.2.14",
"@types/react-redux": "^7.1.28",
"@types/redux-logger": "^3.0.11",
"@types/react": "^18.3.12",
"@types/react-dom": "^18.3.1",
"@types/react-redux": "^7.1.33",
"@types/redux-logger": "^3.0.13",
"@types/sdp-transform": "^2.4.9",
"@types/ua-parser-js": "^0.7.39",
"@types/uuid": "^9.0.6",
"@types/webtorrent": "^0.109.5",
"@typescript-eslint/eslint-plugin": "^6.9.1",
"@typescript-eslint/parser": "^6.9.1",
"@vitejs/plugin-basic-ssl": "^1.0.1",
"@vitejs/plugin-react": "^4.1.0",
"eslint": "^8.52.0",
"eslint-plugin-react": "^7.33.2",
"vite": "^4.5.0",
"@types/uuid": "^9.0.8",
"@types/webtorrent": "^0.109.8",
"@typescript-eslint/eslint-plugin": "^6.21.0",
"@typescript-eslint/parser": "^6.21.0",
"@vitejs/plugin-basic-ssl": "^1.1.0",
"@vitejs/plugin-react": "^4.3.1",
"eslint": "^8.57.1",
"eslint-plugin-react": "^7.36.1",
"vite": "^4.5.5",
"vite-plugin-eslint": "^1.8.1",
"vite-tsconfig-paths": "^4.2.1"
"vite-tsconfig-paths": "^4.3.2"
}
}
15 changes: 15 additions & 0 deletions public/config/config.example.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
var config = {
// Location of management service.
managementUrl: 'http://localhost:3030',
// Location of the privacy files.
impressumUrl: '/privacy/privacy.html',
// If ability to log in is enabled.
loginEnabled: true,

Expand Down Expand Up @@ -143,6 +145,19 @@ var config = {
// The title to show if the logo is not specified.
title: 'edumeet',

// If true, a random room name will be generated when the input field is blank;
// otherwise, it will remain empty and users will have to enter a room name.
randomizeOnBlank: true,

// Enable or disable transcription.
transcriptionEnabled: true,

// Imprint. If you want to link your imprint, please provide a URL in this variable. If it is empty, no link will be shown.
imprintUrl: '',

// Privacy notice. If you want to link your privacy notices, please provide a URL in this variable. If it is empty, no link will be shown.
privacyUrl: '',

// Client theme. Take a look at mui theme documentation.
theme: {
palette: {
Expand Down
1 change: 1 addition & 0 deletions sonar-project.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
sonar.projectKey=edumeet-client
3 changes: 3 additions & 0 deletions src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,9 @@ const App = (): JSX.Element => {
if (roomState ==='left') {
dispatch(roomActions.setState('new'));
navigate('/');
setTimeout(() => {
window.location.reload();
}, 0);
}
}, [ roomState ]);

Expand Down
2 changes: 1 addition & 1 deletion src/components/controlbuttons/WebcamPreviewButton.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ const WebcamPreviewButton = (props: ControlButtonProps): JSX.Element => {
<ControlButton
toolTip={webcamTip}
onClick={() => {
if (webcamState === 'unsupported') return;
// if (webcamState === 'unsupported') return;

if (webcamState === 'off') {
dispatch(updatePreviewWebcam({ newDeviceId: videoDevice }));
Expand Down
42 changes: 30 additions & 12 deletions src/components/helpdialog/HelpDialog.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import { Button } from '@mui/material';
import { Button, Box, Link, Typography } from '@mui/material';
import { Close } from '@mui/icons-material';
import { useAppDispatch, useAppSelector } from '../../store/hooks';
import { uiActions } from '../../store/slices/uiSlice';
import { closeLabel } from '../translated/translatedComponents';
import { closeLabel, imprintLabel, privacyLabel } from '../translated/translatedComponents';
import ShortcutKeys from './ShortcutKeys';
import GenericDialog from '../genericdialog/GenericDialog';
import edumeetConfig from '../../utils/edumeetConfig';

const HelpDialog = (): JSX.Element => {
const dispatch = useAppDispatch();
Expand All @@ -16,24 +17,41 @@ const HelpDialog = (): JSX.Element => {
}));
};

const privacyUrl = edumeetConfig.privacyUrl ?? '';
const imprintUrl = edumeetConfig.imprintUrl ?? '';

return (
<GenericDialog
open={ helpOpen }
onClose={ handleCloseHelp }
maxWidth='xs'
content={ <ShortcutKeys /> }
content={ <><ShortcutKeys /></> }
actions={
<Button
onClick={ handleCloseHelp }
startIcon={ <Close /> }
variant='contained'
size='small'
>
{ closeLabel() }
</Button>
<Box display="flex" alignItems="center" justifyContent="space-between" width="100%">
<Box display="flex" alignItems="left">
{imprintUrl.trim() !== '' && (
<Link href={imprintUrl} target="_blank" color="inherit" underline="none">
<Typography variant="body2">{ imprintLabel() }</Typography>
</Link>
)}
{privacyUrl.trim() !== '' && (
<Link href={privacyUrl} target="_blank" color="inherit" underline="none" style={{ marginLeft: '16px' }}>
<Typography variant="body2">{ privacyLabel() }</Typography>
</Link>
)}
</Box>
<Button
onClick={ handleCloseHelp }
startIcon={ <Close /> }
variant='contained'
size='small'
>
{ closeLabel() }
</Button>
</Box>
}
/>
);
};

export default HelpDialog;
export default HelpDialog;
Loading

0 comments on commit e7b8800

Please sign in to comment.