blob: d4a2080234646c0b7b52b71f4a8ffa4bcf03113b [file] [log] [blame]
// 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.
/**
* @return {!Help.ReleaseNote}
*/
Help.latestReleaseNote = function() {
if (!Help._latestReleaseNote) {
/** @type {!Help.ReleaseNote} */
Help._latestReleaseNote = Help.releaseNoteText.reduce((acc, note) => note.version > acc.version ? note : acc);
}
return Help._latestReleaseNote;
};
/**
* @return {!Common.Setting}
*/
Help.releaseNoteVersionSetting = function() {
if (!Help._releaseNoteVersionSetting) {
/** @type {!Common.Setting} */
Help._releaseNoteVersionSetting = Common.settings.createSetting('releaseNoteVersionSeen', 0);
}
return Help._releaseNoteVersionSetting;
};
Help.showReleaseNoteIfNeeded = function() {
Help._showReleaseNoteIfNeeded(Help.releaseNoteVersionSetting().get(), Help.latestReleaseNote().version);
};
/**
* @param {number} lastSeenVersion
* @param {number} latestVersion
*/
Help._showReleaseNoteIfNeeded = function(lastSeenVersion, latestVersion) {
if (!Runtime.experiments.isEnabled('releaseNote'))
return;
if (lastSeenVersion >= latestVersion)
return;
Help.releaseNoteVersionSetting().set(latestVersion);
UI.viewManager.showView(Help._releaseNoteViewId, true);
};
/**
* @return {number}
*/
Help.browserVersion = function() {
if (!Help._browserVersion) {
var chromeRegex = new RegExp('(?:^|\\W)Chrome/(\\d+)');
var chromeMatch = navigator.userAgent.match(chromeRegex);
/** @type {number} */
Help._browserVersion = Number(chromeMatch[1]);
}
return Help._browserVersion;
};
/**
* @const
* @type {string}
*/
Help._releaseNoteViewId = 'release-note';
/** @typedef {!{src: string}} */
Help.ReleaseNoteImage;
/** @typedef {!{text: string, link: (string | undefined)}} */
Help.ReleaseNoteHighlightContent;
/** @typedef {!{contents: !Array<!Help.ReleaseNoteHighlightContent>, featured: (boolean | undefined)}} */
Help.ReleaseNoteHighlight;
/**
* @typedef {!{version: number, highlights: !Array<!Help.ReleaseNoteHighlight>,
* link: string, image: !Help.ReleaseNoteImage}}
*/
Help.ReleaseNote;