diff --git a/ReportJ.Extension.Chrome/app/js/content/common/jiraUtil.js b/ReportJ.Extension.Chrome/app/js/content/common/jiraUtil.js new file mode 100644 index 0000000..c1d77fe --- /dev/null +++ b/ReportJ.Extension.Chrome/app/js/content/common/jiraUtil.js @@ -0,0 +1,26 @@ +/** + * Identify is current page Jira, based on it's content. + */ +export function checkIsInsideJira() { + return new Promise((resolve) => { + const acceptableStates = ["loaded", "interactive", "complete"]; + const alreadyLoaded = acceptableStates.includes(document.readyState); + + if (alreadyLoaded) { + const inJira = checkIsDocumentHasJiraMarkers(); + resolve(inJira); + } else { + document.addEventListener("DOMContentLoaded", () => { + const inJira = checkIsDocumentHasJiraMarkers(); + resolve(inJira); + }); + } + }); +} + +function checkIsDocumentHasJiraMarkers() { + const jiraBodyId = "jira"; + const bodyId = document.body.id || ""; + + return jiraBodyId === bodyId.toLowerCase(); +} \ No newline at end of file diff --git a/ReportJ.Extension.Chrome/app/js/content/content.js b/ReportJ.Extension.Chrome/app/js/content/content.js index 8e3aa08..52b4c24 100644 --- a/ReportJ.Extension.Chrome/app/js/content/content.js +++ b/ReportJ.Extension.Chrome/app/js/content/content.js @@ -1,36 +1,25 @@ import AutoIssueSumaryExtender from "./autoIssueSummary/autoIssueSummaryExtender"; import CloseIssueExtender from "./closeIssue/closeIssueExtender"; -import JiraWrapper from "~/js/services/jira"; import StorageService from "~/js/services/storageService"; -import UrlService from "~/js/services/urlService"; + +import { checkIsInsideJira } from "~/js/content/common/jiraUtil"; class ContentController { constructor(browser) { const storage = new StorageService(browser); - const urlService = new UrlService(browser); - const baseUrl = urlService.getBaseUrl(location.href); - const jira = new JiraWrapper(baseUrl); - - let generalSettings; - - storage.getGeneralSettings() - .then((settings) => { - generalSettings = settings; - if (settings.optimisationsForNonJiraPages.enabled) { - return jira.checkIsInsideJira(baseUrl); - } - return Promise.resolve(true); + Promise.all([storage.getGeneralSettings(), checkIsInsideJira()]) + .then((results) => { + const settings = results[0]; + const insideJira = results[1]; + this._initExtenders(insideJira, settings); }) - .then((insideJira) => this._initExtenders(insideJira, generalSettings)) .then(() => this.start()); } start() { - this.extenders.forEach((extender) => { - extender.start(); - }); + this.extenders.forEach((extender) => extender.start()); } _initExtenders(insideJira, settings) { diff --git a/ReportJ.Extension.Chrome/app/js/models/settings/generalSettings.js b/ReportJ.Extension.Chrome/app/js/models/settings/generalSettings.js index 8c73d7e..9a2fc77 100644 --- a/ReportJ.Extension.Chrome/app/js/models/settings/generalSettings.js +++ b/ReportJ.Extension.Chrome/app/js/models/settings/generalSettings.js @@ -3,8 +3,5 @@ export default class GeneralSettings { this.autoIssueSummary = { enabled: true }; - this.optimisationsForNonJiraPages = { - enabled: true - }; } } \ No newline at end of file diff --git a/ReportJ.Extension.Chrome/app/manifest.json b/ReportJ.Extension.Chrome/app/manifest.json index d8e6d65..193ead7 100644 --- a/ReportJ.Extension.Chrome/app/manifest.json +++ b/ReportJ.Extension.Chrome/app/manifest.json @@ -34,7 +34,8 @@ "*://*/*" ], "css": [ - "build/content.css" + // todo: uncomment when styles would be added. MR + //"build/content.css" ], "js": [ "build/manifest.js", diff --git a/ReportJ.Extension.Chrome/app/options.html b/ReportJ.Extension.Chrome/app/options.html index 07b7eb5..d54e924 100644 --- a/ReportJ.Extension.Chrome/app/options.html +++ b/ReportJ.Extension.Chrome/app/options.html @@ -52,14 +52,6 @@

General

Automatically add issue summary to "Log Work" reports. -
- -

Templates