Files
react-native-devtools-frontend/front_end/help/HelpImpl.js
T
Paul Lewis 3944e7cd71 Migrates help/ to esm
Bug: 1006759
Change-Id: I9d140fd412cfe4938f58a89d8ad1852712dbde09
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/1928928
Commit-Queue: Paul Lewis <aerotwist@chromium.org>
Reviewed-by: Tim van der Lippe <tvanderlippe@chromium.org>
2019-11-22 15:42:51 +00:00

133 lines
3.1 KiB
JavaScript

// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/** @type {!Common.Setting} */
const _releaseNoteVersionSetting = Common.settings.createSetting('releaseNoteVersionSeen', 0);
/**
* @const
* @type {string}
*/
export const releaseNoteViewId = 'release-note';
/**
* @return {!Help.ReleaseNote}
*/
export function latestReleaseNote() {
if (!Help._latestReleaseNote) {
/** @type {!Help.ReleaseNote} */
Help._latestReleaseNote = Help.releaseNoteText.reduce((acc, note) => note.version > acc.version ? note : acc);
}
return Help._latestReleaseNote;
}
export function _showReleaseNoteIfNeeded() {
_innerShowReleaseNoteIfNeeded(
_releaseNoteVersionSetting.get(), latestReleaseNote().version,
Common.settings.moduleSetting('help.show-release-note').get());
}
/**
* @param {number} lastSeenVersion
* @param {number} latestVersion
* @param {boolean} showReleaseNote
*/
export function _innerShowReleaseNoteIfNeeded(lastSeenVersion, latestVersion, showReleaseNote) {
if (!lastSeenVersion) {
_releaseNoteVersionSetting.set(latestVersion);
return;
}
if (!showReleaseNote) {
return;
}
if (lastSeenVersion >= latestVersion) {
return;
}
_releaseNoteVersionSetting.set(latestVersion);
UI.viewManager.showView(releaseNoteViewId, true);
}
/**
* @implements {Common.Runnable}
*/
export class HelpLateInitialization {
/**
* @override
*/
async run() {
if (!Host.isUnderTest()) {
_showReleaseNoteIfNeeded();
}
}
}
/**
* @implements {UI.ActionDelegate}
*/
export class ReleaseNotesActionDelegate {
/**
* @override
* @param {!UI.Context} context
* @param {string} actionId
* @return {boolean}
*/
handleAction(context, actionId) {
Host.InspectorFrontendHost.openInNewTab(latestReleaseNote().link);
return true;
}
}
/**
* @implements {UI.ActionDelegate}
*/
export class ReportIssueActionDelegate {
/**
* @override
* @param {!UI.Context} context
* @param {string} actionId
* @return {boolean}
*/
handleAction(context, actionId) {
Host.InspectorFrontendHost.openInNewTab(
'https://bugs.chromium.org/p/chromium/issues/entry?template=DevTools+issue');
return true;
}
}
/* Legacy exported object */
self.Help = self.Help || {};
/* Legacy exported object */
Help = Help || {};
Help.releaseNoteViewId = releaseNoteViewId;
Help.latestReleaseNote = latestReleaseNote;
Help._showReleaseNoteIfNeeded = _showReleaseNoteIfNeeded;
Help._innerShowReleaseNoteIfNeeded = _innerShowReleaseNoteIfNeeded;
Help._releaseNoteVersionSetting = _releaseNoteVersionSetting;
/** @typedef {!{title: string, subtitle: string, link: string}} */
Help.ReleaseNoteHighlight;
/**
* @typedef {!{version: number, header: string, highlights: !Array<!Help.ReleaseNoteHighlight>,
* link: string}}
*/
Help.ReleaseNote;
/**
* @constructor
*/
Help.HelpLateInitialization = HelpLateInitialization;
/**
* @constructor
*/
Help.ReleaseNotesActionDelegate = ReleaseNotesActionDelegate;
/**
* @constructor
*/
Help.ReportIssueActionDelegate = ReportIssueActionDelegate;