FIX: Minor bookmark issues (#25358)

* FIX: Minor bookmark issues

* We were showing "missing %{name} value" when the name for the
  bookmark was undefined with title translations
* There was no way to see the bookmark details on hover in chat
  for a message where the bookmark icon was in the left gutter.
  We can show the title on the bookmark button in the chat message
  actions instead.

* Minor fix

* DEV: Test fix
This commit is contained in:
Martin Brennan 2024-01-23 16:49:41 +10:00 committed by GitHub
parent a03f87bdbd
commit db70e7a842
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 24 additions and 17 deletions

View File

@ -1,7 +1,6 @@
import Component from "@ember/component"; import Component from "@ember/component";
import { computed } from "@ember/object"; import { computed } from "@ember/object";
import { isEmpty } from "@ember/utils"; import { isEmpty } from "@ember/utils";
import { formattedReminderTime } from "discourse/lib/bookmark";
import { import {
NO_REMINDER_ICON, NO_REMINDER_ICON,
WITH_REMINDER_ICON, WITH_REMINDER_ICON,
@ -32,25 +31,12 @@ export default class BookmarkIcon extends Component {
: "bookmark-icon"; : "bookmark-icon";
} }
@computed("bookmark.name", "bookmark.reminder_at") @computed("bookmark.title")
get title() { get title() {
if (!this.bookmark) { if (!this.bookmark) {
return I18n.t("bookmarks.create"); return I18n.t("bookmarks.create");
} }
if (!isEmpty(this.bookmark.reminder_at)) { return this.bookmark.reminderTitle;
const formattedTime = formattedReminderTime(
this.bookmark.reminder_at,
this.currentUser.user_option.timezone
);
return I18n.t("bookmarks.created_with_reminder_generic", {
date: formattedTime,
name: this.bookmark.name,
});
}
return I18n.t("bookmarks.created_generic", {
name: this.bookmark.name,
});
} }
} }

View File

@ -1,6 +1,7 @@
import { computed } from "@ember/object"; import { computed } from "@ember/object";
import { none } from "@ember/object/computed"; import { none } from "@ember/object/computed";
import { capitalize } from "@ember/string"; import { capitalize } from "@ember/string";
import { isEmpty } from "@ember/utils";
import { Promise } from "rsvp"; import { Promise } from "rsvp";
import { ajax } from "discourse/lib/ajax"; import { ajax } from "discourse/lib/ajax";
import { formattedReminderTime } from "discourse/lib/bookmark"; import { formattedReminderTime } from "discourse/lib/bookmark";
@ -102,6 +103,23 @@ const Bookmark = RestModel.extend({
} }
}, },
@discourseComputed("name", "reminder_at")
reminderTitle(name, reminderAt) {
if (!isEmpty(reminderAt)) {
return I18n.t("bookmarks.created_with_reminder_generic", {
date: formattedReminderTime(
reminderAt,
this.currentUser?.user_option?.timezone || moment.tz.guess()
),
name: name || "",
});
}
return I18n.t("bookmarks.created_generic", {
name: name || "",
});
},
@discourseComputed("created_at") @discourseComputed("created_at")
createdAt(created_at) { createdAt(created_at) {
return new Date(created_at); return new Date(created_at);
@ -135,7 +153,7 @@ const Bookmark = RestModel.extend({
return capitalize( return capitalize(
formattedReminderTime( formattedReminderTime(
bookmarkReminderAt, bookmarkReminderAt,
currentUser.user_option.timezone currentUser?.user_option?.timezone || moment.tz.guess()
) )
); );
}, },

View File

@ -16,6 +16,7 @@ module("Integration | Component | bookmark-icon", function (hooks) {
bookmark: Bookmark.create({ bookmark: Bookmark.create({
reminder_at: tomorrow(this.currentUser.user_option.timezone), reminder_at: tomorrow(this.currentUser.user_option.timezone),
name: "some name", name: "some name",
currentUser: this.currentUser,
}), }),
}); });
@ -41,6 +42,7 @@ module("Integration | Component | bookmark-icon", function (hooks) {
"bookmark", "bookmark",
Bookmark.create({ Bookmark.create({
name: "some name", name: "some name",
currentUser: this.currentUser,
}) })
); );

View File

@ -161,6 +161,7 @@ export default class ChatMessageActionsDesktop extends Component {
<DButton <DButton
@action={{this.messageInteractor.toggleBookmark}} @action={{this.messageInteractor.toggleBookmark}}
class="btn-flat bookmark-btn" class="btn-flat bookmark-btn"
@translatedTitle={{this.message.bookmark.reminderTitle}}
> >
<BookmarkIcon @bookmark={{this.message.bookmark}} /> <BookmarkIcon @bookmark={{this.message.bookmark}} />
</DButton> </DButton>