Home Reference Source

src/fileFolder.js

import MagisterThing from './magisterThing'
import File from './file'
import { toString } from './util'

class FileFolder extends MagisterThing {
	/**
	 * @private
	 * @param {Magister} magister
	 * @param {Object} raw
	 */
	constructor(magister, raw) {
		super(magister)

		/**
		 * @type {String}
		 * @readonly
		 */
		this.id = toString(raw.Id)
		/**
		 * @type {String}
		 * @readonly
		 */
		this.name = raw.Naam
		/**
		 * @type {Number}
		 * @readonly
		 */
		this.rights = raw.Privilege
		/**
		 * @type {String}
		 * @readonly
		 */
		this.parentId = toString(raw.ParentId)
	}

	/**
	 * @param {boolean} [fillPersons=false]
	 * @returns {Promise<File[]>}
	 */
	files(fillPersons = false) {
		const url = `${this._magister._personUrl}/bronnen?parentId=${this.id}`
		return this._magister._privileges.needs('bronnen', 'read')
		.then(() => this._magister.http.get(url))
		.then(res => res.json())
		.then(res => {
			const promises = res.Items.filter(item => [ 0, 1, 2, 4 ].includes(item.Type)).map(f => {
				const file = new File(this._magister, this, f)
				return fillPersons ?
					file.addedBy.getFilled().then(() => file) :
					Promise.resolve(file)
			})
			return Promise.all(promises)
		})
	}

	/**
	 * @returns {Promise<FileFolder[]>}
	 */
	folders() {
		return this._magister.fileFolders(this.id)
	}
}

export default FileFolder