From 942d39a37ae19a84793396f82a39f888e655fbc9 Mon Sep 17 00:00:00 2001 From: Franz Liedke Date: Fri, 26 Jun 2020 14:44:08 +0200 Subject: [PATCH] Fix extension to work with latest state changes Refs flarum/core#2150, flarum/core#2151, flarum/core#2156. --- .../tags/js/src/forum/addTagComposer.js | 2 +- extensions/tags/js/src/forum/addTagFilter.js | 20 +++++++++---------- extensions/tags/js/src/forum/addTagList.js | 4 ++-- .../forum/components/TagDiscussionModal.js | 4 ++-- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/extensions/tags/js/src/forum/addTagComposer.js b/extensions/tags/js/src/forum/addTagComposer.js index bc7fbaa61..eb727ac61 100644 --- a/extensions/tags/js/src/forum/addTagComposer.js +++ b/extensions/tags/js/src/forum/addTagComposer.js @@ -7,7 +7,7 @@ import tagsLabel from '../common/helpers/tagsLabel'; export default function() { extend(IndexPage.prototype, 'newDiscussionAction', function(promise) { - const tag = app.store.getBy('tags', 'slug', this.params().tags); + const tag = app.store.getBy('tags', 'slug', app.search.params().tags); if (tag) { const parent = tag.parent(); diff --git a/extensions/tags/js/src/forum/addTagFilter.js b/extensions/tags/js/src/forum/addTagFilter.js index b141e841d..786cd8b9b 100644 --- a/extensions/tags/js/src/forum/addTagFilter.js +++ b/extensions/tags/js/src/forum/addTagFilter.js @@ -1,12 +1,13 @@ import { extend, override } from 'flarum/extend'; import IndexPage from 'flarum/components/IndexPage'; -import DiscussionList from 'flarum/components/DiscussionList'; +import DiscussionListState from 'flarum/states/DiscussionListState'; +import GlobalSearchState from 'flarum/states/GlobalSearchState'; import TagHero from './components/TagHero'; export default function() { IndexPage.prototype.currentTag = function() { - const slug = this.params().tags; + const slug = app.search.params().tags; if (slug) return app.store.getBy('tags', 'slug', slug); }; @@ -46,25 +47,24 @@ export default function() { if (color) { items.get('newDiscussion').props.style = {backgroundColor: color}; } - + items.get('newDiscussion').props.disabled = !canStartDiscussion; items.get('newDiscussion').props.children = app.translator.trans(canStartDiscussion ? 'core.forum.index.start_discussion_button' : 'core.forum.index.cannot_start_discussion_button'); - } }); - // Add a parameter for the IndexPage to pass on to the DiscussionList that - // will let us filter discussions by tag. - extend(IndexPage.prototype, 'params', function(params) { + // Add a parameter for the global search state to pass on to the + // DiscussionListState that will let us filter discussions by tag. + extend(GlobalSearchState.prototype, 'params', function(params) { params.tags = m.route.param('tags'); }); // Translate that parameter into a gambit appended to the search query. - extend(DiscussionList.prototype, 'requestParams', function(params) { + extend(DiscussionListState.prototype, 'requestParams', function(params) { params.include.push('tags'); - if (this.props.params.tags) { - params.filter.q = (params.filter.q || '') + ' tag:' + this.props.params.tags; + if (this.params.tags) { + params.filter.q = (params.filter.q || '') + ' tag:' + this.params.tags; } }); } diff --git a/extensions/tags/js/src/forum/addTagList.js b/extensions/tags/js/src/forum/addTagList.js index 82d1b1f61..b5c474c7d 100644 --- a/extensions/tags/js/src/forum/addTagList.js +++ b/extensions/tags/js/src/forum/addTagList.js @@ -17,11 +17,11 @@ export default function() { href: app.route('tags') }), -10); - if (app.current instanceof TagsPage) return; + if (app.current.matches(TagsPage)) return; items.add('separator', Separator.component(), -12); - const params = this.stickyParams(); + const params = app.search.stickyParams(); const tags = app.store.all('tags'); const currentTag = this.currentTag(); diff --git a/extensions/tags/js/src/forum/components/TagDiscussionModal.js b/extensions/tags/js/src/forum/components/TagDiscussionModal.js index 321d68115..12574a81d 100644 --- a/extensions/tags/js/src/forum/components/TagDiscussionModal.js +++ b/extensions/tags/js/src/forum/components/TagDiscussionModal.js @@ -310,8 +310,8 @@ export default class TagDiscussionModal extends Modal { if (discussion) { discussion.save({relationships: {tags}}) .then(() => { - if (app.current instanceof DiscussionPage) { - app.current.stream.update(); + if (app.current.matches(DiscussionPage)) { + app.current.get('stream').update(); } m.redraw(); });