FEATURE: Add a shortcut to archive PM
This patch adds a new shortcut to allow archiving private messages. When on a private message page, just type `a` to archive it. Typing `a` on an already archived message will move it back to inbox.
This commit is contained in:
parent
98dfc9df3f
commit
cf8c3cf3f0
|
@ -589,7 +589,7 @@ export default Controller.extend(bufferedProperty("model"), {
|
||||||
toggleArchiveMessage() {
|
toggleArchiveMessage() {
|
||||||
const topic = this.model;
|
const topic = this.model;
|
||||||
|
|
||||||
if (topic.get("archiving")) {
|
if (!topic || topic.get("archiving") || !topic.isPrivateMessage) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -47,6 +47,7 @@ const DEFAULT_BINDINGS = {
|
||||||
"=": { handler: "toggleHamburgerMenu", anonymous: true },
|
"=": { handler: "toggleHamburgerMenu", anonymous: true },
|
||||||
"?": { handler: "showHelpModal", anonymous: true },
|
"?": { handler: "showHelpModal", anonymous: true },
|
||||||
".": { click: ".alert.alert-info.clickable", anonymous: true }, // show incoming/updated topics
|
".": { click: ".alert.alert-info.clickable", anonymous: true }, // show incoming/updated topics
|
||||||
|
a: { handler: "toggleArchivePM" },
|
||||||
b: { handler: "toggleBookmark" },
|
b: { handler: "toggleBookmark" },
|
||||||
c: { handler: "createTopic" },
|
c: { handler: "createTopic" },
|
||||||
"shift+c": { handler: "focusComposer" },
|
"shift+c": { handler: "focusComposer" },
|
||||||
|
@ -889,6 +890,10 @@ export default {
|
||||||
this.appEvents.trigger("topic:toggle-actions");
|
this.appEvents.trigger("topic:toggle-actions");
|
||||||
},
|
},
|
||||||
|
|
||||||
|
toggleArchivePM() {
|
||||||
|
getOwner(this).lookup("controller:topic").send("toggleArchiveMessage");
|
||||||
|
},
|
||||||
|
|
||||||
webviewKeyboardBack() {
|
webviewKeyboardBack() {
|
||||||
if (capabilities.isAppWebview) {
|
if (capabilities.isAppWebview) {
|
||||||
window.history.back();
|
window.history.back();
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
RSpec.describe "Keyboard shortcuts", type: :system do
|
||||||
|
describe "<a>" do
|
||||||
|
let(:current_user) { topic.user }
|
||||||
|
let(:topic_page) { PageObjects::Pages::Topic.new }
|
||||||
|
|
||||||
|
before { sign_in(current_user) }
|
||||||
|
|
||||||
|
context "when on a private message page" do
|
||||||
|
fab!(:topic) { Fabricate(:private_message_topic) }
|
||||||
|
|
||||||
|
context "when the message is not archived" do
|
||||||
|
it "archives the message" do
|
||||||
|
topic_page.visit_topic(topic)
|
||||||
|
send_keys("a")
|
||||||
|
expect(page).to have_current_path("/u/#{current_user.username}/messages")
|
||||||
|
expect(UserArchivedMessage.exists?(topic: topic)).to be true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when the message is already archived" do
|
||||||
|
before { UserArchivedMessage.create!(topic: topic, user: current_user) }
|
||||||
|
|
||||||
|
it "moves back the message to inbox" do
|
||||||
|
topic_page.visit_topic(topic)
|
||||||
|
send_keys("a")
|
||||||
|
expect(page).to have_current_path("/u/#{current_user.username}/messages")
|
||||||
|
expect(UserArchivedMessage.exists?(topic: topic)).to be false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when on a public topic page" do
|
||||||
|
fab!(:topic) { Fabricate(:topic) }
|
||||||
|
|
||||||
|
it "doesn't archive the topic" do
|
||||||
|
topic_page.visit_topic(topic)
|
||||||
|
send_keys("a")
|
||||||
|
expect(page).to have_current_path("/t/#{topic.slug}/#{topic.id}")
|
||||||
|
expect(UserArchivedMessage.exists?(topic: topic)).to be false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue