@netgrif/components-core
Version:
Netgrif Application engine frontend core Angular library
59 lines • 8.19 kB
JavaScript
/**
* Holds the common functionality for all Services that work with a single Task object.
*/
export class TaskHandlingService {
_taskContentService;
_selectedCaseService;
/**
* @param _taskContentService the service that holds the currently selected task, that is handled by the implementation of this class
* @param _selectedCaseService an optional service, that holds the currently selected case.
* It should be injected with the `@Optional()` annotation, since it might not be always provided.
*/
constructor(_taskContentService, _selectedCaseService = null) {
this._taskContentService = _taskContentService;
this._selectedCaseService = _selectedCaseService;
}
/**
* @returns the Task object held by {@link TaskContentService} or `undefined` if the Service currently holds no Task.
*/
get _task() {
return this._taskContentService.task;
}
/**
* Throws an error if the {@link TaskContentService} didn't have the Task object set yet.
*
* @returns the Task object held by {@link TaskContentService}.
*/
get _safeTask() {
const task = this._taskContentService.task;
if (!task) {
throw new Error('Attempting to access Task object of an uninitialized TaskContentService');
}
return task;
}
/**
* @returns `true` if a {@link Task} instance is set, `false` otherwise
*/
isTaskPresent() {
return !!this._taskContentService.task;
}
/**
* Checks whether the current state of the {@link TaskContentService} and optionally if the {@link SelectedCaseService}, is still
* relevant to the task that was requested.
*
* This method is useful if you use {@link UnlimitedTaskContentService}, or a similar implementation. It is possible for the currently
* "selected" task to change in-between a backend request was sent and the response was received. In that case the response is no longer
* relevant and should be discarded, otherwise an illegal task state could be achieved on frontend.
* @param requestedTaskId the `stringId` of the requested task
* @returns `true` if the requested task is still relevant to the state of the frontend. Returns `false` otherwise.
*/
isTaskRelevant(requestedTaskId) {
return this.isTaskPresent()
&& this._task.stringId === requestedTaskId
&& (!this._selectedCaseService
|| (!!this._selectedCaseService
&& !!this._selectedCaseService.selectedCase
&& this._task.caseId === this._selectedCaseService.selectedCase.stringId));
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1oYW5kbGluZy1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi90YXNrL3NlcnZpY2VzL3Rhc2staGFuZGxpbmctc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQTs7R0FFRztBQUNILE1BQU0sT0FBZ0IsbUJBQW1CO0lBT0w7SUFDQTtJQU5oQzs7OztPQUlHO0lBQ0gsWUFBZ0MsbUJBQXVDLEVBQ3ZDLHVCQUE0QyxJQUFJO1FBRGhELHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFDdkMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUE0QjtJQUNoRixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFjLEtBQUs7UUFDZixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7SUFDekMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFjLFNBQVM7UUFDbkIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQztRQUMzQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1AsTUFBTSxJQUFJLEtBQUssQ0FBQyx5RUFBeUUsQ0FBQyxDQUFDO1NBQzlGO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOztPQUVHO0lBQ08sYUFBYTtRQUNuQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDO0lBQzNDLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDTyxjQUFjLENBQUMsZUFBdUI7UUFDNUMsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFO2VBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxLQUFLLGVBQWU7ZUFDdkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0I7bUJBQ3ZCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0I7dUJBQ3hCLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWTt1QkFDeEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxRQUFRLENBQzNFLENBQ0osQ0FBQztJQUNWLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VGFza0NvbnRlbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi90YXNrLWNvbnRlbnQvc2VydmljZXMvdGFzay1jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtUYXNrfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL3Rhc2snO1xuaW1wb3J0IHtTZWxlY3RlZENhc2VTZXJ2aWNlfSBmcm9tICcuL3NlbGVjdGVkLWNhc2Uuc2VydmljZSc7XG5cbi8qKlxuICogSG9sZHMgdGhlIGNvbW1vbiBmdW5jdGlvbmFsaXR5IGZvciBhbGwgU2VydmljZXMgdGhhdCB3b3JrIHdpdGggYSBzaW5nbGUgVGFzayBvYmplY3QuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUYXNrSGFuZGxpbmdTZXJ2aWNlIHtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBfdGFza0NvbnRlbnRTZXJ2aWNlIHRoZSBzZXJ2aWNlIHRoYXQgaG9sZHMgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCB0YXNrLCB0aGF0IGlzIGhhbmRsZWQgYnkgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgY2xhc3NcbiAgICAgKiBAcGFyYW0gX3NlbGVjdGVkQ2FzZVNlcnZpY2UgYW4gb3B0aW9uYWwgc2VydmljZSwgdGhhdCBob2xkcyB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGNhc2UuXG4gICAgICogSXQgc2hvdWxkIGJlIGluamVjdGVkIHdpdGggdGhlIGBAT3B0aW9uYWwoKWAgYW5ub3RhdGlvbiwgc2luY2UgaXQgbWlnaHQgbm90IGJlIGFsd2F5cyBwcm92aWRlZC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IocHJvdGVjdGVkIF90YXNrQ29udGVudFNlcnZpY2U6IFRhc2tDb250ZW50U2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9zZWxlY3RlZENhc2VTZXJ2aWNlOiBTZWxlY3RlZENhc2VTZXJ2aWNlID0gbnVsbCkge1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIHRoZSBUYXNrIG9iamVjdCBoZWxkIGJ5IHtAbGluayBUYXNrQ29udGVudFNlcnZpY2V9IG9yIGB1bmRlZmluZWRgIGlmIHRoZSBTZXJ2aWNlIGN1cnJlbnRseSBob2xkcyBubyBUYXNrLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXQgX3Rhc2soKTogVGFzayB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YXNrQ29udGVudFNlcnZpY2UudGFzaztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaHJvd3MgYW4gZXJyb3IgaWYgdGhlIHtAbGluayBUYXNrQ29udGVudFNlcnZpY2V9IGRpZG4ndCBoYXZlIHRoZSBUYXNrIG9iamVjdCBzZXQgeWV0LlxuICAgICAqXG4gICAgICogQHJldHVybnMgdGhlIFRhc2sgb2JqZWN0IGhlbGQgYnkge0BsaW5rIFRhc2tDb250ZW50U2VydmljZX0uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldCBfc2FmZVRhc2soKTogVGFzayB7XG4gICAgICAgIGNvbnN0IHRhc2sgPSB0aGlzLl90YXNrQ29udGVudFNlcnZpY2UudGFzaztcbiAgICAgICAgaWYgKCF0YXNrKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0F0dGVtcHRpbmcgdG8gYWNjZXNzIFRhc2sgb2JqZWN0IG9mIGFuIHVuaW5pdGlhbGl6ZWQgVGFza0NvbnRlbnRTZXJ2aWNlJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRhc2s7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgYHRydWVgIGlmIGEge0BsaW5rIFRhc2t9IGluc3RhbmNlIGlzIHNldCwgYGZhbHNlYCBvdGhlcndpc2VcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaXNUYXNrUHJlc2VudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fdGFza0NvbnRlbnRTZXJ2aWNlLnRhc2s7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHtAbGluayBUYXNrQ29udGVudFNlcnZpY2V9IGFuZCBvcHRpb25hbGx5IGlmIHRoZSB7QGxpbmsgU2VsZWN0ZWRDYXNlU2VydmljZX0sIGlzIHN0aWxsXG4gICAgICogcmVsZXZhbnQgdG8gdGhlIHRhc2sgdGhhdCB3YXMgcmVxdWVzdGVkLlxuICAgICAqXG4gICAgICogVGhpcyBtZXRob2QgaXMgdXNlZnVsIGlmIHlvdSB1c2Uge0BsaW5rIFVubGltaXRlZFRhc2tDb250ZW50U2VydmljZX0sIG9yIGEgc2ltaWxhciBpbXBsZW1lbnRhdGlvbi4gSXQgaXMgcG9zc2libGUgZm9yIHRoZSBjdXJyZW50bHlcbiAgICAgKiBcInNlbGVjdGVkXCIgdGFzayB0byBjaGFuZ2UgaW4tYmV0d2VlbiBhIGJhY2tlbmQgcmVxdWVzdCB3YXMgc2VudCBhbmQgdGhlIHJlc3BvbnNlIHdhcyByZWNlaXZlZC4gSW4gdGhhdCBjYXNlIHRoZSByZXNwb25zZSBpcyBubyBsb25nZXJcbiAgICAgKiByZWxldmFudCBhbmQgc2hvdWxkIGJlIGRpc2NhcmRlZCwgb3RoZXJ3aXNlIGFuIGlsbGVnYWwgdGFzayBzdGF0ZSBjb3VsZCBiZSBhY2hpZXZlZCBvbiBmcm9udGVuZC5cbiAgICAgKiBAcGFyYW0gcmVxdWVzdGVkVGFza0lkIHRoZSBgc3RyaW5nSWRgIG9mIHRoZSByZXF1ZXN0ZWQgdGFza1xuICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgcmVxdWVzdGVkIHRhc2sgaXMgc3RpbGwgcmVsZXZhbnQgdG8gdGhlIHN0YXRlIG9mIHRoZSBmcm9udGVuZC4gUmV0dXJucyBgZmFsc2VgIG90aGVyd2lzZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaXNUYXNrUmVsZXZhbnQocmVxdWVzdGVkVGFza0lkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNUYXNrUHJlc2VudCgpXG4gICAgICAgICAgICAmJiB0aGlzLl90YXNrLnN0cmluZ0lkID09PSByZXF1ZXN0ZWRUYXNrSWRcbiAgICAgICAgICAgICYmICghdGhpcy5fc2VsZWN0ZWRDYXNlU2VydmljZVxuICAgICAgICAgICAgICAgIHx8ICghIXRoaXMuX3NlbGVjdGVkQ2FzZVNlcnZpY2VcbiAgICAgICAgICAgICAgICAgICAgJiYgISF0aGlzLl9zZWxlY3RlZENhc2VTZXJ2aWNlLnNlbGVjdGVkQ2FzZVxuICAgICAgICAgICAgICAgICAgICAmJiB0aGlzLl90YXNrLmNhc2VJZCA9PT0gdGhpcy5fc2VsZWN0ZWRDYXNlU2VydmljZS5zZWxlY3RlZENhc2Uuc3RyaW5nSWRcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==