diff options
-rw-r--r-- | lib/Chat/Parser/SystemMessage.php | 48 | ||||
-rw-r--r-- | lib/Chat/SystemMessage/Listener.php | 11 | ||||
-rw-r--r-- | lib/Notification/Listener.php | 9 | ||||
-rw-r--r-- | lib/Room.php | 3 | ||||
-rw-r--r-- | src/utils/webrtc/simplewebrtc/localmedia.js | 2 |
5 files changed, 66 insertions, 7 deletions
diff --git a/lib/Chat/Parser/SystemMessage.php b/lib/Chat/Parser/SystemMessage.php index 222ac8d9c..090374355 100644 --- a/lib/Chat/Parser/SystemMessage.php +++ b/lib/Chat/Parser/SystemMessage.php @@ -98,16 +98,22 @@ class SystemMessage { $currentUserIsActor = $parsedParameters['actor']['type'] === 'guest' && sha1($participant->getSessionId()) === $parsedParameters['actor']['id']; } + $cliIsActor = $parsedParameters['actor']['type'] === 'guest' && + 'guest/cli' === $parsedParameters['actor']['id']; if ($message === 'conversation_created') { $parsedMessage = $this->l->t('{actor} created the conversation'); if ($currentUserIsActor) { $parsedMessage = $this->l->t('You created the conversation'); + } elseif ($cliIsActor) { + $parsedMessage = $this->l->t('An administrator created the conversation'); } } elseif ($message === 'conversation_renamed') { $parsedMessage = $this->l->t('{actor} renamed the conversation from "%1$s" to "%2$s"', [$parameters['oldName'], $parameters['newName']]); if ($currentUserIsActor) { $parsedMessage = $this->l->t('You renamed the conversation from "%1$s" to "%2$s"', [$parameters['oldName'], $parameters['newName']]); + } elseif ($cliIsActor) { + $parsedMessage = $this->l->t('An administrator renamed the conversation from "%1$s" to "%2$s"', [$parameters['oldName'], $parameters['newName']]); } } elseif ($message === 'call_started') { $parsedMessage = $this->l->t('{actor} started a call'); @@ -130,11 +136,15 @@ class SystemMessage { $parsedMessage = $this->l->t('{actor} unlocked the conversation'); if ($currentUserIsActor) { $parsedMessage = $this->l->t('You unlocked the conversation'); + } elseif ($cliIsActor) { + $parsedMessage = $this->l->t('An administrator unlocked the conversation'); } } elseif ($message === 'read_only') { $parsedMessage = $this->l->t('{actor} locked the conversation'); if ($currentUserIsActor) { $parsedMessage = $this->l->t('You locked the conversation'); + } elseif ($cliIsActor) { + $parsedMessage = $this->l->t('An administrator locked the conversation'); } } elseif ($message === 'lobby_timer_reached') { $parsedMessage = $this->l->t('The conversation is now open to everyone'); @@ -152,21 +162,29 @@ class SystemMessage { $parsedMessage = $this->l->t('{actor} allowed guests'); if ($currentUserIsActor) { $parsedMessage = $this->l->t('You allowed guests'); + } elseif ($cliIsActor) { + $parsedMessage = $this->l->t('An administrator allowed guests'); } } elseif ($message === 'guests_disallowed') { $parsedMessage = $this->l->t('{actor} disallowed guests'); if ($currentUserIsActor) { $parsedMessage = $this->l->t('You disallowed guests'); + } elseif ($cliIsActor) { + $parsedMessage = $this->l->t('An administrator disallowed guests'); } } elseif ($message === 'password_set') { $parsedMessage = $this->l->t('{actor} set a password'); if ($currentUserIsActor) { $parsedMessage = $this->l->t('You set a password'); + } elseif ($cliIsActor) { + $parsedMessage = $this->l->t('An administrator set a password'); } } elseif ($message === 'password_removed') { $parsedMessage = $this->l->t('{actor} removed the password'); if ($currentUserIsActor) { $parsedMessage = $this->l->t('You removed the password'); + } elseif ($cliIsActor) { + $parsedMessage = $this->l->t('An administrator removed the password'); } } elseif ($message === 'user_added') { $parsedParameters['user'] = $this->getUser($parameters['user']); @@ -181,6 +199,11 @@ class SystemMessage { $parsedMessage = $this->l->t('You added {user}'); } elseif (!$participant->isGuest() && $participant->getUser() === $parsedParameters['user']['id']) { $parsedMessage = $this->l->t('{actor} added you'); + if ($cliIsActor) { + $parsedMessage = $this->l->t('An administrator added you'); + } + } elseif ($cliIsActor) { + $parsedMessage = $this->l->t('An administrator added {user}'); } } elseif ($message === 'user_removed') { $parsedParameters['user'] = $this->getUser($parameters['user']); @@ -196,6 +219,11 @@ class SystemMessage { $parsedMessage = $this->l->t('You removed {user}'); } elseif (!$participant->isGuest() && $participant->getUser() === $parsedParameters['user']['id']) { $parsedMessage = $this->l->t('{actor} removed you'); + if ($cliIsActor) { + $parsedMessage = $this->l->t('An administrator removed you'); + } + } elseif ($cliIsActor) { + $parsedMessage = $this->l->t('An administrator removed {user}'); } } } elseif ($message === 'moderator_promoted') { @@ -205,6 +233,11 @@ class SystemMessage { $parsedMessage = $this->l->t('You promoted {user} to moderator'); } elseif (!$participant->isGuest() && $participant->getUser() === $parsedParameters['user']['id']) { $parsedMessage = $this->l->t('{actor} promoted you to moderator'); + if ($cliIsActor) { + $parsedMessage = $this->l->t('An administrator promoted you to moderator'); + } + } elseif ($cliIsActor) { + $parsedMessage = $this->l->t('An administrator promoted {user} to moderator'); } } elseif ($message === 'moderator_demoted') { $parsedParameters['user'] = $this->getUser($parameters['user']); @@ -213,6 +246,11 @@ class SystemMessage { $parsedMessage = $this->l->t('You demoted {user} from moderator'); } elseif (!$participant->isGuest() && $participant->getUser() === $parsedParameters['user']['id']) { $parsedMessage = $this->l->t('{actor} demoted you from moderator'); + if ($cliIsActor) { + $parsedMessage = $this->l->t('An administrator demoted you from moderator'); + } + } elseif ($cliIsActor) { + $parsedMessage = $this->l->t('An administrator demoted {user} from moderator'); } } elseif ($message === 'guest_moderator_promoted') { $parsedParameters['user'] = $this->getGuest($parameters['session']); @@ -221,6 +259,11 @@ class SystemMessage { $parsedMessage = $this->l->t('You promoted {user} to moderator'); } elseif ($participant->isGuest() && $participant->getSessionId() === $parsedParameters['user']['id']) { $parsedMessage = $this->l->t('{actor} promoted you to moderator'); + if ($cliIsActor) { + $parsedMessage = $this->l->t('An administrator promoted you to moderator'); + } + } elseif ($cliIsActor) { + $parsedMessage = $this->l->t('An administrator promoted {user} to moderator'); } } elseif ($message === 'guest_moderator_demoted') { $parsedParameters['user'] = $this->getGuest($parameters['session']); @@ -229,6 +272,11 @@ class SystemMessage { $parsedMessage = $this->l->t('You demoted {user} from moderator'); } elseif ($participant->isGuest() && $participant->getSessionId() === $parsedParameters['user']['id']) { $parsedMessage = $this->l->t('{actor} demoted you from moderator'); + if ($cliIsActor) { + $parsedMessage = $this->l->t('An administrator demoted you from moderator'); + } + } elseif ($cliIsActor) { + $parsedMessage = $this->l->t('An administrator demoted {user} from moderator'); } } elseif ($message === 'file_shared') { try { diff --git a/lib/Chat/SystemMessage/Listener.php b/lib/Chat/SystemMessage/Listener.php index de0ecc480..a71e4fff2 100644 --- a/lib/Chat/SystemMessage/Listener.php +++ b/lib/Chat/SystemMessage/Listener.php @@ -253,13 +253,16 @@ class Listener { $actorId = $participant->isGuest() ? $sessionHash : $participant->getUser(); } else { $user = $this->userSession->getUser(); - if (!$user instanceof IUser) { + if ($user instanceof IUser) { + $actorType = 'users'; + $actorId = $user->getUID(); + } elseif (\OC::$CLI) { + $actorType = 'guests'; + $actorId = 'cli'; + } else { $actorType = 'guests'; $sessionId = $this->talkSession->getSessionForRoom($room->getToken()); $actorId = $sessionId ? sha1($sessionId) : 'failed-to-get-session'; - } else { - $actorType = 'users'; - $actorId = $user->getUID(); } } diff --git a/lib/Notification/Listener.php b/lib/Notification/Listener.php index 765a35f3c..ec832633d 100644 --- a/lib/Notification/Listener.php +++ b/lib/Notification/Listener.php @@ -28,7 +28,9 @@ use OCA\Talk\Events\JoinRoomUserEvent; use OCA\Talk\Events\RoomEvent; use OCA\Talk\Room; use OCP\AppFramework\Utility\ITimeFactory; +use OCP\EventDispatcher\Event; use OCP\EventDispatcher\IEventDispatcher; +use OCP\Notification\IApp; use OCP\Notification\IManager; use OCP\ILogger; use OCP\IUser; @@ -38,6 +40,8 @@ class Listener { /** @var IManager */ protected $notificationManager; + /** @var IEventDispatcher */ + protected $dispatcher; /** @var IUserSession */ protected $userSession; /** @var ITimeFactory */ @@ -49,10 +53,12 @@ class Listener { protected $shouldSendCallNotification = false; public function __construct(IManager $notificationManager, + IEventDispatcher $dispatcher, IUserSession $userSession, ITimeFactory $timeFactory, ILogger $logger) { $this->notificationManager = $notificationManager; + $this->dispatcher = $dispatcher; $this->userSession = $userSession; $this->timeFactory = $timeFactory; $this->logger = $logger; @@ -200,6 +206,7 @@ class Listener { $actor = $this->userSession->getUser(); $actorId = $actor instanceof IUser ? $actor->getUID() :''; + $this->dispatcher->dispatch(IApp::class . '::defer', new Event()); $notification = $this->notificationManager->createNotification(); $dateTime = $this->timeFactory->getDateTime(); try { @@ -217,6 +224,7 @@ class Listener { ->setDateTime($dateTime); } catch (\InvalidArgumentException $e) { $this->logger->logException($e, ['app' => 'spreed']); + $this->dispatcher->dispatch(IApp::class . '::flush', new Event()); return; } @@ -233,6 +241,7 @@ class Listener { $this->logger->logException($e, ['app' => 'spreed']); } } + $this->dispatcher->dispatch(IApp::class . '::flush', new Event()); } /** diff --git a/lib/Room.php b/lib/Room.php index d3e9795af..9924241af 100644 --- a/lib/Room.php +++ b/lib/Room.php @@ -1319,8 +1319,7 @@ class Room { $query = $this->db->getQueryBuilder(); $query->update('talk_participants') ->set('last_ping', $query->createNamedParameter($timestamp, IQueryBuilder::PARAM_INT)) - ->where($query->expr()->eq('room_id', $query->createNamedParameter($this->getId(), IQueryBuilder::PARAM_INT))) - ->andWhere($query->expr()->in('session_id', $query->createNamedParameter($sessionIds, IQueryBuilder::PARAM_STR_ARRAY))); + ->where($query->expr()->in('session_id', $query->createNamedParameter($sessionIds, IQueryBuilder::PARAM_STR_ARRAY))); $query->execute(); } diff --git a/src/utils/webrtc/simplewebrtc/localmedia.js b/src/utils/webrtc/simplewebrtc/localmedia.js index d0f76c46c..876c302f5 100644 --- a/src/utils/webrtc/simplewebrtc/localmedia.js +++ b/src/utils/webrtc/simplewebrtc/localmedia.js @@ -134,7 +134,7 @@ LocalMedia.prototype.start = function(mediaConstraints, cb) { }).catch(function(err) { // Fallback for users without a camera or with a camera that can not be // accessed. - if (self.config.audioFallback && (err.name === 'NotFoundError' || err.name === 'NotReadableError') && constraints.video !== false) { + if (self.config.audioFallback && constraints.video !== false) { constraints.video = false self.start(constraints, cb) return |