Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions bbbeasy-backend/app/src/Models/Setting.php
Original file line number Diff line number Diff line change
Expand Up @@ -98,16 +98,15 @@ public function getAllSettings(): array
public function checkSettingsData(DataChecker $dataChecker, array $form): DataChecker
{
$dataChecker->verify($form['company_name'], Validator::notEmpty()->setName('company_name'));
$dataChecker->verify($form['company_url'], Validator::url()->setName('company_url'));
$dataChecker->verify($form['platform_name'], Validator::notEmpty()->setName('platform_name'));

if (null !== $form['term_url']) {
if (null !== $form['term_url'] && '' !== $form['term_url']) {
$dataChecker->verify($form['term_url'], Validator::url()->setName('term_url'));
}
if (null !== $form['policy_url']) {
if (null !== $form['policy_url'] && '' !== $form['policy_url']) {
$dataChecker->verify($form['policy_url'], Validator::url()->setName('policy_url'));
}

$dataChecker->verify($form['theme'], Validator::notEmpty()->setName('color'));
$dataChecker->verify($form['theme']['brand_color'], Validator::notEmpty()->setName('brand_color'));
$dataChecker->verify($form['theme']['default_font_size'], Validator::notEmpty()->setName('default_font_size'));
Expand Down
4 changes: 2 additions & 2 deletions bbbeasy-backend/app/src/Utils/PresetProcessor.php
Original file line number Diff line number Diff line change
Expand Up @@ -123,15 +123,15 @@ public function toCreateMeetingParams($preset, $createParams)
$createParams->setBannerColor((string) $presetsData->getData(Branding::GROUP_NAME, Branding::BANNER_COLOR));
// $createParams->setUseAvatars($presetsData->getData(Branding::GROUP_NAME, Branding::USE_AVATARS));

$createParams->setBreakoutRoomsEnabled((bool)$presetsData->getData(BreakoutRooms::GROUP_NAME, BreakoutRooms::CONFIGURABLE));
$createParams->setBreakoutRoomsEnabled($presetsData->getData(BreakoutRooms::GROUP_NAME, BreakoutRooms::CONFIGURABLE));
$createParams->setBreakoutRoomsRecord((bool)$presetsData->getData(BreakoutRooms::GROUP_NAME, BreakoutRooms::RECORDING));

$createParams->setBreakoutRoomsPrivateChatEnabled(null !== $presetsData->getData(BreakoutRooms::GROUP_NAME, BreakoutRooms::PRIVATE_CHAT) ? $presetsData->getData(BreakoutRooms::GROUP_NAME, BreakoutRooms::PRIVATE_CHAT) : true);

$createParams->setDuration((int)$presetsData->getData(General::GROUP_NAME, General::DURATION));
$createParams->setMaxParticipants((int)$presetsData->getData(General::GROUP_NAME, General::MAXIMUM_PARTICIPANTS));
$createParams->setWelcomeMessage((string)$presetsData->getData(General::GROUP_NAME, General::WELCOME));

// $createParams->setOpenForEveryone($presetData->getData(General::GROUP_NAME, General::OPEN_FOR_EVERYONE));
// anyone_can_start,open_for_everyone,logged_in_users_only

Expand Down
3 changes: 3 additions & 0 deletions bbbeasy-frontend/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ import PresetsService from 'services/presets.service';

import { UserContext } from './lib/UserContext';
import { DataContext } from 'lib/RoomsContext';
import { SettingsProvider } from 'lib/SettingsContext';

import { RoomType } from 'types/RoomType';
import { LabelType } from 'types/LabelType';
Expand Down Expand Up @@ -175,6 +176,7 @@ const App: React.FC<IProps> = ({ routes, isSider, logs }) => {
>
<UserContext.Provider value={userProvider}>
<DataContext.Provider value={dataProvider}>
<SettingsProvider>
{isLogged && isSider && <AppSider presets={dataPresets} />}
<Layout className="page-layout-body">
<AppHeader />
Expand All @@ -183,6 +185,7 @@ const App: React.FC<IProps> = ({ routes, isSider, logs }) => {
</Content>
<AppFooter />
</Layout>
</SettingsProvider>
</DataContext.Provider>
</UserContext.Provider>
</ConfigProvider>
Expand Down
12 changes: 7 additions & 5 deletions bbbeasy-frontend/src/components/Branding.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ import AuthService from '../services/auth.service';
import { UploadFile } from 'antd/lib/upload/interface';
import { SettingsType } from '../types/SettingsType';
import { ThemeType } from '../types/ThemeType';
import {useSettings} from "../lib/SettingsContext";

type formType = {
company_name: string;
Expand All @@ -58,6 +59,7 @@ const Branding = () => {
const [wireframeStyle, setWireframeStyle] = React.useState<boolean>(false);
const [file, setFile] = React.useState<UploadFile>(null);
const [fileList, setFileList] = React.useState<UploadFile[]>(null);
const { setting, setSetting } = useSettings();

const setSettings = (settings: SettingsType) => {
setBrandColor(settings.brand_color);
Expand Down Expand Up @@ -89,7 +91,6 @@ const Branding = () => {
};
setFileList([settingLogo]);
setFile(settingLogo);
console.log(settingLogo);
}
setIsLoading(false);
};
Expand All @@ -101,6 +102,7 @@ const Branding = () => {
if (settings) {
setData(settings);
setSettings(settings);
setSetting(settings);
}
})
.catch((error) => {
Expand All @@ -111,6 +113,7 @@ const Branding = () => {
setActions(settingsActions);
}, []);


const onFinish = () => {
const settingsData: formType = settingsForm.getFieldsValue(true);

Expand Down Expand Up @@ -154,21 +157,20 @@ const Branding = () => {
//edit settings
SettingsService.edit_settings(settingsData)
.then((response) => {
console.log(response);

const newData: SettingsType = response.data.settings;

if (!CompareRecords(data, newData)) {
Notifications.openNotificationWithIcon('success', t('edit_settings_success'));
setSettings(newData);
Notifications.openNotificationWithIcon('success', t('edit_settings_success'));
setSetting(newData);
} else {
Notifications.openNotificationWithIcon('info', t('no_changes'));
}
})
.catch((error) => {
console.log(error);
});
};
};

return (
<Row justify="center" className="branding-row">
Expand Down
9 changes: 7 additions & 2 deletions bbbeasy-frontend/src/components/layout/AppFooter.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,18 +19,23 @@
import React from 'react';
import { Button, Layout, Typography } from 'antd';
import { Trans, withTranslation } from 'react-i18next';
import {useSettings} from "../../lib/SettingsContext";

const { Footer } = Layout;
const { Text } = Typography;


const AppFooter = () => {
const { setting } = useSettings();
return (
<Footer className="site-footer">
<Text type="secondary">
©2022 <Button type="link">RIADVICE</Button> <Trans i18nKey="reserved-rights" />
©2022 <Button type="link" href={setting.company_website}>{setting.company_name}</Button> <Trans i18nKey="reserved-rights" />
</Text>
<Text type="secondary">
<Trans i18nKey="term" /> & <Trans i18nKey="conditions" /> | <Trans i18nKey="privacy-policy" />
<a href={setting.terms_use} target="_blank" rel="noreferrer"><Trans
i18nKey="term"/> & <Trans i18nKey="conditions"/> </a>|
<a href={setting.privacy_policy} target="_blank" rel="noreferrer"><Trans i18nKey="privacy-policy" /></a>
</Text>
</Footer>
);
Expand Down
34 changes: 34 additions & 0 deletions bbbeasy-frontend/src/lib/SettingsContext.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import React, { createContext, useState, useContext, useEffect } from 'react';
import SettingsService from '../services/settings.service';

const SettingsContext = createContext<any>(null);

export const SettingsProvider = ({ children }: { children: React.ReactNode }) => {
const [setting, setSetting] = useState({
privacy_policy: '',
terms_use: '',
company_name: '',
company_website: '',
});

// Fetch initial settings
useEffect(() => {
SettingsService.collect_settings()
.then((response) => setSetting(response.data))
.catch((error) => console.error('Error fetching settings:', error));
}, []);

return (
<SettingsContext.Provider value={{ setting, setSetting }}>
{children}
</SettingsContext.Provider>
);
};

export const useSettings = () => {
const context = useContext(SettingsContext);
if (!context) {
throw new Error('useSettings must be used within a SettingsProvider');
}
return context;
};