Restore notifications to MR widget
This commit is contained in:
parent
8f2af757d3
commit
b172ef2fdc
6 changed files with 53 additions and 43 deletions
|
@ -1,47 +1,42 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, no-var, one-var, one-var-declaration-per-line, consistent-return, prefer-arrow-callback, no-return-assign, object-shorthand, comma-dangle, no-param-reassign, max-len */
|
||||
|
||||
(function() {
|
||||
(function(w) {
|
||||
var notificationGranted, notifyMe, notifyPermissions;
|
||||
notificationGranted = function(message, opts, onclick) {
|
||||
var notification;
|
||||
notification = new Notification(message, opts);
|
||||
setTimeout(function() {
|
||||
return notification.close();
|
||||
// Hide the notification after X amount of seconds
|
||||
}, 8000);
|
||||
if (onclick) {
|
||||
return notification.onclick = onclick;
|
||||
}
|
||||
};
|
||||
notifyPermissions = function() {
|
||||
if ('Notification' in window) {
|
||||
return Notification.requestPermission();
|
||||
}
|
||||
};
|
||||
notifyMe = function(message, body, icon, onclick) {
|
||||
var opts;
|
||||
opts = {
|
||||
body: body,
|
||||
icon: icon
|
||||
};
|
||||
// Let's check if the browser supports notifications
|
||||
if (!('Notification' in window)) {
|
||||
function notificationGranted(message, opts, onclick) {
|
||||
var notification;
|
||||
notification = new Notification(message, opts);
|
||||
setTimeout(function() {
|
||||
// Hide the notification after X amount of seconds
|
||||
return notification.close();
|
||||
}, 8000);
|
||||
|
||||
// do nothing
|
||||
} else if (Notification.permission === 'granted') {
|
||||
// If it's okay let's create a notification
|
||||
return notification.onclick = onclick || notification.close;
|
||||
}
|
||||
|
||||
function notifyPermissions() {
|
||||
if ('Notification' in window) {
|
||||
return Notification.requestPermission();
|
||||
}
|
||||
}
|
||||
|
||||
function notifyMe(message, body, icon, onclick) {
|
||||
var opts;
|
||||
opts = {
|
||||
body: body,
|
||||
icon: icon
|
||||
};
|
||||
// Let's check if the browser supports notifications
|
||||
if (!('Notification' in window)) {
|
||||
// do nothing
|
||||
} else if (Notification.permission === 'granted') {
|
||||
// If it's okay let's create a notification
|
||||
return notificationGranted(message, opts, onclick);
|
||||
} else if (Notification.permission !== 'denied') {
|
||||
return Notification.requestPermission(function(permission) {
|
||||
// If the user accepts, let's create a notification
|
||||
if (permission === 'granted') {
|
||||
return notificationGranted(message, opts, onclick);
|
||||
} else if (Notification.permission !== 'denied') {
|
||||
return Notification.requestPermission(function(permission) {
|
||||
// If the user accepts, let's create a notification
|
||||
if (permission === 'granted') {
|
||||
return notificationGranted(message, opts, onclick);
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
w.notify = notifyMe;
|
||||
return w.notifyPermissions = notifyPermissions;
|
||||
})(window);
|
||||
}).call(window);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export { notifyMe as default, notifyPermissions, notificationGranted };
|
||||
|
|
|
@ -56,7 +56,6 @@ import './lib/utils/animate';
|
|||
import './lib/utils/bootstrap_linked_tabs';
|
||||
import './lib/utils/common_utils';
|
||||
import './lib/utils/datetime_utility';
|
||||
import './lib/utils/notify';
|
||||
import './lib/utils/pretty_time';
|
||||
import './lib/utils/text_utility';
|
||||
import './lib/utils/url_utility';
|
||||
|
|
|
@ -41,3 +41,4 @@ export { default as getStateKey } from './stores/get_state_key';
|
|||
export { default as mrWidgetOptions } from './mr_widget_options';
|
||||
export { default as stateMaps } from './stores/state_maps';
|
||||
export { default as SquashBeforeMerge } from './components/states/mr_widget_squash_before_merge';
|
||||
export { default as notifyMe } from '../lib/utils/notify';
|
||||
|
|
|
@ -29,6 +29,7 @@ import {
|
|||
eventHub,
|
||||
stateMaps,
|
||||
SquashBeforeMerge,
|
||||
notifyMe,
|
||||
} from './dependencies';
|
||||
|
||||
export default {
|
||||
|
@ -77,8 +78,10 @@ export default {
|
|||
this.service.checkStatus()
|
||||
.then(res => res.json())
|
||||
.then((res) => {
|
||||
this.handleNotification(res);
|
||||
this.mr.setData(res);
|
||||
this.setFavicon();
|
||||
|
||||
if (cb) {
|
||||
cb.call(null, res);
|
||||
}
|
||||
|
@ -136,6 +139,15 @@ export default {
|
|||
new Flash('Something went wrong. Please try again.'); // eslint-disable-line
|
||||
});
|
||||
},
|
||||
handleNotification(data) {
|
||||
if (data.ci_status === this.mr.ciStatus) return;
|
||||
|
||||
const label = data.pipeline.details.status.label;
|
||||
const title = `Pipeline ${label}`;
|
||||
const message = `Pipeline ${label} for "${data.title}"`;
|
||||
|
||||
notifyMe(title, message, this.mr.gitlabLogo);
|
||||
},
|
||||
resumePolling() {
|
||||
this.pollingInterval.resume();
|
||||
},
|
||||
|
|
|
@ -5,6 +5,8 @@ export default class MergeRequestStore {
|
|||
|
||||
constructor(data) {
|
||||
this.sha = data.diff_head_sha;
|
||||
this.gitlabLogo = gon.gitlab_logo;
|
||||
|
||||
this.setData(data);
|
||||
}
|
||||
|
||||
|
|
|
@ -13,6 +13,7 @@ module Gitlab
|
|||
gon.sentry_dsn = current_application_settings.clientside_sentry_dsn if current_application_settings.clientside_sentry_enabled
|
||||
gon.gitlab_url = Gitlab.config.gitlab.url
|
||||
gon.revision = Gitlab::REVISION
|
||||
gon.gitlab_logo = ActionController::Base.helpers.asset_path('gitlab_logo.png')
|
||||
|
||||
if current_user
|
||||
gon.current_user_id = current_user.id
|
||||
|
|
Loading…
Reference in a new issue