Fix parsing int attributes from share.php response
Sometimes the attributes returned by share.php are integers but packaged as strings. This fix makes sure that such attributes are parsed as integers
This commit is contained in:
parent
ee649d58c5
commit
6ea27e2b03
|
@ -50,7 +50,7 @@
|
|||
* @property {string} token
|
||||
* @property {string} share_with
|
||||
* @property {string} share_with_displayname
|
||||
* @property {string} share_mail_send
|
||||
* @property {string} mail_send
|
||||
* @property {OC.Share.Types.Collection|undefined} collection
|
||||
* @property {Date} expiration optional?
|
||||
* @property {number} stime optional?
|
||||
|
@ -63,6 +63,15 @@
|
|||
* @property {OC.Share.Types.LinkShareInfo|undefined} linkShare
|
||||
*/
|
||||
|
||||
/**
|
||||
* These properties are sometimes returned by the server as strings instead
|
||||
* of integers, so we need to convert them accordingly...
|
||||
*/
|
||||
var SHARE_RESPONSE_INT_PROPS = [
|
||||
'id', 'file_parent', 'mail_send', 'file_source', 'item_source', 'permissions',
|
||||
'storage', 'share_type', 'parent', 'stime', 'expiration'
|
||||
];
|
||||
|
||||
/**
|
||||
* @class OCA.Share.ShareItemModel
|
||||
* @classdesc
|
||||
|
@ -462,7 +471,7 @@
|
|||
if(!_.isObject(share)) {
|
||||
throw "Unknown Share";
|
||||
}
|
||||
return share.share_mail_send === '1';
|
||||
return share.mail_send === 1;
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -673,7 +682,19 @@
|
|||
}
|
||||
|
||||
/** @type {OC.Share.Types.ShareInfo[]} **/
|
||||
var shares = _.toArray(data.shares);
|
||||
var shares = _.map(data.shares, function(share) {
|
||||
// properly parse some values because sometimes the server
|
||||
// returns integers as string...
|
||||
var i;
|
||||
for (i = 0; i < SHARE_RESPONSE_INT_PROPS.length; i++) {
|
||||
var prop = SHARE_RESPONSE_INT_PROPS[i];
|
||||
if (!_.isUndefined(share[prop])) {
|
||||
share[prop] = parseInt(share[prop], 10);
|
||||
}
|
||||
}
|
||||
return share;
|
||||
});
|
||||
|
||||
this._legacyFillCurrentShares(shares);
|
||||
|
||||
var linkShare = { isLinkShare: false };
|
||||
|
|
|
@ -249,10 +249,7 @@ describe('OC.Share.ShareItemModel', function() {
|
|||
it('allows owner to share their own share when they are also the recipient', function() {
|
||||
OC.currentUser = 'user1';
|
||||
loadItemStub.yields({
|
||||
reshare: {
|
||||
permissions: OC.PERMISSION_READ,
|
||||
uid_owner: 'user1'
|
||||
},
|
||||
reshare: {},
|
||||
shares: []
|
||||
});
|
||||
|
||||
|
@ -261,6 +258,51 @@ describe('OC.Share.ShareItemModel', function() {
|
|||
// sharing still allowed
|
||||
expect(model.get('permissions') & OC.PERMISSION_SHARE).toEqual(OC.PERMISSION_SHARE);
|
||||
});
|
||||
it('properly parses integer values when the server is in the mood of returning ints as string', function() {
|
||||
loadItemStub.yields({
|
||||
reshare: {},
|
||||
shares: [{
|
||||
displayname_owner: 'root',
|
||||
expiration: '1403900000',
|
||||
file_source: '123',
|
||||
file_target: '/folder',
|
||||
id: '20',
|
||||
item_source: '123',
|
||||
item_type: 'file',
|
||||
mail_send: '0',
|
||||
parent: '999',
|
||||
path: '/folder',
|
||||
permissions: '' + OC.PERMISSION_READ,
|
||||
share_type: '' + OC.Share.SHARE_TYPE_USER,
|
||||
share_with: 'user1',
|
||||
stime: '1403884258',
|
||||
storage: '1',
|
||||
token: 'tehtoken',
|
||||
uid_owner: 'root'
|
||||
}]
|
||||
});
|
||||
|
||||
model.fetch();
|
||||
|
||||
var shares = model.get('shares');
|
||||
expect(shares.length).toEqual(1);
|
||||
|
||||
var share = shares[0];
|
||||
expect(share.id).toEqual(20);
|
||||
expect(share.file_source).toEqual(123);
|
||||
expect(share.file_target).toEqual('/folder');
|
||||
expect(share.item_source).toEqual(123);
|
||||
expect(share.item_type).toEqual('file');
|
||||
expect(share.displayname_owner).toEqual('root');
|
||||
expect(share.mail_send).toEqual(0);
|
||||
expect(share.parent).toEqual(999);
|
||||
expect(share.path).toEqual('/folder');
|
||||
expect(share.permissions).toEqual(OC.PERMISSION_READ);
|
||||
expect(share.share_type).toEqual(OC.Share.SHARE_TYPE_USER);
|
||||
expect(share.share_with).toEqual('user1');
|
||||
expect(share.stime).toEqual(1403884258);
|
||||
expect(share.expiration).toEqual(1403900000);
|
||||
});
|
||||
});
|
||||
|
||||
describe('Util', function() {
|
||||
|
|
Loading…
Reference in New Issue