91 lines
2.5 KiB
JavaScript
91 lines
2.5 KiB
JavaScript
import { h } from "virtual-dom";
|
|
import QuickAccessPanel from "discourse/widgets/quick-access-panel";
|
|
import UserAction from "discourse/models/user-action";
|
|
import { ajax } from "discourse/lib/ajax";
|
|
import { createWidgetFrom } from "discourse/widgets/widget";
|
|
import { postUrl } from "discourse/lib/utilities";
|
|
|
|
const ICON = "bookmark";
|
|
|
|
createWidgetFrom(QuickAccessPanel, "quick-access-bookmarks", {
|
|
buildKey: () => "quick-access-bookmarks",
|
|
|
|
hasMore() {
|
|
// Always show the button to the bookmarks page.
|
|
return true;
|
|
},
|
|
|
|
showAllHref() {
|
|
if (this.siteSettings.enable_bookmarks_with_reminders) {
|
|
return `${this.attrs.path}/activity/bookmarks-with-reminders`;
|
|
} else {
|
|
return `${this.attrs.path}/activity/bookmarks`;
|
|
}
|
|
},
|
|
|
|
emptyStatePlaceholderItem() {
|
|
return h("li.read", this.state.emptyStatePlaceholderItemText);
|
|
},
|
|
|
|
findNewItems() {
|
|
if (this.siteSettings.enable_bookmarks_with_reminders) {
|
|
return this.loadBookmarksWithReminders();
|
|
} else {
|
|
return this.loadUserActivityBookmarks();
|
|
}
|
|
},
|
|
|
|
itemHtml(bookmark) {
|
|
return this.attach("quick-access-item", {
|
|
icon: this.icon(bookmark),
|
|
href: postUrl(
|
|
bookmark.slug,
|
|
bookmark.topic_id,
|
|
bookmark.post_number || bookmark.linked_post_number
|
|
),
|
|
content: bookmark.title,
|
|
username: bookmark.username
|
|
});
|
|
},
|
|
|
|
icon(bookmark) {
|
|
if (bookmark.reminder_at) {
|
|
return "discourse-bookmark-clock";
|
|
}
|
|
return ICON;
|
|
},
|
|
|
|
loadBookmarksWithReminders() {
|
|
return ajax(`/u/${this.currentUser.username}/bookmarks.json`, {
|
|
cache: "false",
|
|
data: {
|
|
limit: this.estimateItemLimit()
|
|
}
|
|
}).then(result => {
|
|
// The empty state help text for bookmarks page is localized on the
|
|
// server.
|
|
if (result.no_results_help) {
|
|
this.state.emptyStatePlaceholderItemText = result.no_results_help;
|
|
}
|
|
return result.bookmarks;
|
|
});
|
|
},
|
|
|
|
loadUserActivityBookmarks() {
|
|
return ajax("/user_actions.json", {
|
|
cache: "false",
|
|
data: {
|
|
username: this.currentUser.username,
|
|
filter: UserAction.TYPES.bookmarks,
|
|
limit: this.estimateItemLimit(),
|
|
no_results_help_key: "user_activity.no_bookmarks"
|
|
}
|
|
}).then(({ user_actions, no_results_help }) => {
|
|
// The empty state help text for bookmarks page is localized on the
|
|
// server.
|
|
this.state.emptyStatePlaceholderItemText = no_results_help;
|
|
return user_actions;
|
|
});
|
|
}
|
|
});
|