FIX: The topic level bookmark button stops working if choose ‘No’ on the clearing all bookmarks confirmation modal (#13374)

Steps to reproduce the bug:
- Create bookmarks for several posts on a topic
- Click the topic level bookmark button, it’ll open the modal that asks to confirm clearing all bookmarks from the topic
- Choose No
- Try to push the topic level bookmark button again - it won’t work

And it's fixed with this commit
This commit is contained in:
Andrei Prigorshnev 2021-06-16 18:42:21 +04:00 committed by GitHub
parent 0f9d31a85e
commit 82ebc706aa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 64 additions and 5 deletions

View File

@ -1274,8 +1274,14 @@ export default Controller.extend(bufferedProperty("model"), {
I18n.t("bookmarks.confirm_clear"),
I18n.t("no_value"),
I18n.t("yes_value"),
(confirmed) =>
confirmed ? toggleBookmarkOnServer().then(resolve) : resolve()
(confirmed) => {
if (confirmed) {
toggleBookmarkOnServer().then(resolve);
} else {
this.model.set("bookmarking", false);
resolve();
}
}
);
} else {
toggleBookmarkOnServer().then(resolve);

View File

@ -52,11 +52,18 @@ acceptance("Bookmarking", function (needs) {
function handleRequest(request) {
const data = helper.parsePostData(request.requestBody);
steps.push(data.reminder_type || "none");
return helper.response({ id: 999, success: "OK" });
if (data.post_id === "398") {
return helper.response({ id: 1, success: "OK" });
} else if (data.post_id === "419") {
return helper.response({ id: 2, success: "OK" });
} else {
throw new Error("Pretender: unknown post_id");
}
}
server.post("/bookmarks", handleRequest);
server.put("/bookmarks/999", handleRequest);
server.delete("/bookmarks/999", () =>
server.put("/bookmarks/1", handleRequest);
server.delete("/bookmarks/1", () =>
helper.response({ success: "OK", topic_bookmarked: false })
);
server.get("/t/280.json", () => helper.response(topicResponse));
@ -262,4 +269,50 @@ acceptance("Bookmarking", function (needs) {
"it does not show the local date tile"
);
});
test("The topic level bookmark button deletes all bookmarks if several posts on the topic are bookmarked", async function (assert) {
const yesButton = "a.btn-primary";
const noButton = "a.btn-default";
await visit("/t/internationalization-localization/280");
await openBookmarkModal(1);
await click("#save-bookmark");
await openBookmarkModal(2);
await click("#save-bookmark");
assert.ok(
exists(".topic-post:first-child button.bookmark.bookmarked"),
"the first bookmark is added"
);
assert.ok(
exists(".topic-post:nth-child(3) button.bookmark.bookmarked"),
"the second bookmark is added"
);
// open the modal and cancel deleting
await click("#topic-footer-button-bookmark");
await click(noButton);
assert.ok(
exists(".topic-post:first-child button.bookmark.bookmarked"),
"the first bookmark isn't deleted"
);
assert.ok(
exists(".topic-post:nth-child(3) button.bookmark.bookmarked"),
"the second bookmark isn't deleted"
);
// open the modal and accept deleting
await click("#topic-footer-button-bookmark");
await click(yesButton);
assert.ok(
!exists(".topic-post:first-child button.bookmark.bookmarked"),
"the first bookmark is deleted"
);
assert.ok(
!exists(".topic-post:nth-child(3) button.bookmark.bookmarked"),
"the second bookmark is deleted"
);
});
});