Refactor start/endComputation into lazyRedraw method

This commit is contained in:
Toby Zerner 2015-08-31 12:04:51 +09:30
parent 9f28b4e8dc
commit 0474f410a4
5 changed files with 14 additions and 16 deletions

View File

@ -179,12 +179,7 @@ export default class DiscussionList extends Component {
this.loading = false;
this.moreResults = !!results.payload.links.next;
// Since this may be called during the component's constructor, i.e. in the
// middle of a redraw, forcing another redraw would not bode well. Instead
// we start/end a computation so Mithril will only redraw if it isn't
// already doing so.
m.startComputation();
m.endComputation();
m.lazyRedraw();
return results;
}

View File

@ -149,12 +149,7 @@ export default class DiscussionPage extends mixin(Component, evented) {
.then(this.init.bind(this));
}
// Since this may be called during the component's constructor, i.e. in the
// middle of a redraw, forcing another redraw would not bode well. Instead
// we start/end a computation so Mithril will only redraw if it isn't
// already doing so.
m.startComputation();
m.endComputation();
m.lazyRedraw();
}
/**

View File

@ -95,9 +95,7 @@ export default class PostsUserPage extends UserPage {
this.loading = true;
this.posts = [];
// Redraw, but only if we're not in the middle of a route change.
m.startComputation();
m.endComputation();
m.lazyRedraw();
this.loadResults().then(this.parseResults.bind(this));
}

View File

@ -81,7 +81,7 @@ export default class ModalManager extends Component {
clear() {
this.component = null;
m.redraw();
m.lazyRedraw();
}
/**

View File

@ -13,5 +13,15 @@ export default function patchMithril(global) {
Object.keys(mo).forEach(key => m[key] = mo[key]);
/**
* Redraw only if not in the middle of a computation (e.g. a route change).
*
* @return {void}
*/
m.lazyRedraw = function() {
m.startComputation();
m.endComputation();
};
global.m = m;
}