@jolibox/implement 1.1.52-beta.1 → 1.1.53-beta.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 (59) hide show
  1. package/.rush/temp/package-deps_build.json +33 -26
  2. package/dist/common/context/index.d.ts +1 -0
  3. package/dist/common/rewards/index.d.ts +2 -0
  4. package/dist/common/rewards/registers/use-gem-only.d.ts +10 -0
  5. package/dist/common/rewards/registers/use-gem.d.ts +10 -0
  6. package/dist/common/rewards/registers/utils/coins/commands/currency-handlers.d.ts +15 -0
  7. package/dist/common/rewards/registers/utils/coins/commands/index.d.ts +1 -1
  8. package/dist/common/rewards/registers/utils/coins/commands/use-jolicoin.d.ts +10 -8
  9. package/dist/common/rewards/registers/utils/coins/commands/use-payment.d.ts +10 -8
  10. package/dist/common/rewards/registers/utils/coins/commands/use-unlogin.d.ts +6 -8
  11. package/dist/common/rewards/registers/utils/coins/currency-config.d.ts +8 -0
  12. package/dist/common/rewards/registers/utils/coins/index.d.ts +2 -18
  13. package/dist/common/rewards/registers/utils/coins/jolicoin/jolicoin-handler.d.ts +18 -0
  14. package/dist/common/rewards/registers/utils/coins/joligem/fetch-gem-balance.d.ts +4 -0
  15. package/dist/common/rewards/registers/utils/coins/joligem/gem-handler.d.ts +19 -0
  16. package/dist/common/rewards/registers/utils/index.d.ts +3 -1
  17. package/dist/common/rewards/reward-emitter.d.ts +23 -13
  18. package/dist/common/rewards/reward-helper.d.ts +3 -1
  19. package/dist/common/rewards/type.d.ts +10 -1
  20. package/dist/index.js +25 -25
  21. package/dist/index.native.js +67 -67
  22. package/dist/native/payment/payment-helper.d.ts +5 -1
  23. package/dist/native/rewards/check-frequency.d.ts +24 -0
  24. package/implement.build.log +2 -2
  25. package/package.json +6 -6
  26. package/src/common/context/index.ts +3 -0
  27. package/src/common/rewards/__tests__/can-use-jolicoin.test.ts +265 -9
  28. package/src/common/rewards/fetch-reward.ts +18 -3
  29. package/src/common/rewards/index.ts +2 -0
  30. package/src/common/rewards/registers/use-gem-only.ts +58 -0
  31. package/src/common/rewards/registers/use-gem.ts +53 -0
  32. package/src/common/rewards/registers/use-jolicoin-only.ts +4 -4
  33. package/src/common/rewards/registers/use-jolicoin.ts +4 -4
  34. package/src/common/rewards/registers/utils/coins/commands/currency-handlers.ts +48 -0
  35. package/src/common/rewards/registers/utils/coins/commands/index.ts +1 -1
  36. package/src/common/rewards/registers/utils/coins/commands/use-jolicoin.ts +31 -19
  37. package/src/common/rewards/registers/utils/coins/commands/use-payment.ts +32 -25
  38. package/src/common/rewards/registers/utils/coins/commands/use-unlogin.ts +22 -24
  39. package/src/common/rewards/registers/utils/coins/currency-config.ts +23 -0
  40. package/src/common/rewards/registers/utils/coins/index.ts +2 -134
  41. package/src/common/rewards/registers/utils/coins/jolicoin/jolicoin-handler.ts +149 -0
  42. package/src/common/rewards/registers/utils/coins/joligem/fetch-gem-balance.ts +15 -0
  43. package/src/common/rewards/registers/utils/coins/joligem/gem-handler.ts +131 -0
  44. package/src/common/rewards/registers/utils/index.ts +20 -1
  45. package/src/common/rewards/reward-emitter.ts +23 -13
  46. package/src/common/rewards/reward-helper.ts +3 -1
  47. package/src/common/rewards/type.ts +13 -1
  48. package/src/h5/rewards/index.ts +33 -20
  49. package/src/native/api/ads.ts +22 -1
  50. package/src/native/api/call-host-method.ts +36 -1
  51. package/src/native/payment/index.ts +2 -0
  52. package/src/native/payment/payment-helper.ts +2 -1
  53. package/src/native/rewards/check-frequency.ts +10 -0
  54. package/src/native/rewards/ui/payment-modal.ts +110 -33
  55. package/src/native/rewards/ui/unlogin-modal.ts +182 -87
  56. package/src/native/rewards/ui/use-modal.ts +126 -68
  57. package/implementation.build.log +0 -9
  58. /package/dist/common/rewards/registers/utils/coins/{fetch-balance.d.ts → jolicoin/fetch-balance.d.ts} +0 -0
  59. /package/src/common/rewards/registers/utils/coins/{fetch-balance.ts → jolicoin/fetch-balance.ts} +0 -0
@@ -6,7 +6,7 @@
6
6
  "packages/implement/CHANGELOG.md": "35bc0ac3c4124ac92f573b8d2f592f2f0e1d8999",
7
7
  "packages/implement/README.md": "5660cd88848b7a5428394cc34d881a35dd402188",
8
8
  "packages/implement/esbuild.config.js": "876db4e384d8543b66a0b61d8f7b277a36dfb4e0",
9
- "packages/implement/package.json": "682511b694c31a49114fafa08238c86eb750a7d3",
9
+ "packages/implement/package.json": "1ac75fdf51cb24fa974a20df0637004ca35544de",
10
10
  "packages/implement/src/common/ads/ads-action-detection.ts": "5a7b9f85d7eab9e744f8a9fc7638063f43baa214",
11
11
  "packages/implement/src/common/ads/anti-cheating.test.ts": "e2ff3dc6760cfd28d0f8c15703d7fb20d43df583",
12
12
  "packages/implement/src/common/ads/anti-cheating.ts": "a3ffb6a78e289e1c0ce45c7f7c0cee000e75e541",
@@ -33,7 +33,7 @@
33
33
  "packages/implement/src/common/api-factory/validator/index.ts": "204e86b97c854647d177805e3180d4cfd542b0f8",
34
34
  "packages/implement/src/common/api-factory/validator/validate.ts": "5fee8175a9a05a69fe709c7e7899e5372d81efb1",
35
35
  "packages/implement/src/common/can-i-use.ts": "9a28562870d92b82ce42ec656c8e9d868dd87528",
36
- "packages/implement/src/common/context/index.ts": "87cb73447e0b0685f030e1062165d45efc6530a9",
36
+ "packages/implement/src/common/context/index.ts": "437d03326ca89502f9a54a25bb5a05e19b19f85b",
37
37
  "packages/implement/src/common/context/types.ts": "244ff65de52dcbce2457ffee427f5fa102987825",
38
38
  "packages/implement/src/common/context/url-parse.ts": "f0c52a43038503d1c234738cd971715373c8e03e",
39
39
  "packages/implement/src/common/http/index.ts": "5087185d80e1e239262f849b3015eb9b810e2945",
@@ -48,25 +48,32 @@
48
48
  "packages/implement/src/common/report/task-track/index.ts": "0482d7d11c2af51903d344d2ac44f6930ea81c3d",
49
49
  "packages/implement/src/common/report/track.ts": "4072dee69ace09d8099e1131507b35f0cb6bd92e",
50
50
  "packages/implement/src/common/report/types.ts": "9c25c62b85b9ac5dbde674601924703f7df33773",
51
- "packages/implement/src/common/rewards/__tests__/can-use-jolicoin.test.ts": "ec0f7225cb1b322e9278a3d8d6848bc50190696a",
52
- "packages/implement/src/common/rewards/fetch-reward.ts": "664c2d296d0f97ce6324e1833f655f82963a22bd",
53
- "packages/implement/src/common/rewards/index.ts": "87756461b26ac11c72dc4dcbe150d3b3954f80de",
51
+ "packages/implement/src/common/rewards/__tests__/can-use-jolicoin.test.ts": "33d2c8da53de4bfb5c9dcee846713d1aa5e3a85b",
52
+ "packages/implement/src/common/rewards/fetch-reward.ts": "a2dd370ee4715ae2b52a35c13be9944d4819e5de",
53
+ "packages/implement/src/common/rewards/index.ts": "58fce95c7d91e28646142c03fc9f9d7a9f90b9e9",
54
54
  "packages/implement/src/common/rewards/registers/use-ads.ts": "77c887f0e2065a8f3eec31cb5b62e1752d07298b",
55
- "packages/implement/src/common/rewards/registers/use-jolicoin-only.ts": "3cbd916d977c62212545654563e4711edf9b8dd3",
56
- "packages/implement/src/common/rewards/registers/use-jolicoin.ts": "4f5c9a81329b5065f6a25c009fb10b8839642b87",
57
- "packages/implement/src/common/rewards/registers/utils/coins/commands/index.ts": "184db31da81c93ffafdf3ea9fdbe4d4362f6e6f9",
58
- "packages/implement/src/common/rewards/registers/utils/coins/commands/use-jolicoin.ts": "93e378c2694cb469f6bb235b229bf7928e352bcf",
59
- "packages/implement/src/common/rewards/registers/utils/coins/commands/use-payment.ts": "703d4371cb2b3fde01df543d061ea5675b01a8b7",
60
- "packages/implement/src/common/rewards/registers/utils/coins/commands/use-unlogin.ts": "849995b813e7856c157b2172bc20b139f7a1de73",
61
- "packages/implement/src/common/rewards/registers/utils/coins/fetch-balance.ts": "ee5887ffe5289ba59ceb12133dc4f6de26b750a4",
62
- "packages/implement/src/common/rewards/registers/utils/coins/index.ts": "c8c0ac0f45407f77901975077c2cd09355385082",
55
+ "packages/implement/src/common/rewards/registers/use-gem-only.ts": "f947994fd9e96865041e6dc742b66bd33a543323",
56
+ "packages/implement/src/common/rewards/registers/use-gem.ts": "0e83ffaf556aa98ba720cf927b87b2963dd3ffda",
57
+ "packages/implement/src/common/rewards/registers/use-jolicoin-only.ts": "57f8c7156ef4cb55a707746c287eed1e883be694",
58
+ "packages/implement/src/common/rewards/registers/use-jolicoin.ts": "46c3e782cfa780bf262f1744bb7eff60d77cf2e3",
59
+ "packages/implement/src/common/rewards/registers/utils/coins/commands/currency-handlers.ts": "f2a4a5312db1c3e688a8a52f1f5c05b6c98f3ff4",
60
+ "packages/implement/src/common/rewards/registers/utils/coins/commands/index.ts": "1d5700642bf3bddb8eb598b6018cfd55bd7b3308",
61
+ "packages/implement/src/common/rewards/registers/utils/coins/commands/use-jolicoin.ts": "fc9ce680fd5f61409872fe380edd728252c769a4",
62
+ "packages/implement/src/common/rewards/registers/utils/coins/commands/use-payment.ts": "bb314086c33ddd072deac5b33b2be2282f7de0cd",
63
+ "packages/implement/src/common/rewards/registers/utils/coins/commands/use-unlogin.ts": "359ec6f2bfbf865ad1b03f3f7515e14fa438da8f",
64
+ "packages/implement/src/common/rewards/registers/utils/coins/currency-config.ts": "e8c1c5c9280fcc24df95d1aad60d0ae795042198",
65
+ "packages/implement/src/common/rewards/registers/utils/coins/index.ts": "454c807a24a64a0a7c2c8ce0f11539d3e08c9ebe",
66
+ "packages/implement/src/common/rewards/registers/utils/coins/jolicoin/fetch-balance.ts": "ee5887ffe5289ba59ceb12133dc4f6de26b750a4",
67
+ "packages/implement/src/common/rewards/registers/utils/coins/jolicoin/jolicoin-handler.ts": "f6f37138a15b1e5ea086977db777c11202775547",
68
+ "packages/implement/src/common/rewards/registers/utils/coins/joligem/fetch-gem-balance.ts": "16e24d75cd2668ed331d0679c7ff82b0946222fb",
69
+ "packages/implement/src/common/rewards/registers/utils/coins/joligem/gem-handler.ts": "408fdd2585c00440674c0881efe66c8f5d93ba93",
63
70
  "packages/implement/src/common/rewards/registers/utils/coins/rewards-command.ts": "b7a5309a43869f5024022158e3c95b505ecb55df",
64
71
  "packages/implement/src/common/rewards/registers/utils/common.ts": "45f813bf8f1655d0533bc04e5d947f7e8b2262ec",
65
72
  "packages/implement/src/common/rewards/registers/utils/event-listener.ts": "cd6a393d4771833cc37e38d9fb8af1900c8b0487",
66
- "packages/implement/src/common/rewards/registers/utils/index.ts": "0b72aa9221d5b2bf0514205c77292d1f946a7a67",
67
- "packages/implement/src/common/rewards/reward-emitter.ts": "0e9115a7713b05472974d8aff8bcee8de7507d0d",
68
- "packages/implement/src/common/rewards/reward-helper.ts": "1d4c7fcbdfa79f56ee917771e6dd32085904b9eb",
69
- "packages/implement/src/common/rewards/type.ts": "75c8444405686dbee1628f6d67c4a6b803e0623e",
73
+ "packages/implement/src/common/rewards/registers/utils/index.ts": "b7e794b2ff442e5e122e5e1dae5ac66e3c865580",
74
+ "packages/implement/src/common/rewards/reward-emitter.ts": "1d5d9548ffe838d721e1eaa806168a770ac18590",
75
+ "packages/implement/src/common/rewards/reward-helper.ts": "b4813747f0da4fbd05fb23758c504ae1bc6c0e87",
76
+ "packages/implement/src/common/rewards/type.ts": "10d70e070e685370a4e875655eb677b01025ae52",
70
77
  "packages/implement/src/common/utils/index.ts": "54bfc80c8c20bc71504f997e445d3e8019bb762d",
71
78
  "packages/implement/src/h5/api/ads.ts": "c9fdf15e5bd2f90af54264aedb125315cdc30111",
72
79
  "packages/implement/src/h5/api/base.ts": "ead2c3cdcbe174b0e725c31a3885c7985bd8f667",
@@ -90,13 +97,13 @@
90
97
  "packages/implement/src/h5/report/event-tracker.ts": "792ab8e4776b2479ea95cb9d0312aff06a8beffc",
91
98
  "packages/implement/src/h5/report/index.ts": "7154000726a72f477183d069eea5de87d12ceb7d",
92
99
  "packages/implement/src/h5/report/task-tracker.ts": "07ffd3b6316221652528c7172869068cf4df0a15",
93
- "packages/implement/src/h5/rewards/index.ts": "ac0674bc8072f991f01be2fceff579e6976e1d87",
100
+ "packages/implement/src/h5/rewards/index.ts": "b4e917c76972b6b79e24bd68180317185d971caa",
94
101
  "packages/implement/src/index.native.ts": "96cc46c8919ba2333600e9c3ee100f47c511a79a",
95
102
  "packages/implement/src/index.ts": "d0ca7b5312b0a258ae8887e725440c70190442f7",
96
103
  "packages/implement/src/native/api/__tests__/convertVersionCodeToVString.test.ts": "5f948265725f8ca48851de4bd41b24a10d754982",
97
- "packages/implement/src/native/api/ads.ts": "5c88934592b0f2cfa0fab2dcc7e13dc0e7db5675",
104
+ "packages/implement/src/native/api/ads.ts": "3d0d1f5fd7b6dbdd52cafe277b1a6aa3a769e4c8",
98
105
  "packages/implement/src/native/api/base.ts": "0ebf7c92ef5154ca1d321172e4f94a65e2d91b41",
99
- "packages/implement/src/native/api/call-host-method.ts": "54325a2345a2d7f73bb23c9a170fb9ae122e54a8",
106
+ "packages/implement/src/native/api/call-host-method.ts": "058cffbaf953827dd0ed938628200be9e18d38ea",
100
107
  "packages/implement/src/native/api/get-system-info.ts": "33aa88b7f4d6c4204bc7e81ee9cce05296587691",
101
108
  "packages/implement/src/native/api/index.ts": "0ab963402074157d1f7a77c12d0a97635b94b2a9",
102
109
  "packages/implement/src/native/api/is-native-support.ts": "46d9353fcec02ac0f4ed7094a7ceae2900eb45c1",
@@ -116,8 +123,8 @@
116
123
  "packages/implement/src/native/network/report.ts": "705e9614faeb0611c9c57ced998885bdc3a02d11",
117
124
  "packages/implement/src/native/network/types.ts": "4e8eb72bf0b0b26a5298ce42d96855d27769be51",
118
125
  "packages/implement/src/native/network/utils.ts": "53877a6871dc3a6b173daef930872c44589659b9",
119
- "packages/implement/src/native/payment/index.ts": "a23f38b0642f4f3f75e07a912ada91228942b1e6",
120
- "packages/implement/src/native/payment/payment-helper.ts": "7f19b6c5d391335525f93b0ca7c99d838a1f953f",
126
+ "packages/implement/src/native/payment/index.ts": "6ead1fc6e7261ba851f926afb315f6988639e74a",
127
+ "packages/implement/src/native/payment/payment-helper.ts": "bb016488a6eaad42f1fd9c18cb77279d34a77410",
121
128
  "packages/implement/src/native/payment/registers/base.ts": "63973fe618cfaa5bc0baa88c7f1d271638c65c1a",
122
129
  "packages/implement/src/native/payment/registers/const.ts": "cba0087bccbd01349acc46f69adaeed80f4d16a0",
123
130
  "packages/implement/src/native/payment/registers/joli-coin.ts": "caa3bd121e2159091dbe7cc3f58c2fba67d337a4",
@@ -126,11 +133,11 @@
126
133
  "packages/implement/src/native/report/errors/index.ts": "40e60ee03e0b91cdb0a143a2bea07f5d1e5d6dd7",
127
134
  "packages/implement/src/native/report/index.ts": "5a92a8ed6a3414b4c9e78f965a5d0d555001c024",
128
135
  "packages/implement/src/native/report/task-tracker.ts": "2b76f4ac6cf136373c8a0635c1b6841e649cdb59",
129
- "packages/implement/src/native/rewards/check-frequency.ts": "bd35c72ac955eb6968d16ce1a4b26c05324b9daa",
136
+ "packages/implement/src/native/rewards/check-frequency.ts": "9216ec863acd9ae1a2ae7a8c144721fb262fda37",
130
137
  "packages/implement/src/native/rewards/index.ts": "543b4631fb8952aaf19e10863463a0e3a4f0b34e",
131
- "packages/implement/src/native/rewards/ui/payment-modal.ts": "532ae662d23e22219b8b2b51e57a78657ff5632a",
132
- "packages/implement/src/native/rewards/ui/unlogin-modal.ts": "e08b8297626f66435bbebb95f12df5e98efc8f55",
133
- "packages/implement/src/native/rewards/ui/use-modal.ts": "46be8f40fdde91c47c8cf04d74b7fac8ecfb6b32",
138
+ "packages/implement/src/native/rewards/ui/payment-modal.ts": "6ee6a8f05c05cbc8e3744ff0e1cc71f7353e332d",
139
+ "packages/implement/src/native/rewards/ui/unlogin-modal.ts": "da6f18bd2cc575592e216fed584d09f6765f1e96",
140
+ "packages/implement/src/native/rewards/ui/use-modal.ts": "6e993eab7fe8d631560a847b411aa34d20c92846",
134
141
  "packages/implement/src/native/rewards/ui/utils.ts": "c0c3c069e9384e3efbaaf9dab4af522e11e9335f",
135
142
  "packages/implement/src/native/rewards/utils.ts": "af00dd225556ab61332cb2cbf5e8da426136bc0b",
136
143
  "packages/implement/src/native/ui/modal-iframe.ts": "7d50b2c44023f08dc025d4483838f930c8e5a55d",
@@ -37,6 +37,7 @@ export declare const context: {
37
37
  readonly language: string;
38
38
  readonly sdkEnvironment: SDKEnvironment;
39
39
  readonly viewport: Viewport;
40
+ readonly abTests: string[];
40
41
  onEnvConfigChanged: (newConfig: Partial<Env>) => void;
41
42
  encodeJoliSourceQuery: (newPayloadJson: QueryParams["payloadJson"]) => string;
42
43
  setDoExitDirectly: () => void;
@@ -9,3 +9,5 @@ export declare const rewardsHelper: {
9
9
  export * from './registers/use-ads';
10
10
  export * from './registers/use-jolicoin';
11
11
  export * from './registers/use-jolicoin-only';
12
+ export * from './registers/use-gem';
13
+ export * from './registers/use-gem-only';
@@ -0,0 +1,10 @@
1
+ import { IHttpClient } from '@/common/http';
2
+ import { IAdBreakParams } from '@/common/ads';
3
+ export type GemOnlyRewardsHandler = (params: IAdBreakParams) => Promise<boolean>;
4
+ export declare const createGemOnlyRewardHandler: (httpClient: IHttpClient, { onUnlockSuccess, onUnlockFailed }: {
5
+ onUnlockSuccess?: (data: {
6
+ quantity: number;
7
+ balance: number;
8
+ }) => void;
9
+ onUnlockFailed?: () => void;
10
+ }) => GemOnlyRewardsHandler;
@@ -0,0 +1,10 @@
1
+ import { IHttpClient } from '@/common/http';
2
+ import { IAdBreakParams } from '@/common/ads';
3
+ export type GemRewardsHandler = (params: IAdBreakParams) => Promise<boolean>;
4
+ export declare const createGemRewardHandler: (httpClient: IHttpClient, { onUnlockSuccess, onUnlockFailed }: {
5
+ onUnlockSuccess?: (data: {
6
+ quantity: number;
7
+ balance: number;
8
+ }) => void;
9
+ onUnlockFailed?: () => void;
10
+ }) => GemRewardsHandler;
@@ -0,0 +1,15 @@
1
+ import { IHttpClient } from '@/common/http';
2
+ import { IJoliCoin, IGem } from '@/common/rewards/type';
3
+ import { IUnlockOptionsEvent } from '@/common/rewards/reward-emitter';
4
+ export type CurrencyType = 'JOLI_COIN' | 'JOLI_GEM';
5
+ export interface CurrencyHandler {
6
+ fetchBalance: (httpClient: IHttpClient) => Promise<{
7
+ balance: number;
8
+ } | undefined>;
9
+ getQuantity: (unlockOptions: IUnlockOptionsEvent | null) => number;
10
+ getCurrentUser: (unlockOptions: IUnlockOptionsEvent | null) => IJoliCoin | IGem;
11
+ createUpdatedUser: (balance: number, enableAutoDeduct: boolean) => IJoliCoin | IGem;
12
+ getUpdateKey: () => keyof Pick<IUnlockOptionsEvent, 'userJoliCoin' | 'userGem'>;
13
+ isEnough: (unlockOptions: IUnlockOptionsEvent | null, user: IJoliCoin | IGem) => boolean;
14
+ }
15
+ export declare const CURRENCY_HANDLERS: Record<CurrencyType, CurrencyHandler>;
@@ -1,3 +1,3 @@
1
- export { registerUseJolicoinCommand, createShowUnlockWithJolicoinModal } from './use-jolicoin';
1
+ export { registerUseJolicoinCommand, createShowUnlockWithCurrencyModal } from './use-jolicoin';
2
2
  export { registerUsePaymentCommand, createInitiateAndAwaitPayment } from './use-payment';
3
3
  export { registerUseUnloginCommand, createShowUnloginModal } from './use-unlogin';
@@ -1,16 +1,18 @@
1
- import { IJoliCoin } from '@/common/rewards/type';
2
- export declare const registerUseJolicoinCommand: (prefix: "JOLI_COIN" | "ADS-JOLI_COIN", params: {
3
- showUnlockWithJolicoinModal: (params: {
1
+ import { IGem, IJoliCoin } from '@/common/rewards/type';
2
+ export declare const registerUseJolicoinCommand: <T extends IJoliCoin | IGem>(prefix: "JOLI_COIN" | "ADS-JOLI_COIN" | "JOLI_GEM" | "ADS-JOLI_GEM", currency: "JOLI_COIN" | "JOLI_GEM", params: {
3
+ showUnlockWithCurrencyModal: (params: {
4
4
  enableAutoDeduct: boolean;
5
- userJoliCoin: IJoliCoin;
6
- joliCoinQuantity: number;
5
+ userCurrency: T;
6
+ quantity: number;
7
+ currency: T extends IJoliCoin ? "JOLI_COIN" : "JOLI_GEM";
7
8
  }) => Promise<"CONFIRM" | "CANCEL" | "FAILED">;
8
9
  }) => void;
9
- export declare const createShowUnlockWithJolicoinModal: (type: "JOLI_COIN" | "ADS-JOLI_COIN", buttons: {
10
+ export declare const createShowUnlockWithCurrencyModal: <T extends IJoliCoin | IGem>(type: "JOLI_COIN" | "ADS-JOLI_COIN" | "JOLI_GEM" | "ADS-JOLI_GEM", buttons: {
10
11
  confirmButtonText: string;
11
12
  cancelButtonText: string;
12
13
  }) => (params: {
13
14
  enableAutoDeduct: boolean;
14
- userJoliCoin: IJoliCoin;
15
- joliCoinQuantity: number;
15
+ userCurrency: T;
16
+ quantity: number;
17
+ currency: T extends IJoliCoin ? "JOLI_COIN" : "JOLI_GEM";
16
18
  }) => Promise<"FAILED" | "CANCEL" | "CONFIRM">;
@@ -1,16 +1,18 @@
1
- import { IJoliCoin } from '@/common/rewards/type';
1
+ import { IJoliCoin, IGem } from '@/common/rewards/type';
2
2
  import { IHttpClient } from '@/common/http';
3
- export declare const registerUsePaymentCommand: (prefix: "JOLI_COIN" | "ADS-JOLI_COIN", params: {
3
+ export declare const registerUsePaymentCommand: <T extends IJoliCoin | IGem>(prefix: "JOLI_COIN" | "ADS-JOLI_COIN" | "JOLI_GEM" | "ADS-JOLI_GEM", currency: "JOLI_COIN" | "JOLI_GEM", params: {
4
4
  httpClient: IHttpClient;
5
5
  initiateAndAwaitPayment: (params: {
6
- userJoliCoin: IJoliCoin;
7
- joliCoinQuantity: number;
6
+ userCurrency: T;
7
+ currencyQuantity: number;
8
+ currency: T extends IJoliCoin ? "JOLI_COIN" : "JOLI_GEM";
8
9
  }) => Promise<"SUCCESS" | "FAILED" | "CANCEL">;
9
10
  }) => void;
10
- export declare const createInitiateAndAwaitPayment: (type: "JOLI_COIN" | "ADS-JOLI_COIN", buttons: {
11
+ export declare const createInitiateAndAwaitPayment: (type: "JOLI_COIN" | "ADS-JOLI_COIN" | "JOLI_GEM" | "ADS-JOLI_GEM", buttons: {
11
12
  confirmButtonText: string;
12
13
  cancelButtonText: string;
13
- }) => (params: {
14
- userJoliCoin: IJoliCoin;
15
- joliCoinQuantity: number;
14
+ }) => <T extends IJoliCoin | IGem>(params: {
15
+ userCurrency: T;
16
+ currencyQuantity: number;
17
+ currency: T extends IJoliCoin ? "JOLI_COIN" : "JOLI_GEM";
16
18
  }) => Promise<"SUCCESS" | "FAILED" | "CANCEL">;
@@ -1,18 +1,16 @@
1
1
  import { IUseUnloginModalResultEvent } from '@/common/rewards/reward-emitter';
2
2
  import { IHttpClient } from '@/common/http';
3
- export declare const registerUseUnloginCommand: (prefix: "JOLI_COIN" | "ADS-JOLI_COIN", params: {
3
+ export declare const registerUseUnloginCommand: (prefix: "JOLI_COIN" | "ADS-JOLI_COIN" | "JOLI_GEM" | "ADS-JOLI_GEM", currency: "JOLI_COIN" | "JOLI_GEM", params: {
4
4
  httpClient: IHttpClient;
5
- showUnloginModal: () => Promise<{
5
+ showUnloginModal: (currency: "JOLI_COIN" | "JOLI_GEM") => Promise<{
6
6
  result: "CANCEL" | "FAILED" | "SUCCESS" | "ADS" | "NOT_SUPPORT";
7
7
  rewards?: {
8
- jolicoin?: {
9
- isFirstLogin: boolean;
10
- claimedRewardValue: number;
11
- };
8
+ isFirstLogin: boolean;
9
+ claimedRewardValue: number;
12
10
  };
13
11
  }>;
14
12
  }) => void;
15
- export declare const createShowUnloginModal: (type: "JOLI_COIN" | "ADS-JOLI_COIN", buttons: {
13
+ export declare const createShowUnloginModal: (type: "JOLI_COIN" | "ADS-JOLI_COIN" | "JOLI_GEM" | "ADS-JOLI_GEM", buttons: {
16
14
  confirmButtonText: string;
17
15
  cancelButtonText: string;
18
- }) => () => Promise<IUseUnloginModalResultEvent>;
16
+ }) => (currency: "JOLI_COIN" | "JOLI_GEM") => Promise<IUseUnloginModalResultEvent>;
@@ -0,0 +1,8 @@
1
+ export type CurrencyType = 'JOLI_COIN' | 'GEM';
2
+ export interface CurrencyConfig {
3
+ balanceEndpoint: string;
4
+ unlockEndpoint: string;
5
+ balanceDetailEndpoint: string;
6
+ unlockType: string;
7
+ }
8
+ export declare const CURRENCY_CONFIG: Record<CurrencyType, CurrencyConfig>;
@@ -1,18 +1,2 @@
1
- import { IHttpClient } from '@/common/http';
2
- import { UnlockOptionsEventName, IUnlockOptionsEvent } from '@/common/rewards/reward-emitter';
3
- import { IAdBreakParams } from '@/common/ads';
4
- import { EventPromiseHandler } from '../event-listener';
5
- import { createInitiateAndAwaitPayment, createShowUnlockWithJolicoinModal, createShowUnloginModal } from './commands';
6
- export declare const createCommonJolicoinRewardHandler: (type: "JOLI_COIN" | "ADS-JOLI_COIN", httpClient: IHttpClient, { handlers: { handleUnlockSuccess, handleUnlockFailed, unlockOptionsHandler, initiateAndAwaitPayment, showUnlockWithJolicoinModal, showUnloginModal } }: {
7
- handlers: {
8
- handleUnlockSuccess?: (data: {
9
- quantity: number;
10
- balance: number;
11
- }) => void;
12
- handleUnlockFailed?: (params: IAdBreakParams) => void;
13
- unlockOptionsHandler: EventPromiseHandler<IUnlockOptionsEvent, typeof UnlockOptionsEventName>;
14
- initiateAndAwaitPayment: ReturnType<typeof createInitiateAndAwaitPayment>;
15
- showUnlockWithJolicoinModal: ReturnType<typeof createShowUnlockWithJolicoinModal>;
16
- showUnloginModal: ReturnType<typeof createShowUnloginModal>;
17
- };
18
- }) => (params: IAdBreakParams) => Promise<boolean>;
1
+ export { createCommonJolicoinRewardHandler } from './jolicoin/jolicoin-handler';
2
+ export { createCommonGemRewardHandler } from './joligem/gem-handler';
@@ -0,0 +1,18 @@
1
+ import { IHttpClient } from '@/common/http';
2
+ import { UnlockOptionsEventName, IUnlockOptionsEvent } from '@/common/rewards/reward-emitter';
3
+ import { IAdBreakParams } from '@/common/ads';
4
+ import { EventPromiseHandler } from '../../event-listener';
5
+ import { createInitiateAndAwaitPayment, createShowUnlockWithCurrencyModal, createShowUnloginModal } from '../commands';
6
+ export declare const createCommonJolicoinRewardHandler: (type: "JOLI_COIN" | "ADS-JOLI_COIN", httpClient: IHttpClient, config: {
7
+ handlers: {
8
+ handleUnlockSuccess?: (data: {
9
+ quantity: number;
10
+ balance: number;
11
+ }) => void;
12
+ handleUnlockFailed?: (params: IAdBreakParams) => void;
13
+ unlockOptionsHandler: EventPromiseHandler<IUnlockOptionsEvent, typeof UnlockOptionsEventName>;
14
+ initiateAndAwaitPayment: ReturnType<typeof createInitiateAndAwaitPayment>;
15
+ showUnlockWithCurrencyModal: ReturnType<typeof createShowUnlockWithCurrencyModal>;
16
+ showUnloginModal: ReturnType<typeof createShowUnloginModal>;
17
+ };
18
+ }) => (params: IAdBreakParams) => Promise<boolean>;
@@ -0,0 +1,4 @@
1
+ import { IHttpClient } from '@/common/http';
2
+ export declare const fetchGemBalance: (httpClient: IHttpClient) => Promise<{
3
+ balance: number;
4
+ } | undefined>;
@@ -0,0 +1,19 @@
1
+ import { IHttpClient } from '@/common/http';
2
+ import { UnlockOptionsEventName, IUnlockOptionsEvent } from '@/common/rewards/reward-emitter';
3
+ import { IAdBreakParams } from '@/common/ads';
4
+ import { EventPromiseHandler } from '../../event-listener';
5
+ import { createInitiateAndAwaitPayment, createShowUnloginModal } from '../commands';
6
+ import { createShowUnlockWithCurrencyModal } from '../commands/use-jolicoin';
7
+ export declare const createCommonGemRewardHandler: (type: "JOLI_GEM" | "ADS-JOLI_GEM", httpClient: IHttpClient, { handlers: { handleUnlockSuccess, handleUnlockFailed, unlockOptionsHandler, initiateAndAwaitPayment, showUnlockWithCurrencyModal, showUnloginModal } }: {
8
+ handlers: {
9
+ handleUnlockSuccess?: (data: {
10
+ quantity: number;
11
+ balance: number;
12
+ }) => void;
13
+ handleUnlockFailed?: (params: IAdBreakParams) => void;
14
+ unlockOptionsHandler: EventPromiseHandler<IUnlockOptionsEvent, typeof UnlockOptionsEventName>;
15
+ initiateAndAwaitPayment: ReturnType<typeof createInitiateAndAwaitPayment>;
16
+ showUnlockWithCurrencyModal: ReturnType<typeof createShowUnlockWithCurrencyModal>;
17
+ showUnloginModal: ReturnType<typeof createShowUnloginModal>;
18
+ };
19
+ }) => (params: IAdBreakParams) => Promise<boolean>;
@@ -1,3 +1,5 @@
1
- import { IJoliCoin, IUnlockOption } from '@/common/rewards/type';
1
+ import { IJoliCoin, IGem, IUnlockOption } from '@/common/rewards/type';
2
2
  export declare const canUseJolicoin: (unlockOptions: IUnlockOption[], joliCoin?: IJoliCoin) => boolean;
3
3
  export declare const joliCoinIsEnough: (unlockOptions: IUnlockOption[], joliCoin?: IJoliCoin) => boolean;
4
+ export declare const canUseGem: (unlockOptions: IUnlockOption[], gem?: IGem) => boolean;
5
+ export declare const gemIsEnough: (unlockOptions: IUnlockOption[], gem?: IGem) => boolean;
@@ -1,9 +1,9 @@
1
1
  import { EventEmitter } from '@jolibox/common';
2
- import { IUnlockOption } from './type';
3
- import { IJoliCoin } from './type';
2
+ import { IUnlockOption, IJoliCoin, IGem } from './type';
4
3
  export interface IUnlockOptionsEvent {
5
4
  options: IUnlockOption[];
6
5
  userJoliCoin: IJoliCoin;
6
+ userGem?: IGem;
7
7
  }
8
8
  export declare const UnlockOptionsEventName: "UNLOCK_OPTIONS_CHANGED";
9
9
  export declare const InvokePaymentEventName: "INVOKE_PAYMENT";
@@ -16,6 +16,8 @@ export declare const InvokeUnloginModalEventName: "INVOKE_UNLOGIN_MODAL_EVENT";
16
16
  type IPaymentResult = 'SUCCESS' | 'FAILED' | 'CANCEL';
17
17
  export interface IPaymentEvent {
18
18
  userJoliCoin?: IJoliCoin;
19
+ userGem?: IGem;
20
+ currency: 'JOLI_COIN' | 'JOLI_GEM';
19
21
  paymentResult: IPaymentResult;
20
22
  }
21
23
  export interface IPaymentChoice {
@@ -25,8 +27,9 @@ export interface IPaymentChoice {
25
27
  appStoreProductId?: string;
26
28
  }
27
29
  export interface IInvokePaymentEvent {
28
- userJoliCoin: IJoliCoin;
29
- joliCoinQuantity: number;
30
+ userCurrency: IJoliCoin | IGem;
31
+ quantity: number;
32
+ currency: 'JOLI_COIN' | 'JOLI_GEM';
30
33
  enableAutoDeduct: boolean;
31
34
  confirmButtonText: string;
32
35
  cancelButtonText: string;
@@ -34,8 +37,9 @@ export interface IInvokePaymentEvent {
34
37
  }
35
38
  export interface IUseModalEvent {
36
39
  enableAutoDeduct: boolean;
37
- userJoliCoin: IJoliCoin;
38
- joliCoinQuantity: number;
40
+ userCurrency: IJoliCoin | IGem;
41
+ quantity: number;
42
+ currency: 'JOLI_COIN' | 'JOLI_GEM';
39
43
  confirmButtonText: string;
40
44
  cancelButtonText: string;
41
45
  sequenceId?: string;
@@ -43,6 +47,7 @@ export interface IUseModalEvent {
43
47
  export interface IUseUnloginModalEvent {
44
48
  confirmButtonText: string;
45
49
  cancelButtonText: string;
50
+ currency: 'JOLI_COIN' | 'JOLI_GEM';
46
51
  }
47
52
  export interface IUseModalResultEvent {
48
53
  useModalResult: 'CONFIRM' | 'CANCEL' | 'FAILED';
@@ -50,10 +55,9 @@ export interface IUseModalResultEvent {
50
55
  export interface IUseUnloginModalResultEvent {
51
56
  result: 'SUCCESS' | 'CANCEL' | 'ADS' | 'FAILED' | 'NOT_SUPPORT';
52
57
  rewards?: {
53
- jolicoin?: {
54
- claimedRewardValue: number;
55
- isFirstLogin: boolean;
56
- };
58
+ claimedRewardValue: number;
59
+ isFirstLogin: boolean;
60
+ currency?: 'JOLI_COIN' | 'JOLI_GEM';
57
61
  };
58
62
  }
59
63
  export interface IUseModalFrequencyConfig {
@@ -75,12 +79,18 @@ export interface IUseModalFrequencyConfig {
75
79
  }
76
80
  export interface RewardsEventMap extends Record<string, unknown[]> {
77
81
  [UnlockOptionsEventName]: [IUnlockOptionsEvent];
78
- [InvokePaymentEventName]: ['JOLI_COIN' | 'ADS-JOLI_COIN', IInvokePaymentEvent];
82
+ [InvokePaymentEventName]: [
83
+ 'JOLI_COIN' | 'ADS-JOLI_COIN' | 'JOLI_GEM' | 'ADS-JOLI_GEM',
84
+ IInvokePaymentEvent
85
+ ];
79
86
  [PaymentResultEventName]: [IPaymentEvent];
80
87
  [UseModalResultEventName]: [IUseModalResultEvent];
81
- [UseModalEventName]: ['JOLI_COIN' | 'ADS-JOLI_COIN', IUseModalEvent];
88
+ [UseModalEventName]: ['JOLI_COIN' | 'ADS-JOLI_COIN' | 'JOLI_GEM' | 'ADS-JOLI_GEM', IUseModalEvent];
82
89
  [UseModalFrequencyEventName]: [IUseModalFrequencyConfig];
83
- [InvokeUnloginModalEventName]: ['JOLI_COIN' | 'ADS-JOLI_COIN', IUseUnloginModalEvent];
90
+ [InvokeUnloginModalEventName]: [
91
+ 'JOLI_COIN' | 'ADS-JOLI_COIN' | 'JOLI_GEM' | 'ADS-JOLI_GEM',
92
+ IUseUnloginModalEvent
93
+ ];
84
94
  [UseUnloginModalResultEventName]: [IUseUnloginModalResultEvent];
85
95
  }
86
96
  export declare const originalRewardsEmitter: EventEmitter<RewardsEventMap, keyof RewardsEventMap>;
@@ -1,10 +1,12 @@
1
- export type RewardType = 'ADS' | 'JOLI_COIN' | 'JOLI_COIN_ONLY';
1
+ export type RewardType = 'ADS' | 'JOLI_COIN' | 'JOLI_COIN_ONLY' | 'JOLI_GEM' | 'JOLI_GEM_ONLY';
2
2
  import type { AdsRewardsHandler } from './registers/use-ads';
3
3
  import { IUseModalFrequencyConfig } from './reward-emitter';
4
4
  export interface RewardHandlerMap {
5
5
  ADS: AdsRewardsHandler;
6
6
  JOLI_COIN: (params?: unknown) => Promise<boolean>;
7
7
  JOLI_COIN_ONLY: (params?: unknown) => Promise<boolean>;
8
+ JOLI_GEM: (params?: unknown) => Promise<boolean>;
9
+ JOLI_GEM_ONLY: (params?: unknown) => Promise<boolean>;
8
10
  }
9
11
  export type RewardHandler<T extends RewardType> = RewardHandlerMap[T];
10
12
  export declare function createRewardsHelper(): {
@@ -2,13 +2,21 @@ export interface IJoliCoin {
2
2
  balance: number;
3
3
  enableAutoDeduct: boolean;
4
4
  }
5
- export type IUnlockOptionType = 'JOLI_COIN' | 'ADS';
5
+ export interface IGem {
6
+ balance: number;
7
+ enableAutoDeduct: boolean;
8
+ }
9
+ export type IUnlockOptionType = 'JOLI_COIN' | 'ADS' | 'JOLI_GEM';
6
10
  interface IJoliCoinChoice {
7
11
  joliCoinQuantity: number;
8
12
  }
13
+ interface IGemChoice {
14
+ joliGemQuantity: number;
15
+ }
9
16
  export interface IUnlockOption {
10
17
  type: IUnlockOptionType;
11
18
  joliCoinChoices: IJoliCoinChoice[];
19
+ joliGemChoices: IGemChoice | null;
12
20
  }
13
21
  export interface IJolicoinRewardOption {
14
22
  code: 'SUCCESS' | 'ERROR' | 'PARAMETER_ERROR' | 'EPISODE_LOCK_JUMP';
@@ -18,6 +26,7 @@ export interface IJolicoinRewardOption {
18
26
  };
19
27
  extra: {
20
28
  joliCoin: IJoliCoin;
29
+ joliGem?: IGem;
21
30
  };
22
31
  }
23
32
  export {};