/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ const lazy = {}; import { html, when } from "chrome://global/content/vendor/lit.all.mjs"; import { navigateToLink } from "chrome://browser/content/firefoxview/helpers.mjs"; import { SidebarPage } from "./sidebar-page.mjs"; ChromeUtils.defineESModuleGetters(lazy, { HistoryController: "resource:///modules/HistoryController.sys.mjs", }); const NEVER_REMEMBER_HISTORY_PREF = "browser.privatebrowsing.autostart"; export class SidebarHistory extends SidebarPage { static queries = { lists: { all: "fxview-tab-list" }, searchTextbox: "fxview-search-textbox", }; constructor() { super(); this._started = false; // Setting maxTabsLength to -1 for no max this.maxTabsLength = -1; } controller = new lazy.HistoryController(this, { component: "sidebar", }); connectedCallback() { super.connectedCallback(); this.controller.updateCache(); } onPrimaryAction(e) { navigateToLink(e); } deleteFromHistory() { this.controller.deleteFromHistory(); } /** * The template to use for cards-container. */ get cardsTemplate() { if (this.controller.searchResults) { return this.#searchResultsTemplate(); } else if (!this.controller.isHistoryEmpty) { return this.#historyCardsTemplate(); } return this.#emptyMessageTemplate(); } #historyCardsTemplate() { return this.controller.historyVisits.map(historyItem => { let dateArg = JSON.stringify({ date: historyItem.items[0].time }); return html`
`; }); } #emptyMessageTemplate() { let descriptionHeader; let descriptionLabels; let descriptionLink; if (Services.prefs.getBoolPref(NEVER_REMEMBER_HISTORY_PREF, false)) { // History pref set to never remember history descriptionHeader = "firefoxview-dont-remember-history-empty-header"; descriptionLabels = [ "firefoxview-dont-remember-history-empty-description", "firefoxview-dont-remember-history-empty-description-two", ]; descriptionLink = { url: "about:preferences#privacy", name: "history-settings-url-two", }; } else { descriptionHeader = "firefoxview-history-empty-header"; descriptionLabels = [ "firefoxview-history-empty-description", "firefoxview-history-empty-description-two", ]; descriptionLink = { url: "about:preferences#privacy", name: "history-settings-url", }; } return html` `; } #searchResultsTemplate() { return html`
${when( this.controller.searchResults.length, () => html`

` )}
`; } onSearchQuery(e) { this.controller.onSearchQuery(e); } getTabItems(items) { return items.map(item => ({ ...item, secondaryL10nId: null, secondaryL10nArgs: null, })); } render() { return html` ${this.stylesheet()}
${this.cardsTemplate}
`; } } customElements.define("sidebar-history", SidebarHistory);