UNPKG

loop-modules

Version:

Shared modules for the Loop product suite.

90 lines (79 loc) 2.87 kB
// angular import { Injectable } from '@angular/core'; import { Http } from '@angular/http'; // libs import 'rxjs/add/operator/map'; import 'rxjs/add/operator/catch'; // libs import { Store } from '@ngrx/store'; // app import { QueryAction, SetEntriesAction } from '../actions/loop-activity-message.action'; import { APIDispatcher, APIRequestOptions, ResponseBody } from '../utils/index'; import { LoopActivityMessage } from '../interfaces/loop-activity-message.interface'; @Injectable() export class LoopActivityMessageService extends APIDispatcher { lastRequest: any = { currentPage: 0, requestSize: 10 }; constructor(public http: Http, public store: Store<any>) { super(http, store); } query(page: number = 0, size: number = 10, options: APIRequestOptions = {archived: false}) { this.get('ma_loop/api/v1/activity_message/fetch', page, size, options) .map(res => res.json()) .subscribe((response: ResponseBody) => { this.loaded = true; this.lastRequest = response; this.lastRequest.currentPage = page; this.lastRequest.requestSize = size; this.store.dispatch(new QueryAction(response.content)); }); } acknowledge(message: LoopActivityMessage) { if(!message.acknowledged_at) { console.log('updating acknowledge'); this.http.put('ma_loop/api/v1/activity_message/'+message.recipient_identity, { payload: { acknowledgedAt: new Date().getTime() } }).subscribe((response: any) => { this.resetEntries(); this.lastRequest = response; this.lastRequest.currentPage = 1; this.query(); }); } } archive(message: LoopActivityMessage) { if(!message.archived_at) { console.log('updating archive'); this.http.put('ma_loop/api/v1/activity_message/'+message.recipient_identity, { payload: { acknowledgedAt: message.acknowledged_at || new Date().getTime(), archivedAt: new Date().getTime() } }).subscribe(); } } /** * Queries the next page from the back-end service, based on the previous request * * * @memberOf LoopActivityMessageService */ getNextPage() { if(this.hasNext) { this.query(this.lastRequest.currentPage + 1, this.lastRequest.requestSize); } } /** * Resets the entries in the app-state slice for LoopActivityMessage * * * @memberOf LoopActivityMessageService */ resetEntries() { this.loaded = false; this.lastRequest = undefined; this.store.dispatch(new SetEntriesAction([])); } }