ns2-front-module-common
Version: 
NS2 common module
165 lines • 7.51 kB
JavaScript
import { Injectable } from "@angular/core";
import { URLSearchParams } from '@angular/http';
import { HttpService } from "./http.service";
var PeersService = (function () {
    function PeersService(httpService) {
        this.httpService = httpService;
    }
    /**
     * Создание диалога между текущим пользователем и userGuid
     * @param {string} userGuid С кем создать диалог
     * @returns {Promise<ChatInfoModel>}
     */
    PeersService.prototype.createPeer = function (userGuid) {
        var _this = this;
        return new Promise(function (resolve, reject) {
            var url = _this.messagesEndPoint + "peers/" + userGuid;
            _this.httpService.post(url, null)
                .map(function (response) { return response.json(); })
                .map(function (response) { return response.data; })
                .subscribe(resolve, reject);
        });
    };
    /**
     * Получение диалогов текущего пользователя
     * @param {string} lastPeerGuid Идентификатор диалога начиная с которого надо возвращать чаты
     * @param {string} stopPeerGuid Идентификатор диалога, до которого нужно получить чаты
     * @param {any} query           Дополнительные условия
     * @returns {Promise<ResponseListModel<ChatInfoModel>>}
     */
    PeersService.prototype.getPeers = function (lastPeerGuid, stopPeerGuid, query) {
        var _this = this;
        return new Promise(function (resolve, reject) {
            var url = _this.messagesEndPoint + "peers/list";
            if (lastPeerGuid) {
                url += "/" + lastPeerGuid;
                if (stopPeerGuid) {
                    url += "/" + stopPeerGuid;
                }
            }
            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} peerGuid Идентификатор диалога
     * @returns {Promise<ChatInfoModel>}
     */
    PeersService.prototype.getPeer = function (peerGuid) {
        var _this = this;
        return new Promise(function (resolve, reject) {
            var url = _this.messagesEndPoint + "peers/" + peerGuid;
            _this.httpService.get(url)
                .map(function (response) { return response.json(); })
                .map(function (response) { return response.data; })
                .subscribe(resolve, reject);
        });
    };
    /**
     * Получение истории сообщений диалога с пользователем
     * @param {string} peerGuid     Идентификатор диалога
     * @param {string} messageGuid  Идентификатор сообщения до которого необходимо получить записи истории
     * @param startMessageGuid      Идентификатор сообщения с которого необходимо получить записи истории
     * @param numBefore             Количество сообщений которые надо добавить до начального сообщения
     * @param query                 Дополнительные параметры
     * @returns {Promise<ResponseListModel<ChatMessageModel>>}
     */
    PeersService.prototype.getHistory = function (peerGuid, messageGuid, startMessageGuid, numBefore, query) {
        var _this = this;
        return new Promise(function (resolve, reject) {
            var url = _this.messagesEndPoint + "peers/" + peerGuid + "/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} queryText Строка поиска
     * @param {any} query Дополнительные параметры запроса
     * @returns {Promise<ResponseListModel<ChatInfoModel>>}
     */
    PeersService.prototype.search = function (queryText, query) {
        var _this = this;
        return new Promise(function (resolve, reject) {
            var url = _this.messagesEndPoint + "peers/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} peerGuid Идентификатор чата
     * @param {string} query Строка для поиска
     * @param {string} messageGuid Идентификатор сообщения до которого необходимо искать
     * @returns {Observable<MessageSearchResultModel>}
     */
    PeersService.prototype.searchMessages = function (peerGuid, query, messageGuid) {
        var url = this.messagesEndPoint + "peers/" + peerGuid + "/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; });
    };
    /**
     * Установка URL до сервиса messaging
     *
     * @param messagesEndPoint
     */
    PeersService.prototype.setMessagesEndPoint = function (messagesEndPoint) {
        this.messagesEndPoint = messagesEndPoint;
    };
    return PeersService;
}());
export { PeersService };
PeersService.decorators = [
    { type: Injectable },
];
/** @nocollapse */
PeersService.ctorParameters = function () { return [
    { type: HttpService, },
]; };
//# sourceMappingURL=peers.service.js.map