UNPKG

@universis/common

Version:

Universis - common directives and services

71 lines (70 loc) 6.28 kB
import * as tslib_1 from "tslib"; import { Injectable } from '@angular/core'; import { uniqBy, slice } from 'lodash'; import { BehaviorSubject } from 'rxjs'; /** * UserActivityService * * Handles the user activity tracking. * */ export class UserActivityService { constructor() { this.maxItems = 10; this.list = []; this.userActivityEntries$ = new BehaviorSubject([]); } /** * * Adds a single item at the userActivity service. * * @param {UserActivityEntry} entry The entry to be written * */ setItem(entry) { return tslib_1.__awaiter(this, void 0, void 0, function* () { if (!entry) { throw new Error('Entry may not be null'); } if (!entry.url) { throw new Error('Entry URL may not be empty'); } const snapshot = [...this.list]; snapshot.unshift(entry); const filteredList = uniqBy(snapshot, ({ url }) => url); const limitedList = slice(filteredList, 0, this.maxItems); this.list = limitedList; if (this.userActivityEntries$) { this.userActivityEntries$.next(limitedList); } }); } /** * * Get the list of the user activity. * * @returns {Array<UserActivityEntry>} The list of the entries * */ getItems() { return tslib_1.__awaiter(this, void 0, void 0, function* () { return this.list; }); } /** * * Get the list of the user activity as observable * */ getItemsAsObservable() { return tslib_1.__awaiter(this, void 0, void 0, function* () { return this.userActivityEntries$.asObservable(); }); } } UserActivityService.decorators = [ { type: Injectable } ]; /** @nocollapse */ UserActivityService.ctorParameters = () => []; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1hY3Rpdml0eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHVuaXZlcnNpcy9jb21tb24vIiwic291cmNlcyI6WyJzaGFyZWQvc2VydmljZXMvdXNlci1hY3Rpdml0eS91c2VyLWFjdGl2aXR5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDdkMsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQWlCbkQ7Ozs7O0dBS0c7QUFHSCxNQUFNO0lBT0o7UUFKVSxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2QsU0FBSSxHQUE2QixFQUFFLENBQUM7UUFJNUMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDVSxPQUFPLENBQUMsS0FBd0I7O1lBRTNDLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO2FBQzFDO1lBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO2FBQy9DO1lBRUQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRXhCLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4RCxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUQsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUM7WUFFeEIsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDN0M7UUFDSCxDQUFDO0tBQUE7SUFFRDs7Ozs7O09BTUc7SUFDVSxRQUFROztZQUNuQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDbkIsQ0FBQztLQUFBO0lBRUQ7Ozs7T0FJRztJQUNVLG9CQUFvQjs7WUFDL0IsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEQsQ0FBQztLQUFBOzs7WUEzREYsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHVuaXFCeSwgc2xpY2UgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICpcbiAqIEBpbnRlcmZhY2UgVXNlckFjdGl2aXR5RW50cnlcbiAqXG4gKiBVc2VyQWN0aXZpdHlFbnRyeSBpcyBhIHNpbmdsZSBlbnRyeSBhdCB0aGUgdXNlciBhY3Rpdml0eSBsaXN0XG4gKlxuICovXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVXNlckFjdGl2aXR5RW50cnkge1xuICBjYXRlZ29yeTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbiAgZGF0ZUNyZWF0ZWQ6IERhdGU7XG59XG5cblxuLyoqXG4gKiBVc2VyQWN0aXZpdHlTZXJ2aWNlXG4gKlxuICogSGFuZGxlcyB0aGUgdXNlciBhY3Rpdml0eSB0cmFja2luZy5cbiAqXG4gKi9cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFVzZXJBY3Rpdml0eVNlcnZpY2Uge1xuXG4gIHByb3RlY3RlZCB1c2VyQWN0aXZpdHlFbnRyaWVzJDogQmVoYXZpb3JTdWJqZWN0PEFycmF5PFVzZXJBY3Rpdml0eUVudHJ5Pj47XG4gIHByb3RlY3RlZCBtYXhJdGVtcyA9IDEwO1xuICBwcm90ZWN0ZWQgbGlzdDogQXJyYXk8VXNlckFjdGl2aXR5RW50cnk+ID0gW107XG5cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnVzZXJBY3Rpdml0eUVudHJpZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdChbXSk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQWRkcyBhIHNpbmdsZSBpdGVtIGF0IHRoZSB1c2VyQWN0aXZpdHkgc2VydmljZS5cbiAgICpcbiAgICogQHBhcmFtIHtVc2VyQWN0aXZpdHlFbnRyeX0gZW50cnkgVGhlIGVudHJ5IHRvIGJlIHdyaXR0ZW5cbiAgICpcbiAgICovXG4gIHB1YmxpYyBhc3luYyBzZXRJdGVtKGVudHJ5OiBVc2VyQWN0aXZpdHlFbnRyeSk6IFByb21pc2U8dm9pZD4ge1xuXG4gICAgaWYgKCFlbnRyeSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFbnRyeSBtYXkgbm90IGJlIG51bGwnKTtcbiAgICB9XG5cbiAgICBpZiAoIWVudHJ5LnVybCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFbnRyeSBVUkwgbWF5IG5vdCBiZSBlbXB0eScpO1xuICAgIH1cblxuICAgIGNvbnN0IHNuYXBzaG90ID0gWy4uLnRoaXMubGlzdF07XG4gICAgc25hcHNob3QudW5zaGlmdChlbnRyeSk7XG5cbiAgICBjb25zdCBmaWx0ZXJlZExpc3QgPSB1bmlxQnkoc25hcHNob3QsICh7IHVybCB9KSA9PiB1cmwpO1xuICAgIGNvbnN0IGxpbWl0ZWRMaXN0ID0gc2xpY2UoZmlsdGVyZWRMaXN0LCAwLCB0aGlzLm1heEl0ZW1zKTtcbiAgICB0aGlzLmxpc3QgPSBsaW1pdGVkTGlzdDtcblxuICAgIGlmICh0aGlzLnVzZXJBY3Rpdml0eUVudHJpZXMkKSB7XG4gICAgICB0aGlzLnVzZXJBY3Rpdml0eUVudHJpZXMkLm5leHQobGltaXRlZExpc3QpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBHZXQgdGhlIGxpc3Qgb2YgdGhlIHVzZXIgYWN0aXZpdHkuXG4gICAqXG4gICAqIEByZXR1cm5zIHtBcnJheTxVc2VyQWN0aXZpdHlFbnRyeT59IFRoZSBsaXN0IG9mIHRoZSBlbnRyaWVzXG4gICAqXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SXRlbXMoKTogUHJvbWlzZTxBcnJheTxVc2VyQWN0aXZpdHlFbnRyeT4+IHtcbiAgICByZXR1cm4gdGhpcy5saXN0O1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEdldCB0aGUgbGlzdCBvZiB0aGUgdXNlciBhY3Rpdml0eSBhcyBvYnNlcnZhYmxlXG4gICAqXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SXRlbXNBc09ic2VydmFibGUoKTogUHJvbWlzZTxPYnNlcnZhYmxlPEFycmF5PFVzZXJBY3Rpdml0eUVudHJ5Pj4+IHtcbiAgICByZXR1cm4gdGhpcy51c2VyQWN0aXZpdHlFbnRyaWVzJC5hc09ic2VydmFibGUoKTtcbiAgfVxufVxuIl19