Sindbad~EG File Manager

Current Path : /var/www/html/ch.sumar.com.py/wp-content/plugins/peepso-messages/assets/js/messages/
Upload File :
Current File : /var/www/html/ch.sumar.com.py/wp-content/plugins/peepso-messages/assets/js/messages/new.js

import $ from 'jquery';
import { ajax, observer } from 'peepso';

const messagesData = window.peepsomessagesdata || {};
const FRIENDS_ONLY = +messagesData.friends_only ? 'is_friend' : false;

class MessageNew {
	constructor(opts = {}) {
		this.$container = $(opts.el);
		this.$postbox = this.$container.find('.ps-postbox-message');
		this.$recipientsSingle = this.$container.find('.ps-js-recipient-single').hide();
		this.$recipientsMultiple = this.$container.find('.ps-js-recipient-multiple').hide();
		this.$recipientsSelect = this.$container.find('select[name=recipients]');

		opts.args = opts.args || {};
		let { id } = opts.args;
		this.user_id = id;
		this.flag = FRIENDS_ONLY ? 'is_friend' : null;
		this.args = opts.args;
		delete opts.args.id;

		this.initPostbox();
		this.initRecipientsForm();
	}

	initPostbox() {
		this.$postbox = this.$postbox.pspostbox({
			autosize: true,
			text_length: messagesData.character_limit,
			save_url: 'messagesajax.new_message',
			send_button_text: messagesData.send_button_text,
			postbox_req: params => {
				let recipients = this.$recipientsSelect.val();
				let data = { recipients, subject: '', message: params.content };
				data = Object.assign(data, this.args);
				console.log(data);
				return data;
			},
			on_save: json => {
				if (json.data && json.data.url) {
					observer.removeFilter('beforeunload', this.$postbox.beforeUnloadHandler);
					window.location = json.data.url;
				}
			},
			on_error: json => json.errors && alert(json.errors[0])
		});
	}

	async initRecipientsForm() {
		let recipients = await this.getAvailableRecipients(this.user_id, this.flag);

		// Users' avatar lookup table.
		let avatars = {};
		recipients.forEach(user => (avatars[user.id] = user.avatar));

		// Single recipient.
		if (this.user_id) {
			let recipient = recipients.find(u => u.id == this.user_id);
			if (recipient) {
				let optionHtml = `<option value="${recipient.id}">${recipient.display_name}</option>`;
				this.$recipientsSelect.html(optionHtml).val(recipient.id);

				let $rec = this.$recipientsSingle;
				$rec.find('img').attr('src', recipient.avatar).attr('alt', recipient.display_name);
				$rec.find('.ps-comment-user').html(recipient.display_name);
				$rec.find('a').attr('href', recipient.url);
				$rec.show();
			}
			return;
		}

		// Multiple
		this.$recipientsMultiple.show();
		this.$recipientsSelect.selectize({
			valueField: 'id',
			labelField: 'display_name',
			searchField: 'display_name',
			plugins: ['remove_button'],
			closeAfterSelect: true,
			render: {
				option(item, escape) {
					let name = escape(item.display_name);
					let avatar = escape(item.avatar || avatars[item.id] || '');
					return `<div><img src="${avatar}" /><span>${name}</span></div>`;
				},
				item(item, escape) {
					let name = escape(item.display_name);
					let avatar = escape(item.avatar || avatars[item.id] || '');
					return `<div><img src="${avatar}" /><span>${name}</span></div>`;
				}
			},
			load: (keyword, callback) => {
				this.getAvailableRecipients(this.user_id, this.flag, keyword).then(callback);
			},
			onInitialize() {
				this.$wrapper.append(`<img src="${this.$input.data('loading')}" />`);
				this.$control_input.on('input', e => {
					setTimeout(() => $(e.currentTarget).trigger('keyup'), 0);
				});
			}
		});

		if (this.user_id) {
			this.$recipientsMultiple.hide();
			this.$recipientsSingle.show();

			let selectize = this.$recipientsSelect[0].selectize;
			selectize.onSearchChange('');
		} else {
			this.$recipientsSingle.hide();
			this.$recipientsMultiple.show();
		}
	}

	async getAvailableRecipients(user_id, flag, keyword) {
		let endpoint = 'messagesajax.get_available_recipients';
		let params = { user_id, keyword };
		let json = await ajax.post(endpoint, params);
		let recipients = [];

		if (json.success) {
			recipients = json.data.available_participants || [];
			if (user_id) recipients = recipients.filter(u => u.id == user_id);
			if (flag) recipients = recipients.filter(u => u[flag]);
		}

		return recipients;
	}
}

export default MessageNew;

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists