Skip to content

Commit 24370ea

Browse files
committed
No-Code errors serialization fixes
1 parent f47cf07 commit 24370ea

File tree

9 files changed

+56
-53
lines changed

9 files changed

+56
-53
lines changed

src/NoCodes.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import NoCodesApi from "./NoCodesApi";
2-
import NoCodesConfig from "./dto/NoCodesConfig";
2+
import NoCodesConfig from "./NoCodesConfig";
33
import NoCodesInternal from "./internal/NoCodesInternal";
44

55
export default class NoCodes {
@@ -17,18 +17,18 @@ export default class NoCodes {
1717
*/
1818
static getSharedInstance(): NoCodesApi {
1919
if (!this.backingInstance) {
20-
throw "NoCodes has not been initialized. You should call " +
20+
throw "No-Codes has not been initialized. You should call " +
2121
"the initialize method before accessing the shared instance of NoCodes."
2222
}
2323

2424
return this.backingInstance;
2525
}
2626

2727
/**
28-
* An entry point to use NoCodes SDK. Call to initialize NoCodes SDK with required configs.
28+
* An entry point to use No-Codes SDK. Call to initialize No-Codes SDK with required configs.
2929
*
3030
* @param config a config that contains key SDK settings.
31-
* @return Initialized instance of the NoCodes SDK.
31+
* @return Initialized instance of the No-Codes SDK.
3232
*/
3333
static initialize(config: NoCodesConfig): NoCodesApi {
3434
this.backingInstance = new NoCodesInternal(config);
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { NoCodesListener } from './NoCodesListener';
1+
import { NoCodesListener } from './dto/NoCodesListener';
22

33
class NoCodesConfig {
44
readonly projectKey: string;
@@ -13,4 +13,4 @@ class NoCodesConfig {
1313
}
1414
}
1515

16-
export default NoCodesConfig;
16+
export default NoCodesConfig;

src/NoCodesConfigBuilder.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {NoCodesListener} from './dto/NoCodesListener';
2-
import NoCodesConfig from './dto/NoCodesConfig';
2+
import NoCodesConfig from './NoCodesConfig';
33

44
class NoCodesConfigBuilder {
55
private readonly projectKey: string;

src/dto/NoCodesError.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,25 @@
11
import {NoCodesErrorCode} from './enums';
2+
import QonversionError from './QonversionError';
23

34
class NoCodesError {
45
code: NoCodesErrorCode;
5-
description: string;
6-
additionalMessage: string;
7-
domain?: string;
6+
description?: string | null;
7+
additionalMessage?: string | null;
8+
domain?: string | null;
9+
error?: QonversionError;
810

911
constructor(
1012
code: NoCodesErrorCode,
11-
description: string,
12-
additionalMessage: string,
13-
domain?: string,
13+
description?: string | null,
14+
additionalMessage?: string | null,
15+
domain?: string | null,
16+
error?: QonversionError,
1417
) {
1518
this.code = code;
1619
this.domain = domain;
1720
this.description = description;
1821
this.additionalMessage = additionalMessage;
22+
this.error = error;
1923
}
2024
}
2125

src/dto/QonversionError.ts

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,22 @@ import {QonversionErrorCode} from './enums';
22

33
class QonversionError {
44
code: QonversionErrorCode;
5-
domain?: string;
6-
description: string;
7-
additionalMessage: string;
8-
private _userCanceled: boolean = false;
5+
domain?: string | null;
6+
description?: string | null;
7+
additionalMessage?: string | null;
8+
userCanceled: boolean = false;
99

1010
constructor(
1111
code: QonversionErrorCode,
12-
description: string,
13-
additionalMessage: string,
14-
domain?: string,
12+
description?: string | null,
13+
additionalMessage?: string | null,
14+
domain?: string | null,
1515
) {
1616
this.code = code;
1717
this.domain = domain;
1818
this.description = description;
1919
this.additionalMessage = additionalMessage;
20-
}
21-
22-
get userCanceled(): boolean {
23-
return this._userCanceled;
24-
}
25-
26-
setUserCanceled(value: boolean): void {
27-
this._userCanceled = value;
20+
this.userCanceled = code === QonversionErrorCode.PURCHASE_CANCELED;
2821
}
2922
}
3023

src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ export { default as PurchaseOptions } from './dto/PurchaseOptionsBuilder';
3737
// NoCode exports
3838
export { default as NoCodes } from './NoCodes';
3939
export type { default as NoCodesApi } from './NoCodesApi';
40-
export { default as NoCodesConfig } from './dto/NoCodesConfig';
40+
export { default as NoCodesConfig } from './NoCodesConfig';
4141
export { default as NoCodesConfigBuilder } from './NoCodesConfigBuilder';
4242
export type { NoCodesListener } from './dto/NoCodesListener';
4343
export { default as NoCodesAction } from './dto/NoCodesAction';

src/internal/Mapper.ts

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,17 @@ type QUserProperties = {
295295
properties: QUserProperty[];
296296
};
297297

298+
type QQonversionError = {
299+
code: string | undefined;
300+
description: string | null | undefined,
301+
additionalMessage: string | null | undefined,
302+
domain: string | null | undefined,
303+
};
304+
305+
type QNoCodesError = QQonversionError & {
306+
qonversionError?: QQonversionError | null,
307+
};
308+
298309
const priceMicrosRatio = 1000000;
299310

300311
class Mapper {
@@ -1080,30 +1091,32 @@ class Mapper {
10801091
}
10811092

10821093
static convertNoCodesError(
1083-
payload: Record<string, string> | undefined
1094+
payload: QNoCodesError | undefined
10841095
): NoCodesError | undefined {
10851096
if (!payload) return undefined;
10861097

1087-
const code = this.convertNoCodesErrorCode(payload["code"]);
1098+
const code = this.convertNoCodesErrorCode(payload.code);
1099+
const error = payload.qonversionError ? this.convertQonversionError(payload.qonversionError) : undefined;
10881100
return new NoCodesError(
10891101
code,
1090-
payload["description"],
1091-
payload["additionalMessage"],
1092-
payload["domain"],
1102+
payload.description,
1103+
payload.additionalMessage,
1104+
payload.domain,
1105+
error,
10931106
);
10941107
}
10951108

10961109
static convertQonversionError(
1097-
payload: Record<string, string> | undefined
1110+
payload: QQonversionError | undefined
10981111
): QonversionError | undefined {
10991112
if (!payload) return undefined;
11001113

1101-
const code = this.convertQonversionErrorCode(payload["code"]);
1114+
const code = this.convertQonversionErrorCode(payload.code);
11021115
return new QonversionError(
11031116
code,
1104-
payload["description"],
1105-
payload["additionalMessage"],
1106-
payload["domain"],
1117+
payload.description,
1118+
payload.additionalMessage,
1119+
payload.domain,
11071120
);
11081121
}
11091122

src/internal/NoCodesInternal.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import {NativeEventEmitter, NativeModules} from "react-native";
22
import NoCodesApi from "../NoCodesApi";
3-
import NoCodesConfig from "../dto/NoCodesConfig";
3+
import NoCodesConfig from "../NoCodesConfig";
44
import Mapper from "./Mapper";
55
import {NoCodesListener} from '../dto/NoCodesListener';
66
import {ScreenPresentationConfig} from '../dto/ScreenPresentationConfig';

src/internal/QonversionInternal.ts

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import PurchaseUpdateModel from '../dto/PurchaseUpdateModel';
2020
import {RemoteConfigList} from '../index';
2121
import PurchaseOptionsBuilder from "../dto/PurchaseOptionsBuilder";
2222
import PromotionalOffer from '../dto/PromotionalOffer';
23-
import QonversionError from '../dto/QonversionError';
2423

2524
const {RNQonversion} = NativeModules;
2625

@@ -106,10 +105,8 @@ export default class QonversionInternal implements QonversionApi {
106105
const mappedPermissions = Mapper.convertEntitlements(entitlements);
107106

108107
return mappedPermissions;
109-
} catch (e) {
110-
if (e instanceof QonversionError) {
111-
e.setUserCanceled(e.code === QonversionErrorCode.PURCHASE_CANCELED);
112-
}
108+
} catch (e: any) {
109+
e.userCanceled = e.code === QonversionErrorCode.PURCHASE_CANCELED;
113110
throw e;
114111
}
115112
}
@@ -135,10 +132,8 @@ export default class QonversionInternal implements QonversionApi {
135132
const mappedPermissions = Mapper.convertEntitlements(entitlements);
136133

137134
return mappedPermissions;
138-
} catch (e) {
139-
if (e instanceof QonversionError) {
140-
e.setUserCanceled(e.code === QonversionErrorCode.PURCHASE_CANCELED);
141-
}
135+
} catch (e: any) {
136+
e.userCanceled = e.code === QonversionErrorCode.PURCHASE_CANCELED;
142137
throw e;
143138
}
144139
}
@@ -162,10 +157,8 @@ export default class QonversionInternal implements QonversionApi {
162157
const mappedPermissions: Map<string, Entitlement> = Mapper.convertEntitlements(entitlements);
163158

164159
return mappedPermissions;
165-
} catch (e) {
166-
if (e instanceof QonversionError) {
167-
e.setUserCanceled(e.code === QonversionErrorCode.PURCHASE_CANCELED);
168-
}
160+
} catch (e: any) {
161+
e.userCanceled = e.code === QonversionErrorCode.PURCHASE_CANCELED;
169162
throw e;
170163
}
171164
}

0 commit comments

Comments
 (0)