mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 22:13:26 +00:00
submessages: Just send content for submessage events.
For some reason in my original version I was sending both content and data to the client for submessage events, where data === JSON.parse(content). There's no reason to not just let the client parse it, since the client already does it for data that comes on the original message, and since we might eventually have non-JSON payloads. The server still continues to validate that the payload is JSON, and the client will blueslip if the server regressses and sends bad JSON for some reason.
This commit is contained in:
@@ -67,7 +67,7 @@ run_test('handle_event', () => {
|
|||||||
msg_type: 'widget',
|
msg_type: 'widget',
|
||||||
sender_id: 99,
|
sender_id: 99,
|
||||||
message_id: message.id,
|
message_id: message.id,
|
||||||
data: 'some_data',
|
content: '"some_data"',
|
||||||
};
|
};
|
||||||
|
|
||||||
var args;
|
var args;
|
||||||
|
|||||||
@@ -258,7 +258,7 @@ exports.dispatch_normal_event = function dispatch_normal_event(event) {
|
|||||||
sender_id: event.sender_id,
|
sender_id: event.sender_id,
|
||||||
msg_type: event.msg_type,
|
msg_type: event.msg_type,
|
||||||
message_id: event.message_id,
|
message_id: event.message_id,
|
||||||
data: event.data,
|
content: event.content,
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@@ -91,10 +91,19 @@ exports.handle_event = function (event) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var data;
|
||||||
|
|
||||||
|
try {
|
||||||
|
data = JSON.parse(event.content);
|
||||||
|
} catch (err) {
|
||||||
|
blueslip.error('server sent us invalid json in handle_event: ' + event.content);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
widgetize.handle_event({
|
widgetize.handle_event({
|
||||||
sender_id: event.sender_id,
|
sender_id: event.sender_id,
|
||||||
message_id: event.message_id,
|
message_id: event.message_id,
|
||||||
data: event.data,
|
data: data,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1440,7 +1440,6 @@ def do_add_submessage(sender_id: int,
|
|||||||
message_id: int,
|
message_id: int,
|
||||||
msg_type: str,
|
msg_type: str,
|
||||||
content: str,
|
content: str,
|
||||||
data: Any,
|
|
||||||
) -> None:
|
) -> None:
|
||||||
submessage = SubMessage(
|
submessage = SubMessage(
|
||||||
sender_id=sender_id,
|
sender_id=sender_id,
|
||||||
@@ -1455,7 +1454,7 @@ def do_add_submessage(sender_id: int,
|
|||||||
msg_type=msg_type,
|
msg_type=msg_type,
|
||||||
message_id=message_id,
|
message_id=message_id,
|
||||||
sender_id=sender_id,
|
sender_id=sender_id,
|
||||||
data=data,
|
content=content,
|
||||||
)
|
)
|
||||||
ums = UserMessage.objects.filter(message_id=message_id)
|
ums = UserMessage.objects.filter(message_id=message_id)
|
||||||
target_user_ids = [um.user_profile_id for um in ums]
|
target_user_ids = [um.user_profile_id for um in ums]
|
||||||
|
|||||||
@@ -874,7 +874,7 @@ class EventsRegisterTest(ZulipTestCase):
|
|||||||
('message_id', check_int),
|
('message_id', check_int),
|
||||||
('sender_id', check_int),
|
('sender_id', check_int),
|
||||||
('msg_type', check_string),
|
('msg_type', check_string),
|
||||||
('data', check_string),
|
('content', check_string),
|
||||||
])
|
])
|
||||||
|
|
||||||
cordelia = self.example_user('cordelia')
|
cordelia = self.example_user('cordelia')
|
||||||
@@ -889,7 +889,6 @@ class EventsRegisterTest(ZulipTestCase):
|
|||||||
message_id=message_id,
|
message_id=message_id,
|
||||||
msg_type='whatever',
|
msg_type='whatever',
|
||||||
content='"stuff"',
|
content='"stuff"',
|
||||||
data='stuff',
|
|
||||||
),
|
),
|
||||||
state_change_expected=False,
|
state_change_expected=False,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -127,10 +127,7 @@ class TestBasics(ZulipTestCase):
|
|||||||
|
|
||||||
expected_data = dict(
|
expected_data = dict(
|
||||||
message_id=message_id,
|
message_id=message_id,
|
||||||
data=dict(
|
content=payload['content'],
|
||||||
name='alice',
|
|
||||||
salary=20,
|
|
||||||
),
|
|
||||||
msg_type='whatever',
|
msg_type='whatever',
|
||||||
sender_id=cordelia.id,
|
sender_id=cordelia.id,
|
||||||
type='submessage',
|
type='submessage',
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ def process_submessage(request: HttpRequest,
|
|||||||
return json_error(msg)
|
return json_error(msg)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
data = ujson.loads(content)
|
ujson.loads(content)
|
||||||
except Exception:
|
except Exception:
|
||||||
return json_error(_("Invalid json for submessage"))
|
return json_error(_("Invalid json for submessage"))
|
||||||
|
|
||||||
@@ -41,6 +41,5 @@ def process_submessage(request: HttpRequest,
|
|||||||
message_id=message.id,
|
message_id=message.id,
|
||||||
msg_type=msg_type,
|
msg_type=msg_type,
|
||||||
content=content,
|
content=content,
|
||||||
data=data,
|
|
||||||
)
|
)
|
||||||
return json_success()
|
return json_success()
|
||||||
|
|||||||
Reference in New Issue
Block a user