@sneat/contactus-services 0.2.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.
Files changed (50) hide show
  1. package/esm2022/index.js +2 -0
  2. package/esm2022/index.js.map +1 -0
  3. package/esm2022/lib/contact-group-service.js +192 -0
  4. package/esm2022/lib/contact-group-service.js.map +1 -0
  5. package/esm2022/lib/contact-nav-service.js +25 -0
  6. package/esm2022/lib/contact-nav-service.js.map +1 -0
  7. package/esm2022/lib/contact-role.service.js +23 -0
  8. package/esm2022/lib/contact-role.service.js.map +1 -0
  9. package/esm2022/lib/contact-service.js +130 -0
  10. package/esm2022/lib/contact-service.js.map +1 -0
  11. package/esm2022/lib/contactus-nav.service.js +35 -0
  12. package/esm2022/lib/contactus-nav.service.js.map +1 -0
  13. package/esm2022/lib/contactus-services.module.js +35 -0
  14. package/esm2022/lib/contactus-services.module.js.map +1 -0
  15. package/esm2022/lib/contactus-space-context.service.js +60 -0
  16. package/esm2022/lib/contactus-space-context.service.js.map +1 -0
  17. package/esm2022/lib/contactus-space.service.js +21 -0
  18. package/esm2022/lib/contactus-space.service.js.map +1 -0
  19. package/esm2022/lib/dto/contact.js +28 -0
  20. package/esm2022/lib/dto/contact.js.map +1 -0
  21. package/esm2022/lib/dto/index.js +2 -0
  22. package/esm2022/lib/dto/index.js.map +1 -0
  23. package/esm2022/lib/index.js +13 -0
  24. package/esm2022/lib/index.js.map +1 -0
  25. package/esm2022/lib/invite.service.js +87 -0
  26. package/esm2022/lib/invite.service.js.map +1 -0
  27. package/esm2022/lib/member-group.service.js +13 -0
  28. package/esm2022/lib/member-group.service.js.map +1 -0
  29. package/esm2022/lib/member.service.js +28 -0
  30. package/esm2022/lib/member.service.js.map +1 -0
  31. package/esm2022/sneat-contactus-services.js +5 -0
  32. package/esm2022/sneat-contactus-services.js.map +1 -0
  33. package/index.d.ts +1 -0
  34. package/lib/contact-group-service.d.ts +15 -0
  35. package/lib/contact-nav-service.d.ts +16 -0
  36. package/lib/contact-role.service.d.ts +9 -0
  37. package/lib/contact-service.d.ts +39 -0
  38. package/lib/contactus-nav.service.d.ts +10 -0
  39. package/lib/contactus-services.module.d.ts +6 -0
  40. package/lib/contactus-space-context.service.d.ts +16 -0
  41. package/lib/contactus-space.service.d.ts +9 -0
  42. package/lib/dto/contact.d.ts +41 -0
  43. package/lib/dto/index.d.ts +1 -0
  44. package/lib/index.d.ts +12 -0
  45. package/lib/invite.service.d.ts +20 -0
  46. package/lib/member-group.service.d.ts +5 -0
  47. package/lib/member.service.d.ts +10 -0
  48. package/package.json +26 -0
  49. package/sneat-contactus-services.d.ts +5 -0
  50. package/tsconfig.lib.prod.tsbuildinfo +1 -0
@@ -0,0 +1,28 @@
1
+ export function validateContactRequest(request) {
2
+ if (!request.spaceID) {
3
+ throw new Error('spaceID parameters is required');
4
+ }
5
+ if (!request.contactID) {
6
+ throw new Error('contactID is required parameter');
7
+ }
8
+ }
9
+ export function validateUpdateContactRequest(request) {
10
+ validateContactRequest(request);
11
+ if (!request.address &&
12
+ !request.names &&
13
+ request.ageGroup === undefined &&
14
+ request.gender === undefined &&
15
+ request.vatNumber === undefined &&
16
+ request.dateOfBirth === undefined) {
17
+ throw new Error('At least one of the following is required: address, ageGroup, gender, dateOfBirth, names');
18
+ }
19
+ }
20
+ export function validateSetContactsRequest(request) {
21
+ if (!request.spaceID) {
22
+ throw new Error('spaceID parameters is required');
23
+ }
24
+ if (!request.contactIDs.length) {
25
+ throw new Error('contactIDs is required parameter');
26
+ }
27
+ }
28
+ //# sourceMappingURL=contact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contact.js","sourceRoot":"","sources":["../../../../../../../libs/contactus/services/src/lib/dto/contact.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,sBAAsB,CAAC,OAAwB;IAC7D,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAeD,MAAM,UAAU,4BAA4B,CAC1C,OAA8B;IAE9B,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChC,IACE,CAAC,OAAO,CAAC,OAAO;QAChB,CAAC,OAAO,CAAC,KAAK;QACd,OAAO,CAAC,QAAQ,KAAK,SAAS;QAC9B,OAAO,CAAC,MAAM,KAAK,SAAS;QAC5B,OAAO,CAAC,SAAS,KAAK,SAAS;QAC/B,OAAO,CAAC,WAAW,KAAK,SAAS,EACjC,CAAC;QACD,MAAM,IAAI,KAAK,CACb,0FAA0F,CAC3F,CAAC;IACJ,CAAC;AACH,CAAC;AA0BD,MAAM,UAAU,0BAA0B,CACxC,OAAkC;IAElC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;AACH,CAAC","sourcesContent":["import { IPersonNames } from '@sneat/auth-models';\nimport { ContactCommChannelType } from '@sneat/contactus-core';\nimport { IAddress } from '@sneat/contactus-core';\nimport { AgeGroupID, Gender } from '@sneat/core';\nimport { ISpaceRequest } from '@sneat/space-models';\n\nexport interface IContactRequest extends ISpaceRequest {\n readonly contactID: string;\n}\n\nexport function validateContactRequest(request: IContactRequest): void {\n if (!request.spaceID) {\n throw new Error('spaceID parameters is required');\n }\n if (!request.contactID) {\n throw new Error('contactID is required parameter');\n }\n}\n\nexport interface IContactRequestWithOptionalMessage extends IContactRequest {\n readonly message?: string;\n}\n\nexport interface IUpdateContactRequest extends IContactRequest {\n readonly address?: IAddress;\n readonly ageGroup?: AgeGroupID;\n readonly gender?: Gender;\n readonly names?: IPersonNames;\n readonly vatNumber?: string;\n readonly dateOfBirth?: string;\n}\n\nexport function validateUpdateContactRequest(\n request: IUpdateContactRequest,\n): void {\n validateContactRequest(request);\n if (\n !request.address &&\n !request.names &&\n request.ageGroup === undefined &&\n request.gender === undefined &&\n request.vatNumber === undefined &&\n request.dateOfBirth === undefined\n ) {\n throw new Error(\n 'At least one of the following is required: address, ageGroup, gender, dateOfBirth, names',\n );\n }\n}\n\nexport interface ISetContactsStatusRequest extends ISpaceRequest {\n readonly status: 'archived' | 'active';\n readonly contactIDs: readonly string[];\n}\n\nexport interface IContactCommChannelRequest extends IContactRequest {\n readonly channelType: ContactCommChannelType;\n readonly channelID: string;\n}\n\nexport interface IUpdateContactCommChannelTypeRequest extends IContactCommChannelRequest {\n readonly title: 'private' | 'work' | string;\n}\n\nexport interface IAddContactCommChannelRequest extends IContactCommChannelRequest {\n readonly type: 'private' | 'work';\n readonly note?: string;\n}\n\nexport interface IUpdateContactCommChannelRequest extends IContactCommChannelRequest {\n readonly newChannelID?: string;\n readonly type?: 'private' | 'work';\n}\n\nexport function validateSetContactsRequest(\n request: ISetContactsStatusRequest,\n): void {\n if (!request.spaceID) {\n throw new Error('spaceID parameters is required');\n }\n if (!request.contactIDs.length) {\n throw new Error('contactIDs is required parameter');\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export * from './contact';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/contactus/services/src/lib/dto/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC","sourcesContent":["export * from './contact';\n"]}
@@ -0,0 +1,13 @@
1
+ export * from './dto';
2
+ export * from './contact-group-service';
3
+ export * from './contact-nav-service';
4
+ export * from './contact-service';
5
+ export * from './contactus-space.service';
6
+ export * from './contactus-space-context.service';
7
+ export * from './contactus-services.module';
8
+ export * from './member.service';
9
+ export * from './member-group.service';
10
+ export * from './invite.service';
11
+ export * from './contactus-nav.service';
12
+ export { ContactRoleService } from './contact-role.service';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/contactus/services/src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC","sourcesContent":["export * from './dto';\nexport * from './contact-group-service';\nexport * from './contact-nav-service';\nexport * from './contact-service';\nexport * from './contactus-space.service';\nexport * from './contactus-space-context.service';\nexport * from './contactus-services.module';\nexport * from './member.service';\nexport * from './member-group.service';\nexport * from './invite.service';\nexport * from './contactus-nav.service';\nexport { ContactRoleService } from './contact-role.service';\n"]}
@@ -0,0 +1,87 @@
1
+ import { Injectable, inject } from '@angular/core';
2
+ import { Auth, createUserWithEmailAndPassword } from '@angular/fire/auth';
3
+ import { SneatApiService } from '@sneat/api';
4
+ import { SneatAuthStateService } from '@sneat/auth-core';
5
+ import { excludeEmpty } from '@sneat/core';
6
+ import { ErrorLogger } from '@sneat/core';
7
+ import { RandomIdService } from '@sneat/random';
8
+ import { from, switchMap, throwError } from 'rxjs';
9
+ import { map } from 'rxjs/operators';
10
+ import * as i0 from "@angular/core";
11
+ export class InviteService {
12
+ constructor() {
13
+ this.errorLogger = inject(ErrorLogger);
14
+ this.sneatAuthService = inject(SneatAuthStateService);
15
+ this.sneatApiService = inject(SneatApiService);
16
+ this.afAuth = inject(Auth);
17
+ this.randomService = inject(RandomIdService);
18
+ }
19
+ createInviteForMember(request) {
20
+ return this.sneatApiService.post('invites/create_invite_for_member', excludeEmpty(request));
21
+ }
22
+ getInviteLinkForMember(request) {
23
+ // TODO: Should we pass `request.message`? If not should be excluded from request
24
+ return this.sneatApiService.get(`invites/invite_link_for_member?space=${request.spaceID}&member=${request.to.memberID}`);
25
+ }
26
+ getSpaceJoinInfo(inviteID, pin) {
27
+ return this.sneatApiService
28
+ .postAsAnonymous('space/join_info', {
29
+ inviteID,
30
+ pin,
31
+ })
32
+ .pipe(map((response) => ({
33
+ ...response,
34
+ invite: {
35
+ ...response.invite,
36
+ id: inviteID,
37
+ pin,
38
+ },
39
+ })));
40
+ }
41
+ rejectPersonalInvite(request) {
42
+ return this.sneatApiService.post('invites/reject_personal_invite', request);
43
+ }
44
+ acceptInviteByAuthenticatedUser(inviteInfo) {
45
+ const request = {
46
+ spaceID: inviteInfo.space.id,
47
+ inviteID: inviteInfo.invite.id,
48
+ pin: inviteInfo.invite.pin,
49
+ member: inviteInfo.member,
50
+ // email: this.email,
51
+ // fullName: this.fullName,
52
+ };
53
+ return this.sneatApiService.post('invites/accept_personal_invite', request);
54
+ }
55
+ acceptInviteByUnauthenticatedUser(inviteInfo) {
56
+ if (inviteInfo.invite.to.channel === 'email' &&
57
+ inviteInfo.invite.to.address) {
58
+ return this.acceptEmailInviteByUnauthenticatedUser(inviteInfo);
59
+ }
60
+ return throwError(() => 'Only join from an email invites is implemented yet');
61
+ }
62
+ acceptEmailInviteByUnauthenticatedUser(inviteInfo) {
63
+ const email = inviteInfo.invite.to.address;
64
+ if (!email) {
65
+ return throwError(() => 'No value in inviteInfo.invite.to.address');
66
+ }
67
+ const password = this.randomService.newRandomId({ len: 12 });
68
+ const credentialPromise = createUserWithEmailAndPassword(this.afAuth, email, password);
69
+ const credentialObserver = from(credentialPromise);
70
+ return credentialObserver.pipe(switchMap((userCredential) => {
71
+ if (!userCredential.user) {
72
+ throw new Error('!userCredential.user');
73
+ }
74
+ // We call it to be 100% sure user fully authenticated
75
+ return from(userCredential.user.getIdToken());
76
+ }), switchMap((firebaseToken) => {
77
+ this.sneatApiService.setApiAuthToken(firebaseToken);
78
+ return this.acceptInviteByAuthenticatedUser(inviteInfo);
79
+ }));
80
+ }
81
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: InviteService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
82
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: InviteService }); }
83
+ }
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: InviteService, decorators: [{
85
+ type: Injectable
86
+ }] });
87
+ //# sourceMappingURL=invite.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invite.service.js","sourceRoot":"","sources":["../../../../../../libs/contactus/services/src/lib/invite.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable, inject } from '@angular/core';\nimport { Auth, createUserWithEmailAndPassword } from '@angular/fire/auth';\nimport { SneatApiService } from '@sneat/api';\nimport { SneatAuthStateService } from '@sneat/auth-core';\nimport {\n IAcceptPersonalInviteRequest,\n ICreatePersonalInviteRequest,\n ICreatePersonalInviteResponse,\n IJoinSpaceInfoResponse,\n} from '@sneat/contactus-core';\nimport { excludeEmpty } from '@sneat/core';\nimport { ErrorLogger, IErrorLogger } from '@sneat/core';\nimport { RandomIdService } from '@sneat/random';\nimport {\n IAcceptInviteResponse,\n IRejectPersonalInviteRequest,\n} from '@sneat/space-models';\nimport { from, Observable, switchMap, throwError } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable()\nexport class InviteService {\n private readonly errorLogger = inject<IErrorLogger>(ErrorLogger);\n private readonly sneatAuthService = inject(SneatAuthStateService);\n private readonly sneatApiService = inject(SneatApiService);\n private readonly afAuth = inject(Auth);\n private readonly randomService = inject(RandomIdService);\n\n public createInviteForMember(\n request: ICreatePersonalInviteRequest,\n ): Observable<ICreatePersonalInviteResponse> {\n return this.sneatApiService.post<ICreatePersonalInviteResponse>(\n 'invites/create_invite_for_member',\n excludeEmpty(request),\n );\n }\n\n public getInviteLinkForMember(\n request: ICreatePersonalInviteRequest,\n ): Observable<ICreatePersonalInviteResponse> {\n // TODO: Should we pass `request.message`? If not should be excluded from request\n return this.sneatApiService.get<ICreatePersonalInviteResponse>(\n `invites/invite_link_for_member?space=${request.spaceID}&member=${request.to.memberID}`,\n );\n }\n\n public getSpaceJoinInfo(\n inviteID: string,\n pin: string,\n ): Observable<IJoinSpaceInfoResponse> {\n return this.sneatApiService\n .postAsAnonymous<IJoinSpaceInfoResponse>('space/join_info', {\n inviteID,\n pin,\n })\n .pipe(\n map((response) => ({\n ...response,\n invite: {\n ...response.invite,\n id: inviteID,\n pin,\n },\n })),\n );\n }\n\n public rejectPersonalInvite(\n request: IRejectPersonalInviteRequest,\n ): Observable<void> {\n return this.sneatApiService.post('invites/reject_personal_invite', request);\n }\n\n public acceptInviteByAuthenticatedUser(\n inviteInfo: IJoinSpaceInfoResponse,\n ): Observable<IAcceptInviteResponse> {\n const request: IAcceptPersonalInviteRequest = {\n spaceID: inviteInfo.space.id,\n inviteID: inviteInfo.invite.id,\n pin: inviteInfo.invite.pin,\n member: inviteInfo.member,\n // email: this.email,\n // fullName: this.fullName,\n };\n return this.sneatApiService.post('invites/accept_personal_invite', request);\n }\n\n public acceptInviteByUnauthenticatedUser(\n inviteInfo: IJoinSpaceInfoResponse,\n ): Observable<IAcceptInviteResponse> {\n if (\n inviteInfo.invite.to.channel === 'email' &&\n inviteInfo.invite.to.address\n ) {\n return this.acceptEmailInviteByUnauthenticatedUser(inviteInfo);\n }\n return throwError(\n () => 'Only join from an email invites is implemented yet',\n );\n }\n\n private acceptEmailInviteByUnauthenticatedUser(\n inviteInfo: IJoinSpaceInfoResponse,\n ): Observable<IAcceptInviteResponse> {\n const email = inviteInfo.invite.to.address;\n if (!email) {\n return throwError(() => 'No value in inviteInfo.invite.to.address');\n }\n const password = this.randomService.newRandomId({ len: 12 });\n const credentialPromise = createUserWithEmailAndPassword(\n this.afAuth,\n email,\n password,\n );\n const credentialObserver = from(credentialPromise);\n return credentialObserver.pipe(\n switchMap((userCredential) => {\n if (!userCredential.user) {\n throw new Error('!userCredential.user');\n }\n // We call it to be 100% sure user fully authenticated\n return from(userCredential.user.getIdToken());\n }),\n switchMap((firebaseToken) => {\n this.sneatApiService.setApiAuthToken(firebaseToken);\n return this.acceptInviteByAuthenticatedUser(inviteInfo);\n }),\n );\n }\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class MemberGroupService {
4
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: MemberGroupService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: MemberGroupService, providedIn: 'root' }); }
6
+ }
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: MemberGroupService, decorators: [{
8
+ type: Injectable,
9
+ args: [{
10
+ providedIn: 'root',
11
+ }]
12
+ }] });
13
+ //# sourceMappingURL=member-group.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"member-group.service.js","sourceRoot":"","sources":["../../../../../../libs/contactus/services/src/lib/member-group.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;;AAK3C,MAAM,OAAO,kBAAkB;8GAAlB,kBAAkB;kHAAlB,kBAAkB,cAFjB,MAAM;;2FAEP,kBAAkB;kBAH9B,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB","sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MemberGroupService {\n // TODO: Move to ContactGroupService or delete\n}\n"]}
@@ -0,0 +1,28 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { trimNames } from '@sneat/auth-models';
3
+ import { validateCreateSpaceMemberRequest, } from '@sneat/contactus-core';
4
+ import { ContactService } from './contact-service';
5
+ import * as i0 from "@angular/core";
6
+ export class MemberService extends ContactService {
7
+ acceptPersonalInvite(request, firebaseToken) {
8
+ // console.log('MemberService.acceptPersonalInvite()');
9
+ if (firebaseToken) {
10
+ this.sneatApiService.setApiAuthToken(firebaseToken);
11
+ }
12
+ return this.sneatApiService.post('invites/accept_personal_invite', request);
13
+ }
14
+ createMember(request) {
15
+ // console.log(`MemberService.addMember()`, request);
16
+ if (request.names) {
17
+ request = { ...request, names: trimNames(request.names) };
18
+ }
19
+ validateCreateSpaceMemberRequest(request);
20
+ return this.sneatApiService.post('contactus/create_member', request);
21
+ }
22
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: MemberService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
23
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: MemberService }); }
24
+ }
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: MemberService, decorators: [{
26
+ type: Injectable
27
+ }] });
28
+ //# sourceMappingURL=member.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"member.service.js","sourceRoot":"","sources":["../../../../../../libs/contactus/services/src/lib/member.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAKL,gCAAgC,GACjC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;;AAInD,MAAM,OAAO,aAAc,SAAQ,cAAc;IACxC,oBAAoB,CACzB,OAAqC,EACrC,aAAqB;QAErB,uDAAuD;QACvD,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,gCAAgC,EAAE,OAAO,CAAC,CAAC;IAC9E,CAAC;IAEM,YAAY,CACjB,OAAkC;QAElC,qDAAqD;QACrD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5D,CAAC;QACD,gCAAgC,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAC9B,yBAAyB,EACzB,OAAO,CACR,CAAC;IACJ,CAAC;8GAxBU,aAAa;kHAAb,aAAa;;2FAAb,aAAa;kBADzB,UAAU","sourcesContent":["import { Injectable } from '@angular/core';\nimport { trimNames } from '@sneat/auth-models';\nimport {\n IMemberBrief,\n IAcceptPersonalInviteRequest,\n IAddSpaceMemberResponse,\n ICreateSpaceMemberRequest,\n validateCreateSpaceMemberRequest,\n} from '@sneat/contactus-core';\nimport { ContactService } from './contact-service';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class MemberService extends ContactService {\n public acceptPersonalInvite(\n request: IAcceptPersonalInviteRequest,\n firebaseToken: string,\n ): Observable<IMemberBrief> {\n // console.log('MemberService.acceptPersonalInvite()');\n if (firebaseToken) {\n this.sneatApiService.setApiAuthToken(firebaseToken);\n }\n return this.sneatApiService.post('invites/accept_personal_invite', request);\n }\n\n public createMember(\n request: ICreateSpaceMemberRequest,\n ): Observable<IAddSpaceMemberResponse> {\n // console.log(`MemberService.addMember()`, request);\n if (request.names) {\n request = { ...request, names: trimNames(request.names) };\n }\n validateCreateSpaceMemberRequest(request);\n return this.sneatApiService.post<IAddSpaceMemberResponse>(\n 'contactus/create_member',\n request,\n );\n }\n}\n"]}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=sneat-contactus-services.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sneat-contactus-services.js","sourceRoot":"","sources":["../../../../../libs/contactus/services/src/sneat-contactus-services.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,SAAS,CAAC","sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"]}
package/index.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './lib';
@@ -0,0 +1,15 @@
1
+ import { IIdAndDbo, ISpaceRef } from '@sneat/core';
2
+ import { IContactGroupDbo } from '@sneat/contactus-core';
3
+ import { Observable } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ export declare const defaultFamilyContactGroupDTOs: readonly IIdAndDbo<IContactGroupDbo>[];
6
+ export declare const defaultFamilyContactGroups: readonly IIdAndDbo<IContactGroupDbo>[];
7
+ export declare class ContactGroupService {
8
+ private readonly spaceItemService;
9
+ constructor();
10
+ getContactGroups(): Observable<readonly IIdAndDbo<IContactGroupDbo>[]>;
11
+ getContactGroupByID(id: string, space: ISpaceRef): Observable<IIdAndDbo<IContactGroupDbo>>;
12
+ watchMemberGroupsBySpace(space: ISpaceRef, status?: 'active' | 'archived'): Observable<IIdAndDbo<IContactGroupDbo>[]>;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<ContactGroupService, never>;
14
+ static ɵprov: i0.ɵɵInjectableDeclaration<ContactGroupService>;
15
+ }
@@ -0,0 +1,16 @@
1
+ import { ContactRole } from '@sneat/contactus-core';
2
+ import { ISpaceContext } from '@sneat/space-models';
3
+ import * as i0 from "@angular/core";
4
+ export interface INewContactPageParams {
5
+ group?: string;
6
+ role?: ContactRole;
7
+ asset?: string;
8
+ document?: string;
9
+ }
10
+ export declare class ContactNavService {
11
+ private readonly errorLogger;
12
+ private readonly spaceNavService;
13
+ goNewContactPage(space: ISpaceContext, params?: INewContactPageParams): void;
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<ContactNavService, never>;
15
+ static ɵprov: i0.ɵɵInjectableDeclaration<ContactNavService>;
16
+ }
@@ -0,0 +1,9 @@
1
+ import { IIdAndBrief } from '@sneat/core';
2
+ import { IContactRoleBrief } from '@sneat/contactus-core';
3
+ import { Observable } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ export declare class ContactRoleService {
6
+ getContactRoleByID(id: string): Observable<IIdAndBrief<IContactRoleBrief>>;
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<ContactRoleService, never>;
8
+ static ɵprov: i0.ɵɵInjectableDeclaration<ContactRoleService>;
9
+ }
@@ -0,0 +1,39 @@
1
+ import { IFilter } from '@sneat/api';
2
+ import { IIdAndBriefAndOptionalDbo, ISpaceRef } from '@sneat/core';
3
+ import { ContactRole, IContactBrief, IContactDbo, MemberRole, IContactContext, ICreateContactRequest, IContactWithDboAndSpace } from '@sneat/contactus-core';
4
+ import { ISpaceContext, ISpaceItemWithOptionalBriefAndOptionalDbo } from '@sneat/space-models';
5
+ import { ModuleSpaceItemService } from '@sneat/space-services';
6
+ import { ContactusSpaceService } from './contactus-space.service';
7
+ import { Observable } from 'rxjs';
8
+ import { IAddContactCommChannelRequest, IContactCommChannelRequest, IContactRequest, IContactRequestWithOptionalMessage, ISetContactsStatusRequest, IUpdateContactCommChannelRequest, IUpdateContactRequest } from './dto';
9
+ import * as i0 from "@angular/core";
10
+ export interface IChangeMemberRoleRequest {
11
+ readonly spaceID: string;
12
+ readonly contactID: string;
13
+ readonly role: MemberRole;
14
+ }
15
+ export declare class ContactService extends ModuleSpaceItemService<IContactBrief, IContactDbo> {
16
+ protected contactusSpaceService: ContactusSpaceService;
17
+ private readonly userService;
18
+ constructor();
19
+ createContact(spaceRef: ISpaceRef, request: ICreateContactRequest, endpoint?: string): Observable<IContactWithDboAndSpace>;
20
+ deleteContact(request: IContactRequest): Observable<void>;
21
+ updateContact(request: IUpdateContactRequest): Observable<void>;
22
+ addContactCommChannel(request: IAddContactCommChannelRequest): Observable<void>;
23
+ updateContactCommChannel(request: IUpdateContactCommChannelRequest): Observable<void>;
24
+ deleteContactCommChannel(request: IContactCommChannelRequest): Observable<void>;
25
+ setContactsStatus(request: ISetContactsStatusRequest): Observable<void>;
26
+ watchContactsWithRole(space: ISpaceContext, role: string, status?: 'active' | 'archived', filter?: readonly IFilter[]): Observable<IIdAndBriefAndOptionalDbo<IContactBrief, IContactDbo>[]>;
27
+ watchSpaceContacts(space: ISpaceContext, status?: 'active' | 'archived', filter?: readonly IFilter[]): Observable<IIdAndBriefAndOptionalDbo<IContactBrief, IContactDbo>[]>;
28
+ watchContactById(space: ISpaceContext, contactID: string): Observable<ISpaceItemWithOptionalBriefAndOptionalDbo<IContactBrief, IContactDbo>>;
29
+ watchContactsByRole(space: ISpaceContext, filter?: IContactsFilter): Observable<IContactContext[]>;
30
+ watchChildContacts(space: ISpaceContext, id: string, filter?: IContactsFilter): Observable<IContactContext[]>;
31
+ changeContactRole(request: IChangeMemberRoleRequest): Observable<void>;
32
+ removeSpaceMember(request: IContactRequestWithOptionalMessage): Observable<ISpaceContext>;
33
+ static ɵfac: i0.ɵɵFactoryDeclaration<ContactService, never>;
34
+ static ɵprov: i0.ɵɵInjectableDeclaration<ContactService>;
35
+ }
36
+ export interface IContactsFilter {
37
+ status?: string;
38
+ role?: ContactRole;
39
+ }
@@ -0,0 +1,10 @@
1
+ import { IContactContext } from '@sneat/contactus-core';
2
+ import { ISpaceContext } from '@sneat/space-models';
3
+ import * as i0 from "@angular/core";
4
+ export declare class ContactusNavService {
5
+ private readonly spaceNavService;
6
+ navigateToAddMember: (space: ISpaceContext) => Promise<boolean>;
7
+ navigateToMember(memberContext: IContactContext): void;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<ContactusNavService, never>;
9
+ static ɵprov: i0.ɵɵInjectableDeclaration<ContactusNavService>;
10
+ }
@@ -0,0 +1,6 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class ContactusServicesModule {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<ContactusServicesModule, never>;
4
+ static ɵmod: i0.ɵɵNgModuleDeclaration<ContactusServicesModule, never, never, never>;
5
+ static ɵinj: i0.ɵɵInjectorDeclaration<ContactusServicesModule>;
6
+ }
@@ -0,0 +1,16 @@
1
+ import { IContactusSpaceDboAndID } from '@sneat/contactus-core';
2
+ import { Observable } from 'rxjs';
3
+ export declare class ContactusSpaceContextService {
4
+ private readonly destroyed$;
5
+ private readonly spaceID$;
6
+ private readonly contactusSpaceContext;
7
+ readonly contactusSpaceContext$: Observable<IContactusSpaceDboAndID | undefined>;
8
+ private spaceID?;
9
+ private spaceModuleRecordSub?;
10
+ private readonly errorLogger;
11
+ private readonly userService;
12
+ private readonly contactusSpaceService;
13
+ constructor(destroyed$: Observable<void>, spaceID$: Observable<string | undefined>);
14
+ private readonly subscribeForContactusSpaceChanges;
15
+ private readonly onContactusSpaceChanged;
16
+ }
@@ -0,0 +1,9 @@
1
+ import { IContactBrief, IContactusSpaceDbo } from '@sneat/contactus-core';
2
+ import { SpaceModuleService } from '@sneat/space-services';
3
+ import * as i0 from "@angular/core";
4
+ export declare class ContactusSpaceService extends SpaceModuleService<IContactusSpaceDbo> {
5
+ constructor();
6
+ readonly watchContactBriefs: (spaceID: string) => import("rxjs").Observable<import("@sneat/core").IIdAndBrief<IContactBrief>[]>;
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<ContactusSpaceService, never>;
8
+ static ɵprov: i0.ɵɵInjectableDeclaration<ContactusSpaceService>;
9
+ }
@@ -0,0 +1,41 @@
1
+ import { IPersonNames } from '@sneat/auth-models';
2
+ import { ContactCommChannelType } from '@sneat/contactus-core';
3
+ import { IAddress } from '@sneat/contactus-core';
4
+ import { AgeGroupID, Gender } from '@sneat/core';
5
+ import { ISpaceRequest } from '@sneat/space-models';
6
+ export interface IContactRequest extends ISpaceRequest {
7
+ readonly contactID: string;
8
+ }
9
+ export declare function validateContactRequest(request: IContactRequest): void;
10
+ export interface IContactRequestWithOptionalMessage extends IContactRequest {
11
+ readonly message?: string;
12
+ }
13
+ export interface IUpdateContactRequest extends IContactRequest {
14
+ readonly address?: IAddress;
15
+ readonly ageGroup?: AgeGroupID;
16
+ readonly gender?: Gender;
17
+ readonly names?: IPersonNames;
18
+ readonly vatNumber?: string;
19
+ readonly dateOfBirth?: string;
20
+ }
21
+ export declare function validateUpdateContactRequest(request: IUpdateContactRequest): void;
22
+ export interface ISetContactsStatusRequest extends ISpaceRequest {
23
+ readonly status: 'archived' | 'active';
24
+ readonly contactIDs: readonly string[];
25
+ }
26
+ export interface IContactCommChannelRequest extends IContactRequest {
27
+ readonly channelType: ContactCommChannelType;
28
+ readonly channelID: string;
29
+ }
30
+ export interface IUpdateContactCommChannelTypeRequest extends IContactCommChannelRequest {
31
+ readonly title: 'private' | 'work' | string;
32
+ }
33
+ export interface IAddContactCommChannelRequest extends IContactCommChannelRequest {
34
+ readonly type: 'private' | 'work';
35
+ readonly note?: string;
36
+ }
37
+ export interface IUpdateContactCommChannelRequest extends IContactCommChannelRequest {
38
+ readonly newChannelID?: string;
39
+ readonly type?: 'private' | 'work';
40
+ }
41
+ export declare function validateSetContactsRequest(request: ISetContactsStatusRequest): void;
@@ -0,0 +1 @@
1
+ export * from './contact';
package/lib/index.d.ts ADDED
@@ -0,0 +1,12 @@
1
+ export * from './dto';
2
+ export * from './contact-group-service';
3
+ export * from './contact-nav-service';
4
+ export * from './contact-service';
5
+ export * from './contactus-space.service';
6
+ export * from './contactus-space-context.service';
7
+ export * from './contactus-services.module';
8
+ export * from './member.service';
9
+ export * from './member-group.service';
10
+ export * from './invite.service';
11
+ export * from './contactus-nav.service';
12
+ export { ContactRoleService } from './contact-role.service';
@@ -0,0 +1,20 @@
1
+ import { ICreatePersonalInviteRequest, ICreatePersonalInviteResponse, IJoinSpaceInfoResponse } from '@sneat/contactus-core';
2
+ import { IAcceptInviteResponse, IRejectPersonalInviteRequest } from '@sneat/space-models';
3
+ import { Observable } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ export declare class InviteService {
6
+ private readonly errorLogger;
7
+ private readonly sneatAuthService;
8
+ private readonly sneatApiService;
9
+ private readonly afAuth;
10
+ private readonly randomService;
11
+ createInviteForMember(request: ICreatePersonalInviteRequest): Observable<ICreatePersonalInviteResponse>;
12
+ getInviteLinkForMember(request: ICreatePersonalInviteRequest): Observable<ICreatePersonalInviteResponse>;
13
+ getSpaceJoinInfo(inviteID: string, pin: string): Observable<IJoinSpaceInfoResponse>;
14
+ rejectPersonalInvite(request: IRejectPersonalInviteRequest): Observable<void>;
15
+ acceptInviteByAuthenticatedUser(inviteInfo: IJoinSpaceInfoResponse): Observable<IAcceptInviteResponse>;
16
+ acceptInviteByUnauthenticatedUser(inviteInfo: IJoinSpaceInfoResponse): Observable<IAcceptInviteResponse>;
17
+ private acceptEmailInviteByUnauthenticatedUser;
18
+ static ɵfac: i0.ɵɵFactoryDeclaration<InviteService, never>;
19
+ static ɵprov: i0.ɵɵInjectableDeclaration<InviteService>;
20
+ }
@@ -0,0 +1,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class MemberGroupService {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<MemberGroupService, never>;
4
+ static ɵprov: i0.ɵɵInjectableDeclaration<MemberGroupService>;
5
+ }
@@ -0,0 +1,10 @@
1
+ import { IMemberBrief, IAcceptPersonalInviteRequest, IAddSpaceMemberResponse, ICreateSpaceMemberRequest } from '@sneat/contactus-core';
2
+ import { ContactService } from './contact-service';
3
+ import { Observable } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ export declare class MemberService extends ContactService {
6
+ acceptPersonalInvite(request: IAcceptPersonalInviteRequest, firebaseToken: string): Observable<IMemberBrief>;
7
+ createMember(request: ICreateSpaceMemberRequest): Observable<IAddSpaceMemberResponse>;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<MemberService, never>;
9
+ static ɵprov: i0.ɵɵInjectableDeclaration<MemberService>;
10
+ }
package/package.json ADDED
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "@sneat/contactus-services",
3
+ "version": "0.2.0",
4
+ "publishConfig": {
5
+ "access": "public"
6
+ },
7
+ "peerDependencies": {
8
+ "@angular/common": ">=21.0.0",
9
+ "@angular/core": ">=21.0.0"
10
+ },
11
+ "dependencies": {
12
+ "tslib": "2.8.1"
13
+ },
14
+ "module": "esm2022/sneat-contactus-services.js",
15
+ "typings": "sneat-contactus-services.d.ts",
16
+ "exports": {
17
+ "./package.json": {
18
+ "default": "./package.json"
19
+ },
20
+ ".": {
21
+ "types": "./sneat-contactus-services.d.ts",
22
+ "default": "./esm2022/sneat-contactus-services.js"
23
+ }
24
+ },
25
+ "sideEffects": false
26
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@sneat/contactus-services" />
5
+ export * from './index';