ns2-front-module-common
Version:
NS2 common module
356 lines • 16.5 kB
JavaScript
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