fix(12-03): use htmx request source for discussion posts
This commit is contained in:
parent
6f17c3016f
commit
426d89c43b
2 changed files with 8 additions and 4 deletions
|
|
@ -478,7 +478,7 @@ func TestDiscussionStaticScriptSuppressesDuplicateMessageSwap(t *testing.T) {
|
|||
t.Fatalf("read discussion-sse.js: %v", err)
|
||||
}
|
||||
script := string(js)
|
||||
for _, want := range []string{"htmx:beforeSwap", "messageIdFromHTML", "preventDefault()"} {
|
||||
for _, want := range []string{"htmx:beforeSwap", "requestConfig.elt", "messageIdFromHTML", "preventDefault()"} {
|
||||
if !strings.Contains(script, want) {
|
||||
t.Fatalf("discussion script missing %q for duplicate swap suppression; script: %.1200s", want, script)
|
||||
}
|
||||
|
|
@ -491,7 +491,7 @@ func TestDiscussionStaticScriptClearsComposerAfterSuccessfulPost(t *testing.T) {
|
|||
t.Fatalf("read discussion-sse.js: %v", err)
|
||||
}
|
||||
script := string(js)
|
||||
for _, want := range []string{"htmx:afterRequest", "discussion-message-body", ".reset()"} {
|
||||
for _, want := range []string{"htmx:afterRequest", "requestConfig.elt", "discussion-message-body", ".reset()"} {
|
||||
if !strings.Contains(script, want) {
|
||||
t.Fatalf("discussion script missing %q for composer reset; script: %.1200s", want, script)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,10 @@
|
|||
return Boolean(element && element.matches && element.matches('form[action$="/discussion/messages"]'));
|
||||
}
|
||||
|
||||
function requestElement(detail) {
|
||||
return detail && detail.requestConfig && detail.requestConfig.elt;
|
||||
}
|
||||
|
||||
function messageIdFromHTML(html) {
|
||||
if (!html) return "";
|
||||
var template = document.createElement("template");
|
||||
|
|
@ -65,7 +69,7 @@
|
|||
document.addEventListener("DOMContentLoaded", connectDiscussionStreams);
|
||||
document.body.addEventListener("htmx:afterSwap", connectDiscussionStreams);
|
||||
document.body.addEventListener("htmx:beforeSwap", function (event) {
|
||||
if (!isDiscussionMessageForm(event.detail && event.detail.elt)) return;
|
||||
if (!isDiscussionMessageForm(requestElement(event.detail))) return;
|
||||
|
||||
var messageId = messageIdFromHTML(event.detail.xhr && event.detail.xhr.responseText);
|
||||
if (messageId && messageExists(messageId)) {
|
||||
|
|
@ -74,7 +78,7 @@
|
|||
}
|
||||
});
|
||||
document.body.addEventListener("htmx:afterRequest", function (event) {
|
||||
var form = event.detail && event.detail.elt;
|
||||
var form = requestElement(event.detail);
|
||||
if (!isDiscussionMessageForm(form) || !event.detail.successful) return;
|
||||
|
||||
form.reset();
|
||||
|
|
|
|||
Loading…
Reference in a new issue