39
39
use OCP \L10N \IFactory ;
40
40
use OCP \Notification \IManager as INotificationManager ;
41
41
use OCP \Notification \INotification ;
42
+ use OCP \UserStatus \IManager as IUserStatusManager ;
43
+ use OCP \UserStatus \IUserStatus ;
42
44
use Symfony \Component \Console \Output \OutputInterface ;
43
45
44
46
class Push {
@@ -58,6 +60,8 @@ class Push {
58
60
protected $ clientService ;
59
61
/** @var ICache */
60
62
protected $ cache ;
63
+ /** @var IUserStatusManager */
64
+ protected $ userStatusManager ;
61
65
/** @var IFactory */
62
66
protected $ l10nFactory ;
63
67
/** @var ILogger */
@@ -77,6 +81,7 @@ public function __construct(IDBConnection $connection,
77
81
IUserManager $ userManager ,
78
82
IClientService $ clientService ,
79
83
ICacheFactory $ cacheFactory ,
84
+ IUserStatusManager $ userStatusManager ,
80
85
IFactory $ l10nFactory ,
81
86
ILogger $ log ) {
82
87
$ this ->db = $ connection ;
@@ -87,6 +92,7 @@ public function __construct(IDBConnection $connection,
87
92
$ this ->userManager = $ userManager ;
88
93
$ this ->clientService = $ clientService ;
89
94
$ this ->cache = $ cacheFactory ->createDistributed ('pushtokens ' );
95
+ $ this ->userStatusManager = $ userStatusManager ;
90
96
$ this ->l10nFactory = $ l10nFactory ;
91
97
$ this ->log = $ log ;
92
98
}
@@ -124,6 +130,18 @@ public function pushToDevice(int $id, INotification $notification, ?OutputInterf
124
130
return ;
125
131
}
126
132
133
+ $ userStatus = $ this ->userStatusManager ->getUserStatuses ([
134
+ $ notification ->getUser (),
135
+ ]);
136
+
137
+ if (isset ($ userStatus [$ notification ->getUser ()])) {
138
+ $ userStatus = $ userStatus [$ notification ->getUser ()];
139
+ if ($ userStatus ->getStatus () === IUserStatus::DND ) {
140
+ $ this ->printInfo ('User status is set to DND ' );
141
+ return ;
142
+ }
143
+ }
144
+
127
145
$ devices = $ this ->getDevicesForUser ($ notification ->getUser ());
128
146
if (empty ($ devices )) {
129
147
$ this ->printInfo ('No devices found for user ' );
0 commit comments