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.
This commit is contained in:
parent
c683b1d3c9
commit
ebfbb97e66
2 changed files with 31 additions and 0 deletions
|
@ -819,6 +819,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
|
||||
*
|
||||
|
@ -834,6 +849,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);
|
||||
}
|
||||
|
|
|
@ -1316,5 +1316,19 @@ describe('OC.Share tests', function() {
|
|||
});
|
||||
});
|
||||
});
|
||||
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]);
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in a new issue