UNPKG

debug-server-next

Version:

Dev server for hippy-core.

93 lines (92 loc) 3.83 kB
// 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. import * as Common from '../../core/common/common.js'; import * as Host from '../../core/host/host.js'; import * as UI from '../../ui/legacy/legacy.js'; import { releaseNoteText } from './ReleaseNoteText.js'; export const releaseVersionSeen = 'releaseNoteVersionSeen'; export const releaseNoteViewId = 'release-note'; let latestReleaseNoteInstance; let releaseNotesForTest; let releaseNoteVersionSetting; export function latestReleaseNote() { if (!latestReleaseNoteInstance) { latestReleaseNoteInstance = (releaseNotesForTest || releaseNoteText).reduce((acc, note) => note.version > acc.version ? note : acc); } return latestReleaseNoteInstance; } export function showReleaseNoteIfNeeded() { const releaseNoteVersionSetting = Common.Settings.Settings.instance().createSetting(releaseVersionSeen, 0); const releaseNoteVersionSettingValue = releaseNoteVersionSetting.get(); innerShowReleaseNoteIfNeeded(releaseNoteVersionSettingValue, latestReleaseNote().version, Common.Settings.Settings.instance().moduleSetting('help.show-release-note').get()); } export function setReleaseNotesForTest(releaseNote) { releaseNotesForTest = releaseNote; } export function getReleaseNoteVersionSetting() { if (!releaseNoteVersionSetting) { releaseNoteVersionSetting = Common.Settings.Settings.instance().createSetting(releaseVersionSeen, 0); } return releaseNoteVersionSetting; } export function innerShowReleaseNoteIfNeeded(lastSeenVersion, latestVersion, showReleaseNote) { const releaseNoteVersionSetting = Common.Settings.Settings.instance().createSetting(releaseVersionSeen, 0); if (!lastSeenVersion) { releaseNoteVersionSetting.set(latestVersion); return false; } if (!showReleaseNote) { return false; } if (lastSeenVersion >= latestVersion) { return false; } releaseNoteVersionSetting.set(latestVersion); UI.ViewManager.ViewManager.instance().showView(releaseNoteViewId, true); return true; } let helpLateInitializationInstance; export class HelpLateInitialization { static instance(opts = { forceNew: null }) { const { forceNew } = opts; if (!helpLateInitializationInstance || forceNew) { helpLateInitializationInstance = new HelpLateInitialization(); } return helpLateInitializationInstance; } async run() { if (!Host.InspectorFrontendHost.isUnderTest()) { showReleaseNoteIfNeeded(); } } } let releaseNotesActionDelegateInstance; export class ReleaseNotesActionDelegate { handleAction(_context, _actionId) { Host.InspectorFrontendHost.InspectorFrontendHostInstance.openInNewTab(latestReleaseNote().link); return true; } static instance(opts = { forceNew: null }) { const { forceNew } = opts; if (!releaseNotesActionDelegateInstance || forceNew) { releaseNotesActionDelegateInstance = new ReleaseNotesActionDelegate(); } return releaseNotesActionDelegateInstance; } } let reportIssueActionDelegateInstance; export class ReportIssueActionDelegate { handleAction(_context, _actionId) { Host.InspectorFrontendHost.InspectorFrontendHostInstance.openInNewTab('https://bugs.chromium.org/p/chromium/issues/entry?template=DevTools+issue'); return true; } static instance(opts = { forceNew: null }) { const { forceNew } = opts; if (!reportIssueActionDelegateInstance || forceNew) { reportIssueActionDelegateInstance = new ReportIssueActionDelegate(); } return reportIssueActionDelegateInstance; } }