FIX: do not display the message content when it errors (#21008)
This commit is contained in:
parent
0ff86feb96
commit
fef279acd5
|
@ -764,7 +764,7 @@ export default class ChatLivePane extends Component {
|
||||||
|
|
||||||
const stagedMessage = ChatMessage.createStagedMessage(this.args.channel, {
|
const stagedMessage = ChatMessage.createStagedMessage(this.args.channel, {
|
||||||
message,
|
message,
|
||||||
created_at: new Date(),
|
created_at: moment.utc().format(),
|
||||||
uploads: cloneJSON(uploads),
|
uploads: cloneJSON(uploads),
|
||||||
user: this.currentUser,
|
user: this.currentUser,
|
||||||
});
|
});
|
||||||
|
@ -790,6 +790,7 @@ export default class ChatLivePane extends Component {
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
this._onSendError(stagedMessage.id, error);
|
this._onSendError(stagedMessage.id, error);
|
||||||
|
this.scrollToBottom();
|
||||||
})
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
if (this._selfDeleted) {
|
if (this._selfDeleted) {
|
||||||
|
@ -827,6 +828,9 @@ export default class ChatLivePane extends Component {
|
||||||
this.args.channel.messagesManager.findStagedMessage(id);
|
this.args.channel.messagesManager.findStagedMessage(id);
|
||||||
if (stagedMessage) {
|
if (stagedMessage) {
|
||||||
if (error.jqXHR?.responseJSON?.errors?.length) {
|
if (error.jqXHR?.responseJSON?.errors?.length) {
|
||||||
|
// only network errors are retryable
|
||||||
|
stagedMessage.message = "";
|
||||||
|
stagedMessage.cooked = "";
|
||||||
stagedMessage.error = error.jqXHR.responseJSON.errors[0];
|
stagedMessage.error = error.jqXHR.responseJSON.errors[0];
|
||||||
} else {
|
} else {
|
||||||
this.chat.markNetworkAsUnreliable();
|
this.chat.markNetworkAsUnreliable();
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
RSpec.describe "Message errors", type: :system, js: true do
|
||||||
|
fab!(:current_user) { Fabricate(:admin) }
|
||||||
|
let(:chat_page) { PageObjects::Pages::Chat.new }
|
||||||
|
let(:channel_page) { PageObjects::Pages::ChatChannel.new }
|
||||||
|
let(:max_length) { SiteSetting.chat_maximum_message_length }
|
||||||
|
|
||||||
|
before { chat_system_bootstrap }
|
||||||
|
|
||||||
|
context "when message is too long" do
|
||||||
|
fab!(:channel) { Fabricate(:chat_channel) }
|
||||||
|
|
||||||
|
it "only shows the error, not the message" do
|
||||||
|
channel.add(current_user)
|
||||||
|
sign_in(current_user)
|
||||||
|
chat_page.visit_channel(channel)
|
||||||
|
|
||||||
|
channel_page.send_message("atoolongmessage" + "a" * max_length)
|
||||||
|
|
||||||
|
expect(page).to have_no_content("atoolongmessage")
|
||||||
|
expect(page).to have_content(I18n.t("chat.errors.message_too_long", count: max_length))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue