summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/subscription.js.es6
diff options
context:
space:
mode:
authorMike Greiling <mike@pixelcog.com>2016-11-18 14:52:20 -0600
committerMike Greiling <mike@pixelcog.com>2016-11-30 17:15:25 -0600
commitd795a70d2da02110fe517dc8d1e79d5986ac2946 (patch)
tree33c2c25d9d182cde22dbce358ac6fa589e8e9b56 /app/assets/javascripts/subscription.js.es6
parent9ce28e7913928f93ed2790c434ad888e751e0257 (diff)
downloadgitlab-ce-d795a70d2da02110fe517dc8d1e79d5986ac2946.tar.gz
rename subscription.js to subscription.js.es6
Diffstat (limited to 'app/assets/javascripts/subscription.js.es6')
-rw-r--r--app/assets/javascripts/subscription.js.es652
1 files changed, 52 insertions, 0 deletions
diff --git a/app/assets/javascripts/subscription.js.es6 b/app/assets/javascripts/subscription.js.es6
new file mode 100644
index 00000000000..6d75688deeb
--- /dev/null
+++ b/app/assets/javascripts/subscription.js.es6
@@ -0,0 +1,52 @@
+/* eslint-disable func-names, space-before-function-paren, no-var, space-before-blocks, prefer-rest-params, wrap-iife, vars-on-top, no-unused-vars, one-var, one-var-declaration-per-line, camelcase, consistent-return, no-undef, padded-blocks, max-len */
+(function() {
+ var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
+
+ this.Subscription = (function() {
+ function Subscription(container) {
+ this.toggleSubscription = bind(this.toggleSubscription, this);
+ var $container;
+ this.$container = $(container);
+ this.url = this.$container.attr('data-url');
+ this.subscribe_button = this.$container.find('.js-subscribe-button');
+ this.subscription_status = this.$container.find('.subscription-status');
+ this.subscribe_button.unbind('click').click(this.toggleSubscription);
+ }
+
+ Subscription.prototype.toggleSubscription = function(event) {
+ var action, btn, current_status;
+ btn = $(event.currentTarget);
+ action = btn.find('span').text();
+ current_status = this.subscription_status.attr('data-status');
+ btn.addClass('disabled');
+
+ if ($('html').hasClass('issue-boards-page')) {
+ this.url = this.$container.attr('data-url');
+ }
+
+ return $.post(this.url, (function(_this) {
+ return function() {
+ var status;
+ btn.removeClass('disabled');
+
+ if ($('html').hasClass('issue-boards-page')) {
+ Vue.set(gl.issueBoards.BoardsStore.detail.issue, 'subscribed', !gl.issueBoards.BoardsStore.detail.issue.subscribed);
+ } else {
+ status = current_status === 'subscribed' ? 'unsubscribed' : 'subscribed';
+ _this.subscription_status.attr('data-status', status);
+ action = status === 'subscribed' ? 'Unsubscribe' : 'Subscribe';
+ btn.find('span').text(action);
+ _this.subscription_status.find('>div').toggleClass('hidden');
+ if (btn.attr('data-original-title')) {
+ return btn.tooltip('hide').attr('data-original-title', action).tooltip('fixTitle');
+ }
+ }
+ };
+ })(this));
+ };
+
+ return Subscription;
+
+ })();
+
+}).call(this);