diff options
author | Mike Greiling <mike@pixelcog.com> | 2016-11-18 14:52:20 -0600 |
---|---|---|
committer | Mike Greiling <mike@pixelcog.com> | 2016-11-30 17:15:25 -0600 |
commit | d795a70d2da02110fe517dc8d1e79d5986ac2946 (patch) | |
tree | 33c2c25d9d182cde22dbce358ac6fa589e8e9b56 /app/assets/javascripts/subscription.js.es6 | |
parent | 9ce28e7913928f93ed2790c434ad888e751e0257 (diff) | |
download | gitlab-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.es6 | 52 |
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); |