UNPKG

ns2-front-module-common

Version:
356 lines 16.5 kB
import { Injectable } from '@angular/core'; import { URLSearchParams } from '@angular/http'; // Services import { HttpService } from './http.service'; // Url's import { ChannelsUrls } from '../urls/channel-urls.model'; var ChannelsService = (function () { function ChannelsService(httpService) { this.httpService = httpService; } /** * Создание чата (канала\группы) * @param {ChatCreateInfoModel} chatData Информация для создания чата * @returns {Promise<ChatInfoModel>} */ ChannelsService.prototype.create = function (chatData) { var _this = this; return new Promise(function (resolve, reject) { var url = _this.messagesEndPoint + "channels"; _this.httpService.post(url, chatData) .map(function (response) { return response.json(); }) .map(function (response) { return response.data; }) .subscribe(resolve, reject); }); }; /** * Получение списка чатов пользователя (каналов\групп) * @param {boolean} onlyMy Показывать только мои чаты * @param {string} lastChatGuid Идентфиикатор последнего чата * @param {string} stopChatGuid Идентификатор чата, до которого получить информацию * @param {any} query Дополнительные параметры * @returns {Promise<ResponseListModel<ChatInfoModel>>} */ ChannelsService.prototype.getList = function (onlyMy, lastChatGuid, stopChatGuid, query) { var _this = this; return new Promise(function (resolve, reject) { var url = _this.messagesEndPoint + "channels/list"; if (lastChatGuid) { url += "/" + lastChatGuid; } if (lastChatGuid && stopChatGuid) { url += "/" + stopChatGuid; } if (onlyMy) { url += "?only-my"; } var params = new URLSearchParams(); if (query) { var keys = Object.keys(query); for (var i = 0; i < keys.length; i++) { var key = keys[i]; params.set(key, query[key]); } } _this.httpService.get(url, { params: params }) .map(function (response) { return response.json(); }) .map(function (response) { return response.data; }) .subscribe(resolve, reject); }); }; /** * Просмотр информации о чате (канала группы) * @param {string} chatGuid Идентфикатор чата (канала\группы) * @returns {Promise<ChatInfoModel>} */ ChannelsService.prototype.getInfo = function (chatGuid) { var _this = this; return new Promise(function (resolve, reject) { var url = _this.messagesEndPoint + "channels/" + chatGuid; _this.httpService.get(url) .map(function (response) { return response.json(); }) .map(function (response) { return response.data; }) .subscribe(resolve, reject); }); }; /** * Обновление информации о чате (канале\группе) * @param {string} chatGuid Идентификатор чата (канала\группы) * @param {ChatCreateInfoModel} params Параметры для обновления чата (канала\группы) * @returns {Promise<ChatInfoModel>} */ ChannelsService.prototype.update = function (chatGuid, params) { var _this = this; return new Promise(function (resolve, reject) { var url = _this.messagesEndPoint + "channels/" + chatGuid; _this.httpService.put(url, params) .map(function (response) { return response.json(); }) .map(function (response) { return response.data; }) .subscribe(resolve, reject); }); }; /** * Удаление чата (канала\группы) * @param {string} chatGuid Идентификатор чата (канала\группы) * @returns {Promise<boolean>} */ ChannelsService.prototype.remove = function (chatGuid) { var _this = this; return new Promise(function (resolve, reject) { var url = _this.messagesEndPoint + "channels/" + chatGuid; _this.httpService.delete(url) .map(function (response) { return response.json(); }) .map(function (response) { return response.data; }) .subscribe(resolve, reject); }); }; /** * Присоединиться к публичному чату (канала\группы) * @param {string} chatGuid Идентификатор чата (канала\группы) * @returns {Promise<boolean>} */ ChannelsService.prototype.join = function (chatGuid) { var _this = this; return new Promise(function (resolve, reject) { var url = _this.messagesEndPoint + "channels/" + chatGuid + "/join"; _this.httpService.post(url, {}) .map(function (response) { return response.json(); }) .map(function (response) { return response.data; }) .subscribe(resolve, reject); }); }; /** * Выход из чата (канала\группы) * @param {string} chatGuid Идентификатор чата (канала\группы) * @returns {Promise<boolean>} */ ChannelsService.prototype.leave = function (chatGuid) { var _this = this; return new Promise(function (resolve, reject) { var url = _this.messagesEndPoint + "channels/" + chatGuid + "/leave"; _this.httpService.delete(url, {}) .map(function (response) { return response.json(); }) .map(function (response) { return response.data; }) .subscribe(resolve, reject); }); }; /** * Принять приглашение на вступление в чат * @param {string} inviteGuid Идентификатор приглашения */ ChannelsService.prototype.accept = function (inviteGuid) { var _this = this; return new Promise(function (resolve, reject) { var url = ChannelsUrls.chatInvite + "/" + inviteGuid; _this.httpService.post(url, {}) .map(function (response) { return response.json(); }) .map(function (response) { return response.data; }) .subscribe(resolve, reject); }); }; /** * Отклонить приглашение на вступление в чат * @param {string} inviteGuid Идентификатор приглашения */ ChannelsService.prototype.refuse = function (inviteGuid) { var _this = this; return new Promise(function (resolve, reject) { var url = ChannelsUrls.chatInvite + "/" + inviteGuid; _this.httpService.delete(url, {}) .map(function (response) { return response.json(); }) .map(function (response) { return response.data; }) .subscribe(resolve, reject); }); }; /** * Приглашение пользователя в канал * @param {string} channelGuid Идентификатор канала * @param {string} userGuid Идентификатор пользователя * @returns {Promise<MemberInfoModel>} */ ChannelsService.prototype.invite = function (channelGuid, userGuid) { var _this = this; return new Promise(function (resolve, reject) { var url = _this.messagesEndPoint + "channels/" + channelGuid + "/invite/" + userGuid; _this.httpService.post(url, null) .map(function (response) { return response.json(); }) .map(function (response) { return response.data; }) .subscribe(resolve, reject); }); }; /** * Поиск сообщений в чате * @param {string} chatGuid Идентификтаор чата * @param {string} query Строка поиска * @param {string} messageGuid Идентификатор сообщения до которого необходимо искать * @returns {Observable<MessageSearchResultModel>} */ ChannelsService.prototype.searchMessages = function (chatGuid, query, messageGuid) { var url = this.messagesEndPoint + "channels/" + chatGuid + "/search-messages"; if (messageGuid) { url += '/' + messageGuid; } url += '?q=' + query; return this.httpService.get(url) .map(function (response) { return response.json(); }) .map(function (response) { return response.data; }); }; /** * Поиск по участникам канала * @param channelGuid Индификатор канала в по списку участников которой производим поиск * @param queryText Текст по которому ищем * @param query Значение по которому производим поиск участников */ ChannelsService.prototype.searchMembers = function (channelGuid, queryText, query) { var _this = this; return new Promise(function (resolve, reject) { var url = _this.messagesEndPoint + "channels/" + channelGuid + "/members/search"; var params = new URLSearchParams(); params.set('q', queryText); if (query) { var keys = Object.keys(query); for (var i = 0; i < keys.length; i++) { var key = keys[i]; params.set(key, query[key]); } } return _this.httpService.get(url, { params: params }) .map(function (response) { return response.json(); }) .map(function (response) { return response.data; }) .subscribe(resolve, reject); }); }; /** * Поиск по чатам * @param {string} queryText Текст для поиска * @param {any} query Дополнительные параметры запроса */ ChannelsService.prototype.search = function (queryText, query) { var _this = this; return new Promise(function (resolve, reject) { var url = _this.messagesEndPoint + "channels/search"; var params = new URLSearchParams(); params.set('q', queryText); if (query) { var keys = Object.keys(query); for (var i = 0; i < keys.length; i++) { var key = keys[i]; params.set(key, query[key]); } } return _this.httpService.get(url, { params: params }) .map(function (response) { return response.json(); }) .map(function (response) { return response.data; }) .subscribe(resolve, reject); }); }; /** * Получение истории сообщений * @param {string} chatGuid Идентификатор чата (канала\группы) * @param {string} messageGuid Идентификатор сообщения, от которого получать историю * @param {string} startMessageGuid Идентификатор сообщения, до которого получать историю * @param {number} numBefore Количество сообщений которые надо добавить до начального сообщения * @param {any} query Дополнительные параметры * @returns {Promise<ResponseListModel<ChatMessageModel>>} */ ChannelsService.prototype.getHistory = function (chatGuid, messageGuid, startMessageGuid, numBefore, query) { var _this = this; return new Promise(function (resolve, reject) { var url = _this.messagesEndPoint + "channels/" + chatGuid + "/history"; if (messageGuid) { url += "/" + messageGuid; if (startMessageGuid) { url += "/" + startMessageGuid; if (numBefore) { url += "/" + numBefore; } } } var params = new URLSearchParams(); if (query) { var keys = Object.keys(query); for (var i = 0; i < keys.length; i++) { var key = keys[i]; params.set(key, query[key]); } } _this.httpService.get(url, { params: params }) .map(function (response) { return response.json(); }) .map(function (response) { return response.data; }) .subscribe(resolve, reject); }); }; /** * Получаем список участников канала * * @param {string} channelGuid Индификатор канала * @param query Дополнительные параметры */ ChannelsService.prototype.getMembers = function (channelGuid, query) { var _this = this; return new Promise(function (resolve, reject) { var url = _this.messagesEndPoint + "channels/" + channelGuid + "/members"; var params = new URLSearchParams(); if (query) { var keys = Object.keys(query); for (var i = 0; i < keys.length; i++) { var key = keys[i]; params.set(key, query[key]); } } _this.httpService.get(url, { params: params }) .map(function (response) { return response.json(); }) .map(function (response) { return response.data; }) .subscribe(resolve, reject); }); }; /** * Удаление участника канала * @param {string} channelGuid * @param {string} userGuid * @returns {Promise<boolean>} */ ChannelsService.prototype.removeMember = function (channelGuid, userGuid) { var _this = this; return new Promise(function (resolve, reject) { var url = _this.messagesEndPoint + "channels/" + channelGuid + "/kickoff/" + userGuid; _this.httpService.delete(url) .map(function (response) { return response.json(); }) .map(function (response) { return response.data; }) .subscribe(resolve, reject); }); }; /** * Получение информации о статусе приглашения для пользователей канала * @param {string} channelGuid Идентификатор канала * @param {string[]} userGuids Массив идентификаторов пользователей канала * @return {Promise<MemberInfoModel[]>} */ ChannelsService.prototype.getMembersInfo = function (channelGuid, userGuids) { var _this = this; return new Promise(function (resolve, reject) { var url = _this.messagesEndPoint + "channels/" + channelGuid + "/members-info"; _this.httpService.post(url, userGuids) .map(function (response) { return response.json(); }) .map(function (response) { return response.data; }) .subscribe(resolve, reject); }); }; /** * Установка URL для сервиса сообщений * @param messagesEndPoint */ ChannelsService.prototype.setMessagesEndPoint = function (messagesEndPoint) { this.messagesEndPoint = messagesEndPoint; }; return ChannelsService; }()); export { ChannelsService }; ChannelsService.decorators = [ { type: Injectable }, ]; /** @nocollapse */ ChannelsService.ctorParameters = function () { return [ { type: HttpService, }, ]; }; //# sourceMappingURL=channels.service.js.map