in openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatForm.java [75:151]
public ChatForm(String id) {
super(id);
final ChatToolbar toolbar = new ChatToolbar("toolbarContainer", this);
final WysiwygEditor chatMessage = new WysiwygEditor("chatMessage", Model.of(""), toolbar);
add(toolbar
, activeTab.add(new AjaxFormSubmitBehavior(this, "change") {
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit(AjaxRequestTarget target) {
toolbar.update(target);
}
})
, chatMessage.setOutputMarkupId(true)
, new AjaxButton("send") {
private static final long serialVersionUID = 1L;
@Override
protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
super.updateAjaxAttributes(attributes);
attributes.getAjaxCallListeners().add(new IAjaxCallListener() {
@Override
public CharSequence getPrecondition(Component component) {
return "return Chat.validate();";
}
});
}
private Chat getChat() {
return findParent(Chat.class);
}
@Override
protected void onSubmit(AjaxRequestTarget target) {
final String txt = chatMessage.getDefaultModelObjectAsString();
if (Strings.isEmpty(txt)) {
return;
}
final ChatMessage m = new ChatMessage();
m.setMessage(txt);
m.setSent(new Date());
m.setFromUser(userDao.get(getUserId()));
m.setFromName(getClient().getUser().getDisplayName());
if (!process(
() -> getChat().isShowDashboardChat()
, r -> {
if (cm.isInRoom(r.getId(), getUserId())) {
m.setToRoom(r);
} else {
log.error("It seems like we are being hacked!!!!");
return false;
}
m.setNeedModeration(r.isChatModerated() && !isModerator(cm, m.getFromUser().getId(), r.getId()));
return true;
}, u -> {
m.setToUser(u);
return true;
}))
{
return;
}
chatDao.update(m);
JSONObject msg = getChat().getMessage(List.of(m));
if (m.getToRoom() != null) {
ChatWebSocketHelper.sendRoom(m, msg);
} else if (m.getToUser() != null) {
ChatWebSocketHelper.sendUser(getUserId(), m, msg);
msg = Chat.getMessage(m.getToUser(), List.of(m));
ChatWebSocketHelper.sendUser(m.getToUser().getId(), m, msg);
} else {
ChatWebSocketHelper.sendAll(m, msg);
}
chatMessage.setDefaultModelObject("");
target.appendJavaScript("Chat.clean();");
}
});
}