From df74cc4a96a8103d1397bcfc76fce2e832df2228 Mon Sep 17 00:00:00 2001 From: Alexander Skvortsov <38059171+askvortsov1@users.noreply.github.com> Date: Wed, 23 Sep 2020 22:48:20 -0400 Subject: [PATCH] Mithril 2 Update (#29) Update for Mithril 2 --- .../flags/js/src/forum/addFlagsToPosts.js | 22 +++++++-------- .../flags/js/src/forum/components/FlagList.js | 12 ++++---- .../js/src/forum/components/FlagPostModal.js | 28 ++++++++++--------- .../js/src/forum/components/FlagsDropdown.js | 14 +++++----- .../js/src/forum/components/FlagsPage.js | 4 +-- extensions/flags/js/src/forum/index.js | 2 +- 6 files changed, 42 insertions(+), 40 deletions(-) diff --git a/extensions/flags/js/src/forum/addFlagsToPosts.js b/extensions/flags/js/src/forum/addFlagsToPosts.js index f2e886a87..5a3dde33a 100644 --- a/extensions/flags/js/src/forum/addFlagsToPosts.js +++ b/extensions/flags/js/src/forum/addFlagsToPosts.js @@ -7,14 +7,14 @@ import PostControls from 'flarum/utils/PostControls'; import humanTime from 'flarum/utils/humanTime'; export default function() { - extend(Post.prototype, 'attrs', function(attrs) { - if (this.props.post.flags().length) { + extend(Post.prototype, 'elementAttrs', function(attrs) { + if (this.attrs.post.flags().length) { attrs.className += ' Post--flagged'; } }); - Post.prototype.dismissFlag = function(data) { - const post = this.props.post; + Post.prototype.dismissFlag = function(body) { + const post = this.attrs.post; delete post.data.relationships.flags; @@ -33,7 +33,7 @@ export default function() { if (next) { const nextPost = next.post(); app.flags.index = nextPost; - m.route(app.route.post(nextPost)); + m.route.set(app.route.post(nextPost)); } } @@ -45,21 +45,21 @@ export default function() { return app.request({ url: app.forum.attribute('apiUrl') + post.apiEndpoint() + '/flags', method: 'DELETE', - data + body }); }; Post.prototype.flagActionItems = function() { const items = new ItemList(); - const controls = PostControls.destructiveControls(this.props.post); + const controls = PostControls.destructiveControls(this.attrs.post); Object.keys(controls.items).forEach(k => { - const props = controls.get(k).props; + const attrs = controls.get(k).attrs; - props.className = 'Button'; + attrs.className = 'Button'; - extend(props, 'onclick', () => this.dismissFlag()); + extend(attrs, 'onclick', () => this.dismissFlag()); }); items.add('controls', ( @@ -78,7 +78,7 @@ export default function() { }; extend(Post.prototype, 'content', function(vdom) { - const post = this.props.post; + const post = this.attrs.post; const flags = post.flags(); if (!flags.length) return; diff --git a/extensions/flags/js/src/forum/components/FlagList.js b/extensions/flags/js/src/forum/components/FlagList.js index 2e247fe70..c189367fd 100644 --- a/extensions/flags/js/src/forum/components/FlagList.js +++ b/extensions/flags/js/src/forum/components/FlagList.js @@ -6,8 +6,9 @@ import icon from 'flarum/helpers/icon'; import humanTime from 'flarum/helpers/humanTime'; export default class FlagList extends Component { - init() { - this.state = this.props.state; + oninit(vnode) { + super.oninit(vnode); + this.state = this.attrs.state; } view() { @@ -26,10 +27,9 @@ export default class FlagList extends Component { return (
  • - app.flags.index = post); + { + app.flags.index = post; + e.redraw = false; }}> {avatar(post.user())} {icon('fas fa-flag', {className: 'Notification-icon'})} diff --git a/extensions/flags/js/src/forum/components/FlagPostModal.js b/extensions/flags/js/src/forum/components/FlagPostModal.js index 9588f59ca..8ad9eb714 100644 --- a/extensions/flags/js/src/forum/components/FlagPostModal.js +++ b/extensions/flags/js/src/forum/components/FlagPostModal.js @@ -1,14 +1,16 @@ import Modal from 'flarum/components/Modal'; import Button from 'flarum/components/Button'; +import withAttr from 'flarum/utils/withAttr'; + export default class FlagPostModal extends Modal { - init() { - super.init(); + oninit(vnode) { + super.oninit(vnode); this.success = false; - this.reason = m.prop(''); - this.reasonDetail = m.prop(''); + this.reason = m.stream(''); + this.reasonDetail = m.stream(''); } className() { @@ -43,39 +45,39 @@ export default class FlagPostModal extends Modal {
    : undefined })} {this.reason() === 'inappropriate' ? ( - + ) : ''}
    @@ -105,7 +107,7 @@ export default class FlagPostModal extends Modal { reasonDetail: this.reasonDetail(), relationships: { user: app.session.user, - post: this.props.post + post: this.attrs.post } }, {errorHandler: this.onerror.bind(this)}) .then(() => this.success = true) diff --git a/extensions/flags/js/src/forum/components/FlagsDropdown.js b/extensions/flags/js/src/forum/components/FlagsDropdown.js index 5e7746ca1..3ff93fad5 100644 --- a/extensions/flags/js/src/forum/components/FlagsDropdown.js +++ b/extensions/flags/js/src/forum/components/FlagsDropdown.js @@ -3,23 +3,23 @@ import NotificationsDropdown from 'flarum/components/NotificationsDropdown'; import FlagList from './FlagList'; export default class FlagsDropdown extends NotificationsDropdown { - static initProps(props) { - props.label = props.label || app.translator.trans('flarum-flags.forum.flagged_posts.tooltip'); - props.icon = props.icon || 'fas fa-flag'; + static initAttrs(attrs) { + attrs.label = attrs.label || app.translator.trans('flarum-flags.forum.flagged_posts.tooltip'); + attrs.icon = attrs.icon || 'fas fa-flag'; - super.initProps(props); + super.initAttrs(attrs); } getMenu() { return ( -
    - {this.showing ? FlagList.component({ state: this.props.state }) : ''} +
    + {this.showing ? FlagList.component({ state: this.attrs.state }) : ''}
    ); } goToRoute() { - m.route(app.route('flags')); + m.route.set(app.route('flags')); } getUnreadCount() { diff --git a/extensions/flags/js/src/forum/components/FlagsPage.js b/extensions/flags/js/src/forum/components/FlagsPage.js index 70993041b..8ad044f39 100644 --- a/extensions/flags/js/src/forum/components/FlagsPage.js +++ b/extensions/flags/js/src/forum/components/FlagsPage.js @@ -7,8 +7,8 @@ import FlagList from './FlagList'; * used on mobile devices where the flags dropdown is within the drawer. */ export default class FlagsPage extends Page { - init() { - super.init(); + oninit(vnode) { + super.oninit(vnode); app.history.push('flags'); diff --git a/extensions/flags/js/src/forum/index.js b/extensions/flags/js/src/forum/index.js index fe1641141..b34b38223 100644 --- a/extensions/flags/js/src/forum/index.js +++ b/extensions/flags/js/src/forum/index.js @@ -14,7 +14,7 @@ app.initializers.add('flarum-flags', () => { app.store.models.flags = Flag; - app.routes.flags = { path: '/flags', component: }; + app.routes.flags = { path: '/flags', component: FlagsPage }; app.flags = new FlagListState(app);