diff --git a/dashboard-ui/components/servertestermessage.js b/dashboard-ui/components/servertestermessage.js new file mode 100644 index 0000000000..8bd4eb489c --- /dev/null +++ b/dashboard-ui/components/servertestermessage.js @@ -0,0 +1,157 @@ +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) < 172800000) { + 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 + }; +}); \ No newline at end of file diff --git a/dashboard-ui/scripts/librarymenu.js b/dashboard-ui/scripts/librarymenu.js index af9c9cb2d0..920e270316 100644 --- a/dashboard-ui/scripts/librarymenu.js +++ b/dashboard-ui/scripts/librarymenu.js @@ -1091,10 +1091,17 @@ Events.on(ConnectionManager, 'localusersignedin', function (e, user) { requiresDrawerRefresh = true; setDrawerClass(); + var apiClient = ConnectionManager.getApiClient(user.ServerId); ConnectionManager.user(ConnectionManager.getApiClient(user.ServerId)).then(function (user) { refreshLibraryDrawer(user); updateUserInHeader(user); }); + + if (!AppInfo.isNativeApp) { + require(['components/servertestermessage'], function (message) { + message.show(apiClient); + }); + } }); Events.on(ConnectionManager, 'localusersignedout', function () {