@greatapps/common 1.1.634 → 1.1.635

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.
@@ -9,12 +9,20 @@ import { UpcomingInvoiceBanner } from "./UpcomingInvoiceBanner";
9
9
  import { CancelledSubscriptionBanner } from "./CancelledSubscriptionBanner";
10
10
  const UPCOMING_WINDOW_DAYS = 7;
11
11
  const PAYMENT_METHOD_BOLETO = 2;
12
- function SubscriptionBanner({ onReactivate, onDetails }) {
12
+ function SubscriptionBanner({
13
+ onReactivate,
14
+ onDetails
15
+ }) {
13
16
  const { data: { data: [subscription] = [] } = {} } = useActiveSubscription();
14
- const { data: pendingChargesData, isLoading: isLoadingCharges } = useCharges({ page: 1, limit: 1, status: [0] });
17
+ const { data: pendingChargesData, isLoading: isLoadingCharges } = useCharges({
18
+ page: 1,
19
+ limit: 1,
20
+ status: [0]
21
+ });
15
22
  if (isLoadingCharges) return null;
16
23
  if (!subscription?.date_due) return null;
17
- if (subscription.type === "free" || subscription.type === "trial") return null;
24
+ if (subscription.type === "free" || subscription.type === "trial")
25
+ return null;
18
26
  const dueDate = toCalendarDate(subscription.date_due);
19
27
  const today = toCalendarDate(/* @__PURE__ */ new Date());
20
28
  if (!dueDate || !today) return null;
@@ -23,7 +31,7 @@ function SubscriptionBanner({ onReactivate, onDetails }) {
23
31
  const hasPendingCharge = !!pendingChargesData?.data?.[0];
24
32
  const isBoleto = subscription.payment_method === PAYMENT_METHOD_BOLETO;
25
33
  const cancellationDate = toCalendarDate(subscription.date_cancellation);
26
- const isCancelled = !!cancellationDate && today.getTime() >= cancellationDate.getTime();
34
+ const isCancelled = !!cancellationDate && today.getTime() >= cancellationDate.getTime() && (!subscription.date_due || today.getTime() >= toCalendarDate(subscription.date_due).getTime());
27
35
  if (isCancelled) {
28
36
  return /* @__PURE__ */ jsx(CancelledSubscriptionBanner, { onReactivate });
29
37
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/navigation/SubscriptionBanner.tsx"],"sourcesContent":["'use client';\n\nimport { useActiveSubscription } from '../../modules/subscriptions/hooks/find-active-subscription.hook';\nimport { useCharges } from '../../modules/charges/hooks/charges.hook';\nimport { SUBSCRIPTION_GRACE_PERIOD_DAYS } from '../../modules/subscriptions/constants/subscription.constants';\nimport { toCalendarDate, daysBetween } from '../../infra/utils/date';\nimport { OverdueInvoiceBanner } from './OverdueInvoiceBanner';\nimport { UpcomingInvoiceBanner } from './UpcomingInvoiceBanner';\nimport { CancelledSubscriptionBanner } from './CancelledSubscriptionBanner';\n\nconst UPCOMING_WINDOW_DAYS = 7;\nconst PAYMENT_METHOD_BOLETO = 2;\n\ninterface SubscriptionBannerProps {\n onReactivate?: () => void;\n onDetails?: () => void;\n}\n\nexport function SubscriptionBanner({ onReactivate, onDetails }: SubscriptionBannerProps) {\n const { data: { data: [subscription] = [] } = {} } = useActiveSubscription();\n const { data: pendingChargesData, isLoading: isLoadingCharges } = useCharges({ page: 1, limit: 1, status: [0] });\n\n if (isLoadingCharges) return null;\n if (!subscription?.date_due) return null;\n if (subscription.type === 'free' || subscription.type === 'trial') return null;\n\n const dueDate = toCalendarDate(subscription.date_due);\n const today = toCalendarDate(new Date());\n if (!dueDate || !today) return null;\n\n const daysSinceDue = daysBetween(dueDate, today);\n const daysToDue = daysBetween(today, dueDate);\n const hasPendingCharge = !!pendingChargesData?.data?.[0];\n const isBoleto = subscription.payment_method === PAYMENT_METHOD_BOLETO;\n\n // Cancelamento só é efetivo quando date_cancellation existe E já passou do dia de hoje\n // (comparação por calendar-day em horário local, via toCalendarDate).\n const cancellationDate = toCalendarDate(subscription.date_cancellation);\n const isCancelled = !!cancellationDate && today.getTime() >= cancellationDate.getTime();\n\n if (isCancelled) {\n return <CancelledSubscriptionBanner onReactivate={onReactivate} />;\n }\n\n if (subscription.type === 'whitelabel') return null;\n\n if (daysSinceDue > 0 && daysSinceDue <= SUBSCRIPTION_GRACE_PERIOD_DAYS) {\n return <OverdueInvoiceBanner onDetails={onDetails} />;\n }\n\n if (isBoleto && hasPendingCharge && daysToDue >= 0 && daysToDue <= UPCOMING_WINDOW_DAYS) {\n return <UpcomingInvoiceBanner dueDate={dueDate} onDetails={onDetails} />;\n }\n\n return null;\n}\n"],"mappings":";AAyCW;AAvCX,SAAS,6BAA6B;AACtC,SAAS,kBAAkB;AAC3B,SAAS,sCAAsC;AAC/C,SAAS,gBAAgB,mBAAmB;AAC5C,SAAS,4BAA4B;AACrC,SAAS,6BAA6B;AACtC,SAAS,mCAAmC;AAE5C,MAAM,uBAAuB;AAC7B,MAAM,wBAAwB;AAOvB,SAAS,mBAAmB,EAAE,cAAc,UAAU,GAA4B;AACvF,QAAM,EAAE,MAAM,EAAE,MAAM,CAAC,YAAY,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,sBAAsB;AAC3E,QAAM,EAAE,MAAM,oBAAoB,WAAW,iBAAiB,IAAI,WAAW,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC;AAE/G,MAAI,iBAAkB,QAAO;AAC7B,MAAI,CAAC,cAAc,SAAU,QAAO;AACpC,MAAI,aAAa,SAAS,UAAU,aAAa,SAAS,QAAS,QAAO;AAE1E,QAAM,UAAU,eAAe,aAAa,QAAQ;AACpD,QAAM,QAAQ,eAAe,oBAAI,KAAK,CAAC;AACvC,MAAI,CAAC,WAAW,CAAC,MAAO,QAAO;AAE/B,QAAM,eAAe,YAAY,SAAS,KAAK;AAC/C,QAAM,YAAY,YAAY,OAAO,OAAO;AAC5C,QAAM,mBAAmB,CAAC,CAAC,oBAAoB,OAAO,CAAC;AACvD,QAAM,WAAW,aAAa,mBAAmB;AAIjD,QAAM,mBAAmB,eAAe,aAAa,iBAAiB;AACtE,QAAM,cAAc,CAAC,CAAC,oBAAoB,MAAM,QAAQ,KAAK,iBAAiB,QAAQ;AAEtF,MAAI,aAAa;AACf,WAAO,oBAAC,+BAA4B,cAA4B;AAAA,EAClE;AAEA,MAAI,aAAa,SAAS,aAAc,QAAO;AAE/C,MAAI,eAAe,KAAK,gBAAgB,gCAAgC;AACtE,WAAO,oBAAC,wBAAqB,WAAsB;AAAA,EACrD;AAEA,MAAI,YAAY,oBAAoB,aAAa,KAAK,aAAa,sBAAsB;AACvF,WAAO,oBAAC,yBAAsB,SAAkB,WAAsB;AAAA,EACxE;AAEA,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/navigation/SubscriptionBanner.tsx"],"sourcesContent":["\"use client\";\n\nimport { useActiveSubscription } from \"../../modules/subscriptions/hooks/find-active-subscription.hook\";\nimport { useCharges } from \"../../modules/charges/hooks/charges.hook\";\nimport { SUBSCRIPTION_GRACE_PERIOD_DAYS } from \"../../modules/subscriptions/constants/subscription.constants\";\nimport { toCalendarDate, daysBetween } from \"../../infra/utils/date\";\nimport { OverdueInvoiceBanner } from \"./OverdueInvoiceBanner\";\nimport { UpcomingInvoiceBanner } from \"./UpcomingInvoiceBanner\";\nimport { CancelledSubscriptionBanner } from \"./CancelledSubscriptionBanner\";\n\nconst UPCOMING_WINDOW_DAYS = 7;\nconst PAYMENT_METHOD_BOLETO = 2;\n\ninterface SubscriptionBannerProps {\n onReactivate?: () => void;\n onDetails?: () => void;\n}\n\nexport function SubscriptionBanner({\n onReactivate,\n onDetails,\n}: SubscriptionBannerProps) {\n const { data: { data: [subscription] = [] } = {} } = useActiveSubscription();\n const { data: pendingChargesData, isLoading: isLoadingCharges } = useCharges({\n page: 1,\n limit: 1,\n status: [0],\n });\n\n if (isLoadingCharges) return null;\n if (!subscription?.date_due) return null;\n if (subscription.type === \"free\" || subscription.type === \"trial\")\n return null;\n\n const dueDate = toCalendarDate(subscription.date_due);\n const today = toCalendarDate(new Date());\n if (!dueDate || !today) return null;\n\n const daysSinceDue = daysBetween(dueDate, today);\n const daysToDue = daysBetween(today, dueDate);\n const hasPendingCharge = !!pendingChargesData?.data?.[0];\n const isBoleto = subscription.payment_method === PAYMENT_METHOD_BOLETO;\n\n // Cancelamento só é efetivo quando date_cancellation existe E já passou do dia de hoje\n // (comparação por calendar-day em horário local, via toCalendarDate).\n const cancellationDate = toCalendarDate(subscription.date_cancellation);\n const isCancelled =\n !!cancellationDate &&\n today.getTime() >= cancellationDate.getTime() &&\n (!subscription.date_due ||\n today.getTime() >= toCalendarDate(subscription.date_due)!.getTime());\n\n if (isCancelled) {\n return <CancelledSubscriptionBanner onReactivate={onReactivate} />;\n }\n\n if (subscription.type === \"whitelabel\") return null;\n\n if (daysSinceDue > 0 && daysSinceDue <= SUBSCRIPTION_GRACE_PERIOD_DAYS) {\n return <OverdueInvoiceBanner onDetails={onDetails} />;\n }\n\n if (\n isBoleto &&\n hasPendingCharge &&\n daysToDue >= 0 &&\n daysToDue <= UPCOMING_WINDOW_DAYS\n ) {\n return <UpcomingInvoiceBanner dueDate={dueDate} onDetails={onDetails} />;\n }\n\n return null;\n}\n"],"mappings":";AAqDW;AAnDX,SAAS,6BAA6B;AACtC,SAAS,kBAAkB;AAC3B,SAAS,sCAAsC;AAC/C,SAAS,gBAAgB,mBAAmB;AAC5C,SAAS,4BAA4B;AACrC,SAAS,6BAA6B;AACtC,SAAS,mCAAmC;AAE5C,MAAM,uBAAuB;AAC7B,MAAM,wBAAwB;AAOvB,SAAS,mBAAmB;AAAA,EACjC;AAAA,EACA;AACF,GAA4B;AAC1B,QAAM,EAAE,MAAM,EAAE,MAAM,CAAC,YAAY,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,sBAAsB;AAC3E,QAAM,EAAE,MAAM,oBAAoB,WAAW,iBAAiB,IAAI,WAAW;AAAA,IAC3E,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ,CAAC,CAAC;AAAA,EACZ,CAAC;AAED,MAAI,iBAAkB,QAAO;AAC7B,MAAI,CAAC,cAAc,SAAU,QAAO;AACpC,MAAI,aAAa,SAAS,UAAU,aAAa,SAAS;AACxD,WAAO;AAET,QAAM,UAAU,eAAe,aAAa,QAAQ;AACpD,QAAM,QAAQ,eAAe,oBAAI,KAAK,CAAC;AACvC,MAAI,CAAC,WAAW,CAAC,MAAO,QAAO;AAE/B,QAAM,eAAe,YAAY,SAAS,KAAK;AAC/C,QAAM,YAAY,YAAY,OAAO,OAAO;AAC5C,QAAM,mBAAmB,CAAC,CAAC,oBAAoB,OAAO,CAAC;AACvD,QAAM,WAAW,aAAa,mBAAmB;AAIjD,QAAM,mBAAmB,eAAe,aAAa,iBAAiB;AACtE,QAAM,cACJ,CAAC,CAAC,oBACF,MAAM,QAAQ,KAAK,iBAAiB,QAAQ,MAC3C,CAAC,aAAa,YACb,MAAM,QAAQ,KAAK,eAAe,aAAa,QAAQ,EAAG,QAAQ;AAEtE,MAAI,aAAa;AACf,WAAO,oBAAC,+BAA4B,cAA4B;AAAA,EAClE;AAEA,MAAI,aAAa,SAAS,aAAc,QAAO;AAE/C,MAAI,eAAe,KAAK,gBAAgB,gCAAgC;AACtE,WAAO,oBAAC,wBAAqB,WAAsB;AAAA,EACrD;AAEA,MACE,YACA,oBACA,aAAa,KACb,aAAa,sBACb;AACA,WAAO,oBAAC,yBAAsB,SAAkB,WAAsB;AAAA,EACxE;AAEA,SAAO;AACT;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@greatapps/common",
3
- "version": "1.1.634",
3
+ "version": "1.1.635",
4
4
  "description": "Shared library for GreatApps frontend applications",
5
5
  "main": "./dist/index.mjs",
6
6
  "types": "./src/index.ts",
@@ -1,12 +1,12 @@
1
- 'use client';
1
+ "use client";
2
2
 
3
- import { useActiveSubscription } from '../../modules/subscriptions/hooks/find-active-subscription.hook';
4
- import { useCharges } from '../../modules/charges/hooks/charges.hook';
5
- import { SUBSCRIPTION_GRACE_PERIOD_DAYS } from '../../modules/subscriptions/constants/subscription.constants';
6
- import { toCalendarDate, daysBetween } from '../../infra/utils/date';
7
- import { OverdueInvoiceBanner } from './OverdueInvoiceBanner';
8
- import { UpcomingInvoiceBanner } from './UpcomingInvoiceBanner';
9
- import { CancelledSubscriptionBanner } from './CancelledSubscriptionBanner';
3
+ import { useActiveSubscription } from "../../modules/subscriptions/hooks/find-active-subscription.hook";
4
+ import { useCharges } from "../../modules/charges/hooks/charges.hook";
5
+ import { SUBSCRIPTION_GRACE_PERIOD_DAYS } from "../../modules/subscriptions/constants/subscription.constants";
6
+ import { toCalendarDate, daysBetween } from "../../infra/utils/date";
7
+ import { OverdueInvoiceBanner } from "./OverdueInvoiceBanner";
8
+ import { UpcomingInvoiceBanner } from "./UpcomingInvoiceBanner";
9
+ import { CancelledSubscriptionBanner } from "./CancelledSubscriptionBanner";
10
10
 
11
11
  const UPCOMING_WINDOW_DAYS = 7;
12
12
  const PAYMENT_METHOD_BOLETO = 2;
@@ -16,13 +16,21 @@ interface SubscriptionBannerProps {
16
16
  onDetails?: () => void;
17
17
  }
18
18
 
19
- export function SubscriptionBanner({ onReactivate, onDetails }: SubscriptionBannerProps) {
19
+ export function SubscriptionBanner({
20
+ onReactivate,
21
+ onDetails,
22
+ }: SubscriptionBannerProps) {
20
23
  const { data: { data: [subscription] = [] } = {} } = useActiveSubscription();
21
- const { data: pendingChargesData, isLoading: isLoadingCharges } = useCharges({ page: 1, limit: 1, status: [0] });
24
+ const { data: pendingChargesData, isLoading: isLoadingCharges } = useCharges({
25
+ page: 1,
26
+ limit: 1,
27
+ status: [0],
28
+ });
22
29
 
23
30
  if (isLoadingCharges) return null;
24
31
  if (!subscription?.date_due) return null;
25
- if (subscription.type === 'free' || subscription.type === 'trial') return null;
32
+ if (subscription.type === "free" || subscription.type === "trial")
33
+ return null;
26
34
 
27
35
  const dueDate = toCalendarDate(subscription.date_due);
28
36
  const today = toCalendarDate(new Date());
@@ -36,19 +44,28 @@ export function SubscriptionBanner({ onReactivate, onDetails }: SubscriptionBann
36
44
  // Cancelamento só é efetivo quando date_cancellation existe E já passou do dia de hoje
37
45
  // (comparação por calendar-day em horário local, via toCalendarDate).
38
46
  const cancellationDate = toCalendarDate(subscription.date_cancellation);
39
- const isCancelled = !!cancellationDate && today.getTime() >= cancellationDate.getTime();
47
+ const isCancelled =
48
+ !!cancellationDate &&
49
+ today.getTime() >= cancellationDate.getTime() &&
50
+ (!subscription.date_due ||
51
+ today.getTime() >= toCalendarDate(subscription.date_due)!.getTime());
40
52
 
41
53
  if (isCancelled) {
42
54
  return <CancelledSubscriptionBanner onReactivate={onReactivate} />;
43
55
  }
44
56
 
45
- if (subscription.type === 'whitelabel') return null;
57
+ if (subscription.type === "whitelabel") return null;
46
58
 
47
59
  if (daysSinceDue > 0 && daysSinceDue <= SUBSCRIPTION_GRACE_PERIOD_DAYS) {
48
60
  return <OverdueInvoiceBanner onDetails={onDetails} />;
49
61
  }
50
62
 
51
- if (isBoleto && hasPendingCharge && daysToDue >= 0 && daysToDue <= UPCOMING_WINDOW_DAYS) {
63
+ if (
64
+ isBoleto &&
65
+ hasPendingCharge &&
66
+ daysToDue >= 0 &&
67
+ daysToDue <= UPCOMING_WINDOW_DAYS
68
+ ) {
52
69
  return <UpcomingInvoiceBanner dueDate={dueDate} onDetails={onDetails} />;
53
70
  }
54
71