Use error message from the server when reshare failed
This commit is contained in:
parent
8078c60cee
commit
6c5c865b15
7 changed files with 31 additions and 10 deletions
|
|
@ -123,8 +123,8 @@ app.models.Post.Interactions = Backbone.Model.extend({
|
||||||
interactions.set({"reshares_count": interactions.get("reshares_count") + 1});
|
interactions.set({"reshares_count": interactions.get("reshares_count") + 1});
|
||||||
interactions.reshares.trigger("change");
|
interactions.reshares.trigger("change");
|
||||||
})
|
})
|
||||||
.fail(function(){
|
.fail(function(response) {
|
||||||
app.flashMessages.error(Diaspora.I18n.t("reshares.duplicate"));
|
app.flashMessages.handleAjaxError(response);
|
||||||
});
|
});
|
||||||
|
|
||||||
app.instrument("track", "Reshare");
|
app.instrument("track", "Reshare");
|
||||||
|
|
|
||||||
|
|
@ -98,8 +98,12 @@
|
||||||
success: function() {
|
success: function() {
|
||||||
Diaspora.Mobile.PostActions.toggleActive(link);
|
Diaspora.Mobile.PostActions.toggleActive(link);
|
||||||
},
|
},
|
||||||
error: function() {
|
error: function(response) {
|
||||||
alert(Diaspora.I18n.t("failed_to_reshare"));
|
if (response.status === 0) {
|
||||||
|
alert(Diaspora.I18n.t("errors.connection"));
|
||||||
|
} else {
|
||||||
|
alert(response.responseText);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
complete: function() {
|
complete: function() {
|
||||||
Diaspora.Mobile.PostActions.hideLoader(link);
|
Diaspora.Mobile.PostActions.hideLoader(link);
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ class ResharesController < ApplicationController
|
||||||
current_user.dispatch_post(@reshare)
|
current_user.dispatch_post(@reshare)
|
||||||
render :json => ExtremePostPresenter.new(@reshare, current_user), :status => 201
|
render :json => ExtremePostPresenter.new(@reshare, current_user), :status => 201
|
||||||
else
|
else
|
||||||
render :nothing => true, :status => 422
|
render text: I18n.t("javascripts.failed_to_reshare"), status: 422
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -199,7 +199,6 @@ en:
|
||||||
hide: "Hide comments"
|
hide: "Hide comments"
|
||||||
no_comments: "There are no comments yet."
|
no_comments: "There are no comments yet."
|
||||||
reshares:
|
reshares:
|
||||||
duplicate: "That good, eh? You’ve already reshared that post!"
|
|
||||||
successful: "The post was successfully reshared!"
|
successful: "The post was successfully reshared!"
|
||||||
post: "Reshare <%= name %>’s post?"
|
post: "Reshare <%= name %>’s post?"
|
||||||
aspect_navigation:
|
aspect_navigation:
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,7 @@ describe ResharesController, :type => :controller do
|
||||||
it 'doesn\'t allow the user to reshare the post again' do
|
it 'doesn\'t allow the user to reshare the post again' do
|
||||||
post_request!
|
post_request!
|
||||||
expect(response.code).to eq('422')
|
expect(response.code).to eq('422')
|
||||||
expect(response.body.strip).to be_empty
|
expect(response.body).to eq(I18n.t("javascripts.failed_to_reshare"))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,8 @@ describe("app.models.Post.Interactions", function(){
|
||||||
this.interactions = this.post.interactions;
|
this.interactions = this.post.interactions;
|
||||||
this.author = factory.author({guid: "loggedInAsARockstar"});
|
this.author = factory.author({guid: "loggedInAsARockstar"});
|
||||||
loginAs({guid: "loggedInAsARockstar"});
|
loginAs({guid: "loggedInAsARockstar"});
|
||||||
|
spec.content().append($("<div id='flash-container'>"));
|
||||||
|
app.flashMessages = new app.views.FlashMessages({el: spec.content().find("#flash-container")});
|
||||||
|
|
||||||
this.userLike = new app.models.Like({author : this.author});
|
this.userLike = new app.models.Like({author : this.author});
|
||||||
});
|
});
|
||||||
|
|
@ -110,6 +112,16 @@ describe("app.models.Post.Interactions", function(){
|
||||||
jasmine.Ajax.requests.mostRecent().respondWith(ajaxSuccess);
|
jasmine.Ajax.requests.mostRecent().respondWith(ajaxSuccess);
|
||||||
expect(this.post.get("participation")).toBeTruthy();
|
expect(this.post.get("participation")).toBeTruthy();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("displays a flash message on errors", function() {
|
||||||
|
spyOn(app.flashMessages, "handleAjaxError").and.callThrough();
|
||||||
|
this.interactions.reshare();
|
||||||
|
jasmine.Ajax.requests.mostRecent().respondWith({status: 400, responseText: "error message"});
|
||||||
|
|
||||||
|
expect(app.flashMessages.handleAjaxError).toHaveBeenCalled();
|
||||||
|
expect(app.flashMessages.handleAjaxError.calls.argsFor(0)[0].responseText).toBe("error message");
|
||||||
|
expect(spec.content().find(".flash-message")).toBeErrorFlashMessage("error message");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("userLike", function(){
|
describe("userLike", function(){
|
||||||
|
|
|
||||||
|
|
@ -223,10 +223,16 @@ describe("Diaspora.Mobile.PostActions", function(){
|
||||||
expect(Diaspora.Mobile.PostActions.toggleActive).toHaveBeenCalledWith(this.reshareLink);
|
expect(Diaspora.Mobile.PostActions.toggleActive).toHaveBeenCalledWith(this.reshareLink);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("pops an alert on error", function(){
|
it("pops an alert on server errors", function() {
|
||||||
this.reshareLink.click();
|
this.reshareLink.click();
|
||||||
jasmine.Ajax.requests.mostRecent().respondWith({status: 400});
|
jasmine.Ajax.requests.mostRecent().respondWith({status: 400, responseText: "reshare failed"});
|
||||||
expect(window.alert).toHaveBeenCalledWith(Diaspora.I18n.t("failed_to_reshare"));
|
expect(window.alert).toHaveBeenCalledWith("reshare failed");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("pops an alert on network errors", function() {
|
||||||
|
this.reshareLink.click();
|
||||||
|
jasmine.Ajax.requests.mostRecent().abort();
|
||||||
|
expect(window.alert).toHaveBeenCalledWith(Diaspora.I18n.t("errors.connection"));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue