nextcloud/core/js/shareitemmodel.js

114 lines
2.5 KiB
JavaScript

/*
* Copyright (c) 2015
*
* This file is licensed under the Affero General Public License version 3
* or later.
*
* See the COPYING-README file.
*
*/
(function() {
if(!OC.Share) {
OC.Share = {};
OC.Share.Types = {};
}
/**
* @typedef {object} OC.Share.Types.Reshare
* @property {string} uid_owner
* @property {number} share_type
* @property {string} share_with
* @property {string} displayname_owner
* @property {number} permissions
*/
/**
* @typedef {object} OC.Share.Types.ShareInfo
* @property {number} share_type
* @property {number} permissions
* @property {number} file_source optional
* @property {number} item_source
* @property {string} token
* @property {string} share_with
* @property {string} share_with_displayname
* @property {string} share_mail_send
* @property {bool} collection //TODO: verify
* @property {Date} expiration optional?
* @property {number} stime optional?
*/
/**
* @typedef {object} OC.Share.Types.ShareItemInfo
* @property {OC.Share.Types.Reshare} reshare
* @property {OC.Share.Types.ShareInfo[]} shares
*/
/**
* @class OCA.Share.ShareItemModel
* @classdesc
*
* Represents the GUI of the share dialogue
*
*/
var ShareItemModel = function(itemType, itemSource) {
this.initialize(itemType, itemSource);
};
/**
* @memberof OCA.Sharing
*/
ShareItemModel.prototype = {
/** @var {string} **/
_itemType: null,
/** @var {mixed} **/ //TODO: what type?
_itemSource: null,
/** @var {OC.Share.Types.Reshare} **/
_reshare: null,
/** @var {OC.Share.Types.ShareInfo[]} **/
_shares: null,
initialize: function(itemType, itemSource) {
this._itemType = itemType;
this._itemSource = itemSource;
this._retrieveData();
},
hasReshare: function() {
return _.isObject(this._reshare) && !_.isUndefined(this._reshare.uid_owner);
},
getReshareOwner: function() {
return this._reshare.uid_owner;
},
getReshareOwnerDisplayname: function() {
return this._reshare.displayname_owner;
},
getReshareWith: function() {
return this._reshare.share_with;
},
getReshareType: function() {
return this._reshare.share_type;
},
_retrieveData: function() {
/** var {OC.Share.Types.ShareItemInfo} **/
var data = OC.Share.loadItem(this._itemType, this._itemSource);
if(data === false) {
console.warn('no data was returned');
return;
}
this._reshare = data.reshare;
this._shares = data.shares;
}
};
OC.Share.ShareItemModel = ShareItemModel;
})();