Merge pull request #14712 from antobinary/merge-25
chore: Merge 2.5.x into 'develop'
This commit is contained in:
commit
6fa921fbae
@ -11,7 +11,7 @@ stages:
|
|||||||
|
|
||||||
# define which docker image to use for builds
|
# define which docker image to use for builds
|
||||||
default:
|
default:
|
||||||
image: gitlab.senfcall.de:5050/senfcall-public/docker-bbb-build:v2022-03-29-bbb-25-meteor-261
|
image: gitlab.senfcall.de:5050/senfcall-public/docker-bbb-build:v2022-03-30
|
||||||
|
|
||||||
# This stage uses git to find out since when each package has been unmodified.
|
# This stage uses git to find out since when each package has been unmodified.
|
||||||
# it then checks an API endpoint on the package server to find out for which of
|
# it then checks an API endpoint on the package server to find out for which of
|
||||||
|
16836
bbb-learning-dashboard/package-lock.json
generated
16836
bbb-learning-dashboard/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
|||||||
import { GroupChatMsg } from '/imports/api/group-chat-msg';
|
import { GroupChatMsg } from '/imports/api/group-chat-msg';
|
||||||
import Logger from '/imports/startup/server/logger';
|
import Logger from '/imports/startup/server/logger';
|
||||||
import addGroupChatMsg from '/imports/api/group-chat-msg/server/modifiers/addGroupChatMsg';
|
import addSystemMsg from '/imports/api/group-chat-msg/server/modifiers/addSystemMsg';
|
||||||
|
|
||||||
export default function clearGroupChatMsg(meetingId, chatId) {
|
export default function clearGroupChatMsg(meetingId, chatId) {
|
||||||
const CHAT_CONFIG = Meteor.settings.public.chat;
|
const CHAT_CONFIG = Meteor.settings.public.chat;
|
||||||
@ -25,7 +25,7 @@ export default function clearGroupChatMsg(meetingId, chatId) {
|
|||||||
},
|
},
|
||||||
message: CHAT_CLEAR_MESSAGE,
|
message: CHAT_CLEAR_MESSAGE,
|
||||||
};
|
};
|
||||||
addGroupChatMsg(meetingId, PUBLIC_GROUP_CHAT_ID, clearMsg);
|
addSystemMsg(meetingId, PUBLIC_GROUP_CHAT_ID, clearMsg);
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
Logger.error(`Error on clearing GroupChat (${meetingId}, ${chatId}). ${err}`);
|
Logger.error(`Error on clearing GroupChat (${meetingId}, ${chatId}). ${err}`);
|
||||||
|
@ -25,6 +25,7 @@ import VideoService from '/imports/ui/components/video-provider/service';
|
|||||||
import DebugWindow from '/imports/ui/components/debug-window/component';
|
import DebugWindow from '/imports/ui/components/debug-window/component';
|
||||||
import { ACTIONS, PANELS } from '../../ui/components/layout/enums';
|
import { ACTIONS, PANELS } from '../../ui/components/layout/enums';
|
||||||
import { isChatEnabled } from '/imports/ui/services/features';
|
import { isChatEnabled } from '/imports/ui/services/features';
|
||||||
|
import MediaService from '/imports/ui/components/media/service';
|
||||||
|
|
||||||
const CHAT_CONFIG = Meteor.settings.public.chat;
|
const CHAT_CONFIG = Meteor.settings.public.chat;
|
||||||
const PUBLIC_CHAT_ID = CHAT_CONFIG.public_id;
|
const PUBLIC_CHAT_ID = CHAT_CONFIG.public_id;
|
||||||
@ -96,6 +97,8 @@ class Base extends Component {
|
|||||||
value: usersVideo.length,
|
value: usersVideo.length,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
MediaService.setSwapLayout(layoutContextDispatch);
|
||||||
|
|
||||||
const {
|
const {
|
||||||
userID: localUserId,
|
userID: localUserId,
|
||||||
} = Auth;
|
} = Auth;
|
||||||
|
@ -21,7 +21,6 @@ import BannerBarContainer from '/imports/ui/components/banner-bar/container';
|
|||||||
import WaitingNotifierContainer from '/imports/ui/components/waiting-users/alert/container';
|
import WaitingNotifierContainer from '/imports/ui/components/waiting-users/alert/container';
|
||||||
import LockNotifier from '/imports/ui/components/lock-viewers/notify/container';
|
import LockNotifier from '/imports/ui/components/lock-viewers/notify/container';
|
||||||
import StatusNotifier from '/imports/ui/components/status-notifier/container';
|
import StatusNotifier from '/imports/ui/components/status-notifier/container';
|
||||||
import MediaService from '/imports/ui/components/media/service';
|
|
||||||
import ManyWebcamsNotifier from '/imports/ui/components/video-provider/many-users-notify/container';
|
import ManyWebcamsNotifier from '/imports/ui/components/video-provider/many-users-notify/container';
|
||||||
import UploaderContainer from '/imports/ui/components/presentation/presentation-uploader/container';
|
import UploaderContainer from '/imports/ui/components/presentation/presentation-uploader/container';
|
||||||
import CaptionsSpeechContainer from '/imports/ui/components/captions/speech/container';
|
import CaptionsSpeechContainer from '/imports/ui/components/captions/speech/container';
|
||||||
@ -173,7 +172,6 @@ class App extends Component {
|
|||||||
value: !hidePresentation,
|
value: !hidePresentation,
|
||||||
});
|
});
|
||||||
|
|
||||||
MediaService.setSwapLayout(layoutContextDispatch);
|
|
||||||
Modal.setAppElement('#app');
|
Modal.setAppElement('#app');
|
||||||
|
|
||||||
const fontSize = isMobile() ? MOBILE_FONT_SIZE : DESKTOP_FONT_SIZE;
|
const fontSize = isMobile() ? MOBILE_FONT_SIZE : DESKTOP_FONT_SIZE;
|
||||||
|
@ -27,7 +27,6 @@ import {
|
|||||||
borderSizeSmall,
|
borderSizeSmall,
|
||||||
toastIconMd,
|
toastIconMd,
|
||||||
toastIconSm,
|
toastIconSm,
|
||||||
smPaddingY,
|
|
||||||
jumboPaddingY,
|
jumboPaddingY,
|
||||||
} from '/imports/ui/stylesheets/styled-components/general';
|
} from '/imports/ui/stylesheets/styled-components/general';
|
||||||
import { smallOnly } from '/imports/ui/stylesheets/styled-components/breakpoints';
|
import { smallOnly } from '/imports/ui/stylesheets/styled-components/breakpoints';
|
||||||
@ -180,7 +179,6 @@ const Toast = styled.div`
|
|||||||
const ToastifyContainer = styled(Toastify)`
|
const ToastifyContainer = styled(Toastify)`
|
||||||
z-index: 9998;
|
z-index: 9998;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
padding: ${smPaddingY};
|
|
||||||
min-width: 20rem !important;
|
min-width: 20rem !important;
|
||||||
max-width: 23rem !important;
|
max-width: 23rem !important;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
|
@ -172,27 +172,14 @@ class Presentation extends PureComponent {
|
|||||||
politeSRAlert(intl.formatMessage(intlMessages.slideContentChanged, { 0: currentSlide.num }));
|
politeSRAlert(intl.formatMessage(intlMessages.slideContentChanged, { 0: currentSlide.num }));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (prevProps?.slidePosition && slidePosition) {
|
if (currentPresentation) {
|
||||||
const { width: prevWidth, height: prevHeight } = prevProps.slidePosition;
|
const downloadableOn = !prevProps?.currentPresentation?.downloadable
|
||||||
const { width: currWidth, height: currHeight } = slidePosition;
|
|
||||||
|
|
||||||
if (prevWidth !== currWidth || prevHeight !== currHeight) {
|
|
||||||
layoutContextDispatch({
|
|
||||||
type: ACTIONS.SET_PRESENTATION_CURRENT_SLIDE_SIZE,
|
|
||||||
value: {
|
|
||||||
width: currWidth,
|
|
||||||
height: currHeight,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
const downloadableOn = !prevProps.currentPresentation.downloadable
|
|
||||||
&& currentPresentation.downloadable;
|
&& currentPresentation.downloadable;
|
||||||
|
|
||||||
const shouldCloseToast = !(currentPresentation.downloadable && !userIsPresenter);
|
const shouldCloseToast = !(currentPresentation.downloadable && !userIsPresenter);
|
||||||
|
|
||||||
if (
|
if (
|
||||||
prevProps.currentPresentation.name !== currentPresentation.name
|
prevProps?.currentPresentation?.name !== currentPresentation.name
|
||||||
|| (downloadableOn && !userIsPresenter)
|
|| (downloadableOn && !userIsPresenter)
|
||||||
) {
|
) {
|
||||||
if (this.currentPresentationToastId) {
|
if (this.currentPresentationToastId) {
|
||||||
@ -209,7 +196,7 @@ class Presentation extends PureComponent {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const downloadableOff = prevProps.currentPresentation.downloadable
|
const downloadableOff = prevProps?.currentPresentation?.downloadable
|
||||||
&& !currentPresentation.downloadable;
|
&& !currentPresentation.downloadable;
|
||||||
|
|
||||||
if (this.currentPresentationToastId && downloadableOff) {
|
if (this.currentPresentationToastId && downloadableOff) {
|
||||||
@ -218,6 +205,21 @@ class Presentation extends PureComponent {
|
|||||||
render: this.renderCurrentPresentationToast(),
|
render: this.renderCurrentPresentationToast(),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (prevProps?.slidePosition && slidePosition) {
|
||||||
|
const { width: prevWidth, height: prevHeight } = prevProps.slidePosition;
|
||||||
|
const { width: currWidth, height: currHeight } = slidePosition;
|
||||||
|
|
||||||
|
if (prevWidth !== currWidth || prevHeight !== currHeight) {
|
||||||
|
layoutContextDispatch({
|
||||||
|
type: ACTIONS.SET_PRESENTATION_CURRENT_SLIDE_SIZE,
|
||||||
|
value: {
|
||||||
|
width: currWidth,
|
||||||
|
height: currHeight,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if (layoutSwapped && restoreOnUpdate && !userIsPresenter && currentSlide) {
|
if (layoutSwapped && restoreOnUpdate && !userIsPresenter && currentSlide) {
|
||||||
const slideChanged = currentSlide.id !== prevProps.currentSlide.id;
|
const slideChanged = currentSlide.id !== prevProps.currentSlide.id;
|
||||||
|
@ -5,6 +5,10 @@ import { GroupChatContext } from '/imports/ui/components/components-data/group-c
|
|||||||
import { UsersContext } from '/imports/ui/components/components-data/users-context/context';
|
import { UsersContext } from '/imports/ui/components/components-data/users-context/context';
|
||||||
import Service from '/imports/ui/components/user-list/service';
|
import Service from '/imports/ui/components/user-list/service';
|
||||||
import Auth from '/imports/ui/services/auth';
|
import Auth from '/imports/ui/services/auth';
|
||||||
|
import { withTracker } from 'meteor/react-meteor-data';
|
||||||
|
import Storage from '/imports/ui/services/storage/session';
|
||||||
|
|
||||||
|
const CLOSED_CHAT_LIST_KEY = 'closedChatList';
|
||||||
|
|
||||||
const UserMessagesContainer = () => {
|
const UserMessagesContainer = () => {
|
||||||
const usingChatContext = useContext(ChatContext);
|
const usingChatContext = useContext(ChatContext);
|
||||||
@ -19,4 +23,10 @@ const UserMessagesContainer = () => {
|
|||||||
return <UserMessages {...{ activeChats, roving }} />;
|
return <UserMessages {...{ activeChats, roving }} />;
|
||||||
};
|
};
|
||||||
|
|
||||||
export default UserMessagesContainer;
|
export default withTracker(() => {
|
||||||
|
// Here just to add reactivity to this component.
|
||||||
|
// We need to rerender this component whenever this
|
||||||
|
// Storage variable changes.
|
||||||
|
Storage.getItem(CLOSED_CHAT_LIST_KEY);
|
||||||
|
return {};
|
||||||
|
})(UserMessagesContainer);
|
||||||
|
@ -143,6 +143,9 @@ const GlobalStyle = createGlobalStyle`
|
|||||||
|
|
||||||
.actionToast {
|
.actionToast {
|
||||||
background-color: ${colorWhite};
|
background-color: ${colorWhite};
|
||||||
|
display: flex;
|
||||||
|
padding: ${smPaddingX};
|
||||||
|
border-radius: ${borderRadius};
|
||||||
|
|
||||||
i.close {
|
i.close {
|
||||||
left: none !important;
|
left: none !important;
|
||||||
|
@ -39,7 +39,6 @@ tar xvfz sounds.tar.gz -C $DESTDIR/opt/freeswitch/share/freeswitch
|
|||||||
#
|
#
|
||||||
# Overwrite "your are now muted"/"you are now unmuted" with short audio sounds. Thanks senfcall.de!
|
# Overwrite "your are now muted"/"you are now unmuted" with short audio sounds. Thanks senfcall.de!
|
||||||
#
|
#
|
||||||
apt-get install -y sox
|
|
||||||
rm -f mute-and-unmute-sounds-master.zip
|
rm -f mute-and-unmute-sounds-master.zip
|
||||||
wget https://gitlab.senfcall.de/senfcall-public/mute-and-unmute-sounds/-/archive/master/mute-and-unmute-sounds-master.zip
|
wget https://gitlab.senfcall.de/senfcall-public/mute-and-unmute-sounds/-/archive/master/mute-and-unmute-sounds-master.zip
|
||||||
rm -rf mute-and-unmute-sounds-master
|
rm -rf mute-and-unmute-sounds-master
|
||||||
|
Loading…
Reference in New Issue
Block a user