From 47d25989dc974879827925f72d904548785a1828 Mon Sep 17 00:00:00 2001 From: Morris Jobke Date: Wed, 8 Jul 2015 15:23:01 +0200 Subject: [PATCH] Fix parsing of sharetime as string In some cases the ajax/share.php will return the share time as string. If this is the case it would get parsed completely wrong and cause the share dropdown to not work anymore. This change will properly cast the string to an interger and also fallback if this is not possible. --- core/js/share.js | 17 +++++++++++++++++ core/js/tests/specs/shareSpec.js | 14 ++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/core/js/share.js b/core/js/share.js index d8930727cfd..94833a8d915 100644 --- a/core/js/share.js +++ b/core/js/share.js @@ -764,6 +764,21 @@ OC.Share={ dirname:function(path) { return path.replace(/\\/g,'/').replace(/\/[^\/]*$/, ''); }, + /** + * Parses a string to an valid integer (unix timestamp) + * @param time + * @returns {*} + * @internal Only used to work around a bug in the backend + */ + _parseTime: function(time) { + if (_.isString(time)) { + time = parseInt(time, 10); + if(isNaN(time)) { + time = null; + } + } + return time; + }, /** * Displays the expiration date field * @@ -779,6 +794,8 @@ OC.Share={ minDate: minDate, maxDate: null }; + // TODO: hack: backend returns string instead of integer + shareTime = OC.Share._parseTime(shareTime); if (_.isNumber(shareTime)) { shareTime = new Date(shareTime * 1000); } diff --git a/core/js/tests/specs/shareSpec.js b/core/js/tests/specs/shareSpec.js index ffde885d2b6..22632a2bd2e 100644 --- a/core/js/tests/specs/shareSpec.js +++ b/core/js/tests/specs/shareSpec.js @@ -836,5 +836,19 @@ describe('OC.Share tests', function() { }); // TODO: add unit tests for share recipients }); + describe('OC.Share utils', function() { + it('parseTime should properly parse strings', function() { + + _.each([ + [ '123456', 123456], + [ 123456 , 123456], + ['0123456', 123456], + ['abcdefg', null], + ], function(value) { + expect(OC.Share._parseTime(value[0])).toEqual(value[1]); + }); + + }); + }); }); -- 2.39.5