define(['appSettings'], function (appSettings) { function getReleases() { return fetch('https://api.github.com/repos/MediaBrowser/Emby/releases', { method: 'GET' }).then(function (response) { return response.json(); }, function () { return []; }).then(function (releases) { var result = {}; for (var i = 0, length = releases.length; i < length; i++) { var release = releases[i]; if (release.prerelease) { if (!result.beta && release.target_commitish == 'beta') { result.beta = release; } if (!result.dev && release.target_commitish == 'dev') { result.dev = release; } } if (result.beta && result.dev) { break; } } return result; }); } function replaceAll(str, find, replace) { return str.split(find).join(replace); } function showInternal() { getReleases().then(function (releases) { require(['dialogHelper'], function (dialogHelper) { var dlg = dialogHelper.createDialog({ size: 'small', removeOnClose: true, autoFocus: false }); dlg.classList.add('ui-body-b'); dlg.classList.add('background-theme-b'); var html = ''; html += '
'; html += ''; html += '
'; html += 'Emby'; html += '
'; html += '
'; html += '

Welcome Emby Tester!

'; html += '

If you\'re seeing this message, it\s because you\'re running a pre-release version of Emby Server. Thank you for being a part of the Emby pre-release testing process.

'; html += '

Please take a moment to leave your testing feedback about this version in the Emby Community.

'; html += 'Visit Emby Community'; if (releases.beta) { html += '

Beta Release Notes

'; html += '
'; html += replaceAll((releases.beta.body || ''), '*', '
'); html += '
'; } if (releases.dev) { html += '

Dev Release Notes

'; html += '
'; html += replaceAll((releases.dev.body || ''), '*', '
'); html += '
'; } dlg.innerHTML = html; document.body.appendChild(dlg); dialogHelper.open(dlg); dlg.querySelector('.btnCancel', dlg).addEventListener('click', function () { dialogHelper.close(dlg); }); }); }); } function compareVersions(a, b) { // -1 a is smaller // 1 a is larger // 0 equal a = a.split('.'); b = b.split('.'); for (var i = 0, length = Math.max(a.length, b.length) ; i < length; i++) { var aVal = parseInt(a[i] || '0'); var bVal = parseInt(b[i] || '0'); if (aVal < bVal) { return -1; } if (aVal > bVal) { return 1; } } return 0; } function show(apiClient) { var key = 'servertestermessagetime'; var lastShown = parseInt(appSettings.get(key) || '0'); if ((new Date().getTime() - lastShown) < 86400000) { return; } appSettings.set(key, new Date().getTime()); if (!lastShown) { // don't show the first time return; } apiClient.getPublicSystemInfo().then(function (info) { if (compareVersions(info.Version, '3.0.5912') == 1) { showInternal(); } }); } return { show: show }; });