| 182 | } |
| 183 | |
| 184 | protected getNewUpdates(lastSeenVersion: Version, currentVersion: Version): Promise<ChangeLog.Update[]> { |
| 185 | return new Promise<ChangeLog.Update[]>((resolve, reject) => { |
| 186 | let localeOverride = this.clipperData.getValue(ClipperStorageKeys.displayLanguageOverride); |
| 187 | let localeToGet = localeOverride || navigator.language || (<any>navigator).userLanguage; |
| 188 | let changelogUrl = UrlUtils.addUrlQueryValue(Constants.Urls.changelogUrl, Constants.Urls.QueryParams.changelogLocale, localeToGet); |
| 189 | HttpWithRetries.get(changelogUrl).then((request: XMLHttpRequest) => { |
| 190 | try { |
| 191 | let schemas: ChangeLog.Schema[] = JSON.parse(request.responseText); |
| 192 | let allUpdates: ChangeLog.Update[]; |
| 193 | for (let i = 0; i < schemas.length; i++) { |
| 194 | if (schemas[i].schemaVersion === ChangeLog.schemaVersionSupported) { |
| 195 | allUpdates = schemas[i].updates; |
| 196 | break; |
| 197 | } |
| 198 | } |
| 199 | |
| 200 | if (allUpdates) { |
| 201 | let updatesSinceLastVersion = ChangeLogHelper.getUpdatesBetweenVersions(allUpdates, lastSeenVersion, currentVersion); |
| 202 | resolve(updatesSinceLastVersion); |
| 203 | } else { |
| 204 | throw new Error("No matching schemas were found."); |
| 205 | } |
| 206 | } catch (error) { |
| 207 | reject(error); |
| 208 | } |
| 209 | }, (error) => { |
| 210 | reject(error); |
| 211 | }); |
| 212 | }); |
| 213 | } |
| 214 | |
| 215 | protected getOrCreateWorkerForTab(tab: TTab, tabToIdMapping: (tab: TTab) => TTabIdentifier): TWorker { |
| 216 | let tabId = tabToIdMapping(tab); |