MDL-54708 message: add notification popover to nav bar
[moodle.git] / message / amd / src / notification_repository.js
1 // This file is part of Moodle - http://moodle.org/
2 //
3 // Moodle is free software: you can redistribute it and/or modify
4 // it under the terms of the GNU General Public License as published by
5 // the Free Software Foundation, either version 3 of the License, or
6 // (at your option) any later version.
7 //
8 // Moodle is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 // GNU General Public License for more details.
12 //
13 // You should have received a copy of the GNU General Public License
14 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
16 /**
17  * Retrieves notifications from the server.
18  *
19  * @module     message/notification_repository
20  * @class      notification_repository
21  * @package    message
22  * @copyright  2015 Ryan Wyllie <ryan@moodle.com>
23  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24  * @since      3.2
25  */
26 define(['core/ajax', 'core/notification'], function(ajax, notification) {
27     var query = function(args) {
28         if (typeof args.limit === 'undefined') {
29             args.limit = 20;
30         }
32         if (typeof args.offset === 'undefined') {
33             args.offset = 0;
34         }
36         var request = {
37             methodname: 'core_message_get_notifications',
38             args: args
39         };
41         var promise = ajax.call([request])[0];
43         promise.fail(notification.exception);
45         return promise;
46     };
48     var countUnread = function(args) {
49         var request = {
50             methodname: 'core_message_get_unread_notification_count',
51             args: args
52         };
54         var promise = ajax.call([request])[0];
56         promise.fail(notification.exception);
58         return promise;
59     };
61     var markAllAsRead = function(args) {
62         var request = {
63             methodname: 'core_message_mark_all_notifications_as_read',
64             args: args
65         };
67         var promise = ajax.call([request])[0];
69         promise.fail(notification.exception);
71         return promise;
72     };
74     return {
75         query: query,
76         countUnread: countUnread,
77         markAllAsRead: markAllAsRead,
78     };
79 });