namirasoft-account-react 1.5.54 → 1.5.55

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.
@@ -55,7 +55,8 @@ export class NSAPaymentCacheService {
55
55
  sales_item_name: (_b = sales_item === null || sales_item === void 0 ? void 0 : sales_item.name) !== null && _b !== void 0 ? _b : null,
56
56
  sales_item_slug: (_c = sales_item === null || sales_item === void 0 ? void 0 : sales_item.slug) !== null && _c !== void 0 ? _c : null,
57
57
  product_slug: (_e = (_d = sales_item === null || sales_item === void 0 ? void 0 : sales_item.product) === null || _d === void 0 ? void 0 : _d.slug) !== null && _e !== void 0 ? _e : null,
58
- offer_name: (_f = offer === null || offer === void 0 ? void 0 : offer.name) !== null && _f !== void 0 ? _f : null
58
+ offer_name: (_f = offer === null || offer === void 0 ? void 0 : offer.name) !== null && _f !== void 0 ? _f : null,
59
+ ever_subscribed: false
59
60
  });
60
61
  });
61
62
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NSAPaymentCacheService.js","sourceRoot":"","sources":["../src/NSAPaymentCacheService.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAA2B,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAElI,MAAM,OAAO,sBAAsB;IAI/B,MAAM,CAAC,eAAe,CAAC,aAA2B,EAAE,aAAqB;;QAErE,IAAI,OAAO,GAAW,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,mCAAI,EAAE,CAAC;QACtE,IAAI,CAAC,OAAO,IAAI,CAAC,aAAa;YAC1B,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEjC,IAAI,KAAK,GAAG,sBAAsB,CAAC,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACtE,IAAI,KAAK;YACL,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAElC,IAAI,GAAG,GAAG,gCAAgC,OAAO,eAAe,aAAa,EAAE,CAAC;QAChF,IAAI,KAAK,GAAG,sBAAsB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,kBAAkB,CAAC,eAAe,GAAG,IAAI;YAC1E,OAAO,KAAK,CAAC,OAAO,CAAC;QAEzB,IAAI,OAAO,GAAG,sBAAsB,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YAExF,OAAO,sBAAsB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1C,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,sBAAsB,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC;QACjE,OAAO,OAAO,CAAC;IACnB,CAAC;IACO,MAAM,CAAC,UAAU,CAAC,OAAe,EAAE,aAAqB;;QAE5D,IAAI,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAA,QAAQ,CAAC,MAAM,mCAAI,EAAE,EAAE,aAAa,CAAC,CAAC;QAC1E,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO;YAClC,OAAO,KAAK,CAAC;QACjB,OAAO,IAAI,CAAC;IAChB,CAAC;IACO,MAAM,CAAO,IAAI,CAAC,aAA2B,EAAE,OAAe,EAAE,aAAqB;;;YAEzF,IAAI,0BAA0B,GAAG,MAAA,IAAI,UAAU,CAAC,4BAA4B,CAAC,CAAC,aAAa,EAAE,mCAAI,uCAAuC,CAAC;YAEzI,IAAI,MAAM,GAAG,IAAI,uBAAuB,CAAC,0BAA0B,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YAC/F,IAAI,GAAG,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;YAGjE,IAAI,KAAK,GAAG,sBAAsB,CAAC,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YACtE,IAAI,KAAK;gBACL,OAAO,KAAK,CAAC;YAGjB,IAAI,UAAU,GAAG,IAAI,sBAAsB,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YACjI,IAAI,QAAQ,GAAG,kBAAkB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YACzD,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACxC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;gBACtD,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;aAClF,CAAC,CAAC;YACH,OAAO,kBAAkB,CAAC,KAAK,CAAC,UAAU,EAAE;gBACxC,eAAe,EAAE,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,mCAAI,IAAI;gBACzC,eAAe,EAAE,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,mCAAI,IAAI;gBACzC,YAAY,EAAE,MAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,OAAO,0CAAE,IAAI,mCAAI,IAAI;gBAC/C,UAAU,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,mCAAI,IAAI;aAClC,CAAC,CAAC;QACP,CAAC;KAAA;;AAzDc,6BAAM,GAAyF,EAAE,CAAC"}
1
+ {"version":3,"file":"NSAPaymentCacheService.js","sourceRoot":"","sources":["../src/NSAPaymentCacheService.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { SubscriptionCookie } from 'namirasoft-payment';
2
+ import { SubscriptionCookie, SubscriptionCookieState } from 'namirasoft-payment';
3
3
  import { NSLink } from 'namirasoft-site-react';
4
4
  import { useEffect, useState } from 'react';
5
5
  import { NSAPaymentCacheService } from '../NSAPaymentCacheService';
@@ -20,10 +20,38 @@ export function NSAPlanStatus(props) {
20
20
  let value = state.value;
21
21
  if (!value)
22
22
  return null;
23
- let active = SubscriptionCookie.isActive(value);
23
+ let plan_state = SubscriptionCookie.getState(value);
24
+ let plan_name = SubscriptionCookie.getPlanName(value);
24
25
  let valid_until = value.valid_until ? new Date(value.valid_until).toLocaleDateString(undefined, { year: "numeric", month: "short", day: "numeric" }) : null;
25
- return (_jsxs("div", { className: Styles.nsa_plan, children: [_jsxs("div", { className: Styles.nsa_plan_header, children: [_jsx("span", { className: Styles.nsa_plan_label, children: "Current plan" }), _jsx("span", { className: [Styles.nsa_plan_badge, active ? Styles.nsa_plan_badge_active : Styles.nsa_plan_badge_inactive].join(" "), children: SubscriptionCookie.getStatusName(value) })] }), _jsx("span", { className: Styles.nsa_plan_name, children: SubscriptionCookie.getPlanName(value) }), valid_until &&
26
- _jsx("span", { className: Styles.nsa_plan_detail, children: `Paid until ${valid_until}` }), _jsx(NSLink, { href: SubscriptionCookie.getManageUrl(value), target: "_blank", classList: [Styles.nsa_plan_link], children: active ? "Manage plan" : "View plans" })] }));
26
+ let badge = Styles.nsa_plan_badge_none;
27
+ let detail = null;
28
+ let notice = null;
29
+ let link = "View plans";
30
+ switch (plan_state) {
31
+ case SubscriptionCookieState.Active:
32
+ badge = Styles.nsa_plan_badge_active;
33
+ if (valid_until)
34
+ detail = `Renews on ${valid_until}`;
35
+ link = "Manage plan";
36
+ break;
37
+ case SubscriptionCookieState.ActiveUntilPeriodEnd:
38
+ badge = Styles.nsa_plan_badge_ending;
39
+ detail = `Active until ${valid_until}`;
40
+ notice = `Your subscription is canceled and will not be charged again. You can keep using ${plan_name} until the end of the paid period on ${valid_until}.`;
41
+ link = "Renew plan";
42
+ break;
43
+ case SubscriptionCookieState.Canceled:
44
+ badge = Styles.nsa_plan_badge_canceled;
45
+ detail = "Your subscription has ended.";
46
+ break;
47
+ case SubscriptionCookieState.Free:
48
+ badge = Styles.nsa_plan_badge_active;
49
+ link = "Manage plan";
50
+ break;
51
+ }
52
+ return (_jsxs("div", { className: Styles.nsa_plan, children: [_jsxs("div", { className: Styles.nsa_plan_header, children: [_jsx("span", { className: Styles.nsa_plan_label, children: "Current plan" }), _jsx("span", { className: [Styles.nsa_plan_badge, badge].join(" "), children: SubscriptionCookie.getStatusName(value) })] }), _jsx("span", { className: Styles.nsa_plan_name, children: plan_name }), detail &&
53
+ _jsx("span", { className: Styles.nsa_plan_detail, children: detail }), notice &&
54
+ _jsx("span", { className: Styles.nsa_plan_notice, children: notice }), _jsx(NSLink, { href: SubscriptionCookie.getManageUrl(value), target: "_blank", classList: [Styles.nsa_plan_link], children: link })] }));
27
55
  }
28
56
  export default NSAPlanStatus;
29
57
  //# sourceMappingURL=NSAPlanStatus.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NSAPlanStatus.js","sourceRoot":"","sources":["../../src/components/NSAPlanStatus.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NSAPlanStatus.js","sourceRoot":"","sources":["../../src/components/NSAPlanStatus.tsx"],"names":[],"mappings":"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"}
@@ -51,11 +51,33 @@
51
51
  background-color: #dcf5e7;
52
52
  }
53
53
 
54
- .nsa_plan_badge_inactive {
54
+ .nsa_plan_badge_ending {
55
55
  color: #6b4e0b;
56
56
  background-color: #fbefd5;
57
57
  }
58
58
 
59
+ .nsa_plan_badge_canceled {
60
+ color: #8a1c1c;
61
+ background-color: #fbe0e0;
62
+ }
63
+
64
+ .nsa_plan_badge_none {
65
+ color: #4a4f6b;
66
+ background-color: #e9eaf0;
67
+ }
68
+
69
+ .nsa_plan_notice {
70
+ margin-top: 0.25rem;
71
+ padding: 0.5rem 0.75rem;
72
+ border-left: 3px solid #e0a526;
73
+ border-radius: 0.25rem;
74
+ font-size: 0.8125rem;
75
+ line-height: 1.25rem;
76
+ text-align: left;
77
+ color: #6b4e0b;
78
+ background-color: #fdf6e6;
79
+ }
80
+
59
81
  .nsa_plan_link {
60
82
  align-self: flex-start;
61
83
  margin-top: 0.25rem;
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "framework": "npm",
9
9
  "application": "package",
10
10
  "private": false,
11
- "version": "1.5.54",
11
+ "version": "1.5.55",
12
12
  "author": "Amir Abolhasani",
13
13
  "license": "MIT",
14
14
  "main": "./dist/main.js",
@@ -35,7 +35,7 @@
35
35
  "namirasoft-field": "^1.5.10",
36
36
  "namirasoft-history": "^1.5.1",
37
37
  "namirasoft-message": "^1.5.2",
38
- "namirasoft-payment": "^1.5.1",
38
+ "namirasoft-payment": "^1.5.3",
39
39
  "namirasoft-schema": "^1.5.1",
40
40
  "namirasoft-secret": "^1.5.4",
41
41
  "namirasoft-site-map": "^1.5.7",
@@ -59,7 +59,9 @@ export class NSAPaymentCacheService
59
59
  sales_item_name: sales_item?.name ?? null,
60
60
  sales_item_slug: sales_item?.slug ?? null,
61
61
  product_slug: sales_item?.product?.slug ?? null,
62
- offer_name: offer?.name ?? null
62
+ offer_name: offer?.name ?? null,
63
+ // only Payment API can tell whether a past subscription existed
64
+ ever_subscribed: false
63
65
  });
64
66
  }
65
67
  }
@@ -51,11 +51,33 @@
51
51
  background-color: #dcf5e7;
52
52
  }
53
53
 
54
- .nsa_plan_badge_inactive {
54
+ .nsa_plan_badge_ending {
55
55
  color: #6b4e0b;
56
56
  background-color: #fbefd5;
57
57
  }
58
58
 
59
+ .nsa_plan_badge_canceled {
60
+ color: #8a1c1c;
61
+ background-color: #fbe0e0;
62
+ }
63
+
64
+ .nsa_plan_badge_none {
65
+ color: #4a4f6b;
66
+ background-color: #e9eaf0;
67
+ }
68
+
69
+ .nsa_plan_notice {
70
+ margin-top: 0.25rem;
71
+ padding: 0.5rem 0.75rem;
72
+ border-left: 3px solid #e0a526;
73
+ border-radius: 0.25rem;
74
+ font-size: 0.8125rem;
75
+ line-height: 1.25rem;
76
+ text-align: left;
77
+ color: #6b4e0b;
78
+ background-color: #fdf6e6;
79
+ }
80
+
59
81
  .nsa_plan_link {
60
82
  align-self: flex-start;
61
83
  margin-top: 0.25rem;
@@ -1,4 +1,4 @@
1
- import { SubscriptionCookie, SubscriptionCookieValue } from 'namirasoft-payment';
1
+ import { SubscriptionCookie, SubscriptionCookieState, SubscriptionCookieValue } from 'namirasoft-payment';
2
2
  import { NSLink } from 'namirasoft-site-react';
3
3
  import { useEffect, useState } from 'react';
4
4
  import { NSAPaymentCacheService } from '../NSAPaymentCacheService';
@@ -45,28 +45,61 @@ export function NSAPlanStatus(props: NSAPlanStatusProps)
45
45
  if (!value)
46
46
  return null;
47
47
 
48
- let active = SubscriptionCookie.isActive(value);
48
+ let plan_state = SubscriptionCookie.getState(value);
49
+ let plan_name = SubscriptionCookie.getPlanName(value);
49
50
  let valid_until = value.valid_until ? new Date(value.valid_until).toLocaleDateString(undefined, { year: "numeric", month: "short", day: "numeric" }) : null;
50
51
 
52
+ let badge = Styles.nsa_plan_badge_none;
53
+ let detail: string | null = null;
54
+ let notice: string | null = null;
55
+ let link = "View plans";
56
+ switch (plan_state)
57
+ {
58
+ case SubscriptionCookieState.Active:
59
+ badge = Styles.nsa_plan_badge_active;
60
+ if (valid_until)
61
+ detail = `Renews on ${valid_until}`;
62
+ link = "Manage plan";
63
+ break;
64
+ case SubscriptionCookieState.ActiveUntilPeriodEnd:
65
+ badge = Styles.nsa_plan_badge_ending;
66
+ detail = `Active until ${valid_until}`;
67
+ notice = `Your subscription is canceled and will not be charged again. You can keep using ${plan_name} until the end of the paid period on ${valid_until}.`;
68
+ link = "Renew plan";
69
+ break;
70
+ case SubscriptionCookieState.Canceled:
71
+ badge = Styles.nsa_plan_badge_canceled;
72
+ detail = "Your subscription has ended.";
73
+ break;
74
+ case SubscriptionCookieState.Free:
75
+ badge = Styles.nsa_plan_badge_active;
76
+ link = "Manage plan";
77
+ break;
78
+ }
79
+
51
80
  return (
52
81
  <div className={Styles.nsa_plan}>
53
82
  <div className={Styles.nsa_plan_header}>
54
83
  <span className={Styles.nsa_plan_label}>Current plan</span>
55
- <span className={[Styles.nsa_plan_badge, active ? Styles.nsa_plan_badge_active : Styles.nsa_plan_badge_inactive].join(" ")}>
84
+ <span className={[Styles.nsa_plan_badge, badge].join(" ")}>
56
85
  {SubscriptionCookie.getStatusName(value)}
57
86
  </span>
58
87
  </div>
59
- <span className={Styles.nsa_plan_name}>{SubscriptionCookie.getPlanName(value)}</span>
88
+ <span className={Styles.nsa_plan_name}>{plan_name}</span>
89
+ {
90
+ detail &&
91
+ <span className={Styles.nsa_plan_detail}>{detail}</span>
92
+ }
60
93
  {
61
- valid_until &&
62
- <span className={Styles.nsa_plan_detail}>{`Paid until ${valid_until}`}</span>
94
+ notice &&
95
+ <span className={Styles.nsa_plan_notice}>{notice}</span>
63
96
  }
64
97
  <NSLink
65
98
  href={SubscriptionCookie.getManageUrl(value)}
66
99
  target="_blank"
67
100
  classList={[Styles.nsa_plan_link]}
68
101
  >
69
- {active ? "Manage plan" : "View plans"}
102
+ {link}
70
103
  </NSLink>
71
104
  </div>
72
105
  );