@@ -22,8 +22,9 @@ angular.module('mm.addons.messages')
2222 * @name mmaMessagesDiscussionsCtrl
2323 */
2424. controller ( 'mmaMessagesDiscussionsCtrl' , function ( $scope , $mmUtil , $mmaMessages , $rootScope , $mmEvents , $mmSite , $ionicPlatform ,
25- mmCoreSplitViewLoad , mmaMessagesNewMessageEvent , $mmAddonManager , mmaMessagesReadChangedEvent ) {
26- var newMessagesObserver , readChangedObserver ,
25+ mmCoreSplitViewLoad , mmaMessagesNewMessageEvent , $mmAddonManager , mmaMessagesReadChangedEvent ,
26+ mmaMessagesReadCronEvent ) {
27+ var newMessagesObserver , readChangedObserver , cronObserver ,
2728 siteId = $mmSite . getId ( ) ,
2829 discussions ,
2930 $mmPushNotificationsDelegate = $mmAddonManager . get ( '$mmPushNotificationsDelegate' ) ,
@@ -43,11 +44,7 @@ angular.module('mm.addons.messages')
4344 } ) ;
4445 $scope . discussions = discussionsSorted ;
4546 } , function ( error ) {
46- if ( typeof error === 'string' ) {
47- $mmUtil . showErrorModal ( error ) ;
48- } else {
49- $mmUtil . showErrorModal ( 'mma.messages.errorwhileretrievingdiscussions' , true ) ;
50- }
47+ $mmUtil . showErrorModalDefault ( error , 'mma.messages.errorwhileretrievingdiscussions' , true ) ;
5148 } ) . finally ( function ( ) {
5249 $scope . loaded = true ;
5350 } ) ;
@@ -61,6 +58,8 @@ angular.module('mm.addons.messages')
6158
6259 $scope . refresh = function ( ) {
6360 refreshData ( ) . finally ( function ( ) {
61+ // Triggering without userid will avoid loops. This trigger will only update the side menu.
62+ $mmEvents . trigger ( mmaMessagesReadChangedEvent , { siteid : siteId } ) ;
6463 $scope . $broadcast ( 'scroll.refreshComplete' ) ;
6564 } ) ;
6665 } ;
@@ -105,6 +104,12 @@ angular.module('mm.addons.messages')
105104 }
106105 } ) ;
107106
107+ cronObserver = $mmEvents . on ( mmaMessagesReadCronEvent , function ( data ) {
108+ if ( data && ( data . siteid == siteId || ! data . siteid ) ) {
109+ refreshData ( ) ;
110+ }
111+ } ) ;
112+
108113 // If a message push notification is received, refresh the view.
109114 if ( $mmPushNotificationsDelegate ) {
110115 $mmPushNotificationsDelegate . registerReceiveHandler ( 'mmaMessages:discussions' , function ( notification ) {
@@ -127,6 +132,7 @@ angular.module('mm.addons.messages')
127132 $scope . $on ( '$destroy' , function ( ) {
128133 newMessagesObserver && newMessagesObserver . off && newMessagesObserver . off ( ) ;
129134 readChangedObserver && readChangedObserver . off && readChangedObserver . off ( ) ;
135+ cronObserver && cronObserver . off && cronObserver . off ( ) ;
130136
131137 if ( $mmPushNotificationsDelegate ) {
132138 $mmPushNotificationsDelegate . unregisterReceiveHandler ( 'mmaMessages:discussions' ) ;
0 commit comments