mirror of
https://github.com/flarum/framework.git
synced 2025-01-19 07:42:48 +08:00
Make replyAction into a promise. closes #100
This commit is contained in:
parent
8d7a6985ba
commit
c3c2978fc1
|
@ -88,7 +88,7 @@ export default class DiscussionPage extends mixin(Component, evented) {
|
||||||
this.stream.on('positionChanged', this.positionChanged.bind(this));
|
this.stream.on('positionChanged', this.positionChanged.bind(this));
|
||||||
this.stream.goToNumber(m.route.param('near') || 1, true);
|
this.stream.goToNumber(m.route.param('near') || 1, true);
|
||||||
|
|
||||||
this.trigger('loaded');
|
this.trigger('loaded', discussion);
|
||||||
}
|
}
|
||||||
|
|
||||||
onload(element, isInitialized, context) {
|
onload(element, isInitialized, context) {
|
||||||
|
|
|
@ -60,7 +60,7 @@ export default class LoginModal extends FormModal {
|
||||||
|
|
||||||
app.session.login(email, password).then(() => {
|
app.session.login(email, password).then(() => {
|
||||||
this.hide();
|
this.hide();
|
||||||
this.props.callback && this.props.callback();
|
this.props.onlogin && this.props.onlogin();
|
||||||
}, response => {
|
}, response => {
|
||||||
this.loading(false);
|
this.loading(false);
|
||||||
if (response && response.code === 'confirm_email') {
|
if (response && response.code === 'confirm_email') {
|
||||||
|
|
|
@ -8,25 +8,41 @@ import ItemList from 'flarum/utils/item-list';
|
||||||
|
|
||||||
export default function(app) {
|
export default function(app) {
|
||||||
Discussion.prototype.replyAction = function(goToLast, forceRefresh) {
|
Discussion.prototype.replyAction = function(goToLast, forceRefresh) {
|
||||||
if (app.session.user() && this.canReply()) {
|
var deferred = m.deferred();
|
||||||
if (goToLast && app.current.discussion && app.current.discussion().id() === this.id()) {
|
|
||||||
app.current.stream.goToLast();
|
var reply = () => {
|
||||||
|
if (this.canReply()) {
|
||||||
|
if (goToLast && app.viewingDiscussion(this)) {
|
||||||
|
app.current.stream.goToLast();
|
||||||
|
}
|
||||||
|
|
||||||
|
var component = app.composer.component;
|
||||||
|
if (!app.composingReplyTo(this) || forceRefresh) {
|
||||||
|
component = new ReplyComposer({
|
||||||
|
user: app.session.user(),
|
||||||
|
discussion: this
|
||||||
|
});
|
||||||
|
app.composer.load(component);
|
||||||
|
}
|
||||||
|
app.composer.show(goToLast);
|
||||||
|
|
||||||
|
deferred.resolve(component);
|
||||||
|
} else {
|
||||||
|
deferred.reject();
|
||||||
}
|
}
|
||||||
var component = app.composer.component;
|
};
|
||||||
if (!(component instanceof ReplyComposer) || component.props.discussion !== this || component.props.user !== app.session.user() || forceRefresh) {
|
|
||||||
component = new ReplyComposer({
|
if (app.session.user()) {
|
||||||
user: app.session.user(),
|
reply();
|
||||||
discussion: this
|
} else {
|
||||||
});
|
app.modal.show(
|
||||||
app.composer.load(component);
|
new LoginModal({
|
||||||
}
|
onlogin: () => app.current.one('loaded', reply)
|
||||||
app.composer.show(goToLast);
|
})
|
||||||
return component;
|
);
|
||||||
} else if (!app.session.user()) {
|
|
||||||
app.modal.show(new LoginModal({
|
|
||||||
callback: () => app.current.one('loaded', this.replyAction.bind(this, goToLast, forceRefresh))
|
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return deferred.promise;
|
||||||
}
|
}
|
||||||
|
|
||||||
Discussion.prototype.deleteAction = function() {
|
Discussion.prototype.deleteAction = function() {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user