@etsoo/appscript 1.5.64 → 1.5.65
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/.github/workflows/main.yml +6 -5
- package/__tests__/app/CoreApp.ts +141 -143
- package/__tests__/app/Culture.ts +23 -23
- package/__tests__/app/TestApp.ts +107 -105
- package/__tests__/business/BusinessUtils.ts +37 -37
- package/__tests__/result/ActionResult.ts +14 -14
- package/__tests__/tsconfig.json +16 -16
- package/lib/cjs/address/AddressAutocomplete.d.ts +1 -1
- package/lib/cjs/address/AddressPlace.d.ts +3 -3
- package/lib/cjs/address/AddressPlaceBase.d.ts +1 -1
- package/lib/cjs/address/AddressRegion.d.ts +2 -2
- package/lib/cjs/address/AddressRegion.js +12 -12
- package/lib/cjs/address/AddressUtils.d.ts +1 -1
- package/lib/cjs/api/AuthApi.d.ts +14 -14
- package/lib/cjs/api/AuthApi.js +17 -17
- package/lib/cjs/api/BaseApi.d.ts +1 -1
- package/lib/cjs/api/EntityApi.d.ts +8 -8
- package/lib/cjs/api/EntityApi.js +4 -4
- package/lib/cjs/api/dto/IdLabelDto.d.ts +1 -1
- package/lib/cjs/api/dto/IdLabelPrimaryDto.d.ts +1 -1
- package/lib/cjs/api/dto/ResultPayload.d.ts +2 -2
- package/lib/cjs/api/rq/AuthRequest.d.ts +1 -1
- package/lib/cjs/api/rq/LoginRQ.d.ts +2 -2
- package/lib/cjs/api/rq/MergeRQ.d.ts +1 -1
- package/lib/cjs/api/rq/QueryRQ.d.ts +2 -2
- package/lib/cjs/api/rq/StatusQueryRQ.d.ts +3 -3
- package/lib/cjs/api/rq/UpdateModel.d.ts +2 -2
- package/lib/cjs/api/rq/UpdateStatusRQ.d.ts +2 -2
- package/lib/cjs/app/AppSettings.d.ts +3 -3
- package/lib/cjs/bridges/FlutterHost.d.ts +2 -2
- package/lib/cjs/bridges/FlutterHost.js +11 -11
- package/lib/cjs/business/BusinessTax.js +6 -6
- package/lib/cjs/business/BusinessUtils.d.ts +2 -2
- package/lib/cjs/business/BusinessUtils.js +5 -5
- package/lib/cjs/business/Currency.d.ts +1 -1
- package/lib/cjs/business/Currency.js +10 -10
- package/lib/cjs/business/ProductUnit.d.ts +1 -1
- package/lib/cjs/business/ShoppingCart.d.ts +9 -9
- package/lib/cjs/business/ShoppingCart.js +11 -11
- package/lib/cjs/custom/CustomField.d.ts +1 -1
- package/lib/cjs/custom/CustomFieldData.d.ts +2 -2
- package/lib/cjs/i18n/Culture.d.ts +31 -0
- package/lib/cjs/i18n/Culture.js +51 -0
- package/lib/cjs/index.d.ts +1 -4
- package/lib/cjs/index.js +1 -4
- package/lib/cjs/result/ActionResult.d.ts +1 -1
- package/lib/cjs/result/ActionResultError.d.ts +1 -1
- package/lib/cjs/result/ActionResultError.js +3 -3
- package/lib/cjs/result/InitCallResult.d.ts +1 -1
- package/lib/cjs/state/Culture.d.ts +2 -2
- package/lib/cjs/state/User.d.ts +1 -1
- package/lib/mjs/address/AddressAutocomplete.d.ts +1 -1
- package/lib/mjs/address/AddressPlace.d.ts +3 -3
- package/lib/mjs/address/AddressPlaceBase.d.ts +1 -1
- package/lib/mjs/address/AddressRegion.d.ts +2 -2
- package/lib/mjs/address/AddressRegion.js +13 -13
- package/lib/mjs/address/AddressUtils.d.ts +1 -1
- package/lib/mjs/address/AddressUtils.js +1 -1
- package/lib/mjs/api/AuthApi.d.ts +14 -14
- package/lib/mjs/api/AuthApi.js +19 -19
- package/lib/mjs/api/BaseApi.d.ts +1 -1
- package/lib/mjs/api/EntityApi.d.ts +8 -8
- package/lib/mjs/api/EntityApi.js +5 -5
- package/lib/mjs/api/dto/IdLabelDto.d.ts +1 -1
- package/lib/mjs/api/dto/IdLabelPrimaryDto.d.ts +1 -1
- package/lib/mjs/api/dto/ResultPayload.d.ts +2 -2
- package/lib/mjs/api/rq/AuthRequest.d.ts +1 -1
- package/lib/mjs/api/rq/LoginRQ.d.ts +2 -2
- package/lib/mjs/api/rq/MergeRQ.d.ts +1 -1
- package/lib/mjs/api/rq/QueryRQ.d.ts +2 -2
- package/lib/mjs/api/rq/StatusQueryRQ.d.ts +3 -3
- package/lib/mjs/api/rq/UpdateModel.d.ts +2 -2
- package/lib/mjs/api/rq/UpdateStatusRQ.d.ts +2 -2
- package/lib/mjs/app/AppSettings.d.ts +3 -3
- package/lib/mjs/bridges/FlutterHost.d.ts +2 -2
- package/lib/mjs/bridges/FlutterHost.js +13 -13
- package/lib/mjs/business/BusinessTax.js +6 -6
- package/lib/mjs/business/BusinessUtils.d.ts +2 -2
- package/lib/mjs/business/BusinessUtils.js +5 -5
- package/lib/mjs/business/Currency.d.ts +1 -1
- package/lib/mjs/business/Currency.js +10 -10
- package/lib/mjs/business/ProductUnit.d.ts +1 -1
- package/lib/mjs/business/ProductUnit.js +1 -1
- package/lib/mjs/business/ShoppingCart.d.ts +9 -9
- package/lib/mjs/business/ShoppingCart.js +12 -12
- package/lib/mjs/custom/CustomField.d.ts +1 -1
- package/lib/mjs/custom/CustomFieldData.d.ts +2 -2
- package/lib/mjs/i18n/Culture.d.ts +31 -0
- package/lib/mjs/i18n/Culture.js +48 -0
- package/lib/mjs/index.d.ts +1 -4
- package/lib/mjs/index.js +1 -4
- package/lib/mjs/result/ActionResult.d.ts +1 -1
- package/lib/mjs/result/ActionResult.js +1 -1
- package/lib/mjs/result/ActionResultError.d.ts +1 -1
- package/lib/mjs/result/ActionResultError.js +3 -3
- package/lib/mjs/result/InitCallResult.d.ts +1 -1
- package/lib/mjs/state/Culture.d.ts +2 -2
- package/lib/mjs/state/User.d.ts +1 -1
- package/package.json +1 -1
- package/src/address/AddressAutocomplete.ts +16 -16
- package/src/address/AddressCity.ts +12 -12
- package/src/address/AddressContinent.ts +35 -35
- package/src/address/AddressDistrict.ts +12 -12
- package/src/address/AddressLocation.ts +8 -8
- package/src/address/AddressPlace.ts +23 -23
- package/src/address/AddressPlaceBase.ts +31 -31
- package/src/address/AddressRegion.ts +286 -286
- package/src/address/AddressState.ts +12 -12
- package/src/address/AddressUtils.ts +27 -27
- package/src/api/AuthApi.ts +194 -194
- package/src/api/BaseApi.ts +13 -13
- package/src/api/EntityApi.ts +181 -194
- package/src/api/dto/AntiforgeryRequestToken.ts +15 -15
- package/src/api/dto/ApiRefreshTokenDto.ts +16 -16
- package/src/api/dto/IdLabelDto.ts +3 -3
- package/src/api/dto/IdLabelPrimaryDto.ts +7 -7
- package/src/api/dto/InitCallDto.ts +12 -12
- package/src/api/dto/ResultPayload.ts +6 -6
- package/src/api/rq/ApiRefreshTokenRQ.ts +8 -8
- package/src/api/rq/AuthRequest.ts +40 -40
- package/src/api/rq/GetLogInUrlRQ.ts +8 -8
- package/src/api/rq/LoginIdRQ.ts +12 -12
- package/src/api/rq/LoginRQ.ts +18 -18
- package/src/api/rq/MergeRQ.ts +13 -13
- package/src/api/rq/QueryPagingData.ts +16 -16
- package/src/api/rq/QueryRQ.ts +22 -22
- package/src/api/rq/RefreshTokenRQ.ts +4 -4
- package/src/api/rq/ResetPasswordRQ.ts +20 -20
- package/src/api/rq/SignoutRQ.ts +8 -8
- package/src/api/rq/StatusQueryRQ.ts +11 -11
- package/src/api/rq/SwitchOrgRQ.ts +8 -8
- package/src/api/rq/TokenRQ.ts +4 -4
- package/src/api/rq/UpdateModel.ts +12 -12
- package/src/api/rq/UpdateStatusRQ.ts +10 -10
- package/src/app/AppSettings.ts +27 -27
- package/src/app/UserRole.ts +44 -44
- package/src/bridges/FlutterHost.ts +92 -97
- package/src/bridges/IBridgeHost.ts +49 -51
- package/src/business/ApiService.ts +25 -25
- package/src/business/BusinessTax.ts +63 -63
- package/src/business/BusinessUtils.ts +75 -75
- package/src/business/CultureItem.ts +43 -43
- package/src/business/Currency.ts +11 -11
- package/src/business/DataPrivacy.ts +35 -35
- package/src/business/EntityStatus.ts +44 -44
- package/src/business/ProductUnit.ts +58 -58
- package/src/business/RepeatOption.ts +50 -50
- package/src/business/ShoppingCart.ts +696 -706
- package/src/custom/CustomField.ts +20 -20
- package/src/custom/CustomFieldData.ts +43 -43
- package/src/def/ListItem.ts +12 -12
- package/src/i18n/Culture.ts +60 -0
- package/src/i18n/en.json +244 -244
- package/src/i18n/zh-Hans.json +244 -244
- package/src/i18n/zh-Hant.json +244 -244
- package/src/index.ts +1 -4
- package/src/result/ActionResult.ts +19 -19
- package/src/result/ActionResultError.ts +30 -30
- package/src/result/InitCallResult.ts +21 -21
- package/src/state/Culture.ts +3 -3
- package/src/state/State.ts +5 -5
- package/src/state/User.ts +92 -92
- package/lib/cjs/i18n/CultureUtils.d.ts +0 -13
- package/lib/cjs/i18n/CultureUtils.js +0 -32
- package/lib/cjs/i18n/en.d.ts +0 -6
- package/lib/cjs/i18n/en.js +0 -12
- package/lib/cjs/i18n/zhHans.d.ts +0 -6
- package/lib/cjs/i18n/zhHans.js +0 -12
- package/lib/cjs/i18n/zhHant.d.ts +0 -6
- package/lib/cjs/i18n/zhHant.js +0 -12
- package/lib/mjs/i18n/CultureUtils.d.ts +0 -13
- package/lib/mjs/i18n/CultureUtils.js +0 -29
- package/lib/mjs/i18n/en.d.ts +0 -6
- package/lib/mjs/i18n/en.js +0 -8
- package/lib/mjs/i18n/zhHans.d.ts +0 -6
- package/lib/mjs/i18n/zhHans.js +0 -8
- package/lib/mjs/i18n/zhHant.d.ts +0 -6
- package/lib/mjs/i18n/zhHant.js +0 -8
- package/src/i18n/CultureUtils.ts +0 -36
- package/src/i18n/en.ts +0 -10
- package/src/i18n/zhHans.ts +0 -10
- package/src/i18n/zhHant.ts +0 -10
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
import { AddressRegion } from
|
|
1
|
+
import { AddressRegion } from "./AddressRegion";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Address utils
|
|
5
5
|
*/
|
|
6
6
|
export namespace AddressUtils {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
// Match with language
|
|
25
|
-
if (detectedLanguage) {
|
|
26
|
-
const region = regions
|
|
27
|
-
.map((id) => AddressRegion.getById(id)!)
|
|
28
|
-
.find((item) => item.languages.includes(detectedLanguage));
|
|
29
|
-
if (region) region;
|
|
30
|
-
}
|
|
7
|
+
/**
|
|
8
|
+
* Get region from regions and detected region and language
|
|
9
|
+
* @param regions Supported regions
|
|
10
|
+
* @param detectedRegion Detected region
|
|
11
|
+
* @param detectedLanguage Detected language
|
|
12
|
+
*/
|
|
13
|
+
export function getRegion(
|
|
14
|
+
regions: string[],
|
|
15
|
+
detectedRegion?: string | null,
|
|
16
|
+
detectedLanguage?: string | null
|
|
17
|
+
): AddressRegion {
|
|
18
|
+
// Exactly match
|
|
19
|
+
if (detectedRegion && regions.includes(detectedRegion)) {
|
|
20
|
+
const region = AddressRegion.getById(detectedRegion);
|
|
21
|
+
if (region) return region;
|
|
22
|
+
}
|
|
31
23
|
|
|
32
|
-
|
|
33
|
-
|
|
24
|
+
// Match with language
|
|
25
|
+
if (detectedLanguage) {
|
|
26
|
+
const region = regions
|
|
27
|
+
.map((id) => AddressRegion.getById(id)!)
|
|
28
|
+
.find((item) => item.languages.includes(detectedLanguage));
|
|
29
|
+
if (region) region;
|
|
34
30
|
}
|
|
31
|
+
|
|
32
|
+
// Default
|
|
33
|
+
return AddressRegion.getById(regions[0])!;
|
|
34
|
+
}
|
|
35
35
|
}
|
package/src/api/AuthApi.ts
CHANGED
|
@@ -1,204 +1,204 @@
|
|
|
1
|
-
import { IApiPayload } from
|
|
2
|
-
import { IUser } from
|
|
3
|
-
import { BaseApi } from
|
|
4
|
-
import { ResultPayload } from
|
|
5
|
-
import { ActionResult, IActionResult } from
|
|
6
|
-
import { RefreshTokenProps, RefreshTokenResult } from
|
|
7
|
-
import { TokenRQ } from
|
|
8
|
-
import { ApiRefreshTokenDto } from
|
|
9
|
-
import { GetLogInUrlRQ } from
|
|
10
|
-
import { LoginRQ } from
|
|
11
|
-
import { LoginIdRQ } from
|
|
12
|
-
import { RefreshTokenRQ } from
|
|
13
|
-
import { ResetPasswordRQ } from
|
|
14
|
-
import { SignoutRQ } from
|
|
15
|
-
import { SwitchOrgRQ } from
|
|
16
|
-
import { AuthRequest } from
|
|
1
|
+
import { IApiPayload } from "@etsoo/restclient";
|
|
2
|
+
import { IUser } from "../state/User";
|
|
3
|
+
import { BaseApi } from "./BaseApi";
|
|
4
|
+
import { ResultPayload } from "./dto/ResultPayload";
|
|
5
|
+
import { ActionResult, IActionResult } from "@etsoo/shared";
|
|
6
|
+
import { RefreshTokenProps, RefreshTokenResult } from "../app/IApp";
|
|
7
|
+
import { TokenRQ } from "./rq/TokenRQ";
|
|
8
|
+
import { ApiRefreshTokenDto } from "./dto/ApiRefreshTokenDto";
|
|
9
|
+
import { GetLogInUrlRQ } from "./rq/GetLogInUrlRQ";
|
|
10
|
+
import { LoginRQ } from "./rq/LoginRQ";
|
|
11
|
+
import { LoginIdRQ } from "./rq/LoginIdRQ";
|
|
12
|
+
import { RefreshTokenRQ } from "./rq/RefreshTokenRQ";
|
|
13
|
+
import { ResetPasswordRQ } from "./rq/ResetPasswordRQ";
|
|
14
|
+
import { SignoutRQ } from "./rq/SignoutRQ";
|
|
15
|
+
import { SwitchOrgRQ } from "./rq/SwitchOrgRQ";
|
|
16
|
+
import { AuthRequest } from "./rq/AuthRequest";
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* Authentication API
|
|
20
20
|
*/
|
|
21
21
|
export class AuthApi extends BaseApi {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
22
|
+
/**
|
|
23
|
+
* Header token field name
|
|
24
|
+
*/
|
|
25
|
+
static HeaderTokenField = "Etsoo-Refresh-Token";
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* API refresh token
|
|
29
|
+
* @param rq Request data
|
|
30
|
+
* @param payload Payload
|
|
31
|
+
* @returns Result
|
|
32
|
+
*/
|
|
33
|
+
apiRefreshToken(rq: TokenRQ, payload?: IApiPayload<ApiRefreshTokenDto>) {
|
|
34
|
+
return this.api.put("Auth/ApiRefreshToken", rq, payload);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Authorization request
|
|
39
|
+
* @param auth Authorization request data
|
|
40
|
+
* @param payload Payload
|
|
41
|
+
*/
|
|
42
|
+
authRequest(auth: AuthRequest, payload?: IApiPayload<string>) {
|
|
43
|
+
return this.api.post("Auth/AuthRequest", auth, payload);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Exchange token
|
|
48
|
+
* @param rq Request data
|
|
49
|
+
* @param payload Payload
|
|
50
|
+
* @returns Result
|
|
51
|
+
*/
|
|
52
|
+
exchangeToken(rq: TokenRQ, payload?: IApiPayload<ApiRefreshTokenDto>) {
|
|
53
|
+
return this.api.put("Auth/ExchangeToken", rq, payload);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Get log in url
|
|
58
|
+
* @param rq Request data
|
|
59
|
+
* @param payload Payload
|
|
60
|
+
* @returns Result
|
|
61
|
+
*/
|
|
62
|
+
getLogInUrl(rq: GetLogInUrlRQ, payload?: IApiPayload<string>) {
|
|
63
|
+
return this.api.get("Auth/GetLogInUrl", rq, payload);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Login
|
|
68
|
+
* @param rq Request data
|
|
69
|
+
* @param payload Payload
|
|
70
|
+
* @param tokenKey Refresh token key
|
|
71
|
+
* @returns Result
|
|
72
|
+
*/
|
|
73
|
+
protected async loginBase<T extends IUser>(
|
|
74
|
+
rq: LoginRQ,
|
|
75
|
+
payload?: IApiPayload<IActionResult<T>>,
|
|
76
|
+
tokenKey?: string
|
|
77
|
+
): Promise<[IActionResult<T> | undefined, string | null]> {
|
|
78
|
+
// Default values
|
|
79
|
+
payload ??= {};
|
|
80
|
+
tokenKey ??= AuthApi.HeaderTokenField;
|
|
81
|
+
|
|
82
|
+
// Call the API
|
|
83
|
+
const result = await this.api.post("Auth/Login", rq, payload);
|
|
84
|
+
|
|
85
|
+
// Get the refresh token
|
|
86
|
+
const refreshToken = result?.ok
|
|
87
|
+
? this.app.getResponseToken(payload.response, tokenKey)
|
|
88
|
+
: null;
|
|
89
|
+
|
|
90
|
+
// Return the result
|
|
91
|
+
return [result, refreshToken];
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Login id check
|
|
96
|
+
* @param id Check id
|
|
97
|
+
* @param payload Payload
|
|
98
|
+
* @returns Result
|
|
99
|
+
*/
|
|
100
|
+
loginId(id: string, payload?: ResultPayload) {
|
|
101
|
+
const { deviceId, region } = this.app;
|
|
102
|
+
id = this.app.encrypt(id);
|
|
103
|
+
const rq: LoginIdRQ = {
|
|
104
|
+
id,
|
|
105
|
+
deviceId,
|
|
106
|
+
region
|
|
107
|
+
};
|
|
108
|
+
return this.api.post("Auth/LoginId", rq, payload);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Refresh token
|
|
113
|
+
* @param props Props
|
|
114
|
+
* @returns Result
|
|
115
|
+
*/
|
|
116
|
+
async refreshToken<R>(
|
|
117
|
+
props: RefreshTokenProps
|
|
118
|
+
): Promise<RefreshTokenResult<R>> {
|
|
119
|
+
// Destruct
|
|
120
|
+
const {
|
|
121
|
+
api = "Auth/RefreshToken",
|
|
122
|
+
showLoading = false,
|
|
123
|
+
token,
|
|
124
|
+
tokenField = AuthApi.HeaderTokenField
|
|
125
|
+
} = props ?? {};
|
|
126
|
+
|
|
127
|
+
// Check the token
|
|
128
|
+
if (!token) {
|
|
129
|
+
return {
|
|
130
|
+
ok: false,
|
|
131
|
+
type: "noData",
|
|
132
|
+
field: "token",
|
|
133
|
+
title: this.app.get("noData")
|
|
134
|
+
};
|
|
35
135
|
}
|
|
36
136
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
137
|
+
// Reqest data
|
|
138
|
+
const rq: RefreshTokenRQ = {
|
|
139
|
+
deviceId: this.app.deviceId
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
// Payload
|
|
143
|
+
const payload: IApiPayload<R, any> = {
|
|
144
|
+
// No loading bar needed to avoid screen flicks
|
|
145
|
+
showLoading,
|
|
146
|
+
config: { headers: { [tokenField]: token } },
|
|
147
|
+
onError: () => {
|
|
148
|
+
// Prevent further processing
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
// Call API
|
|
154
|
+
const result = await this.api.put(api, rq, payload);
|
|
155
|
+
if (result == null) {
|
|
156
|
+
return this.api.lastError
|
|
157
|
+
? ActionResult.create(this.api.lastError)
|
|
158
|
+
: {
|
|
159
|
+
ok: false,
|
|
160
|
+
type: "unknownError",
|
|
161
|
+
field: "result",
|
|
162
|
+
title: this.app.get("unknownError")
|
|
163
|
+
};
|
|
44
164
|
}
|
|
45
165
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
// Get the refresh token
|
|
86
|
-
const refreshToken = result?.ok
|
|
87
|
-
? this.app.getResponseToken(payload.response, tokenKey)
|
|
88
|
-
: null;
|
|
89
|
-
|
|
90
|
-
// Return the result
|
|
91
|
-
return [result, refreshToken];
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* Login id check
|
|
96
|
-
* @param id Check id
|
|
97
|
-
* @param payload Payload
|
|
98
|
-
* @returns Result
|
|
99
|
-
*/
|
|
100
|
-
loginId(id: string, payload?: ResultPayload) {
|
|
101
|
-
const { deviceId, region } = this.app;
|
|
102
|
-
id = this.app.encrypt(id);
|
|
103
|
-
const rq: LoginIdRQ = {
|
|
104
|
-
id,
|
|
105
|
-
deviceId,
|
|
106
|
-
region
|
|
107
|
-
};
|
|
108
|
-
return this.api.post('Auth/LoginId', rq, payload);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* Refresh token
|
|
113
|
-
* @param props Props
|
|
114
|
-
* @returns Result
|
|
115
|
-
*/
|
|
116
|
-
async refreshToken<R>(
|
|
117
|
-
props: RefreshTokenProps
|
|
118
|
-
): Promise<RefreshTokenResult<R>> {
|
|
119
|
-
// Destruct
|
|
120
|
-
const {
|
|
121
|
-
api = 'Auth/RefreshToken',
|
|
122
|
-
showLoading = false,
|
|
123
|
-
token,
|
|
124
|
-
tokenField = AuthApi.HeaderTokenField
|
|
125
|
-
} = props ?? {};
|
|
126
|
-
|
|
127
|
-
// Check the token
|
|
128
|
-
if (!token) {
|
|
129
|
-
return {
|
|
130
|
-
ok: false,
|
|
131
|
-
type: 'noData',
|
|
132
|
-
field: 'token',
|
|
133
|
-
title: this.app.get('noData')
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
// Reqest data
|
|
138
|
-
const rq: RefreshTokenRQ = {
|
|
139
|
-
deviceId: this.app.deviceId
|
|
140
|
-
};
|
|
141
|
-
|
|
142
|
-
// Payload
|
|
143
|
-
const payload: IApiPayload<R, any> = {
|
|
144
|
-
// No loading bar needed to avoid screen flicks
|
|
145
|
-
showLoading,
|
|
146
|
-
config: { headers: { [tokenField]: token } },
|
|
147
|
-
onError: () => {
|
|
148
|
-
// Prevent further processing
|
|
149
|
-
return false;
|
|
150
|
-
}
|
|
151
|
-
};
|
|
152
|
-
|
|
153
|
-
// Call API
|
|
154
|
-
const result = await this.api.put(api, rq, payload);
|
|
155
|
-
if (result == null) {
|
|
156
|
-
return this.api.lastError
|
|
157
|
-
? ActionResult.create(this.api.lastError)
|
|
158
|
-
: {
|
|
159
|
-
ok: false,
|
|
160
|
-
type: 'unknownError',
|
|
161
|
-
field: 'result',
|
|
162
|
-
title: this.app.get('unknownError')
|
|
163
|
-
};
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
// Token
|
|
167
|
-
const refreshToken = this.app.getResponseToken(
|
|
168
|
-
payload.response,
|
|
169
|
-
tokenField
|
|
170
|
-
);
|
|
171
|
-
|
|
172
|
-
// Success
|
|
173
|
-
return [refreshToken, result];
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
/**
|
|
177
|
-
* Reset password
|
|
178
|
-
* @param rq Request data
|
|
179
|
-
* @param payload Payload
|
|
180
|
-
* @returns Result
|
|
181
|
-
*/
|
|
182
|
-
resetPassword(rq: ResetPasswordRQ, payload?: ResultPayload) {
|
|
183
|
-
return this.api.put('Auth/ResetPassword', rq, payload);
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
/**
|
|
187
|
-
* Signout
|
|
188
|
-
* @param rq Request data
|
|
189
|
-
* @param payload Payload
|
|
190
|
-
* @returns Result
|
|
191
|
-
*/
|
|
192
|
-
signout(rq: SignoutRQ, payload?: ResultPayload) {
|
|
193
|
-
return this.api.put('Auth/Signout', rq, payload);
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
/**
|
|
197
|
-
* Switch organization
|
|
198
|
-
* @param rq Request data
|
|
199
|
-
* @param payload Payload
|
|
200
|
-
*/
|
|
201
|
-
switchOrg(rq: SwitchOrgRQ, payload?: ResultPayload) {
|
|
202
|
-
return this.app.api.put('Auth/SwitchOrg', rq, payload);
|
|
203
|
-
}
|
|
166
|
+
// Token
|
|
167
|
+
const refreshToken = this.app.getResponseToken(
|
|
168
|
+
payload.response,
|
|
169
|
+
tokenField
|
|
170
|
+
);
|
|
171
|
+
|
|
172
|
+
// Success
|
|
173
|
+
return [refreshToken, result];
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Reset password
|
|
178
|
+
* @param rq Request data
|
|
179
|
+
* @param payload Payload
|
|
180
|
+
* @returns Result
|
|
181
|
+
*/
|
|
182
|
+
resetPassword(rq: ResetPasswordRQ, payload?: ResultPayload) {
|
|
183
|
+
return this.api.put("Auth/ResetPassword", rq, payload);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Signout
|
|
188
|
+
* @param rq Request data
|
|
189
|
+
* @param payload Payload
|
|
190
|
+
* @returns Result
|
|
191
|
+
*/
|
|
192
|
+
signout(rq: SignoutRQ, payload?: ResultPayload) {
|
|
193
|
+
return this.api.put("Auth/Signout", rq, payload);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Switch organization
|
|
198
|
+
* @param rq Request data
|
|
199
|
+
* @param payload Payload
|
|
200
|
+
*/
|
|
201
|
+
switchOrg(rq: SwitchOrgRQ, payload?: ResultPayload) {
|
|
202
|
+
return this.app.api.put("Auth/SwitchOrg", rq, payload);
|
|
203
|
+
}
|
|
204
204
|
}
|
package/src/api/BaseApi.ts
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import { IApp } from
|
|
1
|
+
import { IApp } from "../app/IApp";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* SmartERP base API
|
|
5
5
|
*/
|
|
6
6
|
export class BaseApi<T extends IApp = IApp> {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
/**
|
|
8
|
+
* API Last error
|
|
9
|
+
*/
|
|
10
|
+
get lastError() {
|
|
11
|
+
return this.api.lastError;
|
|
12
|
+
}
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Constructor
|
|
16
|
+
* @param app Application
|
|
17
|
+
* @param api API
|
|
18
|
+
*/
|
|
19
|
+
constructor(protected app: T, protected api = app.api) {}
|
|
20
20
|
}
|