@senior-gestao-relacionamento/angular-components 1.10.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -0
- package/esm2022/lib/angular-components.module.mjs +22 -0
- package/esm2022/lib/services/current-collaborator/current-collaborator.service.mjs +70 -0
- package/esm2022/lib/services/current-collaborator/models/collaborator.model.mjs +2 -0
- package/esm2022/lib/services/storage/storage.service.mjs +130 -0
- package/esm2022/public-api.mjs +8 -0
- package/esm2022/senior-gestao-relacionamento-angular-components.mjs +5 -0
- package/fesm2022/senior-gestao-relacionamento-angular-components.mjs +228 -0
- package/fesm2022/senior-gestao-relacionamento-angular-components.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/angular-components.module.d.ts +10 -0
- package/lib/services/current-collaborator/current-collaborator.service.d.ts +32 -0
- package/lib/services/current-collaborator/models/collaborator.model.d.ts +53 -0
- package/lib/services/storage/storage.service.d.ts +44 -0
- package/package.json +38 -41
- package/public-api.d.ts +4 -4
- package/bundles/senior-gestao-relacionamento-angular-components.umd.js +0 -1586
- package/bundles/senior-gestao-relacionamento-angular-components.umd.js.map +0 -1
- package/bundles/senior-gestao-relacionamento-angular-components.umd.min.js +0 -16
- package/bundles/senior-gestao-relacionamento-angular-components.umd.min.js.map +0 -1
- package/components/index.d.ts +0 -2
- package/components/refresh-websocket-alert/index.d.ts +0 -2
- package/components/refresh-websocket-alert/refresh-websocket-alert.component.d.ts +0 -14
- package/components/refresh-websocket-alert/refresh-websocket-alert.module.d.ts +0 -2
- package/components/reports/enums/format-enum.d.ts +0 -9
- package/components/reports/enums/index.d.ts +0 -2
- package/components/reports/enums/view-mode-enum.d.ts +0 -4
- package/components/reports/index.d.ts +0 -5
- package/components/reports/models/callback-event.d.ts +0 -4
- package/components/reports/models/generate-report-input-dto.d.ts +0 -11
- package/components/reports/models/generate-report-output-dto.d.ts +0 -3
- package/components/reports/models/index.d.ts +0 -7
- package/components/reports/models/parameter.d.ts +0 -4
- package/components/reports/models/report-dto.d.ts +0 -6
- package/components/reports/models/reports-options.d.ts +0 -14
- package/components/reports/models/response-list-report-dto.d.ts +0 -8
- package/components/reports/reports.component.d.ts +0 -41
- package/components/reports/reports.module.d.ts +0 -2
- package/components/reports/reports.service.d.ts +0 -16
- package/esm2015/components/index.js +0 -3
- package/esm2015/components/refresh-websocket-alert/index.js +0 -3
- package/esm2015/components/refresh-websocket-alert/refresh-websocket-alert.component.js +0 -57
- package/esm2015/components/refresh-websocket-alert/refresh-websocket-alert.module.js +0 -26
- package/esm2015/components/reports/enums/format-enum.js +0 -11
- package/esm2015/components/reports/enums/index.js +0 -3
- package/esm2015/components/reports/enums/view-mode-enum.js +0 -6
- package/esm2015/components/reports/index.js +0 -5
- package/esm2015/components/reports/models/callback-event.js +0 -1
- package/esm2015/components/reports/models/generate-report-input-dto.js +0 -1
- package/esm2015/components/reports/models/generate-report-output-dto.js +0 -1
- package/esm2015/components/reports/models/index.js +0 -1
- package/esm2015/components/reports/models/parameter.js +0 -1
- package/esm2015/components/reports/models/report-dto.js +0 -1
- package/esm2015/components/reports/models/reports-options.js +0 -1
- package/esm2015/components/reports/models/response-list-report-dto.js +0 -1
- package/esm2015/components/reports/reports.component.js +0 -202
- package/esm2015/components/reports/reports.module.js +0 -43
- package/esm2015/components/reports/reports.service.js +0 -73
- package/esm2015/locale/fallback.js +0 -16
- package/esm2015/public-api.js +0 -5
- package/esm2015/senior-gestao-relacionamento-angular-components.js +0 -9
- package/esm2015/services/current-collaborator/current-collaborator.module.js +0 -20
- package/esm2015/services/current-collaborator/current-collaborator.service.js +0 -60
- package/esm2015/services/current-collaborator/enums/index.js +0 -2
- package/esm2015/services/current-collaborator/enums/status-enum.js +0 -6
- package/esm2015/services/current-collaborator/index.js +0 -5
- package/esm2015/services/current-collaborator/models/branch-dto.js +0 -1
- package/esm2015/services/current-collaborator/models/branch.js +0 -23
- package/esm2015/services/current-collaborator/models/collaborator-branch-link-dto.js +0 -1
- package/esm2015/services/current-collaborator/models/collaborator-branch-link.js +0 -23
- package/esm2015/services/current-collaborator/models/collaborator-dto.js +0 -1
- package/esm2015/services/current-collaborator/models/collaborator.js +0 -42
- package/esm2015/services/current-collaborator/models/company-dto.js +0 -1
- package/esm2015/services/current-collaborator/models/company.js +0 -16
- package/esm2015/services/current-collaborator/models/index.js +0 -6
- package/esm2015/services/current-collaborator/models/job-title-dto.js +0 -1
- package/esm2015/services/current-collaborator/models/job-title.js +0 -16
- package/esm2015/services/current-tenant/current-tenant.module.js +0 -20
- package/esm2015/services/current-tenant/current-tenant.service.js +0 -67
- package/esm2015/services/current-tenant/index.js +0 -4
- package/esm2015/services/current-tenant/models/index.js +0 -2
- package/esm2015/services/current-tenant/models/modulo-dto.js +0 -1
- package/esm2015/services/current-tenant/models/modulo.js +0 -15
- package/esm2015/services/index.js +0 -9
- package/esm2015/services/resolvers/access-validation.resolve.js +0 -33
- package/esm2015/services/resolvers/index.js +0 -2
- package/esm2015/services/schedule-form-rules/enums/index.js +0 -6
- package/esm2015/services/schedule-form-rules/enums/month-enum.js +0 -16
- package/esm2015/services/schedule-form-rules/enums/ordinal-week-day-enum.js +0 -9
- package/esm2015/services/schedule-form-rules/enums/recurrence-enum.js +0 -8
- package/esm2015/services/schedule-form-rules/enums/repeat-when-enum.js +0 -6
- package/esm2015/services/schedule-form-rules/enums/week-day-enum.js +0 -11
- package/esm2015/services/schedule-form-rules/index.js +0 -4
- package/esm2015/services/schedule-form-rules/schedule-form-rules.module.js +0 -15
- package/esm2015/services/schedule-form-rules/schedule-form-rules.service.js +0 -105
- package/esm2015/services/standard-filters/index.js +0 -3
- package/esm2015/services/standard-filters/standard-filters.module.js +0 -14
- package/esm2015/services/standard-filters/standard-filters.service.js +0 -28
- package/esm2015/services/storage/com-senior-token-dto.js +0 -1
- package/esm2015/services/storage/index.js +0 -2
- package/esm2015/services/storage/storage.module.js +0 -17
- package/esm2015/services/storage/storage.service.js +0 -59
- package/esm2015/services/validators/date-validators.service.js +0 -9
- package/esm2015/services/validators/form-group-validators.service.js +0 -36
- package/esm2015/services/validators/index.js +0 -3
- package/esm2015/services/websocket/index.js +0 -4
- package/esm2015/services/websocket/models/event-dto.js +0 -1
- package/esm2015/services/websocket/models/event.js +0 -13
- package/esm2015/services/websocket/models/index.js +0 -3
- package/esm2015/services/websocket/models/topic-dto.js +0 -1
- package/esm2015/services/websocket/models/topic.js +0 -25
- package/esm2015/services/websocket/websocket.module.js +0 -18
- package/esm2015/services/websocket/websocket.service.js +0 -124
- package/esm2015/utils/index.js +0 -4
- package/esm2015/utils/string-converter.service.js +0 -7
- package/esm2015/utils/utils.js +0 -80
- package/esm2015/utils/value-changes.service.js +0 -7
- package/esm5/components/index.js +0 -3
- package/esm5/components/refresh-websocket-alert/index.js +0 -3
- package/esm5/components/refresh-websocket-alert/refresh-websocket-alert.component.js +0 -59
- package/esm5/components/refresh-websocket-alert/refresh-websocket-alert.module.js +0 -29
- package/esm5/components/reports/enums/format-enum.js +0 -11
- package/esm5/components/reports/enums/index.js +0 -3
- package/esm5/components/reports/enums/view-mode-enum.js +0 -6
- package/esm5/components/reports/index.js +0 -5
- package/esm5/components/reports/models/callback-event.js +0 -1
- package/esm5/components/reports/models/generate-report-input-dto.js +0 -1
- package/esm5/components/reports/models/generate-report-output-dto.js +0 -1
- package/esm5/components/reports/models/index.js +0 -1
- package/esm5/components/reports/models/parameter.js +0 -1
- package/esm5/components/reports/models/report-dto.js +0 -1
- package/esm5/components/reports/models/reports-options.js +0 -1
- package/esm5/components/reports/models/response-list-report-dto.js +0 -1
- package/esm5/components/reports/reports.component.js +0 -208
- package/esm5/components/reports/reports.module.js +0 -46
- package/esm5/components/reports/reports.service.js +0 -75
- package/esm5/locale/fallback.js +0 -16
- package/esm5/public-api.js +0 -5
- package/esm5/senior-gestao-relacionamento-angular-components.js +0 -9
- package/esm5/services/current-collaborator/current-collaborator.module.js +0 -23
- package/esm5/services/current-collaborator/current-collaborator.service.js +0 -62
- package/esm5/services/current-collaborator/enums/index.js +0 -2
- package/esm5/services/current-collaborator/enums/status-enum.js +0 -6
- package/esm5/services/current-collaborator/index.js +0 -5
- package/esm5/services/current-collaborator/models/branch-dto.js +0 -1
- package/esm5/services/current-collaborator/models/branch.js +0 -28
- package/esm5/services/current-collaborator/models/collaborator-branch-link-dto.js +0 -1
- package/esm5/services/current-collaborator/models/collaborator-branch-link.js +0 -28
- package/esm5/services/current-collaborator/models/collaborator-dto.js +0 -1
- package/esm5/services/current-collaborator/models/collaborator.js +0 -45
- package/esm5/services/current-collaborator/models/company-dto.js +0 -1
- package/esm5/services/current-collaborator/models/company.js +0 -21
- package/esm5/services/current-collaborator/models/index.js +0 -6
- package/esm5/services/current-collaborator/models/job-title-dto.js +0 -1
- package/esm5/services/current-collaborator/models/job-title.js +0 -21
- package/esm5/services/current-tenant/current-tenant.module.js +0 -23
- package/esm5/services/current-tenant/current-tenant.service.js +0 -70
- package/esm5/services/current-tenant/index.js +0 -4
- package/esm5/services/current-tenant/models/index.js +0 -2
- package/esm5/services/current-tenant/models/modulo-dto.js +0 -1
- package/esm5/services/current-tenant/models/modulo.js +0 -20
- package/esm5/services/index.js +0 -9
- package/esm5/services/resolvers/access-validation.resolve.js +0 -35
- package/esm5/services/resolvers/index.js +0 -2
- package/esm5/services/schedule-form-rules/enums/index.js +0 -6
- package/esm5/services/schedule-form-rules/enums/month-enum.js +0 -16
- package/esm5/services/schedule-form-rules/enums/ordinal-week-day-enum.js +0 -9
- package/esm5/services/schedule-form-rules/enums/recurrence-enum.js +0 -8
- package/esm5/services/schedule-form-rules/enums/repeat-when-enum.js +0 -6
- package/esm5/services/schedule-form-rules/enums/week-day-enum.js +0 -11
- package/esm5/services/schedule-form-rules/index.js +0 -4
- package/esm5/services/schedule-form-rules/schedule-form-rules.module.js +0 -18
- package/esm5/services/schedule-form-rules/schedule-form-rules.service.js +0 -109
- package/esm5/services/standard-filters/index.js +0 -3
- package/esm5/services/standard-filters/standard-filters.module.js +0 -17
- package/esm5/services/standard-filters/standard-filters.service.js +0 -30
- package/esm5/services/storage/com-senior-token-dto.js +0 -1
- package/esm5/services/storage/index.js +0 -2
- package/esm5/services/storage/storage.module.js +0 -20
- package/esm5/services/storage/storage.service.js +0 -60
- package/esm5/services/validators/date-validators.service.js +0 -13
- package/esm5/services/validators/form-group-validators.service.js +0 -40
- package/esm5/services/validators/index.js +0 -3
- package/esm5/services/websocket/index.js +0 -4
- package/esm5/services/websocket/models/event-dto.js +0 -1
- package/esm5/services/websocket/models/event.js +0 -20
- package/esm5/services/websocket/models/index.js +0 -3
- package/esm5/services/websocket/models/topic-dto.js +0 -1
- package/esm5/services/websocket/models/topic.js +0 -29
- package/esm5/services/websocket/websocket.module.js +0 -21
- package/esm5/services/websocket/websocket.service.js +0 -131
- package/esm5/utils/index.js +0 -4
- package/esm5/utils/string-converter.service.js +0 -11
- package/esm5/utils/utils.js +0 -82
- package/esm5/utils/value-changes.service.js +0 -11
- package/fesm2015/senior-gestao-relacionamento-angular-components.js +0 -1271
- package/fesm2015/senior-gestao-relacionamento-angular-components.js.map +0 -1
- package/fesm5/senior-gestao-relacionamento-angular-components.js +0 -1363
- package/fesm5/senior-gestao-relacionamento-angular-components.js.map +0 -1
- package/locale/fallback.d.ts +0 -1
- package/scss/styles.scss +0 -190
- package/senior-gestao-relacionamento-angular-components.d.ts +0 -8
- package/senior-gestao-relacionamento-angular-components.metadata.json +0 -1
- package/services/current-collaborator/current-collaborator.module.d.ts +0 -2
- package/services/current-collaborator/current-collaborator.service.d.ts +0 -14
- package/services/current-collaborator/enums/index.d.ts +0 -1
- package/services/current-collaborator/enums/status-enum.d.ts +0 -4
- package/services/current-collaborator/index.d.ts +0 -4
- package/services/current-collaborator/models/branch-dto.d.ts +0 -7
- package/services/current-collaborator/models/branch.d.ts +0 -13
- package/services/current-collaborator/models/collaborator-branch-link-dto.d.ts +0 -4
- package/services/current-collaborator/models/collaborator-branch-link.d.ts +0 -9
- package/services/current-collaborator/models/collaborator-dto.d.ts +0 -14
- package/services/current-collaborator/models/collaborator.d.ts +0 -18
- package/services/current-collaborator/models/company-dto.d.ts +0 -6
- package/services/current-collaborator/models/company.d.ts +0 -11
- package/services/current-collaborator/models/index.d.ts +0 -10
- package/services/current-collaborator/models/job-title-dto.d.ts +0 -4
- package/services/current-collaborator/models/job-title.d.ts +0 -8
- package/services/current-tenant/current-tenant.module.d.ts +0 -2
- package/services/current-tenant/current-tenant.service.d.ts +0 -19
- package/services/current-tenant/index.d.ts +0 -3
- package/services/current-tenant/models/index.d.ts +0 -2
- package/services/current-tenant/models/modulo-dto.d.ts +0 -5
- package/services/current-tenant/models/modulo.d.ts +0 -8
- package/services/index.d.ts +0 -8
- package/services/resolvers/access-validation.resolve.d.ts +0 -9
- package/services/resolvers/index.d.ts +0 -1
- package/services/schedule-form-rules/enums/index.d.ts +0 -5
- package/services/schedule-form-rules/enums/month-enum.d.ts +0 -14
- package/services/schedule-form-rules/enums/ordinal-week-day-enum.d.ts +0 -7
- package/services/schedule-form-rules/enums/recurrence-enum.d.ts +0 -6
- package/services/schedule-form-rules/enums/repeat-when-enum.d.ts +0 -4
- package/services/schedule-form-rules/enums/week-day-enum.d.ts +0 -9
- package/services/schedule-form-rules/index.d.ts +0 -3
- package/services/schedule-form-rules/schedule-form-rules.module.d.ts +0 -2
- package/services/schedule-form-rules/schedule-form-rules.service.d.ts +0 -12
- package/services/standard-filters/index.d.ts +0 -2
- package/services/standard-filters/standard-filters.module.d.ts +0 -2
- package/services/standard-filters/standard-filters.service.d.ts +0 -7
- package/services/storage/com-senior-token-dto.d.ts +0 -14
- package/services/storage/index.d.ts +0 -1
- package/services/storage/storage.module.d.ts +0 -2
- package/services/storage/storage.service.d.ts +0 -17
- package/services/validators/date-validators.service.d.ts +0 -3
- package/services/validators/form-group-validators.service.d.ts +0 -5
- package/services/validators/index.d.ts +0 -2
- package/services/websocket/index.d.ts +0 -3
- package/services/websocket/models/event-dto.d.ts +0 -5
- package/services/websocket/models/event.d.ts +0 -8
- package/services/websocket/models/index.d.ts +0 -4
- package/services/websocket/models/topic-dto.d.ts +0 -6
- package/services/websocket/models/topic.d.ts +0 -10
- package/services/websocket/websocket.module.d.ts +0 -2
- package/services/websocket/websocket.service.d.ts +0 -22
- package/utils/index.d.ts +0 -3
- package/utils/string-converter.service.d.ts +0 -3
- package/utils/utils.d.ts +0 -12
- package/utils/value-changes.service.d.ts +0 -4
package/README.md
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# @senior-gestao-relacionamento/angular-components
|
|
2
|
+
|
|
3
|
+
Biblioteca de componentes reutilizáveis para aplicações Angular do CRM Senior Sistemas.
|
|
4
|
+
|
|
5
|
+
## Instalação
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @senior-gestao-relacionamento/angular-components
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Uso
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
import { AngularComponentsModule } from '@senior-gestao-relacionamento/angular-components';
|
|
15
|
+
```
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Módulo principal da biblioteca @senior-gestao-relacionamento/angular-components
|
|
6
|
+
*/
|
|
7
|
+
export class AngularComponentsModule {
|
|
8
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AngularComponentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
9
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: AngularComponentsModule, imports: [CommonModule] });
|
|
10
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AngularComponentsModule, imports: [CommonModule] });
|
|
11
|
+
}
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AngularComponentsModule, decorators: [{
|
|
13
|
+
type: NgModule,
|
|
14
|
+
args: [{
|
|
15
|
+
declarations: [],
|
|
16
|
+
imports: [
|
|
17
|
+
CommonModule
|
|
18
|
+
],
|
|
19
|
+
exports: []
|
|
20
|
+
}]
|
|
21
|
+
}] });
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1jb21wb25lbnRzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL2FuZ3VsYXItY29tcG9uZW50cy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBRS9DOztHQUVHO0FBUUgsTUFBTSxPQUFPLHVCQUF1Qjt3R0FBdkIsdUJBQXVCO3lHQUF2Qix1QkFBdUIsWUFKaEMsWUFBWTt5R0FJSCx1QkFBdUIsWUFKaEMsWUFBWTs7NEZBSUgsdUJBQXVCO2tCQVBuQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxFQUFFO29CQUNoQixPQUFPLEVBQUU7d0JBQ1AsWUFBWTtxQkFDYjtvQkFDRCxPQUFPLEVBQUUsRUFBRTtpQkFDWiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG4vKipcbiAqIE3Ds2R1bG8gcHJpbmNpcGFsIGRhIGJpYmxpb3RlY2EgQHNlbmlvci1nZXN0YW8tcmVsYWNpb25hbWVudG8vYW5ndWxhci1jb21wb25lbnRzXG4gKi9cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW10sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW11cbn0pXG5leHBvcnQgY2xhc3MgQW5ndWxhckNvbXBvbmVudHNNb2R1bGUgeyB9XG4iXX0=
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, of, tap } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common/http";
|
|
5
|
+
import * as i2 from "../storage/storage.service";
|
|
6
|
+
const CACHE_KEY = 'currentCollaborator';
|
|
7
|
+
const CACHE_TTL_MINUTES = 30;
|
|
8
|
+
export class CurrentCollaboratorService {
|
|
9
|
+
http;
|
|
10
|
+
storage;
|
|
11
|
+
API_PATH = '/crmx/collaborator/queries/getCurrentCollaborator';
|
|
12
|
+
collaboratorSubject = new BehaviorSubject(null);
|
|
13
|
+
collaborator$ = this.collaboratorSubject.asObservable();
|
|
14
|
+
constructor(http, storage) {
|
|
15
|
+
this.http = http;
|
|
16
|
+
this.storage = storage;
|
|
17
|
+
const cached = this.storage.getWithTTL(CACHE_KEY);
|
|
18
|
+
if (cached) {
|
|
19
|
+
this.collaboratorSubject.next(cached);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Busca o colaborador atual. Retorna do cache se disponível,
|
|
24
|
+
* caso contrário consulta a API.
|
|
25
|
+
*/
|
|
26
|
+
load() {
|
|
27
|
+
const cached = this.storage.getWithTTL(CACHE_KEY);
|
|
28
|
+
if (cached) {
|
|
29
|
+
this.collaboratorSubject.next(cached);
|
|
30
|
+
return of(cached);
|
|
31
|
+
}
|
|
32
|
+
return this.http.get(this.API_PATH).pipe(tap((collaborator) => {
|
|
33
|
+
this.storage.setWithTTL(CACHE_KEY, collaborator, CACHE_TTL_MINUTES);
|
|
34
|
+
this.collaboratorSubject.next(collaborator);
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Força a atualização do cache consultando a API.
|
|
39
|
+
*/
|
|
40
|
+
refresh() {
|
|
41
|
+
this.storage.remove(CACHE_KEY);
|
|
42
|
+
this.collaboratorSubject.next(null);
|
|
43
|
+
return this.http.get(this.API_PATH).pipe(tap((collaborator) => {
|
|
44
|
+
this.storage.setWithTTL(CACHE_KEY, collaborator, CACHE_TTL_MINUTES);
|
|
45
|
+
this.collaboratorSubject.next(collaborator);
|
|
46
|
+
}));
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Retorna o colaborador atual do cache (sem request).
|
|
50
|
+
*/
|
|
51
|
+
get() {
|
|
52
|
+
return this.collaboratorSubject.value;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Limpa o cache do colaborador.
|
|
56
|
+
*/
|
|
57
|
+
clearCache() {
|
|
58
|
+
this.storage.remove(CACHE_KEY);
|
|
59
|
+
this.collaboratorSubject.next(null);
|
|
60
|
+
}
|
|
61
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CurrentCollaboratorService, deps: [{ token: i1.HttpClient }, { token: i2.StorageService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
62
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CurrentCollaboratorService, providedIn: 'root' });
|
|
63
|
+
}
|
|
64
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CurrentCollaboratorService, decorators: [{
|
|
65
|
+
type: Injectable,
|
|
66
|
+
args: [{
|
|
67
|
+
providedIn: 'root'
|
|
68
|
+
}]
|
|
69
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.StorageService }] });
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVudC1jb2xsYWJvcmF0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL3NlcnZpY2VzL2N1cnJlbnQtY29sbGFib3JhdG9yL2N1cnJlbnQtY29sbGFib3JhdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFjLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFJNUQsTUFBTSxTQUFTLEdBQUcscUJBQXFCLENBQUM7QUFDeEMsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7QUFLN0IsTUFBTSxPQUFPLDBCQUEwQjtJQU9sQjtJQUNBO0lBUEYsUUFBUSxHQUFHLG1EQUFtRCxDQUFDO0lBRS9ELG1CQUFtQixHQUFHLElBQUksZUFBZSxDQUFzQixJQUFJLENBQUMsQ0FBQztJQUN0RSxhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBRXhFLFlBQ21CLElBQWdCLEVBQ2hCLE9BQXVCO1FBRHZCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFFeEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQWUsU0FBUyxDQUFDLENBQUM7UUFDaEUsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJO1FBQ0YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQWUsU0FBUyxDQUFDLENBQUM7UUFFaEUsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdEMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEIsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FDcEQsR0FBRyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU87UUFDTCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXBDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FDcEQsR0FBRyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILEdBQUc7UUFDRCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUM7SUFDeEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVTtRQUNSLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQzt3R0FoRVUsMEJBQTBCOzRHQUExQiwwQkFBMEIsY0FGekIsTUFBTTs7NEZBRVAsMEJBQTBCO2tCQUh0QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIG9mLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbGxhYm9yYXRvciB9IGZyb20gJy4vbW9kZWxzL2NvbGxhYm9yYXRvci5tb2RlbCc7XG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uL3N0b3JhZ2Uvc3RvcmFnZS5zZXJ2aWNlJztcblxuY29uc3QgQ0FDSEVfS0VZID0gJ2N1cnJlbnRDb2xsYWJvcmF0b3InO1xuY29uc3QgQ0FDSEVfVFRMX01JTlVURVMgPSAzMDtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ3VycmVudENvbGxhYm9yYXRvclNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IEFQSV9QQVRIID0gJy9jcm14L2NvbGxhYm9yYXRvci9xdWVyaWVzL2dldEN1cnJlbnRDb2xsYWJvcmF0b3InO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY29sbGFib3JhdG9yU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q29sbGFib3JhdG9yIHwgbnVsbD4obnVsbCk7XG4gIHB1YmxpYyByZWFkb25seSBjb2xsYWJvcmF0b3IkID0gdGhpcy5jb2xsYWJvcmF0b3JTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2U6IFN0b3JhZ2VTZXJ2aWNlXG4gICkge1xuICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMuc3RvcmFnZS5nZXRXaXRoVFRMPENvbGxhYm9yYXRvcj4oQ0FDSEVfS0VZKTtcbiAgICBpZiAoY2FjaGVkKSB7XG4gICAgICB0aGlzLmNvbGxhYm9yYXRvclN1YmplY3QubmV4dChjYWNoZWQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBCdXNjYSBvIGNvbGFib3JhZG9yIGF0dWFsLiBSZXRvcm5hIGRvIGNhY2hlIHNlIGRpc3BvbsOtdmVsLFxuICAgKiBjYXNvIGNvbnRyw6FyaW8gY29uc3VsdGEgYSBBUEkuXG4gICAqL1xuICBsb2FkKCk6IE9ic2VydmFibGU8Q29sbGFib3JhdG9yPiB7XG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy5zdG9yYWdlLmdldFdpdGhUVEw8Q29sbGFib3JhdG9yPihDQUNIRV9LRVkpO1xuXG4gICAgaWYgKGNhY2hlZCkge1xuICAgICAgdGhpcy5jb2xsYWJvcmF0b3JTdWJqZWN0Lm5leHQoY2FjaGVkKTtcbiAgICAgIHJldHVybiBvZihjYWNoZWQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PENvbGxhYm9yYXRvcj4odGhpcy5BUElfUEFUSCkucGlwZShcbiAgICAgIHRhcCgoY29sbGFib3JhdG9yKSA9PiB7XG4gICAgICAgIHRoaXMuc3RvcmFnZS5zZXRXaXRoVFRMKENBQ0hFX0tFWSwgY29sbGFib3JhdG9yLCBDQUNIRV9UVExfTUlOVVRFUyk7XG4gICAgICAgIHRoaXMuY29sbGFib3JhdG9yU3ViamVjdC5uZXh0KGNvbGxhYm9yYXRvcik7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRm9yw6dhIGEgYXR1YWxpemHDp8OjbyBkbyBjYWNoZSBjb25zdWx0YW5kbyBhIEFQSS5cbiAgICovXG4gIHJlZnJlc2goKTogT2JzZXJ2YWJsZTxDb2xsYWJvcmF0b3I+IHtcbiAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlKENBQ0hFX0tFWSk7XG4gICAgdGhpcy5jb2xsYWJvcmF0b3JTdWJqZWN0Lm5leHQobnVsbCk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxDb2xsYWJvcmF0b3I+KHRoaXMuQVBJX1BBVEgpLnBpcGUoXG4gICAgICB0YXAoKGNvbGxhYm9yYXRvcikgPT4ge1xuICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0V2l0aFRUTChDQUNIRV9LRVksIGNvbGxhYm9yYXRvciwgQ0FDSEVfVFRMX01JTlVURVMpO1xuICAgICAgICB0aGlzLmNvbGxhYm9yYXRvclN1YmplY3QubmV4dChjb2xsYWJvcmF0b3IpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldG9ybmEgbyBjb2xhYm9yYWRvciBhdHVhbCBkbyBjYWNoZSAoc2VtIHJlcXVlc3QpLlxuICAgKi9cbiAgZ2V0KCk6IENvbGxhYm9yYXRvciB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmNvbGxhYm9yYXRvclN1YmplY3QudmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogTGltcGEgbyBjYWNoZSBkbyBjb2xhYm9yYWRvci5cbiAgICovXG4gIGNsZWFyQ2FjaGUoKTogdm9pZCB7XG4gICAgdGhpcy5zdG9yYWdlLnJlbW92ZShDQUNIRV9LRVkpO1xuICAgIHRoaXMuY29sbGFib3JhdG9yU3ViamVjdC5uZXh0KG51bGwpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFib3JhdG9yLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3NyYy9saWIvc2VydmljZXMvY3VycmVudC1jb2xsYWJvcmF0b3IvbW9kZWxzL2NvbGxhYm9yYXRvci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBKb2JUaXRsZSB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgY3JlYXRlZEJ5OiBzdHJpbmc7XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xuICBjaGFuZ2VkQnk6IHN0cmluZztcbiAgY2hhbmdlZEF0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGFueSB7XG4gIGlkOiBzdHJpbmc7XG4gIGNvZGU6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICBzdGF0dXM6IHN0cmluZztcbiAgY3JlYXRlZEJ5OiBzdHJpbmc7XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xuICBjaGFuZ2VkQnk6IHN0cmluZztcbiAgY2hhbmdlZEF0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnJhbmNoIHtcbiAgaWQ6IHN0cmluZztcbiAgY29tcGFueTogQ29tcGFueTtcbiAgY29kZTogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICBjcmVhdGVkQnk6IHN0cmluZztcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIGNoYW5nZWRCeTogc3RyaW5nO1xuICBjaGFuZ2VkQXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2xsYWJvcmF0b3JCcmFuY2gge1xuICBicmFuY2g6IEJyYW5jaDtcbiAgbWFpbjogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2xsYWJvcmF0b3JMZWFkZXIge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIHBob3RvOiBzdHJpbmc7XG4gIGNvbnNvbGlkYXRlZExldmVsOiBzdHJpbmc7XG4gIGxlYWRlcjogQ29sbGFib3JhdG9yTGVhZGVyIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2xsYWJvcmF0b3Ige1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIHBob3RvOiBzdHJpbmc7XG4gIGFjdGl2ZTogYm9vbGVhbjtcbiAgdmlzaWJsZTogYm9vbGVhbjtcbiAgam9iVGl0bGU6IEpvYlRpdGxlO1xuICBjb25zb2xpZGF0ZWRMZXZlbDogc3RyaW5nO1xuICBsZWFkZXI6IENvbGxhYm9yYXRvckxlYWRlcjtcbiAgYnJhbmNoZXM6IENvbGxhYm9yYXRvckJyYW5jaFtdO1xufVxuIl19
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
const TOKEN_COOKIE_NAME = 'com.senior.token';
|
|
4
|
+
const STORAGE_PREFIX = 'crm';
|
|
5
|
+
export class StorageService {
|
|
6
|
+
/**
|
|
7
|
+
* Retorna o username do usuário logado a partir do cookie com.senior.token.
|
|
8
|
+
*/
|
|
9
|
+
getUsername() {
|
|
10
|
+
if (typeof document === 'undefined') {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
const nameEQ = TOKEN_COOKIE_NAME + '=';
|
|
14
|
+
const cookies = document.cookie.split(';');
|
|
15
|
+
for (const cookie of cookies) {
|
|
16
|
+
const trimmed = cookie.trim();
|
|
17
|
+
if (trimmed.startsWith(nameEQ)) {
|
|
18
|
+
try {
|
|
19
|
+
const value = decodeURIComponent(trimmed.substring(nameEQ.length));
|
|
20
|
+
const token = JSON.parse(value);
|
|
21
|
+
return token?.username ?? null;
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Monta a key completa com prefixo e username.
|
|
32
|
+
* Formato: crm:{username}:{key}
|
|
33
|
+
*/
|
|
34
|
+
buildKey(key) {
|
|
35
|
+
const username = this.getUsername() ?? 'anonymous';
|
|
36
|
+
return `${STORAGE_PREFIX}:${username}:${key}`;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Salva um valor no localStorage.
|
|
40
|
+
* Aceita qualquer tipo serializável.
|
|
41
|
+
*/
|
|
42
|
+
set(key, value) {
|
|
43
|
+
if (typeof localStorage === 'undefined') {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
localStorage.setItem(this.buildKey(key), JSON.stringify(value));
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Recupera um valor do localStorage.
|
|
50
|
+
* Retorna null se não existir ou falhar o parse.
|
|
51
|
+
*/
|
|
52
|
+
get(key) {
|
|
53
|
+
if (typeof localStorage === 'undefined') {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
try {
|
|
57
|
+
const data = localStorage.getItem(this.buildKey(key));
|
|
58
|
+
return data ? JSON.parse(data) : null;
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Salva um valor com TTL (tempo de expiração em minutos).
|
|
66
|
+
*/
|
|
67
|
+
setWithTTL(key, value, ttlMinutes) {
|
|
68
|
+
const wrapper = {
|
|
69
|
+
value,
|
|
70
|
+
expiresAt: Date.now() + ttlMinutes * 60 * 1000
|
|
71
|
+
};
|
|
72
|
+
this.set(key, wrapper);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Recupera um valor com TTL. Retorna null se expirado.
|
|
76
|
+
*/
|
|
77
|
+
getWithTTL(key) {
|
|
78
|
+
const wrapper = this.get(key);
|
|
79
|
+
if (!wrapper) {
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
if (Date.now() > wrapper.expiresAt) {
|
|
83
|
+
this.remove(key);
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
return wrapper.value;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Remove um item do localStorage.
|
|
90
|
+
*/
|
|
91
|
+
remove(key) {
|
|
92
|
+
if (typeof localStorage === 'undefined') {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
localStorage.removeItem(this.buildKey(key));
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Remove todos os itens do usuário atual.
|
|
99
|
+
*/
|
|
100
|
+
clear() {
|
|
101
|
+
if (typeof localStorage === 'undefined') {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
const username = this.getUsername() ?? 'anonymous';
|
|
105
|
+
const prefix = `${STORAGE_PREFIX}:${username}:`;
|
|
106
|
+
const keysToRemove = [];
|
|
107
|
+
for (let i = 0; i < localStorage.length; i++) {
|
|
108
|
+
const key = localStorage.key(i);
|
|
109
|
+
if (key?.startsWith(prefix)) {
|
|
110
|
+
keysToRemove.push(key);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
keysToRemove.forEach((key) => localStorage.removeItem(key));
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Verifica se um item existe (e não está expirado, se tiver TTL).
|
|
117
|
+
*/
|
|
118
|
+
has(key) {
|
|
119
|
+
return this.get(key) !== null;
|
|
120
|
+
}
|
|
121
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
122
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StorageService, providedIn: 'root' });
|
|
123
|
+
}
|
|
124
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StorageService, decorators: [{
|
|
125
|
+
type: Injectable,
|
|
126
|
+
args: [{
|
|
127
|
+
providedIn: 'root'
|
|
128
|
+
}]
|
|
129
|
+
}] });
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3NyYy9saWIvc2VydmljZXMvc3RvcmFnZS9zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFM0MsTUFBTSxpQkFBaUIsR0FBRyxrQkFBa0IsQ0FBQztBQUM3QyxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUM7QUFLN0IsTUFBTSxPQUFPLGNBQWM7SUFFekI7O09BRUc7SUFDSyxXQUFXO1FBQ2pCLElBQUksT0FBTyxRQUFRLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDcEMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsaUJBQWlCLEdBQUcsR0FBRyxDQUFDO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTNDLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7WUFDN0IsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzlCLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUMvQixJQUFJLENBQUM7b0JBQ0gsTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztvQkFDbkUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDaEMsT0FBTyxLQUFLLEVBQUUsUUFBUSxJQUFJLElBQUksQ0FBQztnQkFDakMsQ0FBQztnQkFBQyxNQUFNLENBQUM7b0JBQ1AsT0FBTyxJQUFJLENBQUM7Z0JBQ2QsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssUUFBUSxDQUFDLEdBQVc7UUFDMUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLFdBQVcsQ0FBQztRQUNuRCxPQUFPLEdBQUcsY0FBYyxJQUFJLFFBQVEsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsR0FBRyxDQUFJLEdBQVcsRUFBRSxLQUFRO1FBQzFCLElBQUksT0FBTyxZQUFZLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDeEMsT0FBTztRQUNULENBQUM7UUFFRCxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxHQUFHLENBQUksR0FBVztRQUNoQixJQUFJLE9BQU8sWUFBWSxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ3hDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3RELE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDN0MsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVUsQ0FBSSxHQUFXLEVBQUUsS0FBUSxFQUFFLFVBQWtCO1FBQ3JELE1BQU0sT0FBTyxHQUFHO1lBQ2QsS0FBSztZQUNMLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsVUFBVSxHQUFHLEVBQUUsR0FBRyxJQUFJO1NBQy9DLENBQUM7UUFDRixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxVQUFVLENBQUksR0FBVztRQUN2QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFrQyxHQUFHLENBQUMsQ0FBQztRQUUvRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLEdBQVc7UUFDaEIsSUFBSSxPQUFPLFlBQVksS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUN4QyxPQUFPO1FBQ1QsQ0FBQztRQUVELFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUs7UUFDSCxJQUFJLE9BQU8sWUFBWSxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ3hDLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLFdBQVcsQ0FBQztRQUNuRCxNQUFNLE1BQU0sR0FBRyxHQUFHLGNBQWMsSUFBSSxRQUFRLEdBQUcsQ0FBQztRQUVoRCxNQUFNLFlBQVksR0FBYSxFQUFFLENBQUM7UUFDbEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM3QyxNQUFNLEdBQUcsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLElBQUksR0FBRyxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUM1QixZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pCLENBQUM7UUFDSCxDQUFDO1FBRUQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRDs7T0FFRztJQUNILEdBQUcsQ0FBQyxHQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQztJQUNoQyxDQUFDO3dHQXRJVSxjQUFjOzRHQUFkLGNBQWMsY0FGYixNQUFNOzs0RkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuY29uc3QgVE9LRU5fQ09PS0lFX05BTUUgPSAnY29tLnNlbmlvci50b2tlbic7XG5jb25zdCBTVE9SQUdFX1BSRUZJWCA9ICdjcm0nO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBTdG9yYWdlU2VydmljZSB7XG5cbiAgLyoqXG4gICAqIFJldG9ybmEgbyB1c2VybmFtZSBkbyB1c3XDoXJpbyBsb2dhZG8gYSBwYXJ0aXIgZG8gY29va2llIGNvbS5zZW5pb3IudG9rZW4uXG4gICAqL1xuICBwcml2YXRlIGdldFVzZXJuYW1lKCk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBuYW1lRVEgPSBUT0tFTl9DT09LSUVfTkFNRSArICc9JztcbiAgICBjb25zdCBjb29raWVzID0gZG9jdW1lbnQuY29va2llLnNwbGl0KCc7Jyk7XG5cbiAgICBmb3IgKGNvbnN0IGNvb2tpZSBvZiBjb29raWVzKSB7XG4gICAgICBjb25zdCB0cmltbWVkID0gY29va2llLnRyaW0oKTtcbiAgICAgIGlmICh0cmltbWVkLnN0YXJ0c1dpdGgobmFtZUVRKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gZGVjb2RlVVJJQ29tcG9uZW50KHRyaW1tZWQuc3Vic3RyaW5nKG5hbWVFUS5sZW5ndGgpKTtcbiAgICAgICAgICBjb25zdCB0b2tlbiA9IEpTT04ucGFyc2UodmFsdWUpO1xuICAgICAgICAgIHJldHVybiB0b2tlbj8udXNlcm5hbWUgPz8gbnVsbDtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBNb250YSBhIGtleSBjb21wbGV0YSBjb20gcHJlZml4byBlIHVzZXJuYW1lLlxuICAgKiBGb3JtYXRvOiBjcm06e3VzZXJuYW1lfTp7a2V5fVxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZEtleShrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdXNlcm5hbWUgPSB0aGlzLmdldFVzZXJuYW1lKCkgPz8gJ2Fub255bW91cyc7XG4gICAgcmV0dXJuIGAke1NUT1JBR0VfUFJFRklYfToke3VzZXJuYW1lfToke2tleX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhbHZhIHVtIHZhbG9yIG5vIGxvY2FsU3RvcmFnZS5cbiAgICogQWNlaXRhIHF1YWxxdWVyIHRpcG8gc2VyaWFsaXrDoXZlbC5cbiAgICovXG4gIHNldDxUPihrZXk6IHN0cmluZywgdmFsdWU6IFQpOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIGxvY2FsU3RvcmFnZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmJ1aWxkS2V5KGtleSksIEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVjdXBlcmEgdW0gdmFsb3IgZG8gbG9jYWxTdG9yYWdlLlxuICAgKiBSZXRvcm5hIG51bGwgc2UgbsOjbyBleGlzdGlyIG91IGZhbGhhciBvIHBhcnNlLlxuICAgKi9cbiAgZ2V0PFQ+KGtleTogc3RyaW5nKTogVCB8IG51bGwge1xuICAgIGlmICh0eXBlb2YgbG9jYWxTdG9yYWdlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmJ1aWxkS2V5KGtleSkpO1xuICAgICAgcmV0dXJuIGRhdGEgPyBKU09OLnBhcnNlKGRhdGEpIGFzIFQgOiBudWxsO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNhbHZhIHVtIHZhbG9yIGNvbSBUVEwgKHRlbXBvIGRlIGV4cGlyYcOnw6NvIGVtIG1pbnV0b3MpLlxuICAgKi9cbiAgc2V0V2l0aFRUTDxUPihrZXk6IHN0cmluZywgdmFsdWU6IFQsIHR0bE1pbnV0ZXM6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHdyYXBwZXIgPSB7XG4gICAgICB2YWx1ZSxcbiAgICAgIGV4cGlyZXNBdDogRGF0ZS5ub3coKSArIHR0bE1pbnV0ZXMgKiA2MCAqIDEwMDBcbiAgICB9O1xuICAgIHRoaXMuc2V0KGtleSwgd3JhcHBlcik7XG4gIH1cblxuICAvKipcbiAgICogUmVjdXBlcmEgdW0gdmFsb3IgY29tIFRUTC4gUmV0b3JuYSBudWxsIHNlIGV4cGlyYWRvLlxuICAgKi9cbiAgZ2V0V2l0aFRUTDxUPihrZXk6IHN0cmluZyk6IFQgfCBudWxsIHtcbiAgICBjb25zdCB3cmFwcGVyID0gdGhpcy5nZXQ8eyB2YWx1ZTogVDsgZXhwaXJlc0F0OiBudW1iZXIgfT4oa2V5KTtcblxuICAgIGlmICghd3JhcHBlcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKERhdGUubm93KCkgPiB3cmFwcGVyLmV4cGlyZXNBdCkge1xuICAgICAgdGhpcy5yZW1vdmUoa2V5KTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB3cmFwcGVyLnZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSB1bSBpdGVtIGRvIGxvY2FsU3RvcmFnZS5cbiAgICovXG4gIHJlbW92ZShrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0eXBlb2YgbG9jYWxTdG9yYWdlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuYnVpbGRLZXkoa2V5KSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIHRvZG9zIG9zIGl0ZW5zIGRvIHVzdcOhcmlvIGF0dWFsLlxuICAgKi9cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiBsb2NhbFN0b3JhZ2UgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcm5hbWUgPSB0aGlzLmdldFVzZXJuYW1lKCkgPz8gJ2Fub255bW91cyc7XG4gICAgY29uc3QgcHJlZml4ID0gYCR7U1RPUkFHRV9QUkVGSVh9OiR7dXNlcm5hbWV9OmA7XG5cbiAgICBjb25zdCBrZXlzVG9SZW1vdmU6IHN0cmluZ1tdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsb2NhbFN0b3JhZ2UubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGtleSA9IGxvY2FsU3RvcmFnZS5rZXkoaSk7XG4gICAgICBpZiAoa2V5Py5zdGFydHNXaXRoKHByZWZpeCkpIHtcbiAgICAgICAga2V5c1RvUmVtb3ZlLnB1c2goa2V5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBrZXlzVG9SZW1vdmUuZm9yRWFjaCgoa2V5KSA9PiBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmljYSBzZSB1bSBpdGVtIGV4aXN0ZSAoZSBuw6NvIGVzdMOhIGV4cGlyYWRvLCBzZSB0aXZlciBUVEwpLlxuICAgKi9cbiAgaGFzKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KGtleSkgIT09IG51bGw7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of @senior-gestao-relacionamento/angular-components
|
|
3
|
+
*/
|
|
4
|
+
export { AngularComponentsModule } from './lib/angular-components.module';
|
|
5
|
+
// Services
|
|
6
|
+
export { StorageService } from './lib/services/storage/storage.service';
|
|
7
|
+
export { CurrentCollaboratorService } from './lib/services/current-collaborator/current-collaborator.service';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTFFLFdBQVc7QUFDWCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0VBQWtFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIEBzZW5pb3ItZ2VzdGFvLXJlbGFjaW9uYW1lbnRvL2FuZ3VsYXItY29tcG9uZW50c1xuICovXG5cbmV4cG9ydCB7IEFuZ3VsYXJDb21wb25lbnRzTW9kdWxlIH0gZnJvbSAnLi9saWIvYW5ndWxhci1jb21wb25lbnRzLm1vZHVsZSc7XG5cbi8vIFNlcnZpY2VzXG5leHBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vbGliL3NlcnZpY2VzL3N0b3JhZ2Uvc3RvcmFnZS5zZXJ2aWNlJztcbmV4cG9ydCB7IEN1cnJlbnRDb2xsYWJvcmF0b3JTZXJ2aWNlIH0gZnJvbSAnLi9saWIvc2VydmljZXMvY3VycmVudC1jb2xsYWJvcmF0b3IvY3VycmVudC1jb2xsYWJvcmF0b3Iuc2VydmljZSc7XG5cbi8vIE1vZGVsc1xuZXhwb3J0IHR5cGUge1xuICBDb2xsYWJvcmF0b3IsXG4gIENvbGxhYm9yYXRvckxlYWRlcixcbiAgQ29sbGFib3JhdG9yQnJhbmNoLFxuICBCcmFuY2gsXG4gIENvbXBhbnksXG4gIEpvYlRpdGxlXG59IGZyb20gJy4vbGliL3NlcnZpY2VzL2N1cnJlbnQtY29sbGFib3JhdG9yL21vZGVscy9jb2xsYWJvcmF0b3IubW9kZWwnO1xuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuaW9yLWdlc3Rhby1yZWxhY2lvbmFtZW50by1hbmd1bGFyLWNvbXBvbmVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL3Nlbmlvci1nZXN0YW8tcmVsYWNpb25hbWVudG8tYW5ndWxhci1jb21wb25lbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { NgModule, Injectable } from '@angular/core';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
import { BehaviorSubject, of, tap } from 'rxjs';
|
|
5
|
+
import * as i1 from '@angular/common/http';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Módulo principal da biblioteca @senior-gestao-relacionamento/angular-components
|
|
9
|
+
*/
|
|
10
|
+
class AngularComponentsModule {
|
|
11
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AngularComponentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
12
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: AngularComponentsModule, imports: [CommonModule] });
|
|
13
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AngularComponentsModule, imports: [CommonModule] });
|
|
14
|
+
}
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AngularComponentsModule, decorators: [{
|
|
16
|
+
type: NgModule,
|
|
17
|
+
args: [{
|
|
18
|
+
declarations: [],
|
|
19
|
+
imports: [
|
|
20
|
+
CommonModule
|
|
21
|
+
],
|
|
22
|
+
exports: []
|
|
23
|
+
}]
|
|
24
|
+
}] });
|
|
25
|
+
|
|
26
|
+
const TOKEN_COOKIE_NAME = 'com.senior.token';
|
|
27
|
+
const STORAGE_PREFIX = 'crm';
|
|
28
|
+
class StorageService {
|
|
29
|
+
/**
|
|
30
|
+
* Retorna o username do usuário logado a partir do cookie com.senior.token.
|
|
31
|
+
*/
|
|
32
|
+
getUsername() {
|
|
33
|
+
if (typeof document === 'undefined') {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
const nameEQ = TOKEN_COOKIE_NAME + '=';
|
|
37
|
+
const cookies = document.cookie.split(';');
|
|
38
|
+
for (const cookie of cookies) {
|
|
39
|
+
const trimmed = cookie.trim();
|
|
40
|
+
if (trimmed.startsWith(nameEQ)) {
|
|
41
|
+
try {
|
|
42
|
+
const value = decodeURIComponent(trimmed.substring(nameEQ.length));
|
|
43
|
+
const token = JSON.parse(value);
|
|
44
|
+
return token?.username ?? null;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Monta a key completa com prefixo e username.
|
|
55
|
+
* Formato: crm:{username}:{key}
|
|
56
|
+
*/
|
|
57
|
+
buildKey(key) {
|
|
58
|
+
const username = this.getUsername() ?? 'anonymous';
|
|
59
|
+
return `${STORAGE_PREFIX}:${username}:${key}`;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Salva um valor no localStorage.
|
|
63
|
+
* Aceita qualquer tipo serializável.
|
|
64
|
+
*/
|
|
65
|
+
set(key, value) {
|
|
66
|
+
if (typeof localStorage === 'undefined') {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
localStorage.setItem(this.buildKey(key), JSON.stringify(value));
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Recupera um valor do localStorage.
|
|
73
|
+
* Retorna null se não existir ou falhar o parse.
|
|
74
|
+
*/
|
|
75
|
+
get(key) {
|
|
76
|
+
if (typeof localStorage === 'undefined') {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
try {
|
|
80
|
+
const data = localStorage.getItem(this.buildKey(key));
|
|
81
|
+
return data ? JSON.parse(data) : null;
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Salva um valor com TTL (tempo de expiração em minutos).
|
|
89
|
+
*/
|
|
90
|
+
setWithTTL(key, value, ttlMinutes) {
|
|
91
|
+
const wrapper = {
|
|
92
|
+
value,
|
|
93
|
+
expiresAt: Date.now() + ttlMinutes * 60 * 1000
|
|
94
|
+
};
|
|
95
|
+
this.set(key, wrapper);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Recupera um valor com TTL. Retorna null se expirado.
|
|
99
|
+
*/
|
|
100
|
+
getWithTTL(key) {
|
|
101
|
+
const wrapper = this.get(key);
|
|
102
|
+
if (!wrapper) {
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
if (Date.now() > wrapper.expiresAt) {
|
|
106
|
+
this.remove(key);
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
return wrapper.value;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Remove um item do localStorage.
|
|
113
|
+
*/
|
|
114
|
+
remove(key) {
|
|
115
|
+
if (typeof localStorage === 'undefined') {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
localStorage.removeItem(this.buildKey(key));
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Remove todos os itens do usuário atual.
|
|
122
|
+
*/
|
|
123
|
+
clear() {
|
|
124
|
+
if (typeof localStorage === 'undefined') {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
const username = this.getUsername() ?? 'anonymous';
|
|
128
|
+
const prefix = `${STORAGE_PREFIX}:${username}:`;
|
|
129
|
+
const keysToRemove = [];
|
|
130
|
+
for (let i = 0; i < localStorage.length; i++) {
|
|
131
|
+
const key = localStorage.key(i);
|
|
132
|
+
if (key?.startsWith(prefix)) {
|
|
133
|
+
keysToRemove.push(key);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
keysToRemove.forEach((key) => localStorage.removeItem(key));
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Verifica se um item existe (e não está expirado, se tiver TTL).
|
|
140
|
+
*/
|
|
141
|
+
has(key) {
|
|
142
|
+
return this.get(key) !== null;
|
|
143
|
+
}
|
|
144
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
145
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StorageService, providedIn: 'root' });
|
|
146
|
+
}
|
|
147
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StorageService, decorators: [{
|
|
148
|
+
type: Injectable,
|
|
149
|
+
args: [{
|
|
150
|
+
providedIn: 'root'
|
|
151
|
+
}]
|
|
152
|
+
}] });
|
|
153
|
+
|
|
154
|
+
const CACHE_KEY = 'currentCollaborator';
|
|
155
|
+
const CACHE_TTL_MINUTES = 30;
|
|
156
|
+
class CurrentCollaboratorService {
|
|
157
|
+
http;
|
|
158
|
+
storage;
|
|
159
|
+
API_PATH = '/crmx/collaborator/queries/getCurrentCollaborator';
|
|
160
|
+
collaboratorSubject = new BehaviorSubject(null);
|
|
161
|
+
collaborator$ = this.collaboratorSubject.asObservable();
|
|
162
|
+
constructor(http, storage) {
|
|
163
|
+
this.http = http;
|
|
164
|
+
this.storage = storage;
|
|
165
|
+
const cached = this.storage.getWithTTL(CACHE_KEY);
|
|
166
|
+
if (cached) {
|
|
167
|
+
this.collaboratorSubject.next(cached);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Busca o colaborador atual. Retorna do cache se disponível,
|
|
172
|
+
* caso contrário consulta a API.
|
|
173
|
+
*/
|
|
174
|
+
load() {
|
|
175
|
+
const cached = this.storage.getWithTTL(CACHE_KEY);
|
|
176
|
+
if (cached) {
|
|
177
|
+
this.collaboratorSubject.next(cached);
|
|
178
|
+
return of(cached);
|
|
179
|
+
}
|
|
180
|
+
return this.http.get(this.API_PATH).pipe(tap((collaborator) => {
|
|
181
|
+
this.storage.setWithTTL(CACHE_KEY, collaborator, CACHE_TTL_MINUTES);
|
|
182
|
+
this.collaboratorSubject.next(collaborator);
|
|
183
|
+
}));
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Força a atualização do cache consultando a API.
|
|
187
|
+
*/
|
|
188
|
+
refresh() {
|
|
189
|
+
this.storage.remove(CACHE_KEY);
|
|
190
|
+
this.collaboratorSubject.next(null);
|
|
191
|
+
return this.http.get(this.API_PATH).pipe(tap((collaborator) => {
|
|
192
|
+
this.storage.setWithTTL(CACHE_KEY, collaborator, CACHE_TTL_MINUTES);
|
|
193
|
+
this.collaboratorSubject.next(collaborator);
|
|
194
|
+
}));
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Retorna o colaborador atual do cache (sem request).
|
|
198
|
+
*/
|
|
199
|
+
get() {
|
|
200
|
+
return this.collaboratorSubject.value;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Limpa o cache do colaborador.
|
|
204
|
+
*/
|
|
205
|
+
clearCache() {
|
|
206
|
+
this.storage.remove(CACHE_KEY);
|
|
207
|
+
this.collaboratorSubject.next(null);
|
|
208
|
+
}
|
|
209
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CurrentCollaboratorService, deps: [{ token: i1.HttpClient }, { token: StorageService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
210
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CurrentCollaboratorService, providedIn: 'root' });
|
|
211
|
+
}
|
|
212
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CurrentCollaboratorService, decorators: [{
|
|
213
|
+
type: Injectable,
|
|
214
|
+
args: [{
|
|
215
|
+
providedIn: 'root'
|
|
216
|
+
}]
|
|
217
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: StorageService }] });
|
|
218
|
+
|
|
219
|
+
/*
|
|
220
|
+
* Public API Surface of @senior-gestao-relacionamento/angular-components
|
|
221
|
+
*/
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Generated bundle index. Do not edit.
|
|
225
|
+
*/
|
|
226
|
+
|
|
227
|
+
export { AngularComponentsModule, CurrentCollaboratorService, StorageService };
|
|
228
|
+
//# sourceMappingURL=senior-gestao-relacionamento-angular-components.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"senior-gestao-relacionamento-angular-components.mjs","sources":["../../projects/angular-components/src/lib/angular-components.module.ts","../../projects/angular-components/src/lib/services/storage/storage.service.ts","../../projects/angular-components/src/lib/services/current-collaborator/current-collaborator.service.ts","../../projects/angular-components/src/public-api.ts","../../projects/angular-components/src/senior-gestao-relacionamento-angular-components.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Módulo principal da biblioteca @senior-gestao-relacionamento/angular-components\n */\n@NgModule({\n declarations: [],\n imports: [\n CommonModule\n ],\n exports: []\n})\nexport class AngularComponentsModule { }\n","import { Injectable } from '@angular/core';\n\nconst TOKEN_COOKIE_NAME = 'com.senior.token';\nconst STORAGE_PREFIX = 'crm';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class StorageService {\n\n /**\n * Retorna o username do usuário logado a partir do cookie com.senior.token.\n */\n private getUsername(): string | null {\n if (typeof document === 'undefined') {\n return null;\n }\n\n const nameEQ = TOKEN_COOKIE_NAME + '=';\n const cookies = document.cookie.split(';');\n\n for (const cookie of cookies) {\n const trimmed = cookie.trim();\n if (trimmed.startsWith(nameEQ)) {\n try {\n const value = decodeURIComponent(trimmed.substring(nameEQ.length));\n const token = JSON.parse(value);\n return token?.username ?? null;\n } catch {\n return null;\n }\n }\n }\n\n return null;\n }\n\n /**\n * Monta a key completa com prefixo e username.\n * Formato: crm:{username}:{key}\n */\n private buildKey(key: string): string {\n const username = this.getUsername() ?? 'anonymous';\n return `${STORAGE_PREFIX}:${username}:${key}`;\n }\n\n /**\n * Salva um valor no localStorage.\n * Aceita qualquer tipo serializável.\n */\n set<T>(key: string, value: T): void {\n if (typeof localStorage === 'undefined') {\n return;\n }\n\n localStorage.setItem(this.buildKey(key), JSON.stringify(value));\n }\n\n /**\n * Recupera um valor do localStorage.\n * Retorna null se não existir ou falhar o parse.\n */\n get<T>(key: string): T | null {\n if (typeof localStorage === 'undefined') {\n return null;\n }\n\n try {\n const data = localStorage.getItem(this.buildKey(key));\n return data ? JSON.parse(data) as T : null;\n } catch {\n return null;\n }\n }\n\n /**\n * Salva um valor com TTL (tempo de expiração em minutos).\n */\n setWithTTL<T>(key: string, value: T, ttlMinutes: number): void {\n const wrapper = {\n value,\n expiresAt: Date.now() + ttlMinutes * 60 * 1000\n };\n this.set(key, wrapper);\n }\n\n /**\n * Recupera um valor com TTL. Retorna null se expirado.\n */\n getWithTTL<T>(key: string): T | null {\n const wrapper = this.get<{ value: T; expiresAt: number }>(key);\n\n if (!wrapper) {\n return null;\n }\n\n if (Date.now() > wrapper.expiresAt) {\n this.remove(key);\n return null;\n }\n\n return wrapper.value;\n }\n\n /**\n * Remove um item do localStorage.\n */\n remove(key: string): void {\n if (typeof localStorage === 'undefined') {\n return;\n }\n\n localStorage.removeItem(this.buildKey(key));\n }\n\n /**\n * Remove todos os itens do usuário atual.\n */\n clear(): void {\n if (typeof localStorage === 'undefined') {\n return;\n }\n\n const username = this.getUsername() ?? 'anonymous';\n const prefix = `${STORAGE_PREFIX}:${username}:`;\n\n const keysToRemove: string[] = [];\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (key?.startsWith(prefix)) {\n keysToRemove.push(key);\n }\n }\n\n keysToRemove.forEach((key) => localStorage.removeItem(key));\n }\n\n /**\n * Verifica se um item existe (e não está expirado, se tiver TTL).\n */\n has(key: string): boolean {\n return this.get(key) !== null;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { BehaviorSubject, Observable, of, tap } from 'rxjs';\nimport { Collaborator } from './models/collaborator.model';\nimport { StorageService } from '../storage/storage.service';\n\nconst CACHE_KEY = 'currentCollaborator';\nconst CACHE_TTL_MINUTES = 30;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CurrentCollaboratorService {\n private readonly API_PATH = '/crmx/collaborator/queries/getCurrentCollaborator';\n\n private readonly collaboratorSubject = new BehaviorSubject<Collaborator | null>(null);\n public readonly collaborator$ = this.collaboratorSubject.asObservable();\n\n constructor(\n private readonly http: HttpClient,\n private readonly storage: StorageService\n ) {\n const cached = this.storage.getWithTTL<Collaborator>(CACHE_KEY);\n if (cached) {\n this.collaboratorSubject.next(cached);\n }\n }\n\n /**\n * Busca o colaborador atual. Retorna do cache se disponível,\n * caso contrário consulta a API.\n */\n load(): Observable<Collaborator> {\n const cached = this.storage.getWithTTL<Collaborator>(CACHE_KEY);\n\n if (cached) {\n this.collaboratorSubject.next(cached);\n return of(cached);\n }\n\n return this.http.get<Collaborator>(this.API_PATH).pipe(\n tap((collaborator) => {\n this.storage.setWithTTL(CACHE_KEY, collaborator, CACHE_TTL_MINUTES);\n this.collaboratorSubject.next(collaborator);\n })\n );\n }\n\n /**\n * Força a atualização do cache consultando a API.\n */\n refresh(): Observable<Collaborator> {\n this.storage.remove(CACHE_KEY);\n this.collaboratorSubject.next(null);\n\n return this.http.get<Collaborator>(this.API_PATH).pipe(\n tap((collaborator) => {\n this.storage.setWithTTL(CACHE_KEY, collaborator, CACHE_TTL_MINUTES);\n this.collaboratorSubject.next(collaborator);\n })\n );\n }\n\n /**\n * Retorna o colaborador atual do cache (sem request).\n */\n get(): Collaborator | null {\n return this.collaboratorSubject.value;\n }\n\n /**\n * Limpa o cache do colaborador.\n */\n clearCache(): void {\n this.storage.remove(CACHE_KEY);\n this.collaboratorSubject.next(null);\n }\n}\n","/*\n * Public API Surface of @senior-gestao-relacionamento/angular-components\n */\n\nexport { AngularComponentsModule } from './lib/angular-components.module';\n\n// Services\nexport { StorageService } from './lib/services/storage/storage.service';\nexport { CurrentCollaboratorService } from './lib/services/current-collaborator/current-collaborator.service';\n\n// Models\nexport type {\n Collaborator,\n CollaboratorLeader,\n CollaboratorBranch,\n Branch,\n Company,\n JobTitle\n} from './lib/services/current-collaborator/models/collaborator.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.StorageService"],"mappings":"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"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "@angular/common";
|
|
3
|
+
/**
|
|
4
|
+
* Módulo principal da biblioteca @senior-gestao-relacionamento/angular-components
|
|
5
|
+
*/
|
|
6
|
+
export declare class AngularComponentsModule {
|
|
7
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AngularComponentsModule, never>;
|
|
8
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<AngularComponentsModule, never, [typeof i1.CommonModule], never>;
|
|
9
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<AngularComponentsModule>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { HttpClient } from '@angular/common/http';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { Collaborator } from './models/collaborator.model';
|
|
4
|
+
import { StorageService } from '../storage/storage.service';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class CurrentCollaboratorService {
|
|
7
|
+
private readonly http;
|
|
8
|
+
private readonly storage;
|
|
9
|
+
private readonly API_PATH;
|
|
10
|
+
private readonly collaboratorSubject;
|
|
11
|
+
readonly collaborator$: Observable<Collaborator | null>;
|
|
12
|
+
constructor(http: HttpClient, storage: StorageService);
|
|
13
|
+
/**
|
|
14
|
+
* Busca o colaborador atual. Retorna do cache se disponível,
|
|
15
|
+
* caso contrário consulta a API.
|
|
16
|
+
*/
|
|
17
|
+
load(): Observable<Collaborator>;
|
|
18
|
+
/**
|
|
19
|
+
* Força a atualização do cache consultando a API.
|
|
20
|
+
*/
|
|
21
|
+
refresh(): Observable<Collaborator>;
|
|
22
|
+
/**
|
|
23
|
+
* Retorna o colaborador atual do cache (sem request).
|
|
24
|
+
*/
|
|
25
|
+
get(): Collaborator | null;
|
|
26
|
+
/**
|
|
27
|
+
* Limpa o cache do colaborador.
|
|
28
|
+
*/
|
|
29
|
+
clearCache(): void;
|
|
30
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CurrentCollaboratorService, never>;
|
|
31
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<CurrentCollaboratorService>;
|
|
32
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export interface JobTitle {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
createdBy: string;
|
|
5
|
+
createdAt: string;
|
|
6
|
+
changedBy: string;
|
|
7
|
+
changedAt: string;
|
|
8
|
+
}
|
|
9
|
+
export interface Company {
|
|
10
|
+
id: string;
|
|
11
|
+
code: number;
|
|
12
|
+
name: string;
|
|
13
|
+
status: string;
|
|
14
|
+
createdBy: string;
|
|
15
|
+
createdAt: string;
|
|
16
|
+
changedBy: string;
|
|
17
|
+
changedAt: string;
|
|
18
|
+
}
|
|
19
|
+
export interface Branch {
|
|
20
|
+
id: string;
|
|
21
|
+
company: Company;
|
|
22
|
+
code: number;
|
|
23
|
+
name: string;
|
|
24
|
+
status: string;
|
|
25
|
+
createdBy: string;
|
|
26
|
+
createdAt: string;
|
|
27
|
+
changedBy: string;
|
|
28
|
+
changedAt: string;
|
|
29
|
+
}
|
|
30
|
+
export interface CollaboratorBranch {
|
|
31
|
+
branch: Branch;
|
|
32
|
+
main: boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface CollaboratorLeader {
|
|
35
|
+
id: string;
|
|
36
|
+
name: string;
|
|
37
|
+
email: string;
|
|
38
|
+
photo: string;
|
|
39
|
+
consolidatedLevel: string;
|
|
40
|
+
leader: CollaboratorLeader | null;
|
|
41
|
+
}
|
|
42
|
+
export interface Collaborator {
|
|
43
|
+
id: string;
|
|
44
|
+
name: string;
|
|
45
|
+
email: string;
|
|
46
|
+
photo: string;
|
|
47
|
+
active: boolean;
|
|
48
|
+
visible: boolean;
|
|
49
|
+
jobTitle: JobTitle;
|
|
50
|
+
consolidatedLevel: string;
|
|
51
|
+
leader: CollaboratorLeader;
|
|
52
|
+
branches: CollaboratorBranch[];
|
|
53
|
+
}
|