diff --git a/bigbluebutton-html5/imports/api/meetings/server/modifiers/addMeeting.js b/bigbluebutton-html5/imports/api/meetings/server/modifiers/addMeeting.js index 0643b59fecb604d73d60b7e85262bae5d7b68a6a..61de2aa4face1583d8cab62e25e98cf924a07e20 100644 --- a/bigbluebutton-html5/imports/api/meetings/server/modifiers/addMeeting.js +++ b/bigbluebutton-html5/imports/api/meetings/server/modifiers/addMeeting.js @@ -5,7 +5,7 @@ import { } from 'meteor/check'; import Meetings from '/imports/api/meetings'; import Logger from '/imports/startup/server/logger'; -import createNote from '/imports/api/note/server/methods/createNote' +import createNote from '/imports/api/note/server/methods/createNote'; export default function addMeeting(meeting) { const meetingId = meeting.meetingProp.intId; @@ -114,6 +114,7 @@ export default function addMeeting(meeting) { $set: Object.assign({ meetingId, meetingEnded, + publishedPoll: false, }, flat(newMeeting, { safe: true, })), diff --git a/bigbluebutton-html5/imports/api/meetings/server/modifiers/setPublishedPoll.js b/bigbluebutton-html5/imports/api/meetings/server/modifiers/setPublishedPoll.js new file mode 100644 index 0000000000000000000000000000000000000000..7bf371914f788c4e5fab82f41d9f9cc134ca29e0 --- /dev/null +++ b/bigbluebutton-html5/imports/api/meetings/server/modifiers/setPublishedPoll.js @@ -0,0 +1,28 @@ +import Meetings from '/imports/api/meetings'; +import Logger from '/imports/startup/server/logger'; +import { check } from 'meteor/check'; + +export default function setPublishedPoll(meetingId, isPublished) { + check(meetingId, String); + check(isPublished, Boolean); + + const selector = { + meetingId, + }; + + const modifier = { + $set: { + publishedPoll: isPublished, + }, + }; + + const cb = (err) => { + if (err != null) { + return Logger.error(`Setting publishedPoll=${isPublished} for meetingId=${meetingId}`); + } + + return Logger.info(`Set publishedPoll=${isPublished} in meeitingId=${meetingId}`); + }; + + return Meetings.upsert(selector, modifier, cb); +} diff --git a/bigbluebutton-html5/imports/api/polls/server/handlers/pollPublished.js b/bigbluebutton-html5/imports/api/polls/server/handlers/pollPublished.js index e68bd916ed0623fa99e9516eb5f9ebc1cce92966..e2f754c76cee6845a77c614878655381f4f2292c 100644 --- a/bigbluebutton-html5/imports/api/polls/server/handlers/pollPublished.js +++ b/bigbluebutton-html5/imports/api/polls/server/handlers/pollPublished.js @@ -1,10 +1,14 @@ import { check } from 'meteor/check'; import removePoll from '../modifiers/removePoll'; +import setPublishedPoll from '../../../meetings/server/modifiers/setPublishedPoll'; export default function pollPublished({ body }, meetingId) { const { pollId } = body; check(meetingId, String); + check(pollId, String); + + setPublishedPoll(meetingId, true); return removePoll(meetingId, pollId); } diff --git a/bigbluebutton-html5/imports/api/polls/server/handlers/pollStarted.js b/bigbluebutton-html5/imports/api/polls/server/handlers/pollStarted.js index a912fc8002fb10a6547a84825878ff52c584834a..013dba40879556eef379ff8ac3534fcebb19e97f 100644 --- a/bigbluebutton-html5/imports/api/polls/server/handlers/pollStarted.js +++ b/bigbluebutton-html5/imports/api/polls/server/handlers/pollStarted.js @@ -1,5 +1,6 @@ import { check } from 'meteor/check'; import addPoll from '../modifiers/addPoll'; +import setPublishedPoll from '../../../meetings/server/modifiers/setPublishedPoll'; export default function pollStarted({ body }, meetingId) { const { userId } = body; @@ -9,5 +10,7 @@ export default function pollStarted({ body }, meetingId) { check(userId, String); check(poll, Object); + setPublishedPoll(meetingId, false); + return addPoll(meetingId, userId, poll); } diff --git a/bigbluebutton-html5/imports/ui/components/app/component.jsx b/bigbluebutton-html5/imports/ui/components/app/component.jsx index c08ac12e4b7f2a8e5054acb65ed64182d4fec52e..df74fa7b1250ae8fa76c05a689a187da11e6ee97 100755 --- a/bigbluebutton-html5/imports/ui/components/app/component.jsx +++ b/bigbluebutton-html5/imports/ui/components/app/component.jsx @@ -48,6 +48,10 @@ const intlMessages = defineMessages({ id: 'app.iOSWarning.label', description: 'message indicating to upgrade ios version', }, + pollPublishedLabel: { + id: 'app.whiteboard.annotations.poll', + description: 'message displayed when a poll is published', + }, }); const propTypes = { @@ -125,6 +129,17 @@ class App extends Component { logger.info({ logCode: 'app_component_componentdidmount' }, 'Client loaded successfully'); } + componentDidUpdate(prevProps, prevState) { + const { hasPublishedPoll, intl, notify } = this.props; + if (!prevProps.hasPublishedPoll && hasPublishedPoll) { + notify( + intl.formatMessage(intlMessages.pollPublishedLabel), + 'info', + 'polling', + ); + } + } + componentWillUnmount() { window.removeEventListener('resize', this.handleWindowResize, false); if (navigator.connection) { diff --git a/bigbluebutton-html5/imports/ui/components/app/container.jsx b/bigbluebutton-html5/imports/ui/components/app/container.jsx index 1403a1959b51285f4c39262d79d066bbd3f469eb..d9a5d308f47307c246ac21faa90cbc7a2231fe05 100755 --- a/bigbluebutton-html5/imports/ui/components/app/container.jsx +++ b/bigbluebutton-html5/imports/ui/components/app/container.jsx @@ -4,10 +4,10 @@ import { defineMessages, injectIntl } from 'react-intl'; import PropTypes from 'prop-types'; import Auth from '/imports/ui/services/auth'; import Users from '/imports/api/users'; +import Meetings from '/imports/api/meetings'; import { notify } from '/imports/ui/services/notification'; import ClosedCaptionsContainer from '/imports/ui/components/closed-captions/container'; import getFromUserSettings from '/imports/ui/services/users-settings'; - import UserInfos from '/imports/api/users-infos'; import { @@ -102,6 +102,7 @@ export default injectIntl(withModalMounter(withTracker(({ intl, baseControls }) UserInfo, notify, validIOSVersion, + hasPublishedPoll: Meetings.findOne({ meetingId: Auth.meetingID }).publishedPoll, }; })(AppContainer))); diff --git a/bigbluebutton-html5/imports/ui/components/whiteboard/annotations/poll/component.jsx b/bigbluebutton-html5/imports/ui/components/whiteboard/annotations/poll/component.jsx index 1efd7d1a1dec41db3323cfe41089e93be3ff6724..88c3875575ecfd58f9b948035f9fa16717445988 100644 --- a/bigbluebutton-html5/imports/ui/components/whiteboard/annotations/poll/component.jsx +++ b/bigbluebutton-html5/imports/ui/components/whiteboard/annotations/poll/component.jsx @@ -543,8 +543,7 @@ class PollDrawComponent extends Component { } return ( <g> - {textArray.map(line => this.renderLine(line)) - } + {textArray.map(line => this.renderLine(line))} <text fontFamily="Arial" fontSize={calcFontSize}