aboutsummaryrefslogtreecommitdiffstats
path: root/core/js/shareitemmodel.js
blob: 2914b281ee1d5ea347eec4f1b6780165be43cd31 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/*
 * 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);
	};

	// FIXME: migration is to Backbone.Model still WIP, only pushing for the night.

	/**
	 * @memberof OCA.Sharing
	 */
	var ShareItemModel = OC.Backbone.Model.extend({
		initialize: function() {
			this._retrieveData(); // TODO I need to get my head around fetch() respectively sync() and url(). Left for later, it's late.
		},

		hasReshare: function() {
			return _.isObject(this.get('reshare')) && !_.isUndefined(this.get('reshare').uid_owner);
		},

		getReshareOwner: function() {
			return this.get('reshare').uid_owner;
		},

		getReshareOwnerDisplayname: function() {
			return this.get('reshare').displayname_owner;
		},

		getReshareWith: function() {
			return this.get('reshare').share_with;
		},

		getReshareType: function() {
			return this.get('reshare').share_type;
		},

		_retrieveData: function() {
			/** var {OC.Share.Types.ShareItemInfo} **/
			var data = OC.Share.loadItem(this.get('itemType'), this.get('itemSource'));
			if(data === false) {
				console.warn('no data was returned');
				return;
			}
			var attributes = {
				reshare: data.reshare,
				shares: data.shares
			};
			this.set(attributes);
		}
	});

	OC.Share.ShareItemModel = ShareItemModel;
})();