diff options
Diffstat (limited to 'view')
-rw-r--r-- | view/js/main.js | 10 | ||||
-rw-r--r-- | view/js/mod_cloud.js | 35 |
2 files changed, 43 insertions, 2 deletions
diff --git a/view/js/main.js b/view/js/main.js index 7df705603..3e3fd057c 100644 --- a/view/js/main.js +++ b/view/js/main.js @@ -1997,3 +1997,13 @@ function sse_fallback() { sse_handleNotifications(obj, false, false); }); } + +function makeid(length) { + var result = ''; + var characters = 'abcdef0123456789'; + var charactersLength = characters.length; + for ( var i = 0; i < length; i++ ) { + result += characters.charAt(Math.floor(Math.random() * charactersLength)); + } + return result; +} diff --git a/view/js/mod_cloud.js b/view/js/mod_cloud.js index aa9d308eb..aeaac8c69 100644 --- a/view/js/mod_cloud.js +++ b/view/js/mod_cloud.js @@ -70,8 +70,11 @@ $(document).ready(function () { $('body').css('cursor', 'wait'); $.jGrowl('Please stand by while your download is being prepared...', { sticky: false, theme: 'info', life: 10000 }); + var download_token = makeid(32); + let data = [ {name: 'attach_path', value: window.location.pathname}, + {name: 'download_token', value: download_token}, {name: 'channel_id', value: channelId}, {name: 'attach_ids[]', value: id} ] @@ -79,10 +82,22 @@ $(document).ready(function () { $.post('attach', data, function (data) { if (data.success) { $('body').css('cursor', 'auto'); - window.location.href = '/attach/download?token=' + data.token; + window.location.href = '/attach/download?token=' + data.token + '&download_token=' + download_token; + clearInterval(fallback); } }); + // fallback if server timed out + + var fallback = setInterval(function(){ $.get('/attach/check?download_token=' + download_token, function(data){ + if (data.success) { + $('body').css('cursor', 'auto'); + window.location.href = '/attach/download?token=' + data.token; + clearInterval(fallback); + } + + }); }, 30000); + }); $('.cloud-tool-delete-btn').on('click', function (e) { @@ -298,18 +313,34 @@ $(document).ready(function () { $('body').css('cursor', 'wait'); $.jGrowl('Please stand by while your download is being prepared...', { sticky: false, theme: 'info', life: 10000 }); + var download_token = makeid(32); + post_data.push( {name: 'attach_path', value: window.location.pathname}, + {name: 'download_token', value: download_token}, {name: 'channel_id', value: channelId}, ); $.post('attach', post_data, function (data) { if (data.success) { $('body').css('cursor', 'auto'); - window.location.href = '/attach/download?token=' + data.token; + window.location.href = '/attach/download?token=' + data.token + '&download_token=' + download_token; + clearInterval(fallback); } }); + // fallback if server timed out + + var fallback = setInterval(function(){ $.get('/attach/check?download_token=' + download_token, function(data){ + if (data.success) { + $('body').css('cursor', 'auto'); + window.location.href = '/attach/download?token=' + data.token; + clearInterval(fallback); + } + + }); }, 30000); + + }); $('#cloud-multi-tool-delete-btn').on('click', function (e) { |