@sneat/extension-splitus 0.2.1 → 0.2.2
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.
|
@@ -1,85 +1,26 @@
|
|
|
1
|
-
import { HttpParams } from '@angular/common/http';
|
|
2
1
|
import * as i0 from '@angular/core';
|
|
3
2
|
import { inject, Injectable } from '@angular/core';
|
|
4
3
|
import { SneatApiService } from '@sneat/api';
|
|
4
|
+
import { parseCreateSplitusBillV1Response, parseGetSplitusBillV1Response, parseListSplitusBillsV1Response, SPLITUS_BILL_SERVICE_V1 } from '@sneat/extension-splitus-contract';
|
|
5
5
|
import { map } from 'rxjs';
|
|
6
|
-
import { SPLITUS_SERVICE } from '@sneat/extension-splitus-contract';
|
|
7
6
|
|
|
8
|
-
|
|
9
|
-
const centsToAmount = (cents) => cents / 100;
|
|
7
|
+
const API_ROOT = 'api4splitus/bills';
|
|
10
8
|
class SplitusService {
|
|
11
9
|
sneatApiService = inject(SneatApiService);
|
|
12
|
-
|
|
13
|
-
createSplit(request) {
|
|
14
|
-
const body = {
|
|
15
|
-
spaceID: request.spaceID,
|
|
16
|
-
title: request.title,
|
|
17
|
-
currency: request.currency,
|
|
18
|
-
amount: request.amount,
|
|
19
|
-
splitMode: request.splitMode,
|
|
20
|
-
participantContactIDs: request.participantContactIDs,
|
|
21
|
-
shares: request.shares,
|
|
22
|
-
};
|
|
10
|
+
createBill(request) {
|
|
23
11
|
return this.sneatApiService
|
|
24
|
-
.post(
|
|
25
|
-
.pipe(map(
|
|
12
|
+
.post(`${API_ROOT}/create`, request)
|
|
13
|
+
.pipe(map(parseCreateSplitusBillV1Response));
|
|
26
14
|
}
|
|
27
|
-
|
|
28
|
-
getSplit(spaceID, id) {
|
|
29
|
-
const params = new HttpParams().set('spaceID', spaceID).set('id', id);
|
|
15
|
+
getBill(request) {
|
|
30
16
|
return this.sneatApiService
|
|
31
|
-
.
|
|
32
|
-
.pipe(map(
|
|
17
|
+
.post(`${API_ROOT}/get`, request)
|
|
18
|
+
.pipe(map(parseGetSplitusBillV1Response));
|
|
33
19
|
}
|
|
34
|
-
|
|
35
|
-
getSplits(spaceID) {
|
|
36
|
-
const params = new HttpParams().set('spaceID', spaceID);
|
|
20
|
+
listBills(request) {
|
|
37
21
|
return this.sneatApiService
|
|
38
|
-
.
|
|
39
|
-
.pipe(map((
|
|
40
|
-
}
|
|
41
|
-
mapCreateSplitResponse(dto) {
|
|
42
|
-
return {
|
|
43
|
-
id: dto.id,
|
|
44
|
-
transfers: (dto.transfers ?? []).map((t) => ({
|
|
45
|
-
id: t.id,
|
|
46
|
-
contactID: t.contactID,
|
|
47
|
-
amount: centsToAmount(t.amount),
|
|
48
|
-
})),
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
mapSplit(dto) {
|
|
52
|
-
return {
|
|
53
|
-
id: dto.id,
|
|
54
|
-
title: dto.title,
|
|
55
|
-
currency: dto.currency,
|
|
56
|
-
amount: centsToAmount(dto.amount),
|
|
57
|
-
status: dto.status,
|
|
58
|
-
participants: (dto.participants ?? []).map((p) => this.mapParticipant(p)),
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
// Settled/outstanding is read verbatim off the API response — Splitus
|
|
62
|
-
// never computes or caches settled state on the client (see
|
|
63
|
-
// handleGetSplit's Debtus read-through in api_get_splits.go).
|
|
64
|
-
mapParticipant(dto) {
|
|
65
|
-
return {
|
|
66
|
-
contactID: dto.contactID,
|
|
67
|
-
userID: dto.userID,
|
|
68
|
-
name: dto.name,
|
|
69
|
-
share: centsToAmount(dto.share),
|
|
70
|
-
isPayer: dto.isPayer,
|
|
71
|
-
status: dto.status,
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
mapSplitListItem(dto) {
|
|
75
|
-
return {
|
|
76
|
-
id: dto.id,
|
|
77
|
-
title: dto.title,
|
|
78
|
-
amount: centsToAmount(dto.amount),
|
|
79
|
-
currency: dto.currency,
|
|
80
|
-
status: dto.status,
|
|
81
|
-
membersCount: dto.membersCount,
|
|
82
|
-
};
|
|
22
|
+
.post(`${API_ROOT}/list`, request)
|
|
23
|
+
.pipe(map((response) => parseListSplitusBillsV1Response(response, request.pageSize)));
|
|
83
24
|
}
|
|
84
25
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: SplitusService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
85
26
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: SplitusService });
|
|
@@ -88,11 +29,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImpor
|
|
|
88
29
|
type: Injectable
|
|
89
30
|
}] });
|
|
90
31
|
|
|
91
|
-
// Registers the concrete SplitusService and binds it to the
|
|
92
|
-
//
|
|
32
|
+
// Registers the concrete SplitusService and binds it to the public bill contract
|
|
33
|
+
// token. Wired in at app
|
|
93
34
|
// bootstrap (consumers do not import this factory directly).
|
|
94
35
|
function provideSplitus() {
|
|
95
|
-
return [
|
|
36
|
+
return [
|
|
37
|
+
SplitusService,
|
|
38
|
+
{ provide: SPLITUS_BILL_SERVICE_V1, useExisting: SplitusService },
|
|
39
|
+
];
|
|
96
40
|
}
|
|
97
41
|
|
|
98
42
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sneat-extension-splitus.mjs","sources":["../../../../../../libs/extensions/splitus/runtime/src/lib/services/splitus.service.ts","../../../../../../libs/extensions/splitus/runtime/src/lib/provide-splitus.ts","../../../../../../libs/extensions/splitus/runtime/src/sneat-extension-splitus.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"sneat-extension-splitus.mjs","sources":["../../../../../../libs/extensions/splitus/runtime/src/lib/services/splitus.service.ts","../../../../../../libs/extensions/splitus/runtime/src/lib/provide-splitus.ts","../../../../../../libs/extensions/splitus/runtime/src/sneat-extension-splitus.ts"],"sourcesContent":["import { Injectable, inject } from '@angular/core';\nimport { SneatApiService } from '@sneat/api';\nimport {\n ICreateSplitusBillV1Request,\n ICreateSplitusBillV1Response,\n IGetSplitusBillV1Request,\n IGetSplitusBillV1Response,\n IListSplitusBillsV1Request,\n IListSplitusBillsV1Response,\n ISplitusBillServiceV1,\n parseCreateSplitusBillV1Response,\n parseGetSplitusBillV1Response,\n parseListSplitusBillsV1Response,\n} from '@sneat/extension-splitus-contract';\nimport { Observable, map } from 'rxjs';\n\nconst API_ROOT = 'api4splitus/bills';\n\n@Injectable()\nexport class SplitusService implements ISplitusBillServiceV1 {\n private readonly sneatApiService = inject(SneatApiService);\n\n public createBill(\n request: ICreateSplitusBillV1Request,\n ): Observable<ICreateSplitusBillV1Response> {\n return this.sneatApiService\n .post<unknown>(`${API_ROOT}/create`, request)\n .pipe(map(parseCreateSplitusBillV1Response));\n }\n\n public getBill(\n request: IGetSplitusBillV1Request,\n ): Observable<IGetSplitusBillV1Response> {\n return this.sneatApiService\n .post<unknown>(`${API_ROOT}/get`, request)\n .pipe(map(parseGetSplitusBillV1Response));\n }\n\n public listBills(\n request: IListSplitusBillsV1Request,\n ): Observable<IListSplitusBillsV1Response> {\n return this.sneatApiService\n .post<unknown>(`${API_ROOT}/list`, request)\n .pipe(\n map((response) =>\n parseListSplitusBillsV1Response(response, request.pageSize),\n ),\n );\n }\n}\n","import { Provider } from '@angular/core';\nimport { SPLITUS_BILL_SERVICE_V1 } from '@sneat/extension-splitus-contract';\nimport { SplitusService } from './services';\n\n// Registers the concrete SplitusService and binds it to the public bill contract\n// token. Wired in at app\n// bootstrap (consumers do not import this factory directly).\nexport function provideSplitus(): Provider[] {\n return [\n SplitusService,\n { provide: SPLITUS_BILL_SERVICE_V1, useExisting: SplitusService },\n ];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAgBA,MAAM,QAAQ,GAAG,mBAAmB;MAGvB,cAAc,CAAA;AACR,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AAEnD,IAAA,UAAU,CACf,OAAoC,EAAA;QAEpC,OAAO,IAAI,CAAC;AACT,aAAA,IAAI,CAAU,CAAA,EAAG,QAAQ,CAAA,OAAA,CAAS,EAAE,OAAO;AAC3C,aAAA,IAAI,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAChD;AAEO,IAAA,OAAO,CACZ,OAAiC,EAAA;QAEjC,OAAO,IAAI,CAAC;AACT,aAAA,IAAI,CAAU,CAAA,EAAG,QAAQ,CAAA,IAAA,CAAM,EAAE,OAAO;AACxC,aAAA,IAAI,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC7C;AAEO,IAAA,SAAS,CACd,OAAmC,EAAA;QAEnC,OAAO,IAAI,CAAC;AACT,aAAA,IAAI,CAAU,CAAA,EAAG,QAAQ,CAAA,KAAA,CAAO,EAAE,OAAO;AACzC,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,QAAQ,KACX,+BAA+B,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,CAC5D,CACF;IACL;uGA7BW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAd,cAAc,EAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B;;;ACdD;AACA;AACA;SACgB,cAAc,GAAA;IAC5B,OAAO;QACL,cAAc;AACd,QAAA,EAAE,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,cAAc,EAAE;KAClE;AACH;;ACZA;;AAEG;;;;"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sneat/extension-splitus",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/core": ">=22.0.0 <23.0.0",
|
|
6
6
|
"rxjs": "^7.0.0",
|
|
7
7
|
"@sneat/api": "^0.27.0",
|
|
8
|
-
"@sneat/extension-splitus-contract": "
|
|
8
|
+
"@sneat/extension-splitus-contract": "0.2.2"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"tslib": "^2.3.0"
|
|
@@ -1,20 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ISplitusBillServiceV1, ICreateSplitusBillV1Request, ICreateSplitusBillV1Response, IGetSplitusBillV1Request, IGetSplitusBillV1Response, IListSplitusBillsV1Request, IListSplitusBillsV1Response } from '@sneat/extension-splitus-contract';
|
|
2
2
|
import { Observable } from 'rxjs';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
4
|
import { Provider } from '@angular/core';
|
|
5
5
|
|
|
6
|
-
declare class SplitusService implements
|
|
6
|
+
declare class SplitusService implements ISplitusBillServiceV1 {
|
|
7
7
|
private readonly sneatApiService;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
getSplit(spaceID: string, id: string): Observable<ISplit>;
|
|
12
|
-
/** REAL: GET /api4splitus/splits?spaceID= */
|
|
13
|
-
getSplits(spaceID: string): Observable<ISplitListItem[]>;
|
|
14
|
-
private mapCreateSplitResponse;
|
|
15
|
-
private mapSplit;
|
|
16
|
-
private mapParticipant;
|
|
17
|
-
private mapSplitListItem;
|
|
8
|
+
createBill(request: ICreateSplitusBillV1Request): Observable<ICreateSplitusBillV1Response>;
|
|
9
|
+
getBill(request: IGetSplitusBillV1Request): Observable<IGetSplitusBillV1Response>;
|
|
10
|
+
listBills(request: IListSplitusBillsV1Request): Observable<IListSplitusBillsV1Response>;
|
|
18
11
|
static ɵfac: i0.ɵɵFactoryDeclaration<SplitusService, never>;
|
|
19
12
|
static ɵprov: i0.ɵɵInjectableDeclaration<SplitusService>;
|
|
20
13
|
}
|