This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/app/assets/javascripts/discourse/components/topic-footer-mobile-dropdown.js.es6

68 lines
1.9 KiB
JavaScript

import { iconHTML } from 'discourse/helpers/fa-icon';
import Combobox from 'discourse/components/combo-box';
import { on, observes } from 'ember-addons/ember-computed-decorators';
export default Combobox.extend({
none: "topic.controls",
@on('init')
_createContent() {
const content = [];
const topic = this.get('topic');
const details = topic.get('details');
if (details.get('can_invite_to')) {
content.push({ id: 'invite', icon: 'users', name: I18n.t('topic.invite_reply.title') });
}
if (topic.get('bookmarked')) {
content.push({ id: 'bookmark', icon: 'bookmark', name: I18n.t('bookmarked.clear_bookmarks') });
} else {
content.push({ id: 'bookmark', icon: 'bookmark', name: I18n.t('bookmarked.title') });
}
content.push({ id: 'share', icon: 'link', name: I18n.t('topic.share.title') });
if (details.get('can_flag_topic')) {
content.push({ id: 'flag', icon: 'flag', name: I18n.t('topic.flag_topic.title') });
}
this.comboTemplate = (item) => {
const contentItem = content.findProperty('id', item.id);
if (!contentItem) { return item.text; }
return `${iconHTML(contentItem.icon)}  ${item.text}`;
};
this.set('content', content);
},
@observes('value')
_valueChanged() {
const value = this.get('value');
const controller = this.get('parentView.controller');
const topic = this.get('topic');
const refresh = () => {
this._createContent();
this.set('value', null);
};
switch(value) {
case 'invite':
controller.send('showInvite');
refresh();
break;
case 'bookmark':
topic.toggleBookmark().then(() => refresh());
break;
case 'share':
this.appEvents.trigger('share:url', topic.get('shareUrl'), $('#topic-footer-buttons'));
refresh();
break;
case 'flag':
controller.send('showFlagTopic', topic);
refresh();
break;
}
}
});