@greatapps/common 1.1.695 → 1.1.697
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/dist/components/account/ConfigurationsMyAccountModal.mjs +1 -1
- package/dist/components/account/ConfigurationsMyAccountModal.mjs.map +1 -1
- package/dist/components/account/ConfirmDeleteAccountModal.mjs.map +1 -1
- package/dist/components/account/ConfirmGlobalPreferencesModal.mjs.map +1 -1
- package/dist/components/account/DeleteAccountModal.mjs.map +1 -1
- package/dist/components/account/DisableTwoFactorAuthModal.mjs.map +1 -1
- package/dist/components/account/IsntPossibleDeleteAccountModal.mjs.map +1 -1
- package/dist/components/account/TwoFactorAuthModal.mjs.map +1 -1
- package/dist/components/account/hooks/useChangePhoneForm.mjs.map +1 -1
- package/dist/components/account/hooks/useTwoFactorAuthForm.mjs.map +1 -1
- package/dist/components/account/sections/ChangeEmailModal.mjs.map +1 -1
- package/dist/components/account/sections/ChangePasswordSection.mjs.map +1 -1
- package/dist/components/account/sections/ChangePhoneModal.mjs.map +1 -1
- package/dist/components/account/sections/MyProfileSection.mjs.map +1 -1
- package/dist/components/account/sections/PreferencesSection.mjs.map +1 -1
- package/dist/components/account/sections/SecuritySection.mjs.map +1 -1
- package/dist/components/account/sections/TokenSection.mjs.map +1 -1
- package/dist/components/embeds/ClarityEmbed.mjs.map +1 -1
- package/dist/components/embeds/CrispEmbed.mjs.map +1 -1
- package/dist/components/embeds/EmbedWidgets.mjs.map +1 -1
- package/dist/components/embeds/FrillEmbed.mjs.map +1 -1
- package/dist/components/layouts/AppMobileNavBar.mjs.map +1 -1
- package/dist/components/layouts/AppNavBar.mjs.map +1 -1
- package/dist/components/layouts/MdSideBarNavigation.mjs.map +1 -1
- package/dist/components/layouts/NavBar.mjs.map +1 -1
- package/dist/components/layouts/NotificationsPopover.mjs.map +1 -1
- package/dist/components/layouts/ProfilePopover.mjs.map +1 -1
- package/dist/components/layouts/SideBarNavigation.mjs.map +1 -1
- package/dist/components/layouts/UsersSelectorPopover.mjs.map +1 -1
- package/dist/components/layouts/WhitelabelCodes.mjs.map +1 -1
- package/dist/components/modals/BuyCreditsModal.mjs.map +1 -1
- package/dist/components/modals/CreditsDisabledModal.mjs.map +1 -1
- package/dist/components/modals/Modals.mjs.map +1 -1
- package/dist/components/modals/PaidPlanRequiredModal.mjs.map +1 -1
- package/dist/components/modals/cards/AddCardModal.mjs.map +1 -1
- package/dist/components/modals/cards/CannotDeleteCardModal.mjs.map +1 -1
- package/dist/components/modals/cards/CardFormFields.mjs.map +1 -1
- package/dist/components/modals/cards/DeleteCardModal.mjs.map +1 -1
- package/dist/components/navigation/CancelledSubscriptionBanner.mjs.map +1 -1
- package/dist/components/navigation/NavItemsContext.mjs.map +1 -1
- package/dist/components/navigation/OverdueInvoiceBanner.mjs.map +1 -1
- package/dist/components/navigation/PendingCancellationBanner.mjs.map +1 -1
- package/dist/components/navigation/ProjectSelectorPopover.mjs.map +1 -1
- package/dist/components/navigation/SubscriptionBanner.mjs.map +1 -1
- package/dist/components/navigation/TrialBanner.mjs.map +1 -1
- package/dist/components/navigation/UpcomingInvoiceBanner.mjs.map +1 -1
- package/dist/components/navigation/shells/TabsMobileShell.mjs.map +1 -1
- package/dist/components/navigation/subcomponents/BottomLinks.mjs.map +1 -1
- package/dist/components/navigation/subcomponents/ProjectSelector.mjs.map +1 -1
- package/dist/components/pages/NotFoundPage.mjs.map +1 -1
- package/dist/components/pages/notifications/Notifications.mjs.map +1 -1
- package/dist/components/ui/buttons/Button.mjs.map +1 -1
- package/dist/components/ui/buttons/CancelButton.mjs.map +1 -1
- package/dist/components/ui/buttons/CopyButton.mjs.map +1 -1
- package/dist/components/ui/data-display/Accordion.mjs.map +1 -1
- package/dist/components/ui/data-display/Badge.mjs.map +1 -1
- package/dist/components/ui/data-display/Card.mjs.map +1 -1
- package/dist/components/ui/data-display/CardBrandIcons.mjs.map +1 -1
- package/dist/components/ui/data-display/CardItem.mjs.map +1 -1
- package/dist/components/ui/data-display/Pagination.mjs.map +1 -1
- package/dist/components/ui/data-display/PaymentInfoCard.mjs.map +1 -1
- package/dist/components/ui/data-display/ScrollArea.mjs.map +1 -1
- package/dist/components/ui/data-display/Separator.mjs.map +1 -1
- package/dist/components/ui/data-display/Table.mjs.map +1 -1
- package/dist/components/ui/data-display/Tabs.mjs.map +1 -1
- package/dist/components/ui/feedback/CircularProgress.mjs.map +1 -1
- package/dist/components/ui/feedback/DefaultCircularProgress.mjs.map +1 -1
- package/dist/components/ui/feedback/LoadingOverlay.mjs.map +1 -1
- package/dist/components/ui/feedback/Progress.mjs.map +1 -1
- package/dist/components/ui/feedback/Skeleton.mjs.map +1 -1
- package/dist/components/ui/feedback/Toast.mjs.map +1 -1
- package/dist/components/ui/form/Calendar.mjs.map +1 -1
- package/dist/components/ui/form/Checkbox.mjs.map +1 -1
- package/dist/components/ui/form/ComboboxField.mjs.map +1 -1
- package/dist/components/ui/form/DatePicker.mjs.map +1 -1
- package/dist/components/ui/form/DateRangePicker.mjs.map +1 -1
- package/dist/components/ui/form/FormField.mjs.map +1 -1
- package/dist/components/ui/form/Input.mjs.map +1 -1
- package/dist/components/ui/form/InputOtp.mjs.map +1 -1
- package/dist/components/ui/form/PhoneInput.mjs.map +1 -1
- package/dist/components/ui/form/RadioGroup.mjs.map +1 -1
- package/dist/components/ui/form/Select.mjs +1 -1
- package/dist/components/ui/form/Select.mjs.map +1 -1
- package/dist/components/ui/form/Switch.mjs.map +1 -1
- package/dist/components/ui/form/Textarea.mjs.map +1 -1
- package/dist/components/ui/overlay/Command.mjs.map +1 -1
- package/dist/components/ui/overlay/Dialog.mjs.map +1 -1
- package/dist/components/ui/overlay/Popover.mjs.map +1 -1
- package/dist/components/ui/overlay/Sheet.mjs.map +1 -1
- package/dist/components/ui/overlay/Tooltip.mjs.map +1 -1
- package/dist/components/widgets/ImageUpload/ImageCropModal.mjs +10 -0
- package/dist/components/widgets/ImageUpload/ImageCropModal.mjs.map +1 -1
- package/dist/components/widgets/ImageUpload/ImageTooSmallModal.mjs.map +1 -1
- package/dist/components/widgets/ImageUpload/ImageUpload.mjs.map +1 -1
- package/dist/components/widgets/ImageUpload/index.mjs.map +1 -1
- package/dist/components/widgets/notifications/NotificationCard.mjs.map +1 -1
- package/dist/handlers.mjs.map +1 -1
- package/dist/hooks/copy-to-clipboard.hook.mjs.map +1 -1
- package/dist/hooks/useAuthQueryKey.mjs.map +1 -1
- package/dist/hooks/useBrandLoadingIcon.mjs.map +1 -1
- package/dist/hooks/useRouter.mjs.map +1 -1
- package/dist/http.mjs.map +1 -1
- package/dist/i18n/config.mjs.map +1 -1
- package/dist/i18n/country-language.mjs.map +1 -1
- package/dist/i18n/messages/en-us.mjs.map +1 -1
- package/dist/i18n/messages/es-es.mjs.map +1 -1
- package/dist/i18n/messages/index.mjs.map +1 -1
- package/dist/i18n/messages/pt-br.mjs.map +1 -1
- package/dist/i18n/normalize.mjs.map +1 -1
- package/dist/i18n/resolve-locale.mjs.map +1 -1
- package/dist/i18n.mjs.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/infra/http/api-fetch.mjs.map +1 -1
- package/dist/infra/route/parse-id.mjs.map +1 -1
- package/dist/infra/route/parse-numeric.mjs.map +1 -1
- package/dist/infra/route/safe-route-handler.mjs.map +1 -1
- package/dist/infra/route/search-params.mjs.map +1 -1
- package/dist/infra/utils/array.mjs.map +1 -1
- package/dist/infra/utils/date.mjs.map +1 -1
- package/dist/middleware.mjs.map +1 -1
- package/dist/modules/accounts/actions/account-management.action.mjs.map +1 -1
- package/dist/modules/accounts/actions/find-current-account.action.mjs.map +1 -1
- package/dist/modules/accounts/actions/get-account-token.action.mjs.map +1 -1
- package/dist/modules/accounts/actions/list-currencies.action.mjs.map +1 -1
- package/dist/modules/accounts/actions/list-timezones.action.mjs.map +1 -1
- package/dist/modules/accounts/hooks/current-account.hook.mjs.map +1 -1
- package/dist/modules/accounts/hooks/use-account-token.hook.mjs.map +1 -1
- package/dist/modules/accounts/hooks/use-currency-formatter.hook.mjs.map +1 -1
- package/dist/modules/accounts/hooks/useAccountManagement.mjs.map +1 -1
- package/dist/modules/accounts/hooks/useCurrencies.mjs.map +1 -1
- package/dist/modules/accounts/hooks/useTimezones.mjs.map +1 -1
- package/dist/modules/accounts/hooks/useViaCep.mjs.map +1 -1
- package/dist/modules/accounts/services/account-token.service.mjs.map +1 -1
- package/dist/modules/accounts/services/account.service.mjs.map +1 -1
- package/dist/modules/auth/actions/social-google-login.action.mjs.map +1 -1
- package/dist/modules/auth/actions/social-google-onboarding.action.mjs.map +1 -1
- package/dist/modules/auth/actions/unlink-google.action.mjs.map +1 -1
- package/dist/modules/auth/actions/validate-session.action.mjs.map +1 -1
- package/dist/modules/auth/actions/verify-two-factor.action.mjs.map +1 -1
- package/dist/modules/auth/hooks/login.hook.mjs.map +1 -1
- package/dist/modules/auth/hooks/logout.hook.mjs.map +1 -1
- package/dist/modules/auth/hooks/register.hook.mjs.map +1 -1
- package/dist/modules/auth/hooks/social-google-login.hook.mjs.map +1 -1
- package/dist/modules/auth/hooks/social-google-onboarding.hook.mjs.map +1 -1
- package/dist/modules/auth/hooks/unlink-google.hook.mjs.map +1 -1
- package/dist/modules/auth/hooks/useManagementPermissions.mjs.map +1 -1
- package/dist/modules/auth/hooks/useUserQuery.mjs.map +1 -1
- package/dist/modules/auth/utils/assert-management-permission.mjs.map +1 -1
- package/dist/modules/auth/utils/assert-management-subscription.mjs.map +1 -1
- package/dist/modules/auth/utils/assert-paid-subscription.mjs.map +1 -1
- package/dist/modules/auth/utils/assert-subscription-addon.mjs.map +1 -1
- package/dist/modules/auth/utils/build-wl-override.mjs.map +1 -1
- package/dist/modules/auth/utils/require-token-not-expired.mjs.map +1 -1
- package/dist/modules/auth/utils/require-valid-session.mjs.map +1 -1
- package/dist/modules/cards/actions/create-card.action.mjs.map +1 -1
- package/dist/modules/cards/actions/create-setup-intent.action.mjs.map +1 -1
- package/dist/modules/cards/actions/delete-card.action.mjs.map +1 -1
- package/dist/modules/cards/actions/set-default-card.action.mjs.map +1 -1
- package/dist/modules/cards/handlers/find-card-by-id.handler.mjs.map +1 -1
- package/dist/modules/cards/handlers/list-cards.handler.mjs.map +1 -1
- package/dist/modules/cards/hooks/card-by-id.hook.mjs.map +1 -1
- package/dist/modules/cards/hooks/cards.hook.mjs.map +1 -1
- package/dist/modules/cards/hooks/create-card.hook.mjs.map +1 -1
- package/dist/modules/cards/hooks/create-setup-intent.hook.mjs.map +1 -1
- package/dist/modules/cards/hooks/delete-card.hook.mjs.map +1 -1
- package/dist/modules/cards/hooks/delete-confirmation.hook.mjs.map +1 -1
- package/dist/modules/cards/hooks/handle-delete-card.hook.mjs.map +1 -1
- package/dist/modules/cards/hooks/set-default-card.hook.mjs.map +1 -1
- package/dist/modules/cards/services/cards.service.mjs.map +1 -1
- package/dist/modules/cards/types.mjs.map +1 -1
- package/dist/modules/charges/actions/charge-action.action.mjs.map +1 -1
- package/dist/modules/charges/handlers/find-charge-by-id.handler.mjs.map +1 -1
- package/dist/modules/charges/handlers/list-charges.handler.mjs.map +1 -1
- package/dist/modules/charges/hooks/charge-action.hook.mjs.map +1 -1
- package/dist/modules/charges/hooks/charge-by-id.hook.mjs.map +1 -1
- package/dist/modules/charges/hooks/charges.hook.mjs.map +1 -1
- package/dist/modules/charges/services/charges.service.mjs.map +1 -1
- package/dist/modules/charges/types/charge.type.mjs.map +1 -1
- package/dist/modules/ia-credits/handlers/list-ia-credits.handler.mjs.map +1 -1
- package/dist/modules/ia-credits/hooks/ia-credits.hook.mjs.map +1 -1
- package/dist/modules/images/actions/process-image.action.mjs.map +1 -1
- package/dist/modules/images/constants/image.constants.mjs.map +1 -1
- package/dist/modules/images/hooks/use-image-upload.hook.mjs +4 -1
- package/dist/modules/images/hooks/use-image-upload.hook.mjs.map +1 -1
- package/dist/modules/images/services/image-processing.service.mjs.map +1 -1
- package/dist/modules/images/utils/base64.mjs.map +1 -1
- package/dist/modules/images/utils/compress-image.mjs.map +1 -1
- package/dist/modules/images/utils/crop-image.mjs +6 -2
- package/dist/modules/images/utils/crop-image.mjs.map +1 -1
- package/dist/modules/images/utils/validate-image.mjs.map +1 -1
- package/dist/modules/pages/constants/query-keys.constants.mjs.map +1 -1
- package/dist/modules/pages/handlers/count-pages.handler.mjs.map +1 -1
- package/dist/modules/pages/hooks/count-pages.hook.mjs.map +1 -1
- package/dist/modules/pages/services/pages.service.mjs.map +1 -1
- package/dist/modules/plans/handlers/find-plan-by-id.handler.mjs.map +1 -1
- package/dist/modules/plans/handlers/list-plans.handler.mjs.map +1 -1
- package/dist/modules/plans/hooks/list-plans.hook.mjs.map +1 -1
- package/dist/modules/plans/hooks/use-has-plan-addon.hook.mjs.map +1 -1
- package/dist/modules/plans/hooks/use-plan-by-id.hook.mjs.map +1 -1
- package/dist/modules/plans/services/plans.service.mjs.map +1 -1
- package/dist/modules/plans/types/plan.type.mjs.map +1 -1
- package/dist/modules/plans/utils/map-api-plan-to-ui.mjs.map +1 -1
- package/dist/modules/projects/actions/add-project-user.action.mjs.map +1 -1
- package/dist/modules/projects/actions/create-project.action.mjs.map +1 -1
- package/dist/modules/projects/actions/delete-project.action.mjs.map +1 -1
- package/dist/modules/projects/actions/find-project.action.mjs.map +1 -1
- package/dist/modules/projects/actions/list-project-users.action.mjs.map +1 -1
- package/dist/modules/projects/actions/list-projects.action.mjs.map +1 -1
- package/dist/modules/projects/actions/remove-project-user.action.mjs.map +1 -1
- package/dist/modules/projects/actions/update-project.action.mjs.map +1 -1
- package/dist/modules/projects/handlers/find-project.handler.mjs.map +1 -1
- package/dist/modules/projects/handlers/list-all-account-users.handler.mjs.map +1 -1
- package/dist/modules/projects/handlers/list-available-users.handler.mjs.map +1 -1
- package/dist/modules/projects/handlers/list-project-users.handler.mjs.map +1 -1
- package/dist/modules/projects/handlers/list-projects.handler.mjs.map +1 -1
- package/dist/modules/projects/hooks/add-project-user.hook.mjs.map +1 -1
- package/dist/modules/projects/hooks/create-project.hook.mjs.map +1 -1
- package/dist/modules/projects/hooks/delete-project.hook.mjs.map +1 -1
- package/dist/modules/projects/hooks/find-project.hook.mjs.map +1 -1
- package/dist/modules/projects/hooks/list-all-account-users.hook.mjs.map +1 -1
- package/dist/modules/projects/hooks/list-available-users.hook.mjs.map +1 -1
- package/dist/modules/projects/hooks/list-infinite-projects.hook.mjs.map +1 -1
- package/dist/modules/projects/hooks/list-project-users.hook.mjs.map +1 -1
- package/dist/modules/projects/hooks/list-projects.hook.mjs.map +1 -1
- package/dist/modules/projects/hooks/remove-project-user.hook.mjs.map +1 -1
- package/dist/modules/projects/hooks/update-project.hook.mjs.map +1 -1
- package/dist/modules/projects/services/projects.service.mjs.map +1 -1
- package/dist/modules/subscriptions/actions/calculate-subscription.action.mjs.map +1 -1
- package/dist/modules/subscriptions/actions/list-subscriptions.action.mjs.map +1 -1
- package/dist/modules/subscriptions/actions/update-subscription-payment.action.mjs.map +1 -1
- package/dist/modules/subscriptions/actions/update-subscription-plan.action.mjs.map +1 -1
- package/dist/modules/subscriptions/constants/query-keys.constants.mjs.map +1 -1
- package/dist/modules/subscriptions/constants/subscription.constants.mjs.map +1 -1
- package/dist/modules/subscriptions/handlers/list-subscriptions.handler.mjs.map +1 -1
- package/dist/modules/subscriptions/hooks/calculate-subscription.hook.mjs.map +1 -1
- package/dist/modules/subscriptions/hooks/find-active-subscription.hook.mjs.map +1 -1
- package/dist/modules/subscriptions/hooks/list-subscriptions.hook.mjs.map +1 -1
- package/dist/modules/subscriptions/hooks/update-subscription-payment.hook.mjs.map +1 -1
- package/dist/modules/subscriptions/hooks/update-subscription-plan.hook.mjs.map +1 -1
- package/dist/modules/subscriptions/hooks/use-cancelled-subscription-guard.mjs.map +1 -1
- package/dist/modules/subscriptions/types/calculate-subscription.type.mjs.map +1 -1
- package/dist/modules/subscriptions/types/pix-pending.type.mjs.map +1 -1
- package/dist/modules/subscriptions/utils/build-plan-extras.mjs.map +1 -1
- package/dist/modules/subscriptions/utils/get-subscription-cancellation-state.mjs.map +1 -1
- package/dist/modules/subscriptions/utils/get-subscription-expiry-date.mjs.map +1 -1
- package/dist/modules/subscriptions/utils/has-subscription-expired.mjs.map +1 -1
- package/dist/modules/subscriptions/utils/periodicity.mjs.map +1 -1
- package/dist/modules/subscriptions/utils/resolve-plan-extras-prices.mjs.map +1 -1
- package/dist/modules/users/action/find-user-by-id.action.mjs.map +1 -1
- package/dist/modules/users/action/mark-all-messages-as-read.action.mjs.map +1 -1
- package/dist/modules/users/action/mark-message-as-read.action.mjs.map +1 -1
- package/dist/modules/users/handlers/list-messages.handler.mjs.map +1 -1
- package/dist/modules/users/hooks/messages.hook.mjs.map +1 -1
- package/dist/modules/users/services/messages.service.mjs.map +1 -1
- package/dist/modules/whitelabel/actions/find-whitelabel.action.mjs.map +1 -1
- package/dist/modules/whitelabel/actions/revalidate-whitelabel.action.mjs.map +1 -1
- package/dist/modules/whitelabel/utils/normalize-hostname.mjs.map +1 -1
- package/dist/providers/auth.provider.mjs.map +1 -1
- package/dist/providers/navigation.provider.mjs.map +1 -1
- package/dist/providers/whitelabel.provider.mjs.map +1 -1
- package/dist/route.mjs.map +1 -1
- package/dist/store/useAccountModals.mjs.map +1 -1
- package/dist/store/useBuyCreditsModal.mjs.map +1 -1
- package/dist/store/useCreditsDisabledModal.mjs.map +1 -1
- package/dist/store/useDesktopSidebarStore.mjs.map +1 -1
- package/dist/store/useMdSidebarStore.mjs.map +1 -1
- package/dist/store/usePaidPlanRequiredModal.mjs.map +1 -1
- package/dist/utils/constants/br-states.mjs.map +1 -1
- package/dist/utils/countries.mjs.map +1 -1
- package/dist/utils/format/currency.mjs.map +1 -1
- package/dist/utils/intl/cookie-domain.mjs.map +1 -1
- package/dist/utils/intl/locale-cookie.mjs.map +1 -1
- package/dist/utils/next-navigation.mjs.map +1 -1
- package/dist/utils/redirect.mjs.map +1 -1
- package/dist/utils/safeMutationAction.mjs.map +1 -1
- package/dist/utils/safeServerAction.mjs.map +1 -1
- package/dist/utils/withAction.mjs.map +1 -1
- package/package.json +115 -115
- package/src/components/account/ConfigurationsMyAccountModal.tsx +179 -179
- package/src/components/account/ConfirmDeleteAccountModal.tsx +110 -110
- package/src/components/account/ConfirmGlobalPreferencesModal.tsx +68 -68
- package/src/components/account/DeleteAccountModal.tsx +160 -160
- package/src/components/account/DisableTwoFactorAuthModal.tsx +92 -92
- package/src/components/account/IsntPossibleDeleteAccountModal.tsx +51 -51
- package/src/components/account/TwoFactorAuthModal.tsx +220 -220
- package/src/components/account/hooks/useChangePhoneForm.tsx +113 -113
- package/src/components/account/hooks/useTwoFactorAuthForm.tsx +116 -116
- package/src/components/account/sections/ChangeEmailModal.tsx +239 -239
- package/src/components/account/sections/ChangePasswordSection.tsx +68 -68
- package/src/components/account/sections/ChangePhoneModal.tsx +273 -273
- package/src/components/account/sections/MyProfileSection.tsx +276 -276
- package/src/components/account/sections/PreferencesSection.tsx +278 -278
- package/src/components/account/sections/SecuritySection.tsx +102 -102
- package/src/components/account/sections/TokenSection.tsx +85 -85
- package/src/components/embeds/ClarityEmbed.tsx +70 -70
- package/src/components/embeds/CrispEmbed.tsx +195 -195
- package/src/components/embeds/EmbedWidgets.tsx +62 -62
- package/src/components/embeds/FrillEmbed.tsx +146 -146
- package/src/components/layouts/AppMobileNavBar.tsx +214 -214
- package/src/components/layouts/AppNavBar.tsx +40 -40
- package/src/components/layouts/MdSideBarNavigation.tsx +56 -56
- package/src/components/layouts/NavBar.tsx +228 -228
- package/src/components/layouts/NotificationsPopover.tsx +120 -120
- package/src/components/layouts/ProfilePopover.tsx +191 -191
- package/src/components/layouts/SideBarNavigation.tsx +65 -65
- package/src/components/layouts/UsersSelectorPopover.tsx +236 -236
- package/src/components/layouts/WhitelabelCodes.tsx +59 -59
- package/src/components/modals/BuyCreditsModal.tsx +390 -390
- package/src/components/modals/CreditsDisabledModal.tsx +62 -62
- package/src/components/modals/Modals.tsx +25 -25
- package/src/components/modals/PaidPlanRequiredModal.tsx +60 -60
- package/src/components/modals/cards/AddCardModal.tsx +420 -420
- package/src/components/modals/cards/CannotDeleteCardModal.tsx +124 -124
- package/src/components/modals/cards/CardFormFields.tsx +363 -363
- package/src/components/modals/cards/DeleteCardModal.tsx +136 -136
- package/src/components/navigation/CancelledSubscriptionBanner.tsx +62 -62
- package/src/components/navigation/NavItemsContext.ts +20 -20
- package/src/components/navigation/OverdueInvoiceBanner.tsx +51 -51
- package/src/components/navigation/PendingCancellationBanner.tsx +60 -60
- package/src/components/navigation/ProjectSelectorPopover.tsx +180 -180
- package/src/components/navigation/SubscriptionBanner.tsx +94 -94
- package/src/components/navigation/TrialBanner.tsx +54 -54
- package/src/components/navigation/UpcomingInvoiceBanner.tsx +55 -55
- package/src/components/navigation/shells/TabsMobileShell.tsx +74 -74
- package/src/components/navigation/subcomponents/BottomLinks.tsx +85 -85
- package/src/components/navigation/subcomponents/ProjectSelector.tsx +184 -184
- package/src/components/pages/NotFoundPage.tsx +75 -75
- package/src/components/pages/notifications/Notifications.tsx +190 -190
- package/src/components/ui/buttons/Button.tsx +77 -77
- package/src/components/ui/buttons/CancelButton.tsx +14 -14
- package/src/components/ui/buttons/CopyButton.tsx +59 -59
- package/src/components/ui/data-display/Accordion.tsx +81 -81
- package/src/components/ui/data-display/Badge.tsx +47 -47
- package/src/components/ui/data-display/Card.tsx +93 -93
- package/src/components/ui/data-display/CardBrandIcons.tsx +336 -336
- package/src/components/ui/data-display/CardItem.tsx +135 -135
- package/src/components/ui/data-display/Pagination.tsx +126 -126
- package/src/components/ui/data-display/PaymentInfoCard.tsx +193 -193
- package/src/components/ui/data-display/ScrollArea.tsx +59 -59
- package/src/components/ui/data-display/Separator.tsx +29 -29
- package/src/components/ui/data-display/Table.tsx +117 -117
- package/src/components/ui/data-display/Tabs.tsx +67 -67
- package/src/components/ui/feedback/CircularProgress.tsx +79 -79
- package/src/components/ui/feedback/DefaultCircularProgress.tsx +67 -67
- package/src/components/ui/feedback/LoadingOverlay.tsx +30 -30
- package/src/components/ui/feedback/Progress.tsx +40 -40
- package/src/components/ui/feedback/Skeleton.tsx +5 -5
- package/src/components/ui/feedback/Toast.tsx +104 -104
- package/src/components/ui/form/Calendar.tsx +228 -228
- package/src/components/ui/form/Checkbox.tsx +31 -31
- package/src/components/ui/form/ComboboxField.tsx +159 -159
- package/src/components/ui/form/DatePicker.tsx +100 -100
- package/src/components/ui/form/DateRangePicker.tsx +111 -111
- package/src/components/ui/form/FormField.tsx +133 -133
- package/src/components/ui/form/Input.tsx +20 -20
- package/src/components/ui/form/InputOtp.tsx +80 -80
- package/src/components/ui/form/PhoneInput.tsx +210 -210
- package/src/components/ui/form/RadioGroup.tsx +45 -45
- package/src/components/ui/form/Select.tsx +200 -200
- package/src/components/ui/form/Switch.tsx +32 -32
- package/src/components/ui/form/Textarea.tsx +19 -19
- package/src/components/ui/overlay/Command.tsx +185 -185
- package/src/components/ui/overlay/Dialog.tsx +153 -153
- package/src/components/ui/overlay/Popover.tsx +49 -49
- package/src/components/ui/overlay/Sheet.tsx +170 -170
- package/src/components/ui/overlay/Tooltip.tsx +62 -62
- package/src/components/widgets/ImageUpload/ImageCropModal.tsx +392 -382
- package/src/components/widgets/ImageUpload/ImageTooSmallModal.tsx +62 -62
- package/src/components/widgets/ImageUpload/ImageUpload.tsx +131 -131
- package/src/components/widgets/ImageUpload/index.ts +3 -3
- package/src/components/widgets/notifications/NotificationCard.tsx +73 -73
- package/src/handlers.ts +22 -22
- package/src/hooks/copy-to-clipboard.hook.tsx +67 -67
- package/src/hooks/useAuthQueryKey.ts +32 -32
- package/src/hooks/useBrandLoadingIcon.tsx +18 -18
- package/src/hooks/useRouter.ts +38 -38
- package/src/http.ts +1 -1
- package/src/i18n/config.ts +17 -17
- package/src/i18n/country-language.ts +60 -60
- package/src/i18n/messages/en-us.ts +519 -519
- package/src/i18n/messages/es-es.ts +520 -520
- package/src/i18n/messages/index.ts +24 -24
- package/src/i18n/messages/pt-br.ts +543 -543
- package/src/i18n/normalize.ts +15 -15
- package/src/i18n/resolve-locale.ts +77 -77
- package/src/i18n.ts +10 -10
- package/src/index.ts +584 -584
- package/src/infra/http/api-fetch.ts +39 -39
- package/src/infra/route/parse-id.ts +9 -9
- package/src/infra/route/parse-numeric.ts +16 -16
- package/src/infra/route/safe-route-handler.ts +16 -16
- package/src/infra/route/search-params.ts +9 -9
- package/src/infra/utils/array.ts +167 -167
- package/src/infra/utils/date.ts +59 -59
- package/src/middleware.ts +4 -4
- package/src/modules/accounts/actions/account-management.action.ts +109 -109
- package/src/modules/accounts/actions/find-current-account.action.ts +9 -9
- package/src/modules/accounts/actions/get-account-token.action.ts +8 -8
- package/src/modules/accounts/actions/list-currencies.action.ts +8 -8
- package/src/modules/accounts/actions/list-timezones.action.ts +8 -8
- package/src/modules/accounts/hooks/current-account.hook.tsx +26 -26
- package/src/modules/accounts/hooks/use-account-token.hook.tsx +14 -14
- package/src/modules/accounts/hooks/use-currency-formatter.hook.tsx +32 -32
- package/src/modules/accounts/hooks/useAccountManagement.ts +95 -95
- package/src/modules/accounts/hooks/useCurrencies.ts +18 -18
- package/src/modules/accounts/hooks/useTimezones.ts +18 -18
- package/src/modules/accounts/hooks/useViaCep.ts +25 -25
- package/src/modules/accounts/services/account-token.service.ts +52 -52
- package/src/modules/accounts/services/account.service.ts +243 -243
- package/src/modules/accounts/types.ts +230 -230
- package/src/modules/auth/actions/social-google-login.action.ts +12 -12
- package/src/modules/auth/actions/social-google-onboarding.action.ts +13 -13
- package/src/modules/auth/actions/unlink-google.action.ts +8 -8
- package/src/modules/auth/actions/validate-session.action.ts +70 -70
- package/src/modules/auth/actions/verify-two-factor.action.ts +19 -19
- package/src/modules/auth/hooks/login.hook.tsx +13 -13
- package/src/modules/auth/hooks/logout.hook.tsx +11 -11
- package/src/modules/auth/hooks/register.hook.tsx +11 -11
- package/src/modules/auth/hooks/social-google-login.hook.tsx +13 -13
- package/src/modules/auth/hooks/social-google-onboarding.hook.tsx +13 -13
- package/src/modules/auth/hooks/unlink-google.hook.tsx +13 -13
- package/src/modules/auth/hooks/useManagementPermissions.ts +52 -52
- package/src/modules/auth/hooks/useUserQuery.ts +103 -103
- package/src/modules/auth/types/management-permission.type.ts +14 -14
- package/src/modules/auth/utils/assert-management-permission.ts +56 -56
- package/src/modules/auth/utils/assert-management-subscription.ts +38 -38
- package/src/modules/auth/utils/assert-paid-subscription.ts +47 -47
- package/src/modules/auth/utils/assert-subscription-addon.ts +42 -42
- package/src/modules/auth/utils/build-wl-override.ts +43 -43
- package/src/modules/auth/utils/require-token-not-expired.ts +53 -53
- package/src/modules/auth/utils/require-valid-session.ts +35 -35
- package/src/modules/cards/actions/create-card.action.ts +9 -9
- package/src/modules/cards/actions/create-setup-intent.action.ts +8 -8
- package/src/modules/cards/actions/delete-card.action.ts +8 -8
- package/src/modules/cards/actions/set-default-card.action.ts +8 -8
- package/src/modules/cards/handlers/find-card-by-id.handler.ts +15 -15
- package/src/modules/cards/handlers/list-cards.handler.ts +10 -10
- package/src/modules/cards/hooks/card-by-id.hook.ts +17 -17
- package/src/modules/cards/hooks/cards.hook.ts +22 -22
- package/src/modules/cards/hooks/create-card.hook.ts +30 -30
- package/src/modules/cards/hooks/create-setup-intent.hook.ts +11 -11
- package/src/modules/cards/hooks/delete-card.hook.ts +52 -52
- package/src/modules/cards/hooks/delete-confirmation.hook.ts +40 -40
- package/src/modules/cards/hooks/handle-delete-card.hook.ts +47 -47
- package/src/modules/cards/hooks/set-default-card.hook.ts +55 -55
- package/src/modules/cards/services/cards.service.ts +136 -136
- package/src/modules/cards/types.ts +52 -52
- package/src/modules/charges/actions/charge-action.action.ts +13 -13
- package/src/modules/charges/handlers/find-charge-by-id.handler.ts +14 -14
- package/src/modules/charges/handlers/list-charges.handler.ts +15 -15
- package/src/modules/charges/hooks/charge-action.hook.ts +24 -24
- package/src/modules/charges/hooks/charge-by-id.hook.ts +19 -19
- package/src/modules/charges/hooks/charges.hook.ts +19 -19
- package/src/modules/charges/services/charges.service.ts +63 -63
- package/src/modules/charges/types/charge.type.ts +68 -68
- package/src/modules/ia-credits/handlers/list-ia-credits.handler.ts +14 -14
- package/src/modules/ia-credits/hooks/ia-credits.hook.ts +103 -103
- package/src/modules/images/actions/process-image.action.ts +40 -40
- package/src/modules/images/constants/image.constants.ts +11 -11
- package/src/modules/images/hooks/use-image-upload.hook.ts +153 -145
- package/src/modules/images/services/image-processing.service.ts +75 -75
- package/src/modules/images/types/image.type.ts +54 -54
- package/src/modules/images/utils/base64.ts +26 -26
- package/src/modules/images/utils/compress-image.ts +20 -20
- package/src/modules/images/utils/crop-image.ts +68 -51
- package/src/modules/images/utils/validate-image.ts +86 -86
- package/src/modules/pages/constants/query-keys.constants.ts +1 -1
- package/src/modules/pages/handlers/count-pages.handler.ts +12 -12
- package/src/modules/pages/hooks/count-pages.hook.ts +21 -21
- package/src/modules/pages/services/pages.service.ts +27 -27
- package/src/modules/plans/handlers/find-plan-by-id.handler.ts +14 -14
- package/src/modules/plans/handlers/list-plans.handler.ts +22 -22
- package/src/modules/plans/hooks/list-plans.hook.ts +23 -23
- package/src/modules/plans/hooks/use-has-plan-addon.hook.ts +14 -14
- package/src/modules/plans/hooks/use-plan-by-id.hook.ts +39 -39
- package/src/modules/plans/services/plans.service.ts +135 -135
- package/src/modules/plans/types/plan.type.ts +75 -75
- package/src/modules/plans/utils/map-api-plan-to-ui.ts +167 -167
- package/src/modules/projects/actions/add-project-user.action.ts +9 -9
- package/src/modules/projects/actions/create-project.action.ts +9 -9
- package/src/modules/projects/actions/delete-project.action.ts +8 -8
- package/src/modules/projects/actions/find-project.action.ts +8 -8
- package/src/modules/projects/actions/list-project-users.action.ts +9 -9
- package/src/modules/projects/actions/list-projects.action.ts +16 -16
- package/src/modules/projects/actions/remove-project-user.action.ts +9 -9
- package/src/modules/projects/actions/update-project.action.ts +9 -9
- package/src/modules/projects/handlers/find-project.handler.ts +15 -15
- package/src/modules/projects/handlers/list-all-account-users.handler.ts +23 -23
- package/src/modules/projects/handlers/list-available-users.handler.ts +26 -26
- package/src/modules/projects/handlers/list-project-users.handler.ts +26 -26
- package/src/modules/projects/handlers/list-projects.handler.ts +23 -23
- package/src/modules/projects/hooks/add-project-user.hook.ts +72 -72
- package/src/modules/projects/hooks/create-project.hook.ts +120 -120
- package/src/modules/projects/hooks/delete-project.hook.ts +58 -58
- package/src/modules/projects/hooks/find-project.hook.ts +18 -18
- package/src/modules/projects/hooks/list-all-account-users.hook.ts +40 -40
- package/src/modules/projects/hooks/list-available-users.hook.ts +39 -39
- package/src/modules/projects/hooks/list-infinite-projects.hook.ts +44 -44
- package/src/modules/projects/hooks/list-project-users.hook.ts +39 -39
- package/src/modules/projects/hooks/list-projects.hook.ts +23 -23
- package/src/modules/projects/hooks/remove-project-user.hook.ts +72 -72
- package/src/modules/projects/hooks/update-project.hook.ts +86 -86
- package/src/modules/projects/services/projects.service.ts +156 -156
- package/src/modules/subscriptions/actions/calculate-subscription.action.ts +9 -9
- package/src/modules/subscriptions/actions/list-subscriptions.action.ts +9 -9
- package/src/modules/subscriptions/actions/update-subscription-payment.action.ts +13 -13
- package/src/modules/subscriptions/actions/update-subscription-plan.action.ts +14 -14
- package/src/modules/subscriptions/constants/query-keys.constants.ts +3 -3
- package/src/modules/subscriptions/constants/subscription.constants.ts +1 -1
- package/src/modules/subscriptions/handlers/list-subscriptions.handler.ts +17 -17
- package/src/modules/subscriptions/hooks/calculate-subscription.hook.ts +13 -13
- package/src/modules/subscriptions/hooks/find-active-subscription.hook.ts +22 -22
- package/src/modules/subscriptions/hooks/list-subscriptions.hook.ts +22 -22
- package/src/modules/subscriptions/hooks/update-subscription-payment.hook.ts +25 -25
- package/src/modules/subscriptions/hooks/update-subscription-plan.hook.ts +28 -28
- package/src/modules/subscriptions/hooks/use-cancelled-subscription-guard.ts +44 -44
- package/src/modules/subscriptions/types/billing-period.type.ts +1 -1
- package/src/modules/subscriptions/types/calculate-subscription.type.ts +116 -116
- package/src/modules/subscriptions/types/pix-pending.type.ts +38 -38
- package/src/modules/subscriptions/utils/build-plan-extras.ts +56 -56
- package/src/modules/subscriptions/utils/get-subscription-cancellation-state.ts +37 -37
- package/src/modules/subscriptions/utils/get-subscription-expiry-date.ts +33 -33
- package/src/modules/subscriptions/utils/has-subscription-expired.ts +11 -11
- package/src/modules/subscriptions/utils/periodicity.ts +79 -79
- package/src/modules/subscriptions/utils/resolve-plan-extras-prices.ts +23 -23
- package/src/modules/users/action/find-user-by-id.action.ts +8 -8
- package/src/modules/users/action/mark-all-messages-as-read.action.ts +8 -8
- package/src/modules/users/action/mark-message-as-read.action.ts +8 -8
- package/src/modules/users/handlers/list-messages.handler.ts +39 -39
- package/src/modules/users/hooks/messages.hook.ts +69 -69
- package/src/modules/users/services/messages.service.ts +49 -49
- package/src/modules/whitelabel/actions/find-whitelabel.action.ts +23 -23
- package/src/modules/whitelabel/actions/revalidate-whitelabel.action.ts +19 -19
- package/src/modules/whitelabel/schema.ts +84 -84
- package/src/modules/whitelabel/utils/normalize-hostname.ts +26 -26
- package/src/providers/auth.provider.tsx +264 -264
- package/src/providers/navigation.provider.tsx +99 -99
- package/src/providers/whitelabel.provider.tsx +90 -90
- package/src/route.ts +4 -4
- package/src/store/useAccountModals.ts +85 -85
- package/src/store/useBuyCreditsModal.ts +21 -21
- package/src/store/useCreditsDisabledModal.ts +11 -11
- package/src/store/useDesktopSidebarStore.ts +47 -47
- package/src/store/useMdSidebarStore.ts +34 -34
- package/src/store/usePaidPlanRequiredModal.ts +19 -19
- package/src/utils/constants/br-states.ts +29 -29
- package/src/utils/countries.ts +224 -224
- package/src/utils/format/currency.ts +70 -70
- package/src/utils/intl/cookie-domain.ts +29 -29
- package/src/utils/intl/locale-cookie.ts +18 -18
- package/src/utils/next-navigation.ts +7 -7
- package/src/utils/redirect.ts +78 -78
- package/src/utils/safeMutationAction.ts +24 -24
- package/src/utils/safeServerAction.ts +21 -21
- package/src/utils/withAction.ts +13 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/projects/hooks/add-project-user.hook.ts"],"sourcesContent":["'use client';\n\nimport { useQueryClient, useMutation, InfiniteData } from '@tanstack/react-query';\nimport { addProjectUserAction } from '../actions/add-project-user.action';\nimport { LIST_PROJECT_USERS_BASE_KEY } from './list-project-users.hook';\nimport { LIST_ALL_ACCOUNT_USERS_BASE_KEY } from './list-all-account-users.hook';\nimport type { UsersPage, AccountUser, ProjectUser } from '../types';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nexport function useAddProjectUser(projectId: number) {\n const queryClient = useQueryClient();\n const allAccountUsersKey = useAuthQueryKey([...LIST_ALL_ACCOUNT_USERS_BASE_KEY()]);\n const projectUsersKey = useAuthQueryKey([...LIST_PROJECT_USERS_BASE_KEY(projectId)]);\n\n return useMutation({\n mutationFn: (targetUserId: number) =>\n addProjectUserAction({ projectId, users: [targetUserId] }),\n\n onMutate: async (targetUserId) => {\n await queryClient.cancelQueries({ queryKey: allAccountUsersKey });\n await queryClient.cancelQueries({ queryKey: projectUsersKey });\n\n const prevAccountUsers = queryClient.getQueriesData<InfiniteData<UsersPage<AccountUser>>>({\n queryKey: allAccountUsersKey,\n });\n const prevProjectUsers = queryClient.getQueriesData<InfiniteData<UsersPage<ProjectUser>>>({\n queryKey: projectUsersKey,\n });\n\n queryClient.setQueriesData<InfiniteData<UsersPage<AccountUser>>>(\n { queryKey: allAccountUsersKey, exact: false },\n (old) => {\n if (!old) return old;\n return {\n ...old,\n pages: old.pages.map((page) => ({\n ...page,\n data: page.data.map((u) =>\n u.id === targetUserId ? { ...u, in_project: true } : u\n ),\n })),\n };\n }\n );\n\n queryClient.setQueriesData<InfiniteData<UsersPage<ProjectUser>>>(\n { queryKey: projectUsersKey, exact: false },\n (old) => {\n if (!old?.pages.length) return old;\n return {\n ...old,\n pages: old.pages.map((page, i) =>\n i === 0 ? { ...page, total: page.total + 1 } : page\n ),\n };\n }\n );\n\n return { prevAccountUsers, prevProjectUsers };\n },\n\n onError: (_err, _targetUserId, ctx) => {\n ctx?.prevAccountUsers.forEach(([key, data]) => queryClient.setQueryData(key, data));\n ctx?.prevProjectUsers.forEach(([key, data]) => queryClient.setQueryData(key, data));\n },\n\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey: projectUsersKey });\n queryClient.invalidateQueries({ queryKey: allAccountUsersKey });\n },\n });\n}\n"],"mappings":";AAEA,SAAS,gBAAgB,mBAAiC;AAC1D,SAAS,4BAA4B;AACrC,SAAS,mCAAmC;AAC5C,SAAS,uCAAuC;AAEhD,SAAS,uBAAuB;AAEzB,SAAS,kBAAkB,WAAmB;AACnD,QAAM,cAAc,eAAe;AACnC,QAAM,qBAAqB,gBAAgB,CAAC,GAAG,gCAAgC,CAAC,CAAC;AACjF,QAAM,kBAAkB,gBAAgB,CAAC,GAAG,4BAA4B,SAAS,CAAC,CAAC;AAEnF,SAAO,YAAY;AAAA,IACjB,YAAY,CAAC,iBACX,qBAAqB,EAAE,WAAW,OAAO,CAAC,YAAY,EAAE,CAAC;AAAA,IAE3D,UAAU,OAAO,iBAAiB;AAChC,YAAM,YAAY,cAAc,EAAE,UAAU,mBAAmB,CAAC;AAChE,YAAM,YAAY,cAAc,EAAE,UAAU,gBAAgB,CAAC;AAE7D,YAAM,mBAAmB,YAAY,eAAqD;AAAA,QACxF,UAAU;AAAA,MACZ,CAAC;AACD,YAAM,mBAAmB,YAAY,eAAqD;AAAA,QACxF,UAAU;AAAA,MACZ,CAAC;AAED,kBAAY;AAAA,QACV,EAAE,UAAU,oBAAoB,OAAO,MAAM;AAAA,QAC7C,CAAC,QAAQ;AACP,cAAI,CAAC,IAAK,QAAO;AACjB,iBAAO;AAAA,YACL,GAAG;AAAA,YACH,OAAO,IAAI,MAAM,IAAI,CAAC,UAAU;AAAA,cAC9B,GAAG;AAAA,cACH,MAAM,KAAK,KAAK;AAAA,gBAAI,CAAC,MACnB,EAAE,OAAO,eAAe,EAAE,GAAG,GAAG,YAAY,KAAK,IAAI;AAAA,cACvD;AAAA,YACF,EAAE;AAAA,UACJ;AAAA,QACF;AAAA,MACF;AAEA,kBAAY;AAAA,QACV,EAAE,UAAU,iBAAiB,OAAO,MAAM;AAAA,QAC1C,CAAC,QAAQ;AACP,cAAI,CAAC,KAAK,MAAM,OAAQ,QAAO;AAC/B,iBAAO;AAAA,YACL,GAAG;AAAA,YACH,OAAO,IAAI,MAAM;AAAA,cAAI,CAAC,MAAM,MAC1B,MAAM,IAAI,EAAE,GAAG,MAAM,OAAO,KAAK,QAAQ,EAAE,IAAI;AAAA,YACjD;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,aAAO,EAAE,kBAAkB,iBAAiB;AAAA,IAC9C;AAAA,IAEA,SAAS,CAAC,MAAM,eAAe,QAAQ;AACrC,WAAK,iBAAiB,QAAQ,CAAC,CAAC,KAAK,IAAI,MAAM,YAAY,aAAa,KAAK,IAAI,CAAC;AAClF,WAAK,iBAAiB,QAAQ,CAAC,CAAC,KAAK,IAAI,MAAM,YAAY,aAAa,KAAK,IAAI,CAAC;AAAA,IACpF;AAAA,IAEA,WAAW,MAAM;AACf,kBAAY,kBAAkB,EAAE,UAAU,gBAAgB,CAAC;AAC3D,kBAAY,kBAAkB,EAAE,UAAU,mBAAmB,CAAC;AAAA,IAChE;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/projects/hooks/add-project-user.hook.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useQueryClient, useMutation, InfiniteData } from '@tanstack/react-query';\r\nimport { addProjectUserAction } from '../actions/add-project-user.action';\r\nimport { LIST_PROJECT_USERS_BASE_KEY } from './list-project-users.hook';\r\nimport { LIST_ALL_ACCOUNT_USERS_BASE_KEY } from './list-all-account-users.hook';\r\nimport type { UsersPage, AccountUser, ProjectUser } from '../types';\r\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\r\n\r\nexport function useAddProjectUser(projectId: number) {\r\n const queryClient = useQueryClient();\r\n const allAccountUsersKey = useAuthQueryKey([...LIST_ALL_ACCOUNT_USERS_BASE_KEY()]);\r\n const projectUsersKey = useAuthQueryKey([...LIST_PROJECT_USERS_BASE_KEY(projectId)]);\r\n\r\n return useMutation({\r\n mutationFn: (targetUserId: number) =>\r\n addProjectUserAction({ projectId, users: [targetUserId] }),\r\n\r\n onMutate: async (targetUserId) => {\r\n await queryClient.cancelQueries({ queryKey: allAccountUsersKey });\r\n await queryClient.cancelQueries({ queryKey: projectUsersKey });\r\n\r\n const prevAccountUsers = queryClient.getQueriesData<InfiniteData<UsersPage<AccountUser>>>({\r\n queryKey: allAccountUsersKey,\r\n });\r\n const prevProjectUsers = queryClient.getQueriesData<InfiniteData<UsersPage<ProjectUser>>>({\r\n queryKey: projectUsersKey,\r\n });\r\n\r\n queryClient.setQueriesData<InfiniteData<UsersPage<AccountUser>>>(\r\n { queryKey: allAccountUsersKey, exact: false },\r\n (old) => {\r\n if (!old) return old;\r\n return {\r\n ...old,\r\n pages: old.pages.map((page) => ({\r\n ...page,\r\n data: page.data.map((u) =>\r\n u.id === targetUserId ? { ...u, in_project: true } : u\r\n ),\r\n })),\r\n };\r\n }\r\n );\r\n\r\n queryClient.setQueriesData<InfiniteData<UsersPage<ProjectUser>>>(\r\n { queryKey: projectUsersKey, exact: false },\r\n (old) => {\r\n if (!old?.pages.length) return old;\r\n return {\r\n ...old,\r\n pages: old.pages.map((page, i) =>\r\n i === 0 ? { ...page, total: page.total + 1 } : page\r\n ),\r\n };\r\n }\r\n );\r\n\r\n return { prevAccountUsers, prevProjectUsers };\r\n },\r\n\r\n onError: (_err, _targetUserId, ctx) => {\r\n ctx?.prevAccountUsers.forEach(([key, data]) => queryClient.setQueryData(key, data));\r\n ctx?.prevProjectUsers.forEach(([key, data]) => queryClient.setQueryData(key, data));\r\n },\r\n\r\n onSettled: () => {\r\n queryClient.invalidateQueries({ queryKey: projectUsersKey });\r\n queryClient.invalidateQueries({ queryKey: allAccountUsersKey });\r\n },\r\n });\r\n}\r\n"],"mappings":";AAEA,SAAS,gBAAgB,mBAAiC;AAC1D,SAAS,4BAA4B;AACrC,SAAS,mCAAmC;AAC5C,SAAS,uCAAuC;AAEhD,SAAS,uBAAuB;AAEzB,SAAS,kBAAkB,WAAmB;AACnD,QAAM,cAAc,eAAe;AACnC,QAAM,qBAAqB,gBAAgB,CAAC,GAAG,gCAAgC,CAAC,CAAC;AACjF,QAAM,kBAAkB,gBAAgB,CAAC,GAAG,4BAA4B,SAAS,CAAC,CAAC;AAEnF,SAAO,YAAY;AAAA,IACjB,YAAY,CAAC,iBACX,qBAAqB,EAAE,WAAW,OAAO,CAAC,YAAY,EAAE,CAAC;AAAA,IAE3D,UAAU,OAAO,iBAAiB;AAChC,YAAM,YAAY,cAAc,EAAE,UAAU,mBAAmB,CAAC;AAChE,YAAM,YAAY,cAAc,EAAE,UAAU,gBAAgB,CAAC;AAE7D,YAAM,mBAAmB,YAAY,eAAqD;AAAA,QACxF,UAAU;AAAA,MACZ,CAAC;AACD,YAAM,mBAAmB,YAAY,eAAqD;AAAA,QACxF,UAAU;AAAA,MACZ,CAAC;AAED,kBAAY;AAAA,QACV,EAAE,UAAU,oBAAoB,OAAO,MAAM;AAAA,QAC7C,CAAC,QAAQ;AACP,cAAI,CAAC,IAAK,QAAO;AACjB,iBAAO;AAAA,YACL,GAAG;AAAA,YACH,OAAO,IAAI,MAAM,IAAI,CAAC,UAAU;AAAA,cAC9B,GAAG;AAAA,cACH,MAAM,KAAK,KAAK;AAAA,gBAAI,CAAC,MACnB,EAAE,OAAO,eAAe,EAAE,GAAG,GAAG,YAAY,KAAK,IAAI;AAAA,cACvD;AAAA,YACF,EAAE;AAAA,UACJ;AAAA,QACF;AAAA,MACF;AAEA,kBAAY;AAAA,QACV,EAAE,UAAU,iBAAiB,OAAO,MAAM;AAAA,QAC1C,CAAC,QAAQ;AACP,cAAI,CAAC,KAAK,MAAM,OAAQ,QAAO;AAC/B,iBAAO;AAAA,YACL,GAAG;AAAA,YACH,OAAO,IAAI,MAAM;AAAA,cAAI,CAAC,MAAM,MAC1B,MAAM,IAAI,EAAE,GAAG,MAAM,OAAO,KAAK,QAAQ,EAAE,IAAI;AAAA,YACjD;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,aAAO,EAAE,kBAAkB,iBAAiB;AAAA,IAC9C;AAAA,IAEA,SAAS,CAAC,MAAM,eAAe,QAAQ;AACrC,WAAK,iBAAiB,QAAQ,CAAC,CAAC,KAAK,IAAI,MAAM,YAAY,aAAa,KAAK,IAAI,CAAC;AAClF,WAAK,iBAAiB,QAAQ,CAAC,CAAC,KAAK,IAAI,MAAM,YAAY,aAAa,KAAK,IAAI,CAAC;AAAA,IACpF;AAAA,IAEA,WAAW,MAAM;AACf,kBAAY,kBAAkB,EAAE,UAAU,gBAAgB,CAAC;AAC3D,kBAAY,kBAAkB,EAAE,UAAU,mBAAmB,CAAC;AAAA,IAChE;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/projects/hooks/create-project.hook.ts"],"sourcesContent":["'use client';\n\nimport { useMutation, useQueryClient, InfiniteData, Query } from '@tanstack/react-query';\nimport { createProjectAction } from '../actions/create-project.action';\nimport { withAction } from '../../../utils/withAction';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\nimport { PROJECTS_BASE_KEY } from './list-projects.hook';\nimport { buildCompareFn, insertIntoPaginatedCache } from '../../../infra/utils/array';\nimport type { CreateProjectRequest, Project, ProjectsPage } from '../types';\n\ntype QueryParams = { sort?: string; page?: number; [key: string]: unknown };\n\nfunction extractQueryParams(query: Query): QueryParams {\n const key = query.queryKey;\n for (let i = key.length - 1; i >= 0; i--) {\n const segment = key[i];\n if (segment !== null && typeof segment === 'object') {\n return segment as QueryParams;\n }\n }\n return {};\n}\n\nexport function useCreateProject() {\n const queryClient = useQueryClient();\n const projectsKey = useAuthQueryKey([...PROJECTS_BASE_KEY]);\n\n return useMutation({\n mutationFn: (data: CreateProjectRequest) =>\n withAction(createProjectAction)(data),\n\n onSuccess: (newProject: Project) => {\n const cache = queryClient.getQueryCache();\n const queries = cache.findAll({ queryKey: projectsKey });\n\n // 1) Caches infinite: todas as páginas vivem no mesmo queryData\n const infiniteQueries = queries.filter((q) => q.queryKey.includes('infinite'));\n\n for (const query of infiniteQueries) {\n const { sort } = extractQueryParams(query);\n const compareFn = sort ? buildCompareFn<Project>(sort) : undefined;\n\n queryClient.setQueryData<InfiniteData<ProjectsPage>>(query.queryKey, (old) => {\n if (!old?.pages.length) return old;\n\n const pageSize = old.pages[0].data.length || 20;\n const newPages = insertIntoPaginatedCache({\n pages: old.pages,\n pageNumbers: old.pages.map((_, i) => i + 1),\n newItem: newProject,\n pageSize,\n compareFn,\n });\n\n return { ...old, pages: newPages.map((p, i) => ({ ...old.pages[i], ...p })) };\n });\n }\n\n // 2) Caches paginados: agrupa queries do mesmo \"sort\" e trata como conjunto\n const paginatedQueries = queries.filter((q) => !q.queryKey.includes('infinite'));\n\n // Agrupa por assinatura dos params (exceto page)\n const groups = new Map<string, { queries: Query[]; sort?: string }>();\n for (const query of paginatedQueries) {\n const params = extractQueryParams(query);\n const { page: _page, ...rest } = params;\n void _page;\n const signature = JSON.stringify(rest);\n const existing = groups.get(signature);\n if (existing) {\n existing.queries.push(query);\n } else {\n groups.set(signature, { queries: [query], sort: params.sort });\n }\n }\n\n for (const { queries: groupQueries, sort } of groups.values()) {\n const compareFn = sort ? buildCompareFn<Project>(sort) : undefined;\n\n // Ordena por número de página\n const sortedByPage = groupQueries\n .map((q) => ({ query: q, page: extractQueryParams(q).page ?? 1 }))\n .sort((a, b) => a.page - b.page);\n\n // Monta as páginas na ordem\n const pages: ProjectsPage[] = [];\n const pageNumbers: number[] = [];\n for (const { query, page } of sortedByPage) {\n const data = queryClient.getQueryData<ProjectsPage>(query.queryKey);\n if (data) {\n pages.push(data);\n pageNumbers.push(page);\n }\n }\n if (!pages.length) continue;\n\n const pageSize = pages[0].data.length || 20;\n const newPages = insertIntoPaginatedCache({\n pages,\n pageNumbers,\n newItem: newProject,\n pageSize,\n compareFn,\n });\n\n // Grava de volta cada página que mudou (referência diferente)\n for (let i = 0; i < sortedByPage.length; i++) {\n if (newPages[i] !== pages[i]) {\n queryClient.setQueryData<ProjectsPage>(sortedByPage[i].query.queryKey, {\n ...pages[i],\n ...newPages[i],\n });\n }\n }\n }\n\n queryClient.invalidateQueries({ queryKey: projectsKey });\n },\n });\n}\n"],"mappings":";AAEA,SAAS,aAAa,sBAA2C;AACjE,SAAS,2BAA2B;AACpC,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAChC,SAAS,yBAAyB;AAClC,SAAS,gBAAgB,gCAAgC;AAKzD,SAAS,mBAAmB,OAA2B;AACrD,QAAM,MAAM,MAAM;AAClB,WAAS,IAAI,IAAI,SAAS,GAAG,KAAK,GAAG,KAAK;AACxC,UAAM,UAAU,IAAI,CAAC;AACrB,QAAI,YAAY,QAAQ,OAAO,YAAY,UAAU;AACnD,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO,CAAC;AACV;AAEO,SAAS,mBAAmB;AACjC,QAAM,cAAc,eAAe;AACnC,QAAM,cAAc,gBAAgB,CAAC,GAAG,iBAAiB,CAAC;AAE1D,SAAO,YAAY;AAAA,IACjB,YAAY,CAAC,SACX,WAAW,mBAAmB,EAAE,IAAI;AAAA,IAEtC,WAAW,CAAC,eAAwB;AAClC,YAAM,QAAQ,YAAY,cAAc;AACxC,YAAM,UAAU,MAAM,QAAQ,EAAE,UAAU,YAAY,CAAC;AAGvD,YAAM,kBAAkB,QAAQ,OAAO,CAAC,MAAM,EAAE,SAAS,SAAS,UAAU,CAAC;AAE7E,iBAAW,SAAS,iBAAiB;AACnC,cAAM,EAAE,KAAK,IAAI,mBAAmB,KAAK;AACzC,cAAM,YAAY,OAAO,eAAwB,IAAI,IAAI;AAEzD,oBAAY,aAAyC,MAAM,UAAU,CAAC,QAAQ;AAC5E,cAAI,CAAC,KAAK,MAAM,OAAQ,QAAO;AAE/B,gBAAM,WAAW,IAAI,MAAM,CAAC,EAAE,KAAK,UAAU;AAC7C,gBAAM,WAAW,yBAAyB;AAAA,YACxC,OAAO,IAAI;AAAA,YACX,aAAa,IAAI,MAAM,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC;AAAA,YAC1C,SAAS;AAAA,YACT;AAAA,YACA;AAAA,UACF,CAAC;AAED,iBAAO,EAAE,GAAG,KAAK,OAAO,SAAS,IAAI,CAAC,GAAG,OAAO,EAAE,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE;AAAA,QAC9E,CAAC;AAAA,MACH;AAGA,YAAM,mBAAmB,QAAQ,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,SAAS,UAAU,CAAC;AAG/E,YAAM,SAAS,oBAAI,IAAiD;AACpE,iBAAW,SAAS,kBAAkB;AACpC,cAAM,SAAS,mBAAmB,KAAK;AACvC,cAAM,EAAE,MAAM,OAAO,GAAG,KAAK,IAAI;AACjC,aAAK;AACL,cAAM,YAAY,KAAK,UAAU,IAAI;AACrC,cAAM,WAAW,OAAO,IAAI,SAAS;AACrC,YAAI,UAAU;AACZ,mBAAS,QAAQ,KAAK,KAAK;AAAA,QAC7B,OAAO;AACL,iBAAO,IAAI,WAAW,EAAE,SAAS,CAAC,KAAK,GAAG,MAAM,OAAO,KAAK,CAAC;AAAA,QAC/D;AAAA,MACF;AAEA,iBAAW,EAAE,SAAS,cAAc,KAAK,KAAK,OAAO,OAAO,GAAG;AAC7D,cAAM,YAAY,OAAO,eAAwB,IAAI,IAAI;AAGzD,cAAM,eAAe,aAClB,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,mBAAmB,CAAC,EAAE,QAAQ,EAAE,EAAE,EAChE,KAAK,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,IAAI;AAGjC,cAAM,QAAwB,CAAC;AAC/B,cAAM,cAAwB,CAAC;AAC/B,mBAAW,EAAE,OAAO,KAAK,KAAK,cAAc;AAC1C,gBAAM,OAAO,YAAY,aAA2B,MAAM,QAAQ;AAClE,cAAI,MAAM;AACR,kBAAM,KAAK,IAAI;AACf,wBAAY,KAAK,IAAI;AAAA,UACvB;AAAA,QACF;AACA,YAAI,CAAC,MAAM,OAAQ;AAEnB,cAAM,WAAW,MAAM,CAAC,EAAE,KAAK,UAAU;AACzC,cAAM,WAAW,yBAAyB;AAAA,UACxC;AAAA,UACA;AAAA,UACA,SAAS;AAAA,UACT;AAAA,UACA;AAAA,QACF,CAAC;AAGD,iBAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK;AAC5C,cAAI,SAAS,CAAC,MAAM,MAAM,CAAC,GAAG;AAC5B,wBAAY,aAA2B,aAAa,CAAC,EAAE,MAAM,UAAU;AAAA,cACrE,GAAG,MAAM,CAAC;AAAA,cACV,GAAG,SAAS,CAAC;AAAA,YACf,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF;AAEA,kBAAY,kBAAkB,EAAE,UAAU,YAAY,CAAC;AAAA,IACzD;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/projects/hooks/create-project.hook.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useMutation, useQueryClient, InfiniteData, Query } from '@tanstack/react-query';\r\nimport { createProjectAction } from '../actions/create-project.action';\r\nimport { withAction } from '../../../utils/withAction';\r\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\r\nimport { PROJECTS_BASE_KEY } from './list-projects.hook';\r\nimport { buildCompareFn, insertIntoPaginatedCache } from '../../../infra/utils/array';\r\nimport type { CreateProjectRequest, Project, ProjectsPage } from '../types';\r\n\r\ntype QueryParams = { sort?: string; page?: number; [key: string]: unknown };\r\n\r\nfunction extractQueryParams(query: Query): QueryParams {\r\n const key = query.queryKey;\r\n for (let i = key.length - 1; i >= 0; i--) {\r\n const segment = key[i];\r\n if (segment !== null && typeof segment === 'object') {\r\n return segment as QueryParams;\r\n }\r\n }\r\n return {};\r\n}\r\n\r\nexport function useCreateProject() {\r\n const queryClient = useQueryClient();\r\n const projectsKey = useAuthQueryKey([...PROJECTS_BASE_KEY]);\r\n\r\n return useMutation({\r\n mutationFn: (data: CreateProjectRequest) =>\r\n withAction(createProjectAction)(data),\r\n\r\n onSuccess: (newProject: Project) => {\r\n const cache = queryClient.getQueryCache();\r\n const queries = cache.findAll({ queryKey: projectsKey });\r\n\r\n // 1) Caches infinite: todas as páginas vivem no mesmo queryData\r\n const infiniteQueries = queries.filter((q) => q.queryKey.includes('infinite'));\r\n\r\n for (const query of infiniteQueries) {\r\n const { sort } = extractQueryParams(query);\r\n const compareFn = sort ? buildCompareFn<Project>(sort) : undefined;\r\n\r\n queryClient.setQueryData<InfiniteData<ProjectsPage>>(query.queryKey, (old) => {\r\n if (!old?.pages.length) return old;\r\n\r\n const pageSize = old.pages[0].data.length || 20;\r\n const newPages = insertIntoPaginatedCache({\r\n pages: old.pages,\r\n pageNumbers: old.pages.map((_, i) => i + 1),\r\n newItem: newProject,\r\n pageSize,\r\n compareFn,\r\n });\r\n\r\n return { ...old, pages: newPages.map((p, i) => ({ ...old.pages[i], ...p })) };\r\n });\r\n }\r\n\r\n // 2) Caches paginados: agrupa queries do mesmo \"sort\" e trata como conjunto\r\n const paginatedQueries = queries.filter((q) => !q.queryKey.includes('infinite'));\r\n\r\n // Agrupa por assinatura dos params (exceto page)\r\n const groups = new Map<string, { queries: Query[]; sort?: string }>();\r\n for (const query of paginatedQueries) {\r\n const params = extractQueryParams(query);\r\n const { page: _page, ...rest } = params;\r\n void _page;\r\n const signature = JSON.stringify(rest);\r\n const existing = groups.get(signature);\r\n if (existing) {\r\n existing.queries.push(query);\r\n } else {\r\n groups.set(signature, { queries: [query], sort: params.sort });\r\n }\r\n }\r\n\r\n for (const { queries: groupQueries, sort } of groups.values()) {\r\n const compareFn = sort ? buildCompareFn<Project>(sort) : undefined;\r\n\r\n // Ordena por número de página\r\n const sortedByPage = groupQueries\r\n .map((q) => ({ query: q, page: extractQueryParams(q).page ?? 1 }))\r\n .sort((a, b) => a.page - b.page);\r\n\r\n // Monta as páginas na ordem\r\n const pages: ProjectsPage[] = [];\r\n const pageNumbers: number[] = [];\r\n for (const { query, page } of sortedByPage) {\r\n const data = queryClient.getQueryData<ProjectsPage>(query.queryKey);\r\n if (data) {\r\n pages.push(data);\r\n pageNumbers.push(page);\r\n }\r\n }\r\n if (!pages.length) continue;\r\n\r\n const pageSize = pages[0].data.length || 20;\r\n const newPages = insertIntoPaginatedCache({\r\n pages,\r\n pageNumbers,\r\n newItem: newProject,\r\n pageSize,\r\n compareFn,\r\n });\r\n\r\n // Grava de volta cada página que mudou (referência diferente)\r\n for (let i = 0; i < sortedByPage.length; i++) {\r\n if (newPages[i] !== pages[i]) {\r\n queryClient.setQueryData<ProjectsPage>(sortedByPage[i].query.queryKey, {\r\n ...pages[i],\r\n ...newPages[i],\r\n });\r\n }\r\n }\r\n }\r\n\r\n queryClient.invalidateQueries({ queryKey: projectsKey });\r\n },\r\n });\r\n}\r\n"],"mappings":"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","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/projects/hooks/delete-project.hook.ts"],"sourcesContent":["'use client';\n\nimport { useMutation, useQueryClient, InfiniteData } from '@tanstack/react-query';\nimport { deleteProjectAction } from '../actions/delete-project.action';\nimport { withAction } from '../../../utils/withAction';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\nimport { PROJECTS_BASE_KEY } from './list-projects.hook';\nimport type { ProjectsPage } from '../types';\n\nexport function useDeleteProject() {\n const queryClient = useQueryClient();\n const projectsKey = useAuthQueryKey([...PROJECTS_BASE_KEY]);\n\n return useMutation({\n mutationFn: ({ projectId, moveToProjectId }: { projectId: number; moveToProjectId: number }) =>\n withAction(deleteProjectAction)(projectId, moveToProjectId),\n\n onSuccess: (_, { projectId }) => {\n const cache = queryClient.getQueryCache();\n const queries = cache.findAll({ queryKey: projectsKey });\n\n for (const query of queries) {\n const isInfinite = query.queryKey.includes('infinite');\n\n if (isInfinite) {\n queryClient.setQueryData<InfiniteData<ProjectsPage>>(\n query.queryKey,\n (old) => {\n if (!old?.pages.length) return old;\n return {\n ...old,\n pages: old.pages.map((page) => ({\n ...page,\n data: page.data.filter((p) => p.id !== projectId),\n total: page.total - 1,\n })),\n };\n },\n );\n } else {\n queryClient.setQueryData<ProjectsPage>(\n query.queryKey,\n (old) => {\n if (!old) return old;\n return {\n ...old,\n data: old.data.filter((p) => p.id !== projectId),\n total: old.total - 1,\n };\n },\n );\n }\n }\n\n queryClient.invalidateQueries({ queryKey: projectsKey });\n },\n });\n}\n"],"mappings":";AAEA,SAAS,aAAa,sBAAoC;AAC1D,SAAS,2BAA2B;AACpC,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAChC,SAAS,yBAAyB;AAG3B,SAAS,mBAAmB;AACjC,QAAM,cAAc,eAAe;AACnC,QAAM,cAAc,gBAAgB,CAAC,GAAG,iBAAiB,CAAC;AAE1D,SAAO,YAAY;AAAA,IACjB,YAAY,CAAC,EAAE,WAAW,gBAAgB,MACxC,WAAW,mBAAmB,EAAE,WAAW,eAAe;AAAA,IAE5D,WAAW,CAAC,GAAG,EAAE,UAAU,MAAM;AAC/B,YAAM,QAAQ,YAAY,cAAc;AACxC,YAAM,UAAU,MAAM,QAAQ,EAAE,UAAU,YAAY,CAAC;AAEvD,iBAAW,SAAS,SAAS;AAC3B,cAAM,aAAa,MAAM,SAAS,SAAS,UAAU;AAErD,YAAI,YAAY;AACd,sBAAY;AAAA,YACV,MAAM;AAAA,YACN,CAAC,QAAQ;AACP,kBAAI,CAAC,KAAK,MAAM,OAAQ,QAAO;AAC/B,qBAAO;AAAA,gBACL,GAAG;AAAA,gBACH,OAAO,IAAI,MAAM,IAAI,CAAC,UAAU;AAAA,kBAC9B,GAAG;AAAA,kBACH,MAAM,KAAK,KAAK,OAAO,CAAC,MAAM,EAAE,OAAO,SAAS;AAAA,kBAChD,OAAO,KAAK,QAAQ;AAAA,gBACtB,EAAE;AAAA,cACJ;AAAA,YACF;AAAA,UACF;AAAA,QACF,OAAO;AACL,sBAAY;AAAA,YACV,MAAM;AAAA,YACN,CAAC,QAAQ;AACP,kBAAI,CAAC,IAAK,QAAO;AACjB,qBAAO;AAAA,gBACL,GAAG;AAAA,gBACH,MAAM,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE,OAAO,SAAS;AAAA,gBAC/C,OAAO,IAAI,QAAQ;AAAA,cACrB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,kBAAY,kBAAkB,EAAE,UAAU,YAAY,CAAC;AAAA,IACzD;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/projects/hooks/delete-project.hook.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useMutation, useQueryClient, InfiniteData } from '@tanstack/react-query';\r\nimport { deleteProjectAction } from '../actions/delete-project.action';\r\nimport { withAction } from '../../../utils/withAction';\r\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\r\nimport { PROJECTS_BASE_KEY } from './list-projects.hook';\r\nimport type { ProjectsPage } from '../types';\r\n\r\nexport function useDeleteProject() {\r\n const queryClient = useQueryClient();\r\n const projectsKey = useAuthQueryKey([...PROJECTS_BASE_KEY]);\r\n\r\n return useMutation({\r\n mutationFn: ({ projectId, moveToProjectId }: { projectId: number; moveToProjectId: number }) =>\r\n withAction(deleteProjectAction)(projectId, moveToProjectId),\r\n\r\n onSuccess: (_, { projectId }) => {\r\n const cache = queryClient.getQueryCache();\r\n const queries = cache.findAll({ queryKey: projectsKey });\r\n\r\n for (const query of queries) {\r\n const isInfinite = query.queryKey.includes('infinite');\r\n\r\n if (isInfinite) {\r\n queryClient.setQueryData<InfiniteData<ProjectsPage>>(\r\n query.queryKey,\r\n (old) => {\r\n if (!old?.pages.length) return old;\r\n return {\r\n ...old,\r\n pages: old.pages.map((page) => ({\r\n ...page,\r\n data: page.data.filter((p) => p.id !== projectId),\r\n total: page.total - 1,\r\n })),\r\n };\r\n },\r\n );\r\n } else {\r\n queryClient.setQueryData<ProjectsPage>(\r\n query.queryKey,\r\n (old) => {\r\n if (!old) return old;\r\n return {\r\n ...old,\r\n data: old.data.filter((p) => p.id !== projectId),\r\n total: old.total - 1,\r\n };\r\n },\r\n );\r\n }\r\n }\r\n\r\n queryClient.invalidateQueries({ queryKey: projectsKey });\r\n },\r\n });\r\n}\r\n"],"mappings":";AAEA,SAAS,aAAa,sBAAoC;AAC1D,SAAS,2BAA2B;AACpC,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAChC,SAAS,yBAAyB;AAG3B,SAAS,mBAAmB;AACjC,QAAM,cAAc,eAAe;AACnC,QAAM,cAAc,gBAAgB,CAAC,GAAG,iBAAiB,CAAC;AAE1D,SAAO,YAAY;AAAA,IACjB,YAAY,CAAC,EAAE,WAAW,gBAAgB,MACxC,WAAW,mBAAmB,EAAE,WAAW,eAAe;AAAA,IAE5D,WAAW,CAAC,GAAG,EAAE,UAAU,MAAM;AAC/B,YAAM,QAAQ,YAAY,cAAc;AACxC,YAAM,UAAU,MAAM,QAAQ,EAAE,UAAU,YAAY,CAAC;AAEvD,iBAAW,SAAS,SAAS;AAC3B,cAAM,aAAa,MAAM,SAAS,SAAS,UAAU;AAErD,YAAI,YAAY;AACd,sBAAY;AAAA,YACV,MAAM;AAAA,YACN,CAAC,QAAQ;AACP,kBAAI,CAAC,KAAK,MAAM,OAAQ,QAAO;AAC/B,qBAAO;AAAA,gBACL,GAAG;AAAA,gBACH,OAAO,IAAI,MAAM,IAAI,CAAC,UAAU;AAAA,kBAC9B,GAAG;AAAA,kBACH,MAAM,KAAK,KAAK,OAAO,CAAC,MAAM,EAAE,OAAO,SAAS;AAAA,kBAChD,OAAO,KAAK,QAAQ;AAAA,gBACtB,EAAE;AAAA,cACJ;AAAA,YACF;AAAA,UACF;AAAA,QACF,OAAO;AACL,sBAAY;AAAA,YACV,MAAM;AAAA,YACN,CAAC,QAAQ;AACP,kBAAI,CAAC,IAAK,QAAO;AACjB,qBAAO;AAAA,gBACL,GAAG;AAAA,gBACH,MAAM,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE,OAAO,SAAS;AAAA,gBAC/C,OAAO,IAAI,QAAQ;AAAA,cACrB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,kBAAY,kBAAkB,EAAE,UAAU,YAAY,CAAC;AAAA,IACzD;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/projects/hooks/find-project.hook.ts"],"sourcesContent":["'use client';\n\nimport { useQuery } from '@tanstack/react-query';\nimport { apiFetch } from '../../../infra/http/api-fetch';\nimport type { Project } from '../types';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\nimport { PROJECTS_BASE_KEY } from './list-projects.hook';\n\nexport function useProject(projectId: number | null) {\n const queryKey = useAuthQueryKey([...PROJECTS_BASE_KEY, projectId]);\n\n return useQuery({\n queryKey,\n queryFn: ({ signal }) => apiFetch<Project>(`/api/projects/${projectId}`, { signal }),\n enabled: projectId != null && projectId > 0,\n staleTime: 10_000,\n });\n}\n"],"mappings":";AAEA,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AAEzB,SAAS,uBAAuB;AAChC,SAAS,yBAAyB;AAE3B,SAAS,WAAW,WAA0B;AACnD,QAAM,WAAW,gBAAgB,CAAC,GAAG,mBAAmB,SAAS,CAAC;AAElE,SAAO,SAAS;AAAA,IACd;AAAA,IACA,SAAS,CAAC,EAAE,OAAO,MAAM,SAAkB,iBAAiB,SAAS,IAAI,EAAE,OAAO,CAAC;AAAA,IACnF,SAAS,aAAa,QAAQ,YAAY;AAAA,IAC1C,WAAW;AAAA,EACb,CAAC;AACH;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/projects/hooks/find-project.hook.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useQuery } from '@tanstack/react-query';\r\nimport { apiFetch } from '../../../infra/http/api-fetch';\r\nimport type { Project } from '../types';\r\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\r\nimport { PROJECTS_BASE_KEY } from './list-projects.hook';\r\n\r\nexport function useProject(projectId: number | null) {\r\n const queryKey = useAuthQueryKey([...PROJECTS_BASE_KEY, projectId]);\r\n\r\n return useQuery({\r\n queryKey,\r\n queryFn: ({ signal }) => apiFetch<Project>(`/api/projects/${projectId}`, { signal }),\r\n enabled: projectId != null && projectId > 0,\r\n staleTime: 10_000,\r\n });\r\n}\r\n"],"mappings":";AAEA,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AAEzB,SAAS,uBAAuB;AAChC,SAAS,yBAAyB;AAE3B,SAAS,WAAW,WAA0B;AACnD,QAAM,WAAW,gBAAgB,CAAC,GAAG,mBAAmB,SAAS,CAAC;AAElE,SAAO,SAAS;AAAA,IACd;AAAA,IACA,SAAS,CAAC,EAAE,OAAO,MAAM,SAAkB,iBAAiB,SAAS,IAAI,EAAE,OAAO,CAAC;AAAA,IACnF,SAAS,aAAa,QAAQ,YAAY;AAAA,IAC1C,WAAW;AAAA,EACb,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/projects/hooks/list-all-account-users.hook.ts"],"sourcesContent":["'use client';\n\nimport { useInfiniteQuery } from '@tanstack/react-query';\nimport { apiFetch } from '../../../infra/http/api-fetch';\nimport type { AccountUser, UsersPage } from '../types';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nconst PAGE_SIZE = 20;\n\nexport const LIST_ALL_ACCOUNT_USERS_BASE_KEY = () =>\n ['account-users', 'all'] as const;\n\nexport const LIST_ALL_ACCOUNT_USERS_QUERY_KEY = (search: string = '', projectId?: number) => [\n ...LIST_ALL_ACCOUNT_USERS_BASE_KEY(),\n search,\n projectId,\n] as const;\n\nexport function useListAllAccountUsers(search: string = '', projectId?: number) {\n const queryKey = useAuthQueryKey([...LIST_ALL_ACCOUNT_USERS_QUERY_KEY(search, projectId)]);\n\n return useInfiniteQuery({\n queryKey,\n queryFn: ({ pageParam, signal }) =>\n apiFetch<UsersPage<AccountUser>>('/api/account/users', {\n params: {\n search: search || undefined,\n page: pageParam as number,\n limit: PAGE_SIZE,\n inProject: projectId,\n },\n signal,\n }),\n getNextPageParam: (lastPage, allPages) => {\n const loaded = allPages.reduce((sum, p) => sum + p.data.length, 0);\n return loaded < lastPage.total ? allPages.length + 1 : undefined;\n },\n initialPageParam: 1,\n });\n}\n"],"mappings":";AAEA,SAAS,wBAAwB;AACjC,SAAS,gBAAgB;AAEzB,SAAS,uBAAuB;AAEhC,MAAM,YAAY;AAEX,MAAM,kCAAkC,MAC7C,CAAC,iBAAiB,KAAK;AAElB,MAAM,mCAAmC,CAAC,SAAiB,IAAI,cAAuB;AAAA,EAC3F,GAAG,gCAAgC;AAAA,EACnC;AAAA,EACA;AACF;AAEO,SAAS,uBAAuB,SAAiB,IAAI,WAAoB;AAC9E,QAAM,WAAW,gBAAgB,CAAC,GAAG,iCAAiC,QAAQ,SAAS,CAAC,CAAC;AAEzF,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA,SAAS,CAAC,EAAE,WAAW,OAAO,MAC5B,SAAiC,sBAAsB;AAAA,MACrD,QAAQ;AAAA,QACN,QAAQ,UAAU;AAAA,QAClB,MAAM;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,MACb;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IACH,kBAAkB,CAAC,UAAU,aAAa;AACxC,YAAM,SAAS,SAAS,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,KAAK,QAAQ,CAAC;AACjE,aAAO,SAAS,SAAS,QAAQ,SAAS,SAAS,IAAI;AAAA,IACzD;AAAA,IACA,kBAAkB;AAAA,EACpB,CAAC;AACH;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/projects/hooks/list-all-account-users.hook.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useInfiniteQuery } from '@tanstack/react-query';\r\nimport { apiFetch } from '../../../infra/http/api-fetch';\r\nimport type { AccountUser, UsersPage } from '../types';\r\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\r\n\r\nconst PAGE_SIZE = 20;\r\n\r\nexport const LIST_ALL_ACCOUNT_USERS_BASE_KEY = () =>\r\n ['account-users', 'all'] as const;\r\n\r\nexport const LIST_ALL_ACCOUNT_USERS_QUERY_KEY = (search: string = '', projectId?: number) => [\r\n ...LIST_ALL_ACCOUNT_USERS_BASE_KEY(),\r\n search,\r\n projectId,\r\n] as const;\r\n\r\nexport function useListAllAccountUsers(search: string = '', projectId?: number) {\r\n const queryKey = useAuthQueryKey([...LIST_ALL_ACCOUNT_USERS_QUERY_KEY(search, projectId)]);\r\n\r\n return useInfiniteQuery({\r\n queryKey,\r\n queryFn: ({ pageParam, signal }) =>\r\n apiFetch<UsersPage<AccountUser>>('/api/account/users', {\r\n params: {\r\n search: search || undefined,\r\n page: pageParam as number,\r\n limit: PAGE_SIZE,\r\n inProject: projectId,\r\n },\r\n signal,\r\n }),\r\n getNextPageParam: (lastPage, allPages) => {\r\n const loaded = allPages.reduce((sum, p) => sum + p.data.length, 0);\r\n return loaded < lastPage.total ? allPages.length + 1 : undefined;\r\n },\r\n initialPageParam: 1,\r\n });\r\n}\r\n"],"mappings":";AAEA,SAAS,wBAAwB;AACjC,SAAS,gBAAgB;AAEzB,SAAS,uBAAuB;AAEhC,MAAM,YAAY;AAEX,MAAM,kCAAkC,MAC7C,CAAC,iBAAiB,KAAK;AAElB,MAAM,mCAAmC,CAAC,SAAiB,IAAI,cAAuB;AAAA,EAC3F,GAAG,gCAAgC;AAAA,EACnC;AAAA,EACA;AACF;AAEO,SAAS,uBAAuB,SAAiB,IAAI,WAAoB;AAC9E,QAAM,WAAW,gBAAgB,CAAC,GAAG,iCAAiC,QAAQ,SAAS,CAAC,CAAC;AAEzF,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA,SAAS,CAAC,EAAE,WAAW,OAAO,MAC5B,SAAiC,sBAAsB;AAAA,MACrD,QAAQ;AAAA,QACN,QAAQ,UAAU;AAAA,QAClB,MAAM;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,MACb;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IACH,kBAAkB,CAAC,UAAU,aAAa;AACxC,YAAM,SAAS,SAAS,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,KAAK,QAAQ,CAAC;AACjE,aAAO,SAAS,SAAS,QAAQ,SAAS,SAAS,IAAI;AAAA,IACzD;AAAA,IACA,kBAAkB;AAAA,EACpB,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/projects/hooks/list-available-users.hook.ts"],"sourcesContent":["'use client';\n\nimport { useInfiniteQuery } from '@tanstack/react-query';\nimport { apiFetch } from '../../../infra/http/api-fetch';\nimport type { AccountUser, UsersPage } from '../types';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nconst PAGE_SIZE = 20;\n\nexport const LIST_AVAILABLE_USERS_BASE_KEY = (projectId: number) =>\n ['project-users', projectId, 'out'] as const;\n\nexport const LIST_AVAILABLE_USERS_QUERY_KEY = (projectId: number, search: string = '') => [\n ...LIST_AVAILABLE_USERS_BASE_KEY(projectId),\n search,\n] as const;\n\nexport function useListAvailableUsers(projectId: number, search: string = '') {\n const queryKey = useAuthQueryKey([...LIST_AVAILABLE_USERS_QUERY_KEY(projectId, search)]);\n\n return useInfiniteQuery({\n queryKey,\n queryFn: ({ pageParam, signal }) =>\n apiFetch<UsersPage<AccountUser>>(`/api/projects/${projectId}/available-users`, {\n params: {\n search: search || undefined,\n page: pageParam as number,\n limit: PAGE_SIZE,\n },\n signal,\n }),\n getNextPageParam: (lastPage, allPages) => {\n const loaded = allPages.reduce((sum, p) => sum + p.data.length, 0);\n return loaded < lastPage.total ? allPages.length + 1 : undefined;\n },\n initialPageParam: 1,\n enabled: !!projectId,\n });\n}\n"],"mappings":";AAEA,SAAS,wBAAwB;AACjC,SAAS,gBAAgB;AAEzB,SAAS,uBAAuB;AAEhC,MAAM,YAAY;AAEX,MAAM,gCAAgC,CAAC,cAC5C,CAAC,iBAAiB,WAAW,KAAK;AAE7B,MAAM,iCAAiC,CAAC,WAAmB,SAAiB,OAAO;AAAA,EACxF,GAAG,8BAA8B,SAAS;AAAA,EAC1C;AACF;AAEO,SAAS,sBAAsB,WAAmB,SAAiB,IAAI;AAC5E,QAAM,WAAW,gBAAgB,CAAC,GAAG,+BAA+B,WAAW,MAAM,CAAC,CAAC;AAEvF,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA,SAAS,CAAC,EAAE,WAAW,OAAO,MAC5B,SAAiC,iBAAiB,SAAS,oBAAoB;AAAA,MAC7E,QAAQ;AAAA,QACN,QAAQ,UAAU;AAAA,QAClB,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IACH,kBAAkB,CAAC,UAAU,aAAa;AACxC,YAAM,SAAS,SAAS,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,KAAK,QAAQ,CAAC;AACjE,aAAO,SAAS,SAAS,QAAQ,SAAS,SAAS,IAAI;AAAA,IACzD;AAAA,IACA,kBAAkB;AAAA,IAClB,SAAS,CAAC,CAAC;AAAA,EACb,CAAC;AACH;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/projects/hooks/list-available-users.hook.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useInfiniteQuery } from '@tanstack/react-query';\r\nimport { apiFetch } from '../../../infra/http/api-fetch';\r\nimport type { AccountUser, UsersPage } from '../types';\r\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\r\n\r\nconst PAGE_SIZE = 20;\r\n\r\nexport const LIST_AVAILABLE_USERS_BASE_KEY = (projectId: number) =>\r\n ['project-users', projectId, 'out'] as const;\r\n\r\nexport const LIST_AVAILABLE_USERS_QUERY_KEY = (projectId: number, search: string = '') => [\r\n ...LIST_AVAILABLE_USERS_BASE_KEY(projectId),\r\n search,\r\n] as const;\r\n\r\nexport function useListAvailableUsers(projectId: number, search: string = '') {\r\n const queryKey = useAuthQueryKey([...LIST_AVAILABLE_USERS_QUERY_KEY(projectId, search)]);\r\n\r\n return useInfiniteQuery({\r\n queryKey,\r\n queryFn: ({ pageParam, signal }) =>\r\n apiFetch<UsersPage<AccountUser>>(`/api/projects/${projectId}/available-users`, {\r\n params: {\r\n search: search || undefined,\r\n page: pageParam as number,\r\n limit: PAGE_SIZE,\r\n },\r\n signal,\r\n }),\r\n getNextPageParam: (lastPage, allPages) => {\r\n const loaded = allPages.reduce((sum, p) => sum + p.data.length, 0);\r\n return loaded < lastPage.total ? allPages.length + 1 : undefined;\r\n },\r\n initialPageParam: 1,\r\n enabled: !!projectId,\r\n });\r\n}\r\n"],"mappings":";AAEA,SAAS,wBAAwB;AACjC,SAAS,gBAAgB;AAEzB,SAAS,uBAAuB;AAEhC,MAAM,YAAY;AAEX,MAAM,gCAAgC,CAAC,cAC5C,CAAC,iBAAiB,WAAW,KAAK;AAE7B,MAAM,iCAAiC,CAAC,WAAmB,SAAiB,OAAO;AAAA,EACxF,GAAG,8BAA8B,SAAS;AAAA,EAC1C;AACF;AAEO,SAAS,sBAAsB,WAAmB,SAAiB,IAAI;AAC5E,QAAM,WAAW,gBAAgB,CAAC,GAAG,+BAA+B,WAAW,MAAM,CAAC,CAAC;AAEvF,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA,SAAS,CAAC,EAAE,WAAW,OAAO,MAC5B,SAAiC,iBAAiB,SAAS,oBAAoB;AAAA,MAC7E,QAAQ;AAAA,QACN,QAAQ,UAAU;AAAA,QAClB,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IACH,kBAAkB,CAAC,UAAU,aAAa;AACxC,YAAM,SAAS,SAAS,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,KAAK,QAAQ,CAAC;AACjE,aAAO,SAAS,SAAS,QAAQ,SAAS,SAAS,IAAI;AAAA,IACzD;AAAA,IACA,kBAAkB;AAAA,IAClB,SAAS,CAAC,CAAC;AAAA,EACb,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/projects/hooks/list-infinite-projects.hook.ts"],"sourcesContent":["\"use client\";\n\nimport { useInfiniteQuery } from \"@tanstack/react-query\";\nimport { apiFetch } from \"../../../infra/http/api-fetch\";\nimport type { ListProjectsActionParams } from \"../actions/list-projects.action\";\nimport type { ProjectsPage } from \"../types\";\nimport { useAuthQueryKey } from \"../../../hooks/useAuthQueryKey\";\nimport { PROJECTS_BASE_KEY } from \"./list-projects.hook\";\n\nconst PAGE_SIZE = 20;\n\nexport const INFINITE_PROJECTS_QUERY_KEY = (\n params?: Omit<ListProjectsActionParams, \"page\">,\n) => [...PROJECTS_BASE_KEY, \"infinite\", params] as const;\n\nexport function useInfiniteProjects({\n limit = PAGE_SIZE,\n ...params\n}: Omit<ListProjectsActionParams, \"page\">) {\n const queryKey = useAuthQueryKey([...INFINITE_PROJECTS_QUERY_KEY(params)]);\n\n return useInfiniteQuery({\n queryKey,\n queryFn: ({ pageParam, signal }) =>\n apiFetch<ProjectsPage>('/api/projects', {\n params: {\n ...params,\n page: pageParam as number,\n limit,\n },\n signal,\n }),\n initialPageParam: 1,\n getNextPageParam: (lastPage, allPages) => {\n const loaded = allPages.reduce((sum, p) => sum + p.data.length, 0);\n return loaded < lastPage.total ? allPages.length + 1 : undefined;\n },\n placeholderData: (prev) => prev,\n staleTime: 10_000,\n refetchOnMount: true,\n refetchOnWindowFocus: true,\n refetchOnReconnect: true,\n });\n}\n"],"mappings":";AAEA,SAAS,wBAAwB;AACjC,SAAS,gBAAgB;AAGzB,SAAS,uBAAuB;AAChC,SAAS,yBAAyB;AAElC,MAAM,YAAY;AAEX,MAAM,8BAA8B,CACzC,WACG,CAAC,GAAG,mBAAmB,YAAY,MAAM;AAEvC,SAAS,oBAAoB;AAAA,EAClC,QAAQ;AAAA,EACR,GAAG;AACL,GAA2C;AACzC,QAAM,WAAW,gBAAgB,CAAC,GAAG,4BAA4B,MAAM,CAAC,CAAC;AAEzE,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA,SAAS,CAAC,EAAE,WAAW,OAAO,MAC5B,SAAuB,iBAAiB;AAAA,MACtC,QAAQ;AAAA,QACN,GAAG;AAAA,QACH,MAAM;AAAA,QACN;AAAA,MACF;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IACH,kBAAkB;AAAA,IAClB,kBAAkB,CAAC,UAAU,aAAa;AACxC,YAAM,SAAS,SAAS,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,KAAK,QAAQ,CAAC;AACjE,aAAO,SAAS,SAAS,QAAQ,SAAS,SAAS,IAAI;AAAA,IACzD;AAAA,IACA,iBAAiB,CAAC,SAAS;AAAA,IAC3B,WAAW;AAAA,IACX,gBAAgB;AAAA,IAChB,sBAAsB;AAAA,IACtB,oBAAoB;AAAA,EACtB,CAAC;AACH;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/projects/hooks/list-infinite-projects.hook.ts"],"sourcesContent":["\"use client\";\r\n\r\nimport { useInfiniteQuery } from \"@tanstack/react-query\";\r\nimport { apiFetch } from \"../../../infra/http/api-fetch\";\r\nimport type { ListProjectsActionParams } from \"../actions/list-projects.action\";\r\nimport type { ProjectsPage } from \"../types\";\r\nimport { useAuthQueryKey } from \"../../../hooks/useAuthQueryKey\";\r\nimport { PROJECTS_BASE_KEY } from \"./list-projects.hook\";\r\n\r\nconst PAGE_SIZE = 20;\r\n\r\nexport const INFINITE_PROJECTS_QUERY_KEY = (\r\n params?: Omit<ListProjectsActionParams, \"page\">,\r\n) => [...PROJECTS_BASE_KEY, \"infinite\", params] as const;\r\n\r\nexport function useInfiniteProjects({\r\n limit = PAGE_SIZE,\r\n ...params\r\n}: Omit<ListProjectsActionParams, \"page\">) {\r\n const queryKey = useAuthQueryKey([...INFINITE_PROJECTS_QUERY_KEY(params)]);\r\n\r\n return useInfiniteQuery({\r\n queryKey,\r\n queryFn: ({ pageParam, signal }) =>\r\n apiFetch<ProjectsPage>('/api/projects', {\r\n params: {\r\n ...params,\r\n page: pageParam as number,\r\n limit,\r\n },\r\n signal,\r\n }),\r\n initialPageParam: 1,\r\n getNextPageParam: (lastPage, allPages) => {\r\n const loaded = allPages.reduce((sum, p) => sum + p.data.length, 0);\r\n return loaded < lastPage.total ? allPages.length + 1 : undefined;\r\n },\r\n placeholderData: (prev) => prev,\r\n staleTime: 10_000,\r\n refetchOnMount: true,\r\n refetchOnWindowFocus: true,\r\n refetchOnReconnect: true,\r\n });\r\n}\r\n"],"mappings":";AAEA,SAAS,wBAAwB;AACjC,SAAS,gBAAgB;AAGzB,SAAS,uBAAuB;AAChC,SAAS,yBAAyB;AAElC,MAAM,YAAY;AAEX,MAAM,8BAA8B,CACzC,WACG,CAAC,GAAG,mBAAmB,YAAY,MAAM;AAEvC,SAAS,oBAAoB;AAAA,EAClC,QAAQ;AAAA,EACR,GAAG;AACL,GAA2C;AACzC,QAAM,WAAW,gBAAgB,CAAC,GAAG,4BAA4B,MAAM,CAAC,CAAC;AAEzE,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA,SAAS,CAAC,EAAE,WAAW,OAAO,MAC5B,SAAuB,iBAAiB;AAAA,MACtC,QAAQ;AAAA,QACN,GAAG;AAAA,QACH,MAAM;AAAA,QACN;AAAA,MACF;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IACH,kBAAkB;AAAA,IAClB,kBAAkB,CAAC,UAAU,aAAa;AACxC,YAAM,SAAS,SAAS,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,KAAK,QAAQ,CAAC;AACjE,aAAO,SAAS,SAAS,QAAQ,SAAS,SAAS,IAAI;AAAA,IACzD;AAAA,IACA,iBAAiB,CAAC,SAAS;AAAA,IAC3B,WAAW;AAAA,IACX,gBAAgB;AAAA,IAChB,sBAAsB;AAAA,IACtB,oBAAoB;AAAA,EACtB,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/projects/hooks/list-project-users.hook.ts"],"sourcesContent":["'use client';\n\nimport { useInfiniteQuery } from '@tanstack/react-query';\nimport { apiFetch } from '../../../infra/http/api-fetch';\nimport type { ProjectUser, UsersPage } from '../types';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nconst PAGE_SIZE = 20;\n\nexport const LIST_PROJECT_USERS_BASE_KEY = (projectId: number) =>\n ['project-users', projectId, 'in'] as const;\n\nexport const LIST_PROJECT_USERS_QUERY_KEY = (projectId: number, search: string = '') => [\n ...LIST_PROJECT_USERS_BASE_KEY(projectId),\n search,\n] as const;\n\nexport function useListProjectUsers(projectId: number, search: string = '') {\n const queryKey = useAuthQueryKey([...LIST_PROJECT_USERS_QUERY_KEY(projectId, search)]);\n\n return useInfiniteQuery({\n queryKey,\n queryFn: ({ pageParam, signal }) =>\n apiFetch<UsersPage<ProjectUser>>(`/api/projects/${projectId}/users`, {\n params: {\n search: search || undefined,\n page: pageParam as number,\n limit: PAGE_SIZE,\n },\n signal,\n }),\n getNextPageParam: (lastPage, allPages) => {\n const loaded = allPages.reduce((sum, p) => sum + p.data.length, 0);\n return loaded < lastPage.total ? allPages.length + 1 : undefined;\n },\n initialPageParam: 1,\n enabled: !!projectId,\n });\n}\n"],"mappings":";AAEA,SAAS,wBAAwB;AACjC,SAAS,gBAAgB;AAEzB,SAAS,uBAAuB;AAEhC,MAAM,YAAY;AAEX,MAAM,8BAA8B,CAAC,cAC1C,CAAC,iBAAiB,WAAW,IAAI;AAE5B,MAAM,+BAA+B,CAAC,WAAmB,SAAiB,OAAO;AAAA,EACtF,GAAG,4BAA4B,SAAS;AAAA,EACxC;AACF;AAEO,SAAS,oBAAoB,WAAmB,SAAiB,IAAI;AAC1E,QAAM,WAAW,gBAAgB,CAAC,GAAG,6BAA6B,WAAW,MAAM,CAAC,CAAC;AAErF,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA,SAAS,CAAC,EAAE,WAAW,OAAO,MAC5B,SAAiC,iBAAiB,SAAS,UAAU;AAAA,MACnE,QAAQ;AAAA,QACN,QAAQ,UAAU;AAAA,QAClB,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IACH,kBAAkB,CAAC,UAAU,aAAa;AACxC,YAAM,SAAS,SAAS,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,KAAK,QAAQ,CAAC;AACjE,aAAO,SAAS,SAAS,QAAQ,SAAS,SAAS,IAAI;AAAA,IACzD;AAAA,IACA,kBAAkB;AAAA,IAClB,SAAS,CAAC,CAAC;AAAA,EACb,CAAC;AACH;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/projects/hooks/list-project-users.hook.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useInfiniteQuery } from '@tanstack/react-query';\r\nimport { apiFetch } from '../../../infra/http/api-fetch';\r\nimport type { ProjectUser, UsersPage } from '../types';\r\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\r\n\r\nconst PAGE_SIZE = 20;\r\n\r\nexport const LIST_PROJECT_USERS_BASE_KEY = (projectId: number) =>\r\n ['project-users', projectId, 'in'] as const;\r\n\r\nexport const LIST_PROJECT_USERS_QUERY_KEY = (projectId: number, search: string = '') => [\r\n ...LIST_PROJECT_USERS_BASE_KEY(projectId),\r\n search,\r\n] as const;\r\n\r\nexport function useListProjectUsers(projectId: number, search: string = '') {\r\n const queryKey = useAuthQueryKey([...LIST_PROJECT_USERS_QUERY_KEY(projectId, search)]);\r\n\r\n return useInfiniteQuery({\r\n queryKey,\r\n queryFn: ({ pageParam, signal }) =>\r\n apiFetch<UsersPage<ProjectUser>>(`/api/projects/${projectId}/users`, {\r\n params: {\r\n search: search || undefined,\r\n page: pageParam as number,\r\n limit: PAGE_SIZE,\r\n },\r\n signal,\r\n }),\r\n getNextPageParam: (lastPage, allPages) => {\r\n const loaded = allPages.reduce((sum, p) => sum + p.data.length, 0);\r\n return loaded < lastPage.total ? allPages.length + 1 : undefined;\r\n },\r\n initialPageParam: 1,\r\n enabled: !!projectId,\r\n });\r\n}\r\n"],"mappings":";AAEA,SAAS,wBAAwB;AACjC,SAAS,gBAAgB;AAEzB,SAAS,uBAAuB;AAEhC,MAAM,YAAY;AAEX,MAAM,8BAA8B,CAAC,cAC1C,CAAC,iBAAiB,WAAW,IAAI;AAE5B,MAAM,+BAA+B,CAAC,WAAmB,SAAiB,OAAO;AAAA,EACtF,GAAG,4BAA4B,SAAS;AAAA,EACxC;AACF;AAEO,SAAS,oBAAoB,WAAmB,SAAiB,IAAI;AAC1E,QAAM,WAAW,gBAAgB,CAAC,GAAG,6BAA6B,WAAW,MAAM,CAAC,CAAC;AAErF,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA,SAAS,CAAC,EAAE,WAAW,OAAO,MAC5B,SAAiC,iBAAiB,SAAS,UAAU;AAAA,MACnE,QAAQ;AAAA,QACN,QAAQ,UAAU;AAAA,QAClB,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IACH,kBAAkB,CAAC,UAAU,aAAa;AACxC,YAAM,SAAS,SAAS,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,KAAK,QAAQ,CAAC;AACjE,aAAO,SAAS,SAAS,QAAQ,SAAS,SAAS,IAAI;AAAA,IACzD;AAAA,IACA,kBAAkB;AAAA,IAClB,SAAS,CAAC,CAAC;AAAA,EACb,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/projects/hooks/list-projects.hook.ts"],"sourcesContent":["'use client';\n\nimport { useQuery, keepPreviousData } from '@tanstack/react-query';\nimport { apiFetch } from '../../../infra/http/api-fetch';\nimport type { ListProjectsActionParams } from '../actions/list-projects.action';\nimport type { ProjectsPage } from '../types';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nexport const PROJECTS_BASE_KEY = ['projects'] as const;\n\nexport const PROJECTS_QUERY_KEY = (params?: ListProjectsActionParams) =>\n [...PROJECTS_BASE_KEY, params] as const;\n\nexport function useProjects(params?: ListProjectsActionParams) {\n const queryKey = useAuthQueryKey([...PROJECTS_QUERY_KEY(params)]);\n\n return useQuery({\n queryKey,\n queryFn: ({ signal }) => apiFetch<ProjectsPage>('/api/projects', { params, signal }),\n staleTime: 10_000,\n placeholderData: keepPreviousData,\n });\n}\n"],"mappings":";AAEA,SAAS,UAAU,wBAAwB;AAC3C,SAAS,gBAAgB;AAGzB,SAAS,uBAAuB;AAEzB,MAAM,oBAAoB,CAAC,UAAU;AAErC,MAAM,qBAAqB,CAAC,WACjC,CAAC,GAAG,mBAAmB,MAAM;AAExB,SAAS,YAAY,QAAmC;AAC7D,QAAM,WAAW,gBAAgB,CAAC,GAAG,mBAAmB,MAAM,CAAC,CAAC;AAEhE,SAAO,SAAS;AAAA,IACd;AAAA,IACA,SAAS,CAAC,EAAE,OAAO,MAAM,SAAuB,iBAAiB,EAAE,QAAQ,OAAO,CAAC;AAAA,IACnF,WAAW;AAAA,IACX,iBAAiB;AAAA,EACnB,CAAC;AACH;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/projects/hooks/list-projects.hook.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useQuery, keepPreviousData } from '@tanstack/react-query';\r\nimport { apiFetch } from '../../../infra/http/api-fetch';\r\nimport type { ListProjectsActionParams } from '../actions/list-projects.action';\r\nimport type { ProjectsPage } from '../types';\r\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\r\n\r\nexport const PROJECTS_BASE_KEY = ['projects'] as const;\r\n\r\nexport const PROJECTS_QUERY_KEY = (params?: ListProjectsActionParams) =>\r\n [...PROJECTS_BASE_KEY, params] as const;\r\n\r\nexport function useProjects(params?: ListProjectsActionParams) {\r\n const queryKey = useAuthQueryKey([...PROJECTS_QUERY_KEY(params)]);\r\n\r\n return useQuery({\r\n queryKey,\r\n queryFn: ({ signal }) => apiFetch<ProjectsPage>('/api/projects', { params, signal }),\r\n staleTime: 10_000,\r\n placeholderData: keepPreviousData,\r\n });\r\n}\r\n"],"mappings":";AAEA,SAAS,UAAU,wBAAwB;AAC3C,SAAS,gBAAgB;AAGzB,SAAS,uBAAuB;AAEzB,MAAM,oBAAoB,CAAC,UAAU;AAErC,MAAM,qBAAqB,CAAC,WACjC,CAAC,GAAG,mBAAmB,MAAM;AAExB,SAAS,YAAY,QAAmC;AAC7D,QAAM,WAAW,gBAAgB,CAAC,GAAG,mBAAmB,MAAM,CAAC,CAAC;AAEhE,SAAO,SAAS;AAAA,IACd;AAAA,IACA,SAAS,CAAC,EAAE,OAAO,MAAM,SAAuB,iBAAiB,EAAE,QAAQ,OAAO,CAAC;AAAA,IACnF,WAAW;AAAA,IACX,iBAAiB;AAAA,EACnB,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/projects/hooks/remove-project-user.hook.ts"],"sourcesContent":["'use client';\n\nimport { useQueryClient, useMutation, InfiniteData } from '@tanstack/react-query';\nimport { removeProjectUserAction } from '../actions/remove-project-user.action';\nimport { LIST_PROJECT_USERS_BASE_KEY } from './list-project-users.hook';\nimport { LIST_ALL_ACCOUNT_USERS_BASE_KEY } from './list-all-account-users.hook';\nimport type { UsersPage, AccountUser, ProjectUser } from '../types';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nexport function useRemoveProjectUser(projectId: number) {\n const queryClient = useQueryClient();\n const allAccountUsersKey = useAuthQueryKey([...LIST_ALL_ACCOUNT_USERS_BASE_KEY()]);\n const projectUsersKey = useAuthQueryKey([...LIST_PROJECT_USERS_BASE_KEY(projectId)]);\n\n return useMutation({\n mutationFn: (targetUserId: number) =>\n removeProjectUserAction({ projectId, users: [targetUserId] }),\n\n onMutate: async (targetUserId) => {\n await queryClient.cancelQueries({ queryKey: allAccountUsersKey });\n await queryClient.cancelQueries({ queryKey: projectUsersKey });\n\n const prevAccountUsers = queryClient.getQueriesData<InfiniteData<UsersPage<AccountUser>>>({\n queryKey: allAccountUsersKey,\n });\n const prevProjectUsers = queryClient.getQueriesData<InfiniteData<UsersPage<ProjectUser>>>({\n queryKey: projectUsersKey,\n });\n\n queryClient.setQueriesData<InfiniteData<UsersPage<AccountUser>>>(\n { queryKey: allAccountUsersKey, exact: false },\n (old) => {\n if (!old) return old;\n return {\n ...old,\n pages: old.pages.map((page) => ({\n ...page,\n data: page.data.map((u) =>\n u.id === targetUserId ? { ...u, in_project: false } : u\n ),\n })),\n };\n }\n );\n\n queryClient.setQueriesData<InfiniteData<UsersPage<ProjectUser>>>(\n { queryKey: projectUsersKey, exact: false },\n (old) => {\n if (!old?.pages.length) return old;\n return {\n ...old,\n pages: old.pages.map((page, i) =>\n i === 0 ? { ...page, total: page.total - 1 } : page\n ),\n };\n }\n );\n\n return { prevAccountUsers, prevProjectUsers };\n },\n\n onError: (_err, _targetUserId, ctx) => {\n ctx?.prevAccountUsers.forEach(([key, data]) => queryClient.setQueryData(key, data));\n ctx?.prevProjectUsers.forEach(([key, data]) => queryClient.setQueryData(key, data));\n },\n\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey: projectUsersKey });\n queryClient.invalidateQueries({ queryKey: allAccountUsersKey });\n },\n });\n}\n"],"mappings":";AAEA,SAAS,gBAAgB,mBAAiC;AAC1D,SAAS,+BAA+B;AACxC,SAAS,mCAAmC;AAC5C,SAAS,uCAAuC;AAEhD,SAAS,uBAAuB;AAEzB,SAAS,qBAAqB,WAAmB;AACtD,QAAM,cAAc,eAAe;AACnC,QAAM,qBAAqB,gBAAgB,CAAC,GAAG,gCAAgC,CAAC,CAAC;AACjF,QAAM,kBAAkB,gBAAgB,CAAC,GAAG,4BAA4B,SAAS,CAAC,CAAC;AAEnF,SAAO,YAAY;AAAA,IACjB,YAAY,CAAC,iBACX,wBAAwB,EAAE,WAAW,OAAO,CAAC,YAAY,EAAE,CAAC;AAAA,IAE9D,UAAU,OAAO,iBAAiB;AAChC,YAAM,YAAY,cAAc,EAAE,UAAU,mBAAmB,CAAC;AAChE,YAAM,YAAY,cAAc,EAAE,UAAU,gBAAgB,CAAC;AAE7D,YAAM,mBAAmB,YAAY,eAAqD;AAAA,QACxF,UAAU;AAAA,MACZ,CAAC;AACD,YAAM,mBAAmB,YAAY,eAAqD;AAAA,QACxF,UAAU;AAAA,MACZ,CAAC;AAED,kBAAY;AAAA,QACV,EAAE,UAAU,oBAAoB,OAAO,MAAM;AAAA,QAC7C,CAAC,QAAQ;AACP,cAAI,CAAC,IAAK,QAAO;AACjB,iBAAO;AAAA,YACL,GAAG;AAAA,YACH,OAAO,IAAI,MAAM,IAAI,CAAC,UAAU;AAAA,cAC9B,GAAG;AAAA,cACH,MAAM,KAAK,KAAK;AAAA,gBAAI,CAAC,MACnB,EAAE,OAAO,eAAe,EAAE,GAAG,GAAG,YAAY,MAAM,IAAI;AAAA,cACxD;AAAA,YACF,EAAE;AAAA,UACJ;AAAA,QACF;AAAA,MACF;AAEA,kBAAY;AAAA,QACV,EAAE,UAAU,iBAAiB,OAAO,MAAM;AAAA,QAC1C,CAAC,QAAQ;AACP,cAAI,CAAC,KAAK,MAAM,OAAQ,QAAO;AAC/B,iBAAO;AAAA,YACL,GAAG;AAAA,YACH,OAAO,IAAI,MAAM;AAAA,cAAI,CAAC,MAAM,MAC1B,MAAM,IAAI,EAAE,GAAG,MAAM,OAAO,KAAK,QAAQ,EAAE,IAAI;AAAA,YACjD;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,aAAO,EAAE,kBAAkB,iBAAiB;AAAA,IAC9C;AAAA,IAEA,SAAS,CAAC,MAAM,eAAe,QAAQ;AACrC,WAAK,iBAAiB,QAAQ,CAAC,CAAC,KAAK,IAAI,MAAM,YAAY,aAAa,KAAK,IAAI,CAAC;AAClF,WAAK,iBAAiB,QAAQ,CAAC,CAAC,KAAK,IAAI,MAAM,YAAY,aAAa,KAAK,IAAI,CAAC;AAAA,IACpF;AAAA,IAEA,WAAW,MAAM;AACf,kBAAY,kBAAkB,EAAE,UAAU,gBAAgB,CAAC;AAC3D,kBAAY,kBAAkB,EAAE,UAAU,mBAAmB,CAAC;AAAA,IAChE;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/projects/hooks/remove-project-user.hook.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useQueryClient, useMutation, InfiniteData } from '@tanstack/react-query';\r\nimport { removeProjectUserAction } from '../actions/remove-project-user.action';\r\nimport { LIST_PROJECT_USERS_BASE_KEY } from './list-project-users.hook';\r\nimport { LIST_ALL_ACCOUNT_USERS_BASE_KEY } from './list-all-account-users.hook';\r\nimport type { UsersPage, AccountUser, ProjectUser } from '../types';\r\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\r\n\r\nexport function useRemoveProjectUser(projectId: number) {\r\n const queryClient = useQueryClient();\r\n const allAccountUsersKey = useAuthQueryKey([...LIST_ALL_ACCOUNT_USERS_BASE_KEY()]);\r\n const projectUsersKey = useAuthQueryKey([...LIST_PROJECT_USERS_BASE_KEY(projectId)]);\r\n\r\n return useMutation({\r\n mutationFn: (targetUserId: number) =>\r\n removeProjectUserAction({ projectId, users: [targetUserId] }),\r\n\r\n onMutate: async (targetUserId) => {\r\n await queryClient.cancelQueries({ queryKey: allAccountUsersKey });\r\n await queryClient.cancelQueries({ queryKey: projectUsersKey });\r\n\r\n const prevAccountUsers = queryClient.getQueriesData<InfiniteData<UsersPage<AccountUser>>>({\r\n queryKey: allAccountUsersKey,\r\n });\r\n const prevProjectUsers = queryClient.getQueriesData<InfiniteData<UsersPage<ProjectUser>>>({\r\n queryKey: projectUsersKey,\r\n });\r\n\r\n queryClient.setQueriesData<InfiniteData<UsersPage<AccountUser>>>(\r\n { queryKey: allAccountUsersKey, exact: false },\r\n (old) => {\r\n if (!old) return old;\r\n return {\r\n ...old,\r\n pages: old.pages.map((page) => ({\r\n ...page,\r\n data: page.data.map((u) =>\r\n u.id === targetUserId ? { ...u, in_project: false } : u\r\n ),\r\n })),\r\n };\r\n }\r\n );\r\n\r\n queryClient.setQueriesData<InfiniteData<UsersPage<ProjectUser>>>(\r\n { queryKey: projectUsersKey, exact: false },\r\n (old) => {\r\n if (!old?.pages.length) return old;\r\n return {\r\n ...old,\r\n pages: old.pages.map((page, i) =>\r\n i === 0 ? { ...page, total: page.total - 1 } : page\r\n ),\r\n };\r\n }\r\n );\r\n\r\n return { prevAccountUsers, prevProjectUsers };\r\n },\r\n\r\n onError: (_err, _targetUserId, ctx) => {\r\n ctx?.prevAccountUsers.forEach(([key, data]) => queryClient.setQueryData(key, data));\r\n ctx?.prevProjectUsers.forEach(([key, data]) => queryClient.setQueryData(key, data));\r\n },\r\n\r\n onSettled: () => {\r\n queryClient.invalidateQueries({ queryKey: projectUsersKey });\r\n queryClient.invalidateQueries({ queryKey: allAccountUsersKey });\r\n },\r\n });\r\n}\r\n"],"mappings":";AAEA,SAAS,gBAAgB,mBAAiC;AAC1D,SAAS,+BAA+B;AACxC,SAAS,mCAAmC;AAC5C,SAAS,uCAAuC;AAEhD,SAAS,uBAAuB;AAEzB,SAAS,qBAAqB,WAAmB;AACtD,QAAM,cAAc,eAAe;AACnC,QAAM,qBAAqB,gBAAgB,CAAC,GAAG,gCAAgC,CAAC,CAAC;AACjF,QAAM,kBAAkB,gBAAgB,CAAC,GAAG,4BAA4B,SAAS,CAAC,CAAC;AAEnF,SAAO,YAAY;AAAA,IACjB,YAAY,CAAC,iBACX,wBAAwB,EAAE,WAAW,OAAO,CAAC,YAAY,EAAE,CAAC;AAAA,IAE9D,UAAU,OAAO,iBAAiB;AAChC,YAAM,YAAY,cAAc,EAAE,UAAU,mBAAmB,CAAC;AAChE,YAAM,YAAY,cAAc,EAAE,UAAU,gBAAgB,CAAC;AAE7D,YAAM,mBAAmB,YAAY,eAAqD;AAAA,QACxF,UAAU;AAAA,MACZ,CAAC;AACD,YAAM,mBAAmB,YAAY,eAAqD;AAAA,QACxF,UAAU;AAAA,MACZ,CAAC;AAED,kBAAY;AAAA,QACV,EAAE,UAAU,oBAAoB,OAAO,MAAM;AAAA,QAC7C,CAAC,QAAQ;AACP,cAAI,CAAC,IAAK,QAAO;AACjB,iBAAO;AAAA,YACL,GAAG;AAAA,YACH,OAAO,IAAI,MAAM,IAAI,CAAC,UAAU;AAAA,cAC9B,GAAG;AAAA,cACH,MAAM,KAAK,KAAK;AAAA,gBAAI,CAAC,MACnB,EAAE,OAAO,eAAe,EAAE,GAAG,GAAG,YAAY,MAAM,IAAI;AAAA,cACxD;AAAA,YACF,EAAE;AAAA,UACJ;AAAA,QACF;AAAA,MACF;AAEA,kBAAY;AAAA,QACV,EAAE,UAAU,iBAAiB,OAAO,MAAM;AAAA,QAC1C,CAAC,QAAQ;AACP,cAAI,CAAC,KAAK,MAAM,OAAQ,QAAO;AAC/B,iBAAO;AAAA,YACL,GAAG;AAAA,YACH,OAAO,IAAI,MAAM;AAAA,cAAI,CAAC,MAAM,MAC1B,MAAM,IAAI,EAAE,GAAG,MAAM,OAAO,KAAK,QAAQ,EAAE,IAAI;AAAA,YACjD;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,aAAO,EAAE,kBAAkB,iBAAiB;AAAA,IAC9C;AAAA,IAEA,SAAS,CAAC,MAAM,eAAe,QAAQ;AACrC,WAAK,iBAAiB,QAAQ,CAAC,CAAC,KAAK,IAAI,MAAM,YAAY,aAAa,KAAK,IAAI,CAAC;AAClF,WAAK,iBAAiB,QAAQ,CAAC,CAAC,KAAK,IAAI,MAAM,YAAY,aAAa,KAAK,IAAI,CAAC;AAAA,IACpF;AAAA,IAEA,WAAW,MAAM;AACf,kBAAY,kBAAkB,EAAE,UAAU,gBAAgB,CAAC;AAC3D,kBAAY,kBAAkB,EAAE,UAAU,mBAAmB,CAAC;AAAA,IAChE;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/projects/hooks/update-project.hook.ts"],"sourcesContent":["'use client';\n\nimport { useMutation, useQueryClient, InfiniteData, Query } from '@tanstack/react-query';\nimport { updateProjectAction } from '../actions/update-project.action';\nimport { withAction } from '../../../utils/withAction';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\nimport { PROJECTS_BASE_KEY } from './list-projects.hook';\nimport { insertSorted, buildCompareFn } from '../../../infra/utils/array';\nimport type { Project, ProjectsPage, UpdateProjectRequest } from '../types';\n\nfunction extractSort(query: Query): string | undefined {\n const key = query.queryKey;\n for (let i = key.length - 1; i >= 0; i--) {\n const segment = key[i];\n if (segment && typeof segment === 'object' && 'sort' in segment) {\n return (segment as Record<string, unknown>).sort as string | undefined;\n }\n }\n return undefined;\n}\n\nexport function useUpdateProject() {\n const queryClient = useQueryClient();\n const projectsKey = useAuthQueryKey([...PROJECTS_BASE_KEY]);\n\n return useMutation({\n mutationFn: ({ projectId, data }: { projectId: number; data: UpdateProjectRequest }) =>\n withAction(updateProjectAction)(projectId, data),\n\n onSuccess: (updatedProject: Project, { projectId }) => {\n const cache = queryClient.getQueryCache();\n const queries = cache.findAll({ queryKey: projectsKey });\n\n for (const query of queries) {\n const sort = extractSort(query);\n const isInfinite = query.queryKey.includes('infinite');\n\n if (isInfinite) {\n queryClient.setQueryData<InfiniteData<ProjectsPage>>(\n query.queryKey,\n (old) => {\n if (!old?.pages.length) return old;\n\n const pageSize = old.pages[0].data.length || 20;\n const allItems = old.pages.flatMap((page) => page.data);\n const without = allItems.filter((p) => p.id !== projectId);\n\n const withUpdated = sort\n ? insertSorted(without, updatedProject, buildCompareFn<Project>(sort))\n : [updatedProject, ...without];\n\n return {\n ...old,\n pages: old.pages.map((page, i) => ({\n ...page,\n data: withUpdated.slice(i * pageSize, (i + 1) * pageSize),\n })),\n };\n },\n );\n } else {\n queryClient.setQueryData<ProjectsPage>(\n query.queryKey,\n (old) => {\n if (!old) return old;\n\n const pageSize = old.data.length || 20;\n const without = old.data.filter((p) => p.id !== projectId);\n\n const withUpdated = sort\n ? insertSorted(without, updatedProject, buildCompareFn<Project>(sort))\n : [updatedProject, ...without];\n\n return {\n ...old,\n data: withUpdated.slice(0, pageSize),\n };\n },\n );\n }\n }\n\n queryClient.invalidateQueries({ queryKey: projectsKey });\n },\n });\n}\n"],"mappings":";AAEA,SAAS,aAAa,sBAA2C;AACjE,SAAS,2BAA2B;AACpC,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAChC,SAAS,yBAAyB;AAClC,SAAS,cAAc,sBAAsB;AAG7C,SAAS,YAAY,OAAkC;AACrD,QAAM,MAAM,MAAM;AAClB,WAAS,IAAI,IAAI,SAAS,GAAG,KAAK,GAAG,KAAK;AACxC,UAAM,UAAU,IAAI,CAAC;AACrB,QAAI,WAAW,OAAO,YAAY,YAAY,UAAU,SAAS;AAC/D,aAAQ,QAAoC;AAAA,IAC9C;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,mBAAmB;AACjC,QAAM,cAAc,eAAe;AACnC,QAAM,cAAc,gBAAgB,CAAC,GAAG,iBAAiB,CAAC;AAE1D,SAAO,YAAY;AAAA,IACjB,YAAY,CAAC,EAAE,WAAW,KAAK,MAC7B,WAAW,mBAAmB,EAAE,WAAW,IAAI;AAAA,IAEjD,WAAW,CAAC,gBAAyB,EAAE,UAAU,MAAM;AACrD,YAAM,QAAQ,YAAY,cAAc;AACxC,YAAM,UAAU,MAAM,QAAQ,EAAE,UAAU,YAAY,CAAC;AAEvD,iBAAW,SAAS,SAAS;AAC3B,cAAM,OAAO,YAAY,KAAK;AAC9B,cAAM,aAAa,MAAM,SAAS,SAAS,UAAU;AAErD,YAAI,YAAY;AACd,sBAAY;AAAA,YACV,MAAM;AAAA,YACN,CAAC,QAAQ;AACP,kBAAI,CAAC,KAAK,MAAM,OAAQ,QAAO;AAE/B,oBAAM,WAAW,IAAI,MAAM,CAAC,EAAE,KAAK,UAAU;AAC7C,oBAAM,WAAW,IAAI,MAAM,QAAQ,CAAC,SAAS,KAAK,IAAI;AACtD,oBAAM,UAAU,SAAS,OAAO,CAAC,MAAM,EAAE,OAAO,SAAS;AAEzD,oBAAM,cAAc,OAChB,aAAa,SAAS,gBAAgB,eAAwB,IAAI,CAAC,IACnE,CAAC,gBAAgB,GAAG,OAAO;AAE/B,qBAAO;AAAA,gBACL,GAAG;AAAA,gBACH,OAAO,IAAI,MAAM,IAAI,CAAC,MAAM,OAAO;AAAA,kBACjC,GAAG;AAAA,kBACH,MAAM,YAAY,MAAM,IAAI,WAAW,IAAI,KAAK,QAAQ;AAAA,gBAC1D,EAAE;AAAA,cACJ;AAAA,YACF;AAAA,UACF;AAAA,QACF,OAAO;AACL,sBAAY;AAAA,YACV,MAAM;AAAA,YACN,CAAC,QAAQ;AACP,kBAAI,CAAC,IAAK,QAAO;AAEjB,oBAAM,WAAW,IAAI,KAAK,UAAU;AACpC,oBAAM,UAAU,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE,OAAO,SAAS;AAEzD,oBAAM,cAAc,OAChB,aAAa,SAAS,gBAAgB,eAAwB,IAAI,CAAC,IACnE,CAAC,gBAAgB,GAAG,OAAO;AAE/B,qBAAO;AAAA,gBACL,GAAG;AAAA,gBACH,MAAM,YAAY,MAAM,GAAG,QAAQ;AAAA,cACrC;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,kBAAY,kBAAkB,EAAE,UAAU,YAAY,CAAC;AAAA,IACzD;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/projects/hooks/update-project.hook.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useMutation, useQueryClient, InfiniteData, Query } from '@tanstack/react-query';\r\nimport { updateProjectAction } from '../actions/update-project.action';\r\nimport { withAction } from '../../../utils/withAction';\r\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\r\nimport { PROJECTS_BASE_KEY } from './list-projects.hook';\r\nimport { insertSorted, buildCompareFn } from '../../../infra/utils/array';\r\nimport type { Project, ProjectsPage, UpdateProjectRequest } from '../types';\r\n\r\nfunction extractSort(query: Query): string | undefined {\r\n const key = query.queryKey;\r\n for (let i = key.length - 1; i >= 0; i--) {\r\n const segment = key[i];\r\n if (segment && typeof segment === 'object' && 'sort' in segment) {\r\n return (segment as Record<string, unknown>).sort as string | undefined;\r\n }\r\n }\r\n return undefined;\r\n}\r\n\r\nexport function useUpdateProject() {\r\n const queryClient = useQueryClient();\r\n const projectsKey = useAuthQueryKey([...PROJECTS_BASE_KEY]);\r\n\r\n return useMutation({\r\n mutationFn: ({ projectId, data }: { projectId: number; data: UpdateProjectRequest }) =>\r\n withAction(updateProjectAction)(projectId, data),\r\n\r\n onSuccess: (updatedProject: Project, { projectId }) => {\r\n const cache = queryClient.getQueryCache();\r\n const queries = cache.findAll({ queryKey: projectsKey });\r\n\r\n for (const query of queries) {\r\n const sort = extractSort(query);\r\n const isInfinite = query.queryKey.includes('infinite');\r\n\r\n if (isInfinite) {\r\n queryClient.setQueryData<InfiniteData<ProjectsPage>>(\r\n query.queryKey,\r\n (old) => {\r\n if (!old?.pages.length) return old;\r\n\r\n const pageSize = old.pages[0].data.length || 20;\r\n const allItems = old.pages.flatMap((page) => page.data);\r\n const without = allItems.filter((p) => p.id !== projectId);\r\n\r\n const withUpdated = sort\r\n ? insertSorted(without, updatedProject, buildCompareFn<Project>(sort))\r\n : [updatedProject, ...without];\r\n\r\n return {\r\n ...old,\r\n pages: old.pages.map((page, i) => ({\r\n ...page,\r\n data: withUpdated.slice(i * pageSize, (i + 1) * pageSize),\r\n })),\r\n };\r\n },\r\n );\r\n } else {\r\n queryClient.setQueryData<ProjectsPage>(\r\n query.queryKey,\r\n (old) => {\r\n if (!old) return old;\r\n\r\n const pageSize = old.data.length || 20;\r\n const without = old.data.filter((p) => p.id !== projectId);\r\n\r\n const withUpdated = sort\r\n ? insertSorted(without, updatedProject, buildCompareFn<Project>(sort))\r\n : [updatedProject, ...without];\r\n\r\n return {\r\n ...old,\r\n data: withUpdated.slice(0, pageSize),\r\n };\r\n },\r\n );\r\n }\r\n }\r\n\r\n queryClient.invalidateQueries({ queryKey: projectsKey });\r\n },\r\n });\r\n}\r\n"],"mappings":";AAEA,SAAS,aAAa,sBAA2C;AACjE,SAAS,2BAA2B;AACpC,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAChC,SAAS,yBAAyB;AAClC,SAAS,cAAc,sBAAsB;AAG7C,SAAS,YAAY,OAAkC;AACrD,QAAM,MAAM,MAAM;AAClB,WAAS,IAAI,IAAI,SAAS,GAAG,KAAK,GAAG,KAAK;AACxC,UAAM,UAAU,IAAI,CAAC;AACrB,QAAI,WAAW,OAAO,YAAY,YAAY,UAAU,SAAS;AAC/D,aAAQ,QAAoC;AAAA,IAC9C;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,mBAAmB;AACjC,QAAM,cAAc,eAAe;AACnC,QAAM,cAAc,gBAAgB,CAAC,GAAG,iBAAiB,CAAC;AAE1D,SAAO,YAAY;AAAA,IACjB,YAAY,CAAC,EAAE,WAAW,KAAK,MAC7B,WAAW,mBAAmB,EAAE,WAAW,IAAI;AAAA,IAEjD,WAAW,CAAC,gBAAyB,EAAE,UAAU,MAAM;AACrD,YAAM,QAAQ,YAAY,cAAc;AACxC,YAAM,UAAU,MAAM,QAAQ,EAAE,UAAU,YAAY,CAAC;AAEvD,iBAAW,SAAS,SAAS;AAC3B,cAAM,OAAO,YAAY,KAAK;AAC9B,cAAM,aAAa,MAAM,SAAS,SAAS,UAAU;AAErD,YAAI,YAAY;AACd,sBAAY;AAAA,YACV,MAAM;AAAA,YACN,CAAC,QAAQ;AACP,kBAAI,CAAC,KAAK,MAAM,OAAQ,QAAO;AAE/B,oBAAM,WAAW,IAAI,MAAM,CAAC,EAAE,KAAK,UAAU;AAC7C,oBAAM,WAAW,IAAI,MAAM,QAAQ,CAAC,SAAS,KAAK,IAAI;AACtD,oBAAM,UAAU,SAAS,OAAO,CAAC,MAAM,EAAE,OAAO,SAAS;AAEzD,oBAAM,cAAc,OAChB,aAAa,SAAS,gBAAgB,eAAwB,IAAI,CAAC,IACnE,CAAC,gBAAgB,GAAG,OAAO;AAE/B,qBAAO;AAAA,gBACL,GAAG;AAAA,gBACH,OAAO,IAAI,MAAM,IAAI,CAAC,MAAM,OAAO;AAAA,kBACjC,GAAG;AAAA,kBACH,MAAM,YAAY,MAAM,IAAI,WAAW,IAAI,KAAK,QAAQ;AAAA,gBAC1D,EAAE;AAAA,cACJ;AAAA,YACF;AAAA,UACF;AAAA,QACF,OAAO;AACL,sBAAY;AAAA,YACV,MAAM;AAAA,YACN,CAAC,QAAQ;AACP,kBAAI,CAAC,IAAK,QAAO;AAEjB,oBAAM,WAAW,IAAI,KAAK,UAAU;AACpC,oBAAM,UAAU,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE,OAAO,SAAS;AAEzD,oBAAM,cAAc,OAChB,aAAa,SAAS,gBAAgB,eAAwB,IAAI,CAAC,IACnE,CAAC,gBAAgB,GAAG,OAAO;AAE/B,qBAAO;AAAA,gBACL,GAAG;AAAA,gBACH,MAAM,YAAY,MAAM,GAAG,QAAQ;AAAA,cACrC;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,kBAAY,kBAAkB,EAAE,UAAU,YAAY,CAAC;AAAA,IACzD;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/projects/services/projects.service.ts"],"sourcesContent":["import 'server-only';\n\nimport { api } from '../../../infra/api/client';\nimport { ApiError } from '../../../infra/api/types';\nimport { buildQueryParams } from '../../../infra/utils/params';\nimport { getUserContext } from '../../auth/utils/get-user-context';\nimport { assertManagementSubscription } from '../../auth/utils/assert-management-subscription';\nimport {\n Project,\n ProjectSchema,\n ProjectsPage,\n CreateProjectRequest,\n UpdateProjectRequest,\n} from '../types';\n\ninterface ApiListResponse<T> {\n data: T[];\n total: number;\n status: number;\n message?: string;\n}\n\ninterface ApiMutationResponse {\n status: number;\n message?: string;\n data?: Project[];\n}\n\ninterface ListProjectsParams {\n page?: number;\n limit?: number;\n sort?: string;\n search?: string;\n deleted?: number;\n}\n\nclass ProjectsService {\n async list(params: ListProjectsParams = {}): Promise<ProjectsPage> {\n const { id_account, id_user } = await getUserContext();\n const query = buildQueryParams(params as Record<string, string | number | boolean | undefined>);\n const url = `/account/${id_account}/user/${id_user}/projects${query ? `?${query}` : ''}`;\n\n const response = await api.apps.get<ApiListResponse<Project>>(url);\n\n if (response.status === 0) {\n throw new ApiError(\n response.message || 'Erro ao listar projetos',\n 'LIST_PROJECTS_FAILED',\n 400\n );\n }\n\n return {\n data: (response.data || []).map((item) => ProjectSchema.parse(item)),\n total: response.total || 0,\n page: params.page ?? 1,\n };\n }\n\n async findById(projectId: number): Promise<Project> {\n const { id_account, id_user } = await getUserContext();\n const url = `/account/${id_account}/user/${id_user}/projects/${projectId}`;\n\n const response = await api.apps.get<ApiMutationResponse>(url);\n\n if (response.status === 0) {\n throw new ApiError(\n response.message || 'Erro ao buscar projeto',\n 'FIND_PROJECT_FAILED',\n 400\n );\n }\n\n if (!response.data || response.data.length === 0) {\n throw new ApiError('Projeto não encontrado', 'PROJECT_NOT_FOUND', 404);\n }\n\n return ProjectSchema.parse(response.data[0]);\n }\n\n async create(data: CreateProjectRequest): Promise<Project> {\n await assertManagementSubscription();\n const { id_account, id_user } = await getUserContext();\n const url = `/account/${id_account}/user/${id_user}/projects`;\n\n const response = await api.apps.post<ApiMutationResponse>(url, data);\n\n if (response.status === 0) {\n throw new ApiError(\n response.message || 'Erro ao criar projeto',\n 'CREATE_PROJECT_FAILED',\n 400\n );\n }\n\n if (!response.data || response.data.length === 0) {\n throw new ApiError('Resposta inválida ao criar projeto', 'INVALID_RESPONSE', 500);\n }\n\n return ProjectSchema.parse(response.data[0]);\n }\n\n async update(projectId: number, data: UpdateProjectRequest): Promise<Project> {\n await assertManagementSubscription();\n const { id_account, id_user } = await getUserContext();\n const url = `/account/${id_account}/user/${id_user}/projects/${projectId}`;\n\n const response = await api.apps.put<ApiMutationResponse>(url, data);\n\n if (response.status === 0) {\n throw new ApiError(\n response.message || 'Erro ao atualizar projeto',\n 'UPDATE_PROJECT_FAILED',\n 400\n );\n }\n\n if (!response.data || response.data.length === 0) {\n throw new ApiError('Resposta inválida ao atualizar projeto', 'INVALID_RESPONSE', 500);\n }\n\n return ProjectSchema.parse(response.data[0]);\n }\n\n async delete(projectId: number, moveToProjectId: number): Promise<void> {\n await assertManagementSubscription();\n const { id_account, id_user } = await getUserContext();\n const url = `/account/${id_account}/user/${id_user}/projects/${projectId}`;\n\n const response = await api.apps.delete<ApiMutationResponse>(url, {\n body: JSON.stringify({ id_project_to_move: moveToProjectId }),\n });\n\n // Alguns backends respondem `null` no delete quando a exclusão foi bem-sucedida.\n // Nesse caso não há payload para validar e o fluxo deve seguir sem erro.\n if (response == null) {\n console.warn('[ProjectsService.delete] null response treated as success', {\n id_account,\n id_user,\n projectId,\n moveToProjectId,\n });\n return;\n }\n\n if (response.status === 0) {\n throw new ApiError(\n response.message || 'Erro ao deletar projeto',\n 'DELETE_PROJECT_FAILED',\n 400\n );\n }\n }\n}\n\nexport const projectsService = new ProjectsService();\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/projects/services/projects.service.ts"],"sourcesContent":["import 'server-only';\r\n\r\nimport { api } from '../../../infra/api/client';\r\nimport { ApiError } from '../../../infra/api/types';\r\nimport { buildQueryParams } from '../../../infra/utils/params';\r\nimport { getUserContext } from '../../auth/utils/get-user-context';\r\nimport { assertManagementSubscription } from '../../auth/utils/assert-management-subscription';\r\nimport {\r\n Project,\r\n ProjectSchema,\r\n ProjectsPage,\r\n CreateProjectRequest,\r\n UpdateProjectRequest,\r\n} from '../types';\r\n\r\ninterface ApiListResponse<T> {\r\n data: T[];\r\n total: number;\r\n status: number;\r\n message?: string;\r\n}\r\n\r\ninterface ApiMutationResponse {\r\n status: number;\r\n message?: string;\r\n data?: Project[];\r\n}\r\n\r\ninterface ListProjectsParams {\r\n page?: number;\r\n limit?: number;\r\n sort?: string;\r\n search?: string;\r\n deleted?: number;\r\n}\r\n\r\nclass ProjectsService {\r\n async list(params: ListProjectsParams = {}): Promise<ProjectsPage> {\r\n const { id_account, id_user } = await getUserContext();\r\n const query = buildQueryParams(params as Record<string, string | number | boolean | undefined>);\r\n const url = `/account/${id_account}/user/${id_user}/projects${query ? `?${query}` : ''}`;\r\n\r\n const response = await api.apps.get<ApiListResponse<Project>>(url);\r\n\r\n if (response.status === 0) {\r\n throw new ApiError(\r\n response.message || 'Erro ao listar projetos',\r\n 'LIST_PROJECTS_FAILED',\r\n 400\r\n );\r\n }\r\n\r\n return {\r\n data: (response.data || []).map((item) => ProjectSchema.parse(item)),\r\n total: response.total || 0,\r\n page: params.page ?? 1,\r\n };\r\n }\r\n\r\n async findById(projectId: number): Promise<Project> {\r\n const { id_account, id_user } = await getUserContext();\r\n const url = `/account/${id_account}/user/${id_user}/projects/${projectId}`;\r\n\r\n const response = await api.apps.get<ApiMutationResponse>(url);\r\n\r\n if (response.status === 0) {\r\n throw new ApiError(\r\n response.message || 'Erro ao buscar projeto',\r\n 'FIND_PROJECT_FAILED',\r\n 400\r\n );\r\n }\r\n\r\n if (!response.data || response.data.length === 0) {\r\n throw new ApiError('Projeto não encontrado', 'PROJECT_NOT_FOUND', 404);\r\n }\r\n\r\n return ProjectSchema.parse(response.data[0]);\r\n }\r\n\r\n async create(data: CreateProjectRequest): Promise<Project> {\r\n await assertManagementSubscription();\r\n const { id_account, id_user } = await getUserContext();\r\n const url = `/account/${id_account}/user/${id_user}/projects`;\r\n\r\n const response = await api.apps.post<ApiMutationResponse>(url, data);\r\n\r\n if (response.status === 0) {\r\n throw new ApiError(\r\n response.message || 'Erro ao criar projeto',\r\n 'CREATE_PROJECT_FAILED',\r\n 400\r\n );\r\n }\r\n\r\n if (!response.data || response.data.length === 0) {\r\n throw new ApiError('Resposta inválida ao criar projeto', 'INVALID_RESPONSE', 500);\r\n }\r\n\r\n return ProjectSchema.parse(response.data[0]);\r\n }\r\n\r\n async update(projectId: number, data: UpdateProjectRequest): Promise<Project> {\r\n await assertManagementSubscription();\r\n const { id_account, id_user } = await getUserContext();\r\n const url = `/account/${id_account}/user/${id_user}/projects/${projectId}`;\r\n\r\n const response = await api.apps.put<ApiMutationResponse>(url, data);\r\n\r\n if (response.status === 0) {\r\n throw new ApiError(\r\n response.message || 'Erro ao atualizar projeto',\r\n 'UPDATE_PROJECT_FAILED',\r\n 400\r\n );\r\n }\r\n\r\n if (!response.data || response.data.length === 0) {\r\n throw new ApiError('Resposta inválida ao atualizar projeto', 'INVALID_RESPONSE', 500);\r\n }\r\n\r\n return ProjectSchema.parse(response.data[0]);\r\n }\r\n\r\n async delete(projectId: number, moveToProjectId: number): Promise<void> {\r\n await assertManagementSubscription();\r\n const { id_account, id_user } = await getUserContext();\r\n const url = `/account/${id_account}/user/${id_user}/projects/${projectId}`;\r\n\r\n const response = await api.apps.delete<ApiMutationResponse>(url, {\r\n body: JSON.stringify({ id_project_to_move: moveToProjectId }),\r\n });\r\n\r\n // Alguns backends respondem `null` no delete quando a exclusão foi bem-sucedida.\r\n // Nesse caso não há payload para validar e o fluxo deve seguir sem erro.\r\n if (response == null) {\r\n console.warn('[ProjectsService.delete] null response treated as success', {\r\n id_account,\r\n id_user,\r\n projectId,\r\n moveToProjectId,\r\n });\r\n return;\r\n }\r\n\r\n if (response.status === 0) {\r\n throw new ApiError(\r\n response.message || 'Erro ao deletar projeto',\r\n 'DELETE_PROJECT_FAILED',\r\n 400\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport const projectsService = new ProjectsService();\r\n"],"mappings":"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","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/subscriptions/actions/calculate-subscription.action.ts"],"sourcesContent":["'use server';\n\nimport { safeServerAction } from '../../../utils/safeServerAction';\nimport type { CalculateSubscriptionRequest } from '../types/calculate-subscription.type';\nimport { subscriptionsService } from '../services/subscriptions.service';\n\nexport async function calculateSubscriptionAction(data: CalculateSubscriptionRequest) {\n return safeServerAction(() => subscriptionsService.calculateSubscription(data));\n}\n"],"mappings":";AAEA,SAAS,wBAAwB;AAEjC,SAAS,4BAA4B;AAErC,eAAsB,4BAA4B,MAAoC;AACpF,SAAO,iBAAiB,MAAM,qBAAqB,sBAAsB,IAAI,CAAC;AAChF;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/subscriptions/actions/calculate-subscription.action.ts"],"sourcesContent":["'use server';\r\n\r\nimport { safeServerAction } from '../../../utils/safeServerAction';\r\nimport type { CalculateSubscriptionRequest } from '../types/calculate-subscription.type';\r\nimport { subscriptionsService } from '../services/subscriptions.service';\r\n\r\nexport async function calculateSubscriptionAction(data: CalculateSubscriptionRequest) {\r\n return safeServerAction(() => subscriptionsService.calculateSubscription(data));\r\n}\r\n"],"mappings":";AAEA,SAAS,wBAAwB;AAEjC,SAAS,4BAA4B;AAErC,eAAsB,4BAA4B,MAAoC;AACpF,SAAO,iBAAiB,MAAM,qBAAqB,sBAAsB,IAAI,CAAC;AAChF;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/subscriptions/actions/list-subscriptions.action.ts"],"sourcesContent":["'use server';\n\nimport { safeServerAction } from '../../../utils/safeServerAction';\nimport type { FindSubscriptionsParams } from '../types/subscription.type';\nimport { subscriptionsService } from '../services/subscriptions.service';\n\nexport async function listSubscriptionsAction(params?: Partial<FindSubscriptionsParams>) {\n return safeServerAction(() => subscriptionsService.listSubscriptions(params));\n}\n"],"mappings":";AAEA,SAAS,wBAAwB;AAEjC,SAAS,4BAA4B;AAErC,eAAsB,wBAAwB,QAA2C;AACvF,SAAO,iBAAiB,MAAM,qBAAqB,kBAAkB,MAAM,CAAC;AAC9E;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/subscriptions/actions/list-subscriptions.action.ts"],"sourcesContent":["'use server';\r\n\r\nimport { safeServerAction } from '../../../utils/safeServerAction';\r\nimport type { FindSubscriptionsParams } from '../types/subscription.type';\r\nimport { subscriptionsService } from '../services/subscriptions.service';\r\n\r\nexport async function listSubscriptionsAction(params?: Partial<FindSubscriptionsParams>) {\r\n return safeServerAction(() => subscriptionsService.listSubscriptions(params));\r\n}\r\n"],"mappings":";AAEA,SAAS,wBAAwB;AAEjC,SAAS,4BAA4B;AAErC,eAAsB,wBAAwB,QAA2C;AACvF,SAAO,iBAAiB,MAAM,qBAAqB,kBAAkB,MAAM,CAAC;AAC9E;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/subscriptions/actions/update-subscription-payment.action.ts"],"sourcesContent":["\"use server\";\n\nimport { safeMutationAction } from \"../../../utils/safeMutationAction\";\nimport { subscriptionsService } from \"../services/subscriptions.service\";\n\nexport async function updateSubscriptionPaymentAction(\n subscriptionId: number | string,\n data: { id_card: string; payment_method: number },\n) {\n return safeMutationAction(async () => {\n return subscriptionsService.updateSubscriptionPayment(subscriptionId, data);\n });\n}\n"],"mappings":";AAEA,SAAS,0BAA0B;AACnC,SAAS,4BAA4B;AAErC,eAAsB,gCACpB,gBACA,MACA;AACA,SAAO,mBAAmB,YAAY;AACpC,WAAO,qBAAqB,0BAA0B,gBAAgB,IAAI;AAAA,EAC5E,CAAC;AACH;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/subscriptions/actions/update-subscription-payment.action.ts"],"sourcesContent":["\"use server\";\r\n\r\nimport { safeMutationAction } from \"../../../utils/safeMutationAction\";\r\nimport { subscriptionsService } from \"../services/subscriptions.service\";\r\n\r\nexport async function updateSubscriptionPaymentAction(\r\n subscriptionId: number | string,\r\n data: { id_card: string; payment_method: number },\r\n) {\r\n return safeMutationAction(async () => {\r\n return subscriptionsService.updateSubscriptionPayment(subscriptionId, data);\r\n });\r\n}\r\n"],"mappings":";AAEA,SAAS,0BAA0B;AACnC,SAAS,4BAA4B;AAErC,eAAsB,gCACpB,gBACA,MACA;AACA,SAAO,mBAAmB,YAAY;AACpC,WAAO,qBAAqB,0BAA0B,gBAAgB,IAAI;AAAA,EAC5E,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/subscriptions/actions/update-subscription-plan.action.ts"],"sourcesContent":["\"use server\";\n\nimport { safeMutationAction } from \"../../../utils/safeMutationAction\";\nimport type { UpdateSubscriptionPlanRequest } from \"../types/calculate-subscription.type\";\nimport { subscriptionsService } from \"../services/subscriptions.service\";\n\nexport async function updateSubscriptionPlanAction(\n subscriptionId: number | string,\n data: UpdateSubscriptionPlanRequest,\n) {\n return safeMutationAction(async () => {\n return subscriptionsService.updateSubscriptionPlan(subscriptionId, data);\n });\n}\n"],"mappings":";AAEA,SAAS,0BAA0B;AAEnC,SAAS,4BAA4B;AAErC,eAAsB,6BACpB,gBACA,MACA;AACA,SAAO,mBAAmB,YAAY;AACpC,WAAO,qBAAqB,uBAAuB,gBAAgB,IAAI;AAAA,EACzE,CAAC;AACH;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/subscriptions/actions/update-subscription-plan.action.ts"],"sourcesContent":["\"use server\";\r\n\r\nimport { safeMutationAction } from \"../../../utils/safeMutationAction\";\r\nimport type { UpdateSubscriptionPlanRequest } from \"../types/calculate-subscription.type\";\r\nimport { subscriptionsService } from \"../services/subscriptions.service\";\r\n\r\nexport async function updateSubscriptionPlanAction(\r\n subscriptionId: number | string,\r\n data: UpdateSubscriptionPlanRequest,\r\n) {\r\n return safeMutationAction(async () => {\r\n return subscriptionsService.updateSubscriptionPlan(subscriptionId, data);\r\n });\r\n}\r\n"],"mappings":";AAEA,SAAS,0BAA0B;AAEnC,SAAS,4BAA4B;AAErC,eAAsB,6BACpB,gBACA,MACA;AACA,SAAO,mBAAmB,YAAY;AACpC,WAAO,qBAAqB,uBAAuB,gBAAgB,IAAI;AAAA,EACzE,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/subscriptions/constants/query-keys.constants.ts"],"sourcesContent":["export const SUBSCRIPTIONS_QUERY_KEY = ['subscriptions'] as const;\n\nexport const CHARGES_QUERY_KEY = ['charges'] as const;\n"],"mappings":"AAAO,MAAM,0BAA0B,CAAC,eAAe;AAEhD,MAAM,oBAAoB,CAAC,SAAS;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/subscriptions/constants/query-keys.constants.ts"],"sourcesContent":["export const SUBSCRIPTIONS_QUERY_KEY = ['subscriptions'] as const;\r\n\r\nexport const CHARGES_QUERY_KEY = ['charges'] as const;\r\n"],"mappings":"AAAO,MAAM,0BAA0B,CAAC,eAAe;AAEhD,MAAM,oBAAoB,CAAC,SAAS;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/subscriptions/constants/subscription.constants.ts"],"sourcesContent":["export const SUBSCRIPTION_GRACE_PERIOD_DAYS = 15;\n"],"mappings":"AAAO,MAAM,iCAAiC;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/subscriptions/constants/subscription.constants.ts"],"sourcesContent":["export const SUBSCRIPTION_GRACE_PERIOD_DAYS = 15;\r\n"],"mappings":"AAAO,MAAM,iCAAiC;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/subscriptions/handlers/list-subscriptions.handler.ts"],"sourcesContent":["import 'server-only';\n\nimport type { NextRequest } from 'next/server';\nimport { safeRouteHandler } from '../../../infra/route/safe-route-handler';\nimport { searchParamsToParams } from '../../../infra/route/search-params';\nimport { subscriptionsService } from '../services/subscriptions.service';\nimport type { FindSubscriptionsParams } from '../types/subscription.type';\n\nexport function createListSubscriptionsHandler() {\n return async function GET(req: NextRequest) {\n return safeRouteHandler(() =>\n subscriptionsService.listSubscriptions(\n searchParamsToParams<FindSubscriptionsParams>(req.nextUrl.searchParams)\n )\n );\n };\n}\n"],"mappings":"AAAA,OAAO;AAGP,SAAS,wBAAwB;AACjC,SAAS,4BAA4B;AACrC,SAAS,4BAA4B;AAG9B,SAAS,iCAAiC;AAC/C,SAAO,eAAe,IAAI,KAAkB;AAC1C,WAAO;AAAA,MAAiB,MACtB,qBAAqB;AAAA,QACnB,qBAA8C,IAAI,QAAQ,YAAY;AAAA,MACxE;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/subscriptions/handlers/list-subscriptions.handler.ts"],"sourcesContent":["import 'server-only';\r\n\r\nimport type { NextRequest } from 'next/server';\r\nimport { safeRouteHandler } from '../../../infra/route/safe-route-handler';\r\nimport { searchParamsToParams } from '../../../infra/route/search-params';\r\nimport { subscriptionsService } from '../services/subscriptions.service';\r\nimport type { FindSubscriptionsParams } from '../types/subscription.type';\r\n\r\nexport function createListSubscriptionsHandler() {\r\n return async function GET(req: NextRequest) {\r\n return safeRouteHandler(() =>\r\n subscriptionsService.listSubscriptions(\r\n searchParamsToParams<FindSubscriptionsParams>(req.nextUrl.searchParams)\r\n )\r\n );\r\n };\r\n}\r\n"],"mappings":"AAAA,OAAO;AAGP,SAAS,wBAAwB;AACjC,SAAS,4BAA4B;AACrC,SAAS,4BAA4B;AAG9B,SAAS,iCAAiC;AAC/C,SAAO,eAAe,IAAI,KAAkB;AAC1C,WAAO;AAAA,MAAiB,MACtB,qBAAqB;AAAA,QACnB,qBAA8C,IAAI,QAAQ,YAAY;AAAA,MACxE;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/subscriptions/hooks/calculate-subscription.hook.ts"],"sourcesContent":["'use client';\n\nimport { useMutation } from '@tanstack/react-query';\nimport { withAction } from '../../../utils/withAction';\nimport { calculateSubscriptionAction } from '../actions/calculate-subscription.action';\nimport type { CalculateSubscriptionRequest } from '../types/calculate-subscription.type';\n\nexport function useCalculateSubscription() {\n return useMutation({\n mutationFn: (data: CalculateSubscriptionRequest) =>\n withAction(calculateSubscriptionAction)(data),\n });\n}\n"],"mappings":";AAEA,SAAS,mBAAmB;AAC5B,SAAS,kBAAkB;AAC3B,SAAS,mCAAmC;AAGrC,SAAS,2BAA2B;AACzC,SAAO,YAAY;AAAA,IACjB,YAAY,CAAC,SACX,WAAW,2BAA2B,EAAE,IAAI;AAAA,EAChD,CAAC;AACH;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/subscriptions/hooks/calculate-subscription.hook.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useMutation } from '@tanstack/react-query';\r\nimport { withAction } from '../../../utils/withAction';\r\nimport { calculateSubscriptionAction } from '../actions/calculate-subscription.action';\r\nimport type { CalculateSubscriptionRequest } from '../types/calculate-subscription.type';\r\n\r\nexport function useCalculateSubscription() {\r\n return useMutation({\r\n mutationFn: (data: CalculateSubscriptionRequest) =>\r\n withAction(calculateSubscriptionAction)(data),\r\n });\r\n}\r\n"],"mappings":";AAEA,SAAS,mBAAmB;AAC5B,SAAS,kBAAkB;AAC3B,SAAS,mCAAmC;AAGrC,SAAS,2BAA2B;AACzC,SAAO,YAAY;AAAA,IACjB,YAAY,CAAC,SACX,WAAW,2BAA2B,EAAE,IAAI;AAAA,EAChD,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/subscriptions/hooks/find-active-subscription.hook.ts"],"sourcesContent":["\"use client\";\n\nimport { useQuery } from \"@tanstack/react-query\";\nimport { apiFetch } from \"../../../infra/http/api-fetch\";\nimport type { PaginatedSuccessResult } from \"../../../infra/api/types\";\nimport type { Subscription } from \"../types/subscription.type\";\nimport { SUBSCRIPTIONS_QUERY_KEY } from \"../constants/query-keys.constants\";\nimport { useAuthQueryKey } from \"../../../hooks/useAuthQueryKey\";\n\nexport function useActiveSubscription() {\n const queryKey = useAuthQueryKey([...SUBSCRIPTIONS_QUERY_KEY, \"active\"]);\n\n return useQuery({\n queryKey,\n queryFn: ({ signal }) =>\n apiFetch<PaginatedSuccessResult<Subscription>>('/api/subscriptions', {\n params: { limit: 1 },\n signal,\n }),\n staleTime: 10_000,\n });\n}\n"],"mappings":";AAEA,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AAGzB,SAAS,+BAA+B;AACxC,SAAS,uBAAuB;AAEzB,SAAS,wBAAwB;AACtC,QAAM,WAAW,gBAAgB,CAAC,GAAG,yBAAyB,QAAQ,CAAC;AAEvE,SAAO,SAAS;AAAA,IACd;AAAA,IACA,SAAS,CAAC,EAAE,OAAO,MACjB,SAA+C,sBAAsB;AAAA,MACnE,QAAQ,EAAE,OAAO,EAAE;AAAA,MACnB;AAAA,IACF,CAAC;AAAA,IACH,WAAW;AAAA,EACb,CAAC;AACH;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/subscriptions/hooks/find-active-subscription.hook.ts"],"sourcesContent":["\"use client\";\r\n\r\nimport { useQuery } from \"@tanstack/react-query\";\r\nimport { apiFetch } from \"../../../infra/http/api-fetch\";\r\nimport type { PaginatedSuccessResult } from \"../../../infra/api/types\";\r\nimport type { Subscription } from \"../types/subscription.type\";\r\nimport { SUBSCRIPTIONS_QUERY_KEY } from \"../constants/query-keys.constants\";\r\nimport { useAuthQueryKey } from \"../../../hooks/useAuthQueryKey\";\r\n\r\nexport function useActiveSubscription() {\r\n const queryKey = useAuthQueryKey([...SUBSCRIPTIONS_QUERY_KEY, \"active\"]);\r\n\r\n return useQuery({\r\n queryKey,\r\n queryFn: ({ signal }) =>\r\n apiFetch<PaginatedSuccessResult<Subscription>>('/api/subscriptions', {\r\n params: { limit: 1 },\r\n signal,\r\n }),\r\n staleTime: 10_000,\r\n });\r\n}\r\n"],"mappings":";AAEA,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AAGzB,SAAS,+BAA+B;AACxC,SAAS,uBAAuB;AAEzB,SAAS,wBAAwB;AACtC,QAAM,WAAW,gBAAgB,CAAC,GAAG,yBAAyB,QAAQ,CAAC;AAEvE,SAAO,SAAS;AAAA,IACd;AAAA,IACA,SAAS,CAAC,EAAE,OAAO,MACjB,SAA+C,sBAAsB;AAAA,MACnE,QAAQ,EAAE,OAAO,EAAE;AAAA,MACnB;AAAA,IACF,CAAC;AAAA,IACH,WAAW;AAAA,EACb,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/subscriptions/hooks/list-subscriptions.hook.ts"],"sourcesContent":["'use client';\n\nimport { useQuery } from '@tanstack/react-query';\nimport { apiFetch } from '../../../infra/http/api-fetch';\nimport type { PaginatedSuccessResult } from '../../../infra/api/types';\nimport { parseResult } from '../../../infra/utils/parser';\nimport { SubscriptionSchema, type Subscription, type FindSubscriptionsParams } from '../types/subscription.type';\nimport { SUBSCRIPTIONS_QUERY_KEY } from '../constants/query-keys.constants';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nexport function useSubscriptions(params?: Partial<FindSubscriptionsParams>) {\n const queryKey = useAuthQueryKey([...SUBSCRIPTIONS_QUERY_KEY, params]);\n\n return useQuery({\n queryKey,\n queryFn: async ({ signal }) =>\n parseResult(\n SubscriptionSchema,\n await apiFetch<PaginatedSuccessResult<Subscription>>('/api/subscriptions', { params, signal })\n ),\n });\n}\n"],"mappings":";AAEA,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AAEzB,SAAS,mBAAmB;AAC5B,SAAS,0BAA2E;AACpF,SAAS,+BAA+B;AACxC,SAAS,uBAAuB;AAEzB,SAAS,iBAAiB,QAA2C;AAC1E,QAAM,WAAW,gBAAgB,CAAC,GAAG,yBAAyB,MAAM,CAAC;AAErE,SAAO,SAAS;AAAA,IACd;AAAA,IACA,SAAS,OAAO,EAAE,OAAO,MACvB;AAAA,MACE;AAAA,MACA,MAAM,SAA+C,sBAAsB,EAAE,QAAQ,OAAO,CAAC;AAAA,IAC/F;AAAA,EACJ,CAAC;AACH;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/subscriptions/hooks/list-subscriptions.hook.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useQuery } from '@tanstack/react-query';\r\nimport { apiFetch } from '../../../infra/http/api-fetch';\r\nimport type { PaginatedSuccessResult } from '../../../infra/api/types';\r\nimport { parseResult } from '../../../infra/utils/parser';\r\nimport { SubscriptionSchema, type Subscription, type FindSubscriptionsParams } from '../types/subscription.type';\r\nimport { SUBSCRIPTIONS_QUERY_KEY } from '../constants/query-keys.constants';\r\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\r\n\r\nexport function useSubscriptions(params?: Partial<FindSubscriptionsParams>) {\r\n const queryKey = useAuthQueryKey([...SUBSCRIPTIONS_QUERY_KEY, params]);\r\n\r\n return useQuery({\r\n queryKey,\r\n queryFn: async ({ signal }) =>\r\n parseResult(\r\n SubscriptionSchema,\r\n await apiFetch<PaginatedSuccessResult<Subscription>>('/api/subscriptions', { params, signal })\r\n ),\r\n });\r\n}\r\n"],"mappings":";AAEA,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AAEzB,SAAS,mBAAmB;AAC5B,SAAS,0BAA2E;AACpF,SAAS,+BAA+B;AACxC,SAAS,uBAAuB;AAEzB,SAAS,iBAAiB,QAA2C;AAC1E,QAAM,WAAW,gBAAgB,CAAC,GAAG,yBAAyB,MAAM,CAAC;AAErE,SAAO,SAAS;AAAA,IACd;AAAA,IACA,SAAS,OAAO,EAAE,OAAO,MACvB;AAAA,MACE;AAAA,MACA,MAAM,SAA+C,sBAAsB,EAAE,QAAQ,OAAO,CAAC;AAAA,IAC/F;AAAA,EACJ,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/subscriptions/hooks/update-subscription-payment.hook.ts"],"sourcesContent":["'use client';\n\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { withAction } from '../../../utils/withAction';\nimport { updateSubscriptionPaymentAction } from '../actions/update-subscription-payment.action';\nimport { SUBSCRIPTIONS_QUERY_KEY } from '../constants/query-keys.constants';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nexport function useUpdateSubscriptionPayment() {\n const queryClient = useQueryClient();\n const subscriptionsKey = useAuthQueryKey([...SUBSCRIPTIONS_QUERY_KEY]);\n\n return useMutation({\n mutationFn: ({\n subscriptionId,\n data,\n }: {\n subscriptionId: number | string;\n data: { id_card: string; payment_method: number };\n }) => withAction(updateSubscriptionPaymentAction)(subscriptionId, data),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: subscriptionsKey });\n },\n });\n}\n"],"mappings":";AAEA,SAAS,aAAa,sBAAsB;AAC5C,SAAS,kBAAkB;AAC3B,SAAS,uCAAuC;AAChD,SAAS,+BAA+B;AACxC,SAAS,uBAAuB;AAEzB,SAAS,+BAA+B;AAC7C,QAAM,cAAc,eAAe;AACnC,QAAM,mBAAmB,gBAAgB,CAAC,GAAG,uBAAuB,CAAC;AAErE,SAAO,YAAY;AAAA,IACjB,YAAY,CAAC;AAAA,MACX;AAAA,MACA;AAAA,IACF,MAGM,WAAW,+BAA+B,EAAE,gBAAgB,IAAI;AAAA,IACtE,WAAW,MAAM;AACf,kBAAY,kBAAkB,EAAE,UAAU,iBAAiB,CAAC;AAAA,IAC9D;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/subscriptions/hooks/update-subscription-payment.hook.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\r\nimport { withAction } from '../../../utils/withAction';\r\nimport { updateSubscriptionPaymentAction } from '../actions/update-subscription-payment.action';\r\nimport { SUBSCRIPTIONS_QUERY_KEY } from '../constants/query-keys.constants';\r\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\r\n\r\nexport function useUpdateSubscriptionPayment() {\r\n const queryClient = useQueryClient();\r\n const subscriptionsKey = useAuthQueryKey([...SUBSCRIPTIONS_QUERY_KEY]);\r\n\r\n return useMutation({\r\n mutationFn: ({\r\n subscriptionId,\r\n data,\r\n }: {\r\n subscriptionId: number | string;\r\n data: { id_card: string; payment_method: number };\r\n }) => withAction(updateSubscriptionPaymentAction)(subscriptionId, data),\r\n onSuccess: () => {\r\n queryClient.invalidateQueries({ queryKey: subscriptionsKey });\r\n },\r\n });\r\n}\r\n"],"mappings":";AAEA,SAAS,aAAa,sBAAsB;AAC5C,SAAS,kBAAkB;AAC3B,SAAS,uCAAuC;AAChD,SAAS,+BAA+B;AACxC,SAAS,uBAAuB;AAEzB,SAAS,+BAA+B;AAC7C,QAAM,cAAc,eAAe;AACnC,QAAM,mBAAmB,gBAAgB,CAAC,GAAG,uBAAuB,CAAC;AAErE,SAAO,YAAY;AAAA,IACjB,YAAY,CAAC;AAAA,MACX;AAAA,MACA;AAAA,IACF,MAGM,WAAW,+BAA+B,EAAE,gBAAgB,IAAI;AAAA,IACtE,WAAW,MAAM;AACf,kBAAY,kBAAkB,EAAE,UAAU,iBAAiB,CAAC;AAAA,IAC9D;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/subscriptions/hooks/update-subscription-plan.hook.ts"],"sourcesContent":["'use client';\n\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { withAction } from '../../../utils/withAction';\nimport { updateSubscriptionPlanAction } from '../actions/update-subscription-plan.action';\nimport { SUBSCRIPTIONS_QUERY_KEY, CHARGES_QUERY_KEY } from '../constants/query-keys.constants';\nimport type { UpdateSubscriptionPlanRequest } from '../types/calculate-subscription.type';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nexport function useUpdateSubscriptionPlan() {\n const queryClient = useQueryClient();\n const subscriptionsKey = useAuthQueryKey([...SUBSCRIPTIONS_QUERY_KEY]);\n const chargesKey = useAuthQueryKey([...CHARGES_QUERY_KEY]);\n\n return useMutation({\n mutationFn: ({\n subscriptionId,\n data,\n }: {\n subscriptionId: number | string;\n data: UpdateSubscriptionPlanRequest;\n }) => withAction(updateSubscriptionPlanAction)(subscriptionId, data),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: subscriptionsKey });\n queryClient.invalidateQueries({ queryKey: chargesKey });\n },\n });\n}\n"],"mappings":";AAEA,SAAS,aAAa,sBAAsB;AAC5C,SAAS,kBAAkB;AAC3B,SAAS,oCAAoC;AAC7C,SAAS,yBAAyB,yBAAyB;AAE3D,SAAS,uBAAuB;AAEzB,SAAS,4BAA4B;AAC1C,QAAM,cAAc,eAAe;AACnC,QAAM,mBAAmB,gBAAgB,CAAC,GAAG,uBAAuB,CAAC;AACrE,QAAM,aAAa,gBAAgB,CAAC,GAAG,iBAAiB,CAAC;AAEzD,SAAO,YAAY;AAAA,IACjB,YAAY,CAAC;AAAA,MACX;AAAA,MACA;AAAA,IACF,MAGM,WAAW,4BAA4B,EAAE,gBAAgB,IAAI;AAAA,IACnE,WAAW,MAAM;AACf,kBAAY,kBAAkB,EAAE,UAAU,iBAAiB,CAAC;AAC5D,kBAAY,kBAAkB,EAAE,UAAU,WAAW,CAAC;AAAA,IACxD;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/subscriptions/hooks/update-subscription-plan.hook.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\r\nimport { withAction } from '../../../utils/withAction';\r\nimport { updateSubscriptionPlanAction } from '../actions/update-subscription-plan.action';\r\nimport { SUBSCRIPTIONS_QUERY_KEY, CHARGES_QUERY_KEY } from '../constants/query-keys.constants';\r\nimport type { UpdateSubscriptionPlanRequest } from '../types/calculate-subscription.type';\r\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\r\n\r\nexport function useUpdateSubscriptionPlan() {\r\n const queryClient = useQueryClient();\r\n const subscriptionsKey = useAuthQueryKey([...SUBSCRIPTIONS_QUERY_KEY]);\r\n const chargesKey = useAuthQueryKey([...CHARGES_QUERY_KEY]);\r\n\r\n return useMutation({\r\n mutationFn: ({\r\n subscriptionId,\r\n data,\r\n }: {\r\n subscriptionId: number | string;\r\n data: UpdateSubscriptionPlanRequest;\r\n }) => withAction(updateSubscriptionPlanAction)(subscriptionId, data),\r\n onSuccess: () => {\r\n queryClient.invalidateQueries({ queryKey: subscriptionsKey });\r\n queryClient.invalidateQueries({ queryKey: chargesKey });\r\n },\r\n });\r\n}\r\n"],"mappings":";AAEA,SAAS,aAAa,sBAAsB;AAC5C,SAAS,kBAAkB;AAC3B,SAAS,oCAAoC;AAC7C,SAAS,yBAAyB,yBAAyB;AAE3D,SAAS,uBAAuB;AAEzB,SAAS,4BAA4B;AAC1C,QAAM,cAAc,eAAe;AACnC,QAAM,mBAAmB,gBAAgB,CAAC,GAAG,uBAAuB,CAAC;AACrE,QAAM,aAAa,gBAAgB,CAAC,GAAG,iBAAiB,CAAC;AAEzD,SAAO,YAAY;AAAA,IACjB,YAAY,CAAC;AAAA,MACX;AAAA,MACA;AAAA,IACF,MAGM,WAAW,4BAA4B,EAAE,gBAAgB,IAAI;AAAA,IACnE,WAAW,MAAM;AACf,kBAAY,kBAAkB,EAAE,UAAU,iBAAiB,CAAC;AAC5D,kBAAY,kBAAkB,EAAE,UAAU,WAAW,CAAC;AAAA,IACxD;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/subscriptions/hooks/use-cancelled-subscription-guard.ts"],"sourcesContent":["'use client';\n\nimport { useCallback } from 'react';\nimport { UserProfile } from '../../users/schema';\nimport { useAuth } from '../../../providers/auth.provider';\nimport { useModalManager } from '../../../store/useModalManager';\nimport { useActiveSubscription } from './find-active-subscription.hook';\nimport { getSubscriptionCancellationState } from '../utils/get-subscription-cancellation-state';\n\nexport function useCancelledSubscriptionGuard() {\n const { user } = useAuth();\n const { openModal } = useModalManager();\n const {\n data: { data: [subscription] = [] } = {},\n } = useActiveSubscription();\n\n const isViewer = user?.profile === UserProfile.viewer;\n // Efetivamente cancelada: active === false (ex.: baixa por falha de pagamento)\n // ou cancelamento cujo período já terminou. Mesma fonte da verdade do\n // SubscriptionBanner — não bloqueia só por data (date_due pode estar no futuro\n // apontando pra uma fatura não paga).\n const isCancelledSubscription =\n getSubscriptionCancellationState(subscription) === 'cancelled';\n const shouldBlockManagementAction = !isViewer && isCancelledSubscription;\n\n const guardAction = useCallback(\n (action?: () => void) => {\n if (shouldBlockManagementAction) {\n openModal('subscriptionExpiredModal');\n return false;\n }\n\n action?.();\n return true;\n },\n [openModal, shouldBlockManagementAction]\n );\n\n return {\n isCancelledSubscription,\n shouldBlockManagementAction,\n guardAction,\n };\n}\n"],"mappings":";AAEA,SAAS,mBAAmB;AAC5B,SAAS,mBAAmB;AAC5B,SAAS,eAAe;AACxB,SAAS,uBAAuB;AAChC,SAAS,6BAA6B;AACtC,SAAS,wCAAwC;AAE1C,SAAS,gCAAgC;AAC9C,QAAM,EAAE,KAAK,IAAI,QAAQ;AACzB,QAAM,EAAE,UAAU,IAAI,gBAAgB;AACtC,QAAM;AAAA,IACJ,MAAM,EAAE,MAAM,CAAC,YAAY,IAAI,CAAC,EAAE,IAAI,CAAC;AAAA,EACzC,IAAI,sBAAsB;AAE1B,QAAM,WAAW,MAAM,YAAY,YAAY;AAK/C,QAAM,0BACJ,iCAAiC,YAAY,MAAM;AACrD,QAAM,8BAA8B,CAAC,YAAY;AAEjD,QAAM,cAAc;AAAA,IAClB,CAAC,WAAwB;AACvB,UAAI,6BAA6B;AAC/B,kBAAU,0BAA0B;AACpC,eAAO;AAAA,MACT;AAEA,eAAS;AACT,aAAO;AAAA,IACT;AAAA,IACA,CAAC,WAAW,2BAA2B;AAAA,EACzC;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/subscriptions/hooks/use-cancelled-subscription-guard.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useCallback } from 'react';\r\nimport { UserProfile } from '../../users/schema';\r\nimport { useAuth } from '../../../providers/auth.provider';\r\nimport { useModalManager } from '../../../store/useModalManager';\r\nimport { useActiveSubscription } from './find-active-subscription.hook';\r\nimport { getSubscriptionCancellationState } from '../utils/get-subscription-cancellation-state';\r\n\r\nexport function useCancelledSubscriptionGuard() {\r\n const { user } = useAuth();\r\n const { openModal } = useModalManager();\r\n const {\r\n data: { data: [subscription] = [] } = {},\r\n } = useActiveSubscription();\r\n\r\n const isViewer = user?.profile === UserProfile.viewer;\r\n // Efetivamente cancelada: active === false (ex.: baixa por falha de pagamento)\r\n // ou cancelamento cujo período já terminou. Mesma fonte da verdade do\r\n // SubscriptionBanner — não bloqueia só por data (date_due pode estar no futuro\r\n // apontando pra uma fatura não paga).\r\n const isCancelledSubscription =\r\n getSubscriptionCancellationState(subscription) === 'cancelled';\r\n const shouldBlockManagementAction = !isViewer && isCancelledSubscription;\r\n\r\n const guardAction = useCallback(\r\n (action?: () => void) => {\r\n if (shouldBlockManagementAction) {\r\n openModal('subscriptionExpiredModal');\r\n return false;\r\n }\r\n\r\n action?.();\r\n return true;\r\n },\r\n [openModal, shouldBlockManagementAction]\r\n );\r\n\r\n return {\r\n isCancelledSubscription,\r\n shouldBlockManagementAction,\r\n guardAction,\r\n };\r\n}\r\n"],"mappings":";AAEA,SAAS,mBAAmB;AAC5B,SAAS,mBAAmB;AAC5B,SAAS,eAAe;AACxB,SAAS,uBAAuB;AAChC,SAAS,6BAA6B;AACtC,SAAS,wCAAwC;AAE1C,SAAS,gCAAgC;AAC9C,QAAM,EAAE,KAAK,IAAI,QAAQ;AACzB,QAAM,EAAE,UAAU,IAAI,gBAAgB;AACtC,QAAM;AAAA,IACJ,MAAM,EAAE,MAAM,CAAC,YAAY,IAAI,CAAC,EAAE,IAAI,CAAC;AAAA,EACzC,IAAI,sBAAsB;AAE1B,QAAM,WAAW,MAAM,YAAY,YAAY;AAK/C,QAAM,0BACJ,iCAAiC,YAAY,MAAM;AACrD,QAAM,8BAA8B,CAAC,YAAY;AAEjD,QAAM,cAAc;AAAA,IAClB,CAAC,WAAwB;AACvB,UAAI,6BAA6B;AAC/B,kBAAU,0BAA0B;AACpC,eAAO;AAAA,MACT;AAEA,eAAS;AACT,aAAO;AAAA,IACT;AAAA,IACA,CAAC,WAAW,2BAA2B;AAAA,EACzC;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/subscriptions/types/calculate-subscription.type.ts"],"sourcesContent":["import z from \"zod\";\n\nexport const CalculateSubscriptionPlanExtraRequestSchema = z.object({\n id_addon: z.number(),\n value: z.number(),\n quantity: z.number(),\n currency: z.string(),\n});\n\nexport const CalculateSubscriptionRequestSchema = z.object({\n id_product: z.number(),\n id_plan: z.number().optional(),\n id_subscription: z.union([z.number(), z.string()]).optional(),\n id_coupon: z.number().optional(),\n periodicity: z.number().optional(),\n plan_extras: z\n .array(\n CalculateSubscriptionPlanExtraRequestSchema.partial({\n value: true,\n currency: true,\n }),\n )\n .optional(),\n});\n\nexport type CalculateSubscriptionRequest = z.infer<\n typeof CalculateSubscriptionRequestSchema\n>;\n\nexport const CalculateSubscriptionPlanExtraResponseSchema = z.object({\n id_addon: z.number(),\n value: z.number(),\n value_original: z.number().optional().default(0),\n value_discount: z.number().optional().default(0),\n quantity: z.number(),\n currency: z.string(),\n});\n\nconst ImmediateChargeItemSchema = z.object({\n type: z.string(),\n description: z.string(),\n value: z.number(),\n id_addon: z.number().optional(),\n quantity: z.number().optional(),\n});\n\nconst ImmediateChargeSchema = z.object({\n total: z.number(),\n items: z.array(ImmediateChargeItemSchema),\n});\n\nconst CalculateSubscriptionTargetSchema = z.object({\n id_subscription: z.union([z.number(), z.string()]).optional(),\n current_plan_id: z.number().optional(),\n current_plan_name: z.string().optional(),\n current_periodicity: z.number().optional(),\n current_date_due: z.string().optional(),\n days_remaining: z.number().optional(),\n days_total: z.number().optional(),\n immediate_charge: ImmediateChargeSchema.optional(),\n});\n\nexport const CalculateSubscriptionResponseSchema = z.object({\n name: z.string(),\n month: z.number(),\n month_discount: z.number(),\n month_discount_coupom: z.number().optional().default(0),\n month_original: z.number(),\n month_original_discount: z.number().optional().default(0),\n month_original_discount_cupom: z.number().optional().default(0),\n semmester: z.number(),\n semmester_price: z.number().optional().default(0),\n semmester_discount: z.number(),\n semmester_discount_coupom: z.number().optional().default(0),\n semmester_original: z.number(),\n semmester_original_discount: z.number().optional().default(0),\n semmester_original_discount_cupom: z.number().optional().default(0),\n year: z.number(),\n year_discount: z.number(),\n year_discount_coupom: z.number().optional().default(0),\n year_original: z.number(),\n year_original_discount: z.number().optional().default(0),\n year_original_discount_cupom: z.number().optional().default(0),\n plan_extras: z.array(CalculateSubscriptionPlanExtraResponseSchema),\n target: CalculateSubscriptionTargetSchema.optional().nullable(),\n});\n\nexport type CalculateSubscriptionResponse = z.infer<\n typeof CalculateSubscriptionResponseSchema\n>;\n\nexport const UpdateSubscriptionPlanExtraSchema = z.object({\n id_addon: z.number(),\n value: z.number().optional(),\n quantity: z.number(),\n price: z.string().optional(),\n trial: z.boolean().optional(),\n trial_days: z.number().optional(),\n});\n\nexport const UpdateSubscriptionPlanRequestSchema = z.object({\n id_plan: z.number().optional(),\n id_coupon: z.union([z.number(), z.null()]).optional(),\n date_due: z.string().optional(),\n type: z.string().optional(),\n active: z.boolean().optional(),\n periodicity: z.number().optional(),\n plan_extras: z.array(UpdateSubscriptionPlanExtraSchema).optional(),\n enable_charge: z.boolean().optional(),\n payment_method: z.number().optional(),\n id_card: z.union([z.number(), z.string()]).optional(),\n});\n\nexport type UpdateSubscriptionPlanRequest = z.infer<\n typeof UpdateSubscriptionPlanRequestSchema\n>;\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/subscriptions/types/calculate-subscription.type.ts"],"sourcesContent":["import z from \"zod\";\r\n\r\nexport const CalculateSubscriptionPlanExtraRequestSchema = z.object({\r\n id_addon: z.number(),\r\n value: z.number(),\r\n quantity: z.number(),\r\n currency: z.string(),\r\n});\r\n\r\nexport const CalculateSubscriptionRequestSchema = z.object({\r\n id_product: z.number(),\r\n id_plan: z.number().optional(),\r\n id_subscription: z.union([z.number(), z.string()]).optional(),\r\n id_coupon: z.number().optional(),\r\n periodicity: z.number().optional(),\r\n plan_extras: z\r\n .array(\r\n CalculateSubscriptionPlanExtraRequestSchema.partial({\r\n value: true,\r\n currency: true,\r\n }),\r\n )\r\n .optional(),\r\n});\r\n\r\nexport type CalculateSubscriptionRequest = z.infer<\r\n typeof CalculateSubscriptionRequestSchema\r\n>;\r\n\r\nexport const CalculateSubscriptionPlanExtraResponseSchema = z.object({\r\n id_addon: z.number(),\r\n value: z.number(),\r\n value_original: z.number().optional().default(0),\r\n value_discount: z.number().optional().default(0),\r\n quantity: z.number(),\r\n currency: z.string(),\r\n});\r\n\r\nconst ImmediateChargeItemSchema = z.object({\r\n type: z.string(),\r\n description: z.string(),\r\n value: z.number(),\r\n id_addon: z.number().optional(),\r\n quantity: z.number().optional(),\r\n});\r\n\r\nconst ImmediateChargeSchema = z.object({\r\n total: z.number(),\r\n items: z.array(ImmediateChargeItemSchema),\r\n});\r\n\r\nconst CalculateSubscriptionTargetSchema = z.object({\r\n id_subscription: z.union([z.number(), z.string()]).optional(),\r\n current_plan_id: z.number().optional(),\r\n current_plan_name: z.string().optional(),\r\n current_periodicity: z.number().optional(),\r\n current_date_due: z.string().optional(),\r\n days_remaining: z.number().optional(),\r\n days_total: z.number().optional(),\r\n immediate_charge: ImmediateChargeSchema.optional(),\r\n});\r\n\r\nexport const CalculateSubscriptionResponseSchema = z.object({\r\n name: z.string(),\r\n month: z.number(),\r\n month_discount: z.number(),\r\n month_discount_coupom: z.number().optional().default(0),\r\n month_original: z.number(),\r\n month_original_discount: z.number().optional().default(0),\r\n month_original_discount_cupom: z.number().optional().default(0),\r\n semmester: z.number(),\r\n semmester_price: z.number().optional().default(0),\r\n semmester_discount: z.number(),\r\n semmester_discount_coupom: z.number().optional().default(0),\r\n semmester_original: z.number(),\r\n semmester_original_discount: z.number().optional().default(0),\r\n semmester_original_discount_cupom: z.number().optional().default(0),\r\n year: z.number(),\r\n year_discount: z.number(),\r\n year_discount_coupom: z.number().optional().default(0),\r\n year_original: z.number(),\r\n year_original_discount: z.number().optional().default(0),\r\n year_original_discount_cupom: z.number().optional().default(0),\r\n plan_extras: z.array(CalculateSubscriptionPlanExtraResponseSchema),\r\n target: CalculateSubscriptionTargetSchema.optional().nullable(),\r\n});\r\n\r\nexport type CalculateSubscriptionResponse = z.infer<\r\n typeof CalculateSubscriptionResponseSchema\r\n>;\r\n\r\nexport const UpdateSubscriptionPlanExtraSchema = z.object({\r\n id_addon: z.number(),\r\n value: z.number().optional(),\r\n quantity: z.number(),\r\n price: z.string().optional(),\r\n trial: z.boolean().optional(),\r\n trial_days: z.number().optional(),\r\n});\r\n\r\nexport const UpdateSubscriptionPlanRequestSchema = z.object({\r\n id_plan: z.number().optional(),\r\n id_coupon: z.union([z.number(), z.null()]).optional(),\r\n date_due: z.string().optional(),\r\n type: z.string().optional(),\r\n active: z.boolean().optional(),\r\n periodicity: z.number().optional(),\r\n plan_extras: z.array(UpdateSubscriptionPlanExtraSchema).optional(),\r\n enable_charge: z.boolean().optional(),\r\n payment_method: z.number().optional(),\r\n id_card: z.union([z.number(), z.string()]).optional(),\r\n});\r\n\r\nexport type UpdateSubscriptionPlanRequest = z.infer<\r\n typeof UpdateSubscriptionPlanRequestSchema\r\n>;\r\n"],"mappings":"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","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/subscriptions/types/pix-pending.type.ts"],"sourcesContent":["import z from \"zod\";\n\n/**\n * Shape efêmero do pix gerado pelo backend quando uma operação de subscription\n * (create ou update com cobrança imediata) produz uma cobrança via pix.\n */\nexport const PixPendingDataSchema = z.object({\n qr_code: z.string().nullable().optional(),\n payment_link: z.string().nullable().optional(),\n correlation_id: z.string(),\n expires_at: z.string().nullable().optional(),\n});\n\nexport type PixPendingData = z.infer<typeof PixPendingDataSchema>;\n\n/**\n * Resposta especial que o backend devolve no lugar da subscription quando\n * a operação dispara um pix pendente. `id: null` + `pending: true` é o sinal\n * de discriminação. Vem com `passthrough()` pra não perder campos extras.\n */\nexport const SubscriptionPendingPixResponseSchema = z\n .object({\n id: z.null(),\n pending: z.literal(true),\n payment_method: z.literal(3),\n pix: PixPendingDataSchema,\n })\n .passthrough();\n\nexport type SubscriptionPendingPixResponse = z.infer<\n typeof SubscriptionPendingPixResponseSchema\n>;\n\nexport function isSubscriptionPendingPixResponse(\n value: unknown,\n): value is SubscriptionPendingPixResponse {\n return SubscriptionPendingPixResponseSchema.safeParse(value).success;\n}\n"],"mappings":"AAAA,OAAO,OAAO;AAMP,MAAM,uBAAuB,EAAE,OAAO;AAAA,EAC3C,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACxC,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC7C,gBAAgB,EAAE,OAAO;AAAA,EACzB,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAC7C,CAAC;AASM,MAAM,uCAAuC,EACjD,OAAO;AAAA,EACN,IAAI,EAAE,KAAK;AAAA,EACX,SAAS,EAAE,QAAQ,IAAI;AAAA,EACvB,gBAAgB,EAAE,QAAQ,CAAC;AAAA,EAC3B,KAAK;AACP,CAAC,EACA,YAAY;AAMR,SAAS,iCACd,OACyC;AACzC,SAAO,qCAAqC,UAAU,KAAK,EAAE;AAC/D;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/subscriptions/types/pix-pending.type.ts"],"sourcesContent":["import z from \"zod\";\r\n\r\n/**\r\n * Shape efêmero do pix gerado pelo backend quando uma operação de subscription\r\n * (create ou update com cobrança imediata) produz uma cobrança via pix.\r\n */\r\nexport const PixPendingDataSchema = z.object({\r\n qr_code: z.string().nullable().optional(),\r\n payment_link: z.string().nullable().optional(),\r\n correlation_id: z.string(),\r\n expires_at: z.string().nullable().optional(),\r\n});\r\n\r\nexport type PixPendingData = z.infer<typeof PixPendingDataSchema>;\r\n\r\n/**\r\n * Resposta especial que o backend devolve no lugar da subscription quando\r\n * a operação dispara um pix pendente. `id: null` + `pending: true` é o sinal\r\n * de discriminação. Vem com `passthrough()` pra não perder campos extras.\r\n */\r\nexport const SubscriptionPendingPixResponseSchema = z\r\n .object({\r\n id: z.null(),\r\n pending: z.literal(true),\r\n payment_method: z.literal(3),\r\n pix: PixPendingDataSchema,\r\n })\r\n .passthrough();\r\n\r\nexport type SubscriptionPendingPixResponse = z.infer<\r\n typeof SubscriptionPendingPixResponseSchema\r\n>;\r\n\r\nexport function isSubscriptionPendingPixResponse(\r\n value: unknown,\r\n): value is SubscriptionPendingPixResponse {\r\n return SubscriptionPendingPixResponseSchema.safeParse(value).success;\r\n}\r\n"],"mappings":"AAAA,OAAO,OAAO;AAMP,MAAM,uBAAuB,EAAE,OAAO;AAAA,EAC3C,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACxC,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC7C,gBAAgB,EAAE,OAAO;AAAA,EACzB,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAC7C,CAAC;AASM,MAAM,uCAAuC,EACjD,OAAO;AAAA,EACN,IAAI,EAAE,KAAK;AAAA,EACX,SAAS,EAAE,QAAQ,IAAI;AAAA,EACvB,gBAAgB,EAAE,QAAQ,CAAC;AAAA,EAC3B,KAAK;AACP,CAAC,EACA,YAAY;AAMR,SAAS,iCACd,OACyC;AACzC,SAAO,qCAAqC,UAAU,KAAK,EAAE;AAC/D;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/subscriptions/utils/build-plan-extras.ts"],"sourcesContent":["import type { SubscriptionItem } from '../types/subscription.type';\n\nexport interface PlanExtraOverride {\n id_addon: number;\n quantity: number;\n currency: string;\n}\n\nexport interface PlanExtra {\n id_addon: number;\n value?: number;\n quantity: number;\n currency: string;\n}\n\nexport function buildPlanExtras(\n items: SubscriptionItem[],\n overrides: PlanExtraOverride[]\n): PlanExtra[] {\n const overrideMap = new Map(overrides.map((o) => [o.id_addon, o]));\n const seen = new Set<number>();\n\n const extras: PlanExtra[] = [];\n\n for (const item of items) {\n if (item.id_addon == null || seen.has(item.id_addon)) continue;\n seen.add(item.id_addon);\n\n const override = overrideMap.get(item.id_addon);\n if (override) {\n overrideMap.delete(item.id_addon);\n extras.push({\n id_addon: override.id_addon,\n quantity: override.quantity,\n currency: override.currency,\n });\n } else {\n extras.push({\n id_addon: item.id_addon,\n value: item.value ?? 0,\n quantity: item.quantity,\n currency: item.currency,\n });\n }\n }\n\n for (const override of overrideMap.values()) {\n extras.push({\n id_addon: override.id_addon,\n quantity: override.quantity,\n currency: override.currency,\n });\n }\n\n return extras;\n}\n"],"mappings":"AAeO,SAAS,gBACd,OACA,WACa;AACb,QAAM,cAAc,IAAI,IAAI,UAAU,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;AACjE,QAAM,OAAO,oBAAI,IAAY;AAE7B,QAAM,SAAsB,CAAC;AAE7B,aAAW,QAAQ,OAAO;AACxB,QAAI,KAAK,YAAY,QAAQ,KAAK,IAAI,KAAK,QAAQ,EAAG;AACtD,SAAK,IAAI,KAAK,QAAQ;AAEtB,UAAM,WAAW,YAAY,IAAI,KAAK,QAAQ;AAC9C,QAAI,UAAU;AACZ,kBAAY,OAAO,KAAK,QAAQ;AAChC,aAAO,KAAK;AAAA,QACV,UAAU,SAAS;AAAA,QACnB,UAAU,SAAS;AAAA,QACnB,UAAU,SAAS;AAAA,MACrB,CAAC;AAAA,IACH,OAAO;AACL,aAAO,KAAK;AAAA,QACV,UAAU,KAAK;AAAA,QACf,OAAO,KAAK,SAAS;AAAA,QACrB,UAAU,KAAK;AAAA,QACf,UAAU,KAAK;AAAA,MACjB,CAAC;AAAA,IACH;AAAA,EACF;AAEA,aAAW,YAAY,YAAY,OAAO,GAAG;AAC3C,WAAO,KAAK;AAAA,MACV,UAAU,SAAS;AAAA,MACnB,UAAU,SAAS;AAAA,MACnB,UAAU,SAAS;AAAA,IACrB,CAAC;AAAA,EACH;AAEA,SAAO;AACT;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/subscriptions/utils/build-plan-extras.ts"],"sourcesContent":["import type { SubscriptionItem } from '../types/subscription.type';\r\n\r\nexport interface PlanExtraOverride {\r\n id_addon: number;\r\n quantity: number;\r\n currency: string;\r\n}\r\n\r\nexport interface PlanExtra {\r\n id_addon: number;\r\n value?: number;\r\n quantity: number;\r\n currency: string;\r\n}\r\n\r\nexport function buildPlanExtras(\r\n items: SubscriptionItem[],\r\n overrides: PlanExtraOverride[]\r\n): PlanExtra[] {\r\n const overrideMap = new Map(overrides.map((o) => [o.id_addon, o]));\r\n const seen = new Set<number>();\r\n\r\n const extras: PlanExtra[] = [];\r\n\r\n for (const item of items) {\r\n if (item.id_addon == null || seen.has(item.id_addon)) continue;\r\n seen.add(item.id_addon);\r\n\r\n const override = overrideMap.get(item.id_addon);\r\n if (override) {\r\n overrideMap.delete(item.id_addon);\r\n extras.push({\r\n id_addon: override.id_addon,\r\n quantity: override.quantity,\r\n currency: override.currency,\r\n });\r\n } else {\r\n extras.push({\r\n id_addon: item.id_addon,\r\n value: item.value ?? 0,\r\n quantity: item.quantity,\r\n currency: item.currency,\r\n });\r\n }\r\n }\r\n\r\n for (const override of overrideMap.values()) {\r\n extras.push({\r\n id_addon: override.id_addon,\r\n quantity: override.quantity,\r\n currency: override.currency,\r\n });\r\n }\r\n\r\n return extras;\r\n}\r\n"],"mappings":"AAeO,SAAS,gBACd,OACA,WACa;AACb,QAAM,cAAc,IAAI,IAAI,UAAU,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;AACjE,QAAM,OAAO,oBAAI,IAAY;AAE7B,QAAM,SAAsB,CAAC;AAE7B,aAAW,QAAQ,OAAO;AACxB,QAAI,KAAK,YAAY,QAAQ,KAAK,IAAI,KAAK,QAAQ,EAAG;AACtD,SAAK,IAAI,KAAK,QAAQ;AAEtB,UAAM,WAAW,YAAY,IAAI,KAAK,QAAQ;AAC9C,QAAI,UAAU;AACZ,kBAAY,OAAO,KAAK,QAAQ;AAChC,aAAO,KAAK;AAAA,QACV,UAAU,SAAS;AAAA,QACnB,UAAU,SAAS;AAAA,QACnB,UAAU,SAAS;AAAA,MACrB,CAAC;AAAA,IACH,OAAO;AACL,aAAO,KAAK;AAAA,QACV,UAAU,KAAK;AAAA,QACf,OAAO,KAAK,SAAS;AAAA,QACrB,UAAU,KAAK;AAAA,QACf,UAAU,KAAK;AAAA,MACjB,CAAC;AAAA,IACH;AAAA,EACF;AAEA,aAAW,YAAY,YAAY,OAAO,GAAG;AAC3C,WAAO,KAAK;AAAA,MACV,UAAU,SAAS;AAAA,MACnB,UAAU,SAAS;AAAA,MACnB,UAAU,SAAS;AAAA,IACrB,CAAC;AAAA,EACH;AAEA,SAAO;AACT;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/subscriptions/utils/get-subscription-cancellation-state.ts"],"sourcesContent":["import { toCalendarDate } from \"../../../infra/utils/date\";\nimport { getSubscriptionExpiryDate } from \"./get-subscription-expiry-date\";\nimport type { Subscription } from \"../types/subscription.type\";\n\nexport type SubscriptionCancellationState = \"none\" | \"pending\" | \"cancelled\";\n\n/**\n * Fonte da verdade do estado de cancelamento, compartilhada pelo SubscriptionBanner\n * (orquestrador) e pelo CancelledSubscriptionBanner (que tem guarda própria).\n *\n * Prioridade:\n * - `active === false` → `cancelled`: o serviço já baixou. Cobre a baixa por falha\n * de pagamento, onde `date_due` aponta pra uma fatura NÃO paga e portanto não pode\n * ser usado como prazo (\"você tem até X\"). Vale com ou sem `date_cancellation`.\n * - cancelamento explícito cujo período já terminou (`hoje >= expiryDate`; p/ client\n * = `date_due`, p/ whitelabel = `date_cancellation`) → `cancelled`.\n * - cancelamento ainda dentro do período (`hoje < expiryDate`) → `pending`.\n * - sem cancelamento e ativo → `none`.\n */\nexport function getSubscriptionCancellationState(\n subscription:\n | Pick<Subscription, \"type\" | \"active\" | \"date_due\" | \"date_cancellation\">\n | undefined\n | null,\n): SubscriptionCancellationState {\n if (!subscription) return \"none\";\n\n if (!subscription.active) return \"cancelled\";\n\n if (!subscription.date_cancellation) return \"none\";\n\n const today = toCalendarDate(new Date());\n const expiryDate = getSubscriptionExpiryDate(subscription);\n if (!today || !expiryDate) return \"none\";\n\n return today.getTime() >= expiryDate.getTime() ? \"cancelled\" : \"pending\";\n}\n"],"mappings":"AAAA,SAAS,sBAAsB;AAC/B,SAAS,iCAAiC;AAkBnC,SAAS,iCACd,cAI+B;AAC/B,MAAI,CAAC,aAAc,QAAO;AAE1B,MAAI,CAAC,aAAa,OAAQ,QAAO;AAEjC,MAAI,CAAC,aAAa,kBAAmB,QAAO;AAE5C,QAAM,QAAQ,eAAe,oBAAI,KAAK,CAAC;AACvC,QAAM,aAAa,0BAA0B,YAAY;AACzD,MAAI,CAAC,SAAS,CAAC,WAAY,QAAO;AAElC,SAAO,MAAM,QAAQ,KAAK,WAAW,QAAQ,IAAI,cAAc;AACjE;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/subscriptions/utils/get-subscription-cancellation-state.ts"],"sourcesContent":["import { toCalendarDate } from \"../../../infra/utils/date\";\r\nimport { getSubscriptionExpiryDate } from \"./get-subscription-expiry-date\";\r\nimport type { Subscription } from \"../types/subscription.type\";\r\n\r\nexport type SubscriptionCancellationState = \"none\" | \"pending\" | \"cancelled\";\r\n\r\n/**\r\n * Fonte da verdade do estado de cancelamento, compartilhada pelo SubscriptionBanner\r\n * (orquestrador) e pelo CancelledSubscriptionBanner (que tem guarda própria).\r\n *\r\n * Prioridade:\r\n * - `active === false` → `cancelled`: o serviço já baixou. Cobre a baixa por falha\r\n * de pagamento, onde `date_due` aponta pra uma fatura NÃO paga e portanto não pode\r\n * ser usado como prazo (\"você tem até X\"). Vale com ou sem `date_cancellation`.\r\n * - cancelamento explícito cujo período já terminou (`hoje >= expiryDate`; p/ client\r\n * = `date_due`, p/ whitelabel = `date_cancellation`) → `cancelled`.\r\n * - cancelamento ainda dentro do período (`hoje < expiryDate`) → `pending`.\r\n * - sem cancelamento e ativo → `none`.\r\n */\r\nexport function getSubscriptionCancellationState(\r\n subscription:\r\n | Pick<Subscription, \"type\" | \"active\" | \"date_due\" | \"date_cancellation\">\r\n | undefined\r\n | null,\r\n): SubscriptionCancellationState {\r\n if (!subscription) return \"none\";\r\n\r\n if (!subscription.active) return \"cancelled\";\r\n\r\n if (!subscription.date_cancellation) return \"none\";\r\n\r\n const today = toCalendarDate(new Date());\r\n const expiryDate = getSubscriptionExpiryDate(subscription);\r\n if (!today || !expiryDate) return \"none\";\r\n\r\n return today.getTime() >= expiryDate.getTime() ? \"cancelled\" : \"pending\";\r\n}\r\n"],"mappings":"AAAA,SAAS,sBAAsB;AAC/B,SAAS,iCAAiC;AAkBnC,SAAS,iCACd,cAI+B;AAC/B,MAAI,CAAC,aAAc,QAAO;AAE1B,MAAI,CAAC,aAAa,OAAQ,QAAO;AAEjC,MAAI,CAAC,aAAa,kBAAmB,QAAO;AAE5C,QAAM,QAAQ,eAAe,oBAAI,KAAK,CAAC;AACvC,QAAM,aAAa,0BAA0B,YAAY;AACzD,MAAI,CAAC,SAAS,CAAC,WAAY,QAAO;AAElC,SAAO,MAAM,QAAQ,KAAK,WAAW,QAAQ,IAAI,cAAc;AACjE;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/subscriptions/utils/get-subscription-expiry-date.ts"],"sourcesContent":["import { SUBSCRIPTION_GRACE_PERIOD_DAYS } from \"../constants/subscription.constants\";\nimport { toCalendarDate } from \"../../../infra/utils/date\";\nimport type { Subscription } from \"../types/subscription.type\";\n\n/**\n * Data efetiva em que as páginas saem do ar / a assinatura é considerada expirada.\n *\n * - whitelabel: date_cancellation (sem grace).\n * - client com cancelamento explícito: date_due (sem grace — cliente pediu pra sair).\n * - client em atraso (sem cancelamento): date_due + SUBSCRIPTION_GRACE_PERIOD_DAYS.\n */\nexport function getSubscriptionExpiryDate(\n subscription:\n | Pick<Subscription, \"type\" | \"date_due\" | \"date_cancellation\">\n | undefined\n | null,\n): Date | null {\n if (!subscription) return null;\n\n if (subscription.type === \"whitelabel\") {\n return toCalendarDate(subscription.date_cancellation);\n }\n\n const dueDate = toCalendarDate(subscription.date_due);\n\n if (!dueDate) return null;\n\n if (subscription.date_cancellation) return dueDate;\n\n const result = new Date(dueDate);\n result.setDate(result.getDate() + SUBSCRIPTION_GRACE_PERIOD_DAYS);\n return result;\n}\n"],"mappings":"AAAA,SAAS,sCAAsC;AAC/C,SAAS,sBAAsB;AAUxB,SAAS,0BACd,cAIa;AACb,MAAI,CAAC,aAAc,QAAO;AAE1B,MAAI,aAAa,SAAS,cAAc;AACtC,WAAO,eAAe,aAAa,iBAAiB;AAAA,EACtD;AAEA,QAAM,UAAU,eAAe,aAAa,QAAQ;AAEpD,MAAI,CAAC,QAAS,QAAO;AAErB,MAAI,aAAa,kBAAmB,QAAO;AAE3C,QAAM,SAAS,IAAI,KAAK,OAAO;AAC/B,SAAO,QAAQ,OAAO,QAAQ,IAAI,8BAA8B;AAChE,SAAO;AACT;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/subscriptions/utils/get-subscription-expiry-date.ts"],"sourcesContent":["import { SUBSCRIPTION_GRACE_PERIOD_DAYS } from \"../constants/subscription.constants\";\r\nimport { toCalendarDate } from \"../../../infra/utils/date\";\r\nimport type { Subscription } from \"../types/subscription.type\";\r\n\r\n/**\r\n * Data efetiva em que as páginas saem do ar / a assinatura é considerada expirada.\r\n *\r\n * - whitelabel: date_cancellation (sem grace).\r\n * - client com cancelamento explícito: date_due (sem grace — cliente pediu pra sair).\r\n * - client em atraso (sem cancelamento): date_due + SUBSCRIPTION_GRACE_PERIOD_DAYS.\r\n */\r\nexport function getSubscriptionExpiryDate(\r\n subscription:\r\n | Pick<Subscription, \"type\" | \"date_due\" | \"date_cancellation\">\r\n | undefined\r\n | null,\r\n): Date | null {\r\n if (!subscription) return null;\r\n\r\n if (subscription.type === \"whitelabel\") {\r\n return toCalendarDate(subscription.date_cancellation);\r\n }\r\n\r\n const dueDate = toCalendarDate(subscription.date_due);\r\n\r\n if (!dueDate) return null;\r\n\r\n if (subscription.date_cancellation) return dueDate;\r\n\r\n const result = new Date(dueDate);\r\n result.setDate(result.getDate() + SUBSCRIPTION_GRACE_PERIOD_DAYS);\r\n return result;\r\n}\r\n"],"mappings":"AAAA,SAAS,sCAAsC;AAC/C,SAAS,sBAAsB;AAUxB,SAAS,0BACd,cAIa;AACb,MAAI,CAAC,aAAc,QAAO;AAE1B,MAAI,aAAa,SAAS,cAAc;AACtC,WAAO,eAAe,aAAa,iBAAiB;AAAA,EACtD;AAEA,QAAM,UAAU,eAAe,aAAa,QAAQ;AAEpD,MAAI,CAAC,QAAS,QAAO;AAErB,MAAI,aAAa,kBAAmB,QAAO;AAE3C,QAAM,SAAS,IAAI,KAAK,OAAO;AAC/B,SAAO,QAAQ,OAAO,QAAQ,IAAI,8BAA8B;AAChE,SAAO;AACT;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/subscriptions/utils/has-subscription-expired.ts"],"sourcesContent":["import { SUBSCRIPTION_GRACE_PERIOD_DAYS } from '../constants/subscription.constants';\n\nexport function hasSubscriptionExpired(dateDue: Date | null | undefined) {\n if (!dateDue) return false;\n\n const dueDate = new Date(dateDue);\n dueDate.setDate(dueDate.getDate() + SUBSCRIPTION_GRACE_PERIOD_DAYS);\n dueDate.setHours(23, 59, 59, 999);\n\n return Date.now() > dueDate.getTime();\n}\n"],"mappings":"AAAA,SAAS,sCAAsC;AAExC,SAAS,uBAAuB,SAAkC;AACvE,MAAI,CAAC,QAAS,QAAO;AAErB,QAAM,UAAU,IAAI,KAAK,OAAO;AAChC,UAAQ,QAAQ,QAAQ,QAAQ,IAAI,8BAA8B;AAClE,UAAQ,SAAS,IAAI,IAAI,IAAI,GAAG;AAEhC,SAAO,KAAK,IAAI,IAAI,QAAQ,QAAQ;AACtC;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/subscriptions/utils/has-subscription-expired.ts"],"sourcesContent":["import { SUBSCRIPTION_GRACE_PERIOD_DAYS } from '../constants/subscription.constants';\r\n\r\nexport function hasSubscriptionExpired(dateDue: Date | null | undefined) {\r\n if (!dateDue) return false;\r\n\r\n const dueDate = new Date(dateDue);\r\n dueDate.setDate(dueDate.getDate() + SUBSCRIPTION_GRACE_PERIOD_DAYS);\r\n dueDate.setHours(23, 59, 59, 999);\r\n\r\n return Date.now() > dueDate.getTime();\r\n}\r\n"],"mappings":"AAAA,SAAS,sCAAsC;AAExC,SAAS,uBAAuB,SAAkC;AACvE,MAAI,CAAC,QAAS,QAAO;AAErB,QAAM,UAAU,IAAI,KAAK,OAAO;AAChC,UAAQ,QAAQ,QAAQ,QAAQ,IAAI,8BAA8B;AAClE,UAAQ,SAAS,IAAI,IAAI,IAAI,GAAG;AAEhC,SAAO,KAAK,IAAI,IAAI,QAAQ,QAAQ;AACtC;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/subscriptions/utils/periodicity.ts"],"sourcesContent":["import type { BillingPeriod } from '../types/billing-period.type';\nimport type { CalculateSubscriptionResponse } from '../types/calculate-subscription.type';\n\ntype TranslateFn = (key: any, values?: Record<string, string | number>) => string;\n\nexport function periodicityToBillingPeriod(\n periodicity: number | string | null | undefined\n): BillingPeriod | null {\n if (periodicity === 30 || periodicity === 1 || periodicity === 'monthly') return 'monthly';\n if (periodicity === 180 || periodicity === 3 || periodicity === 'semiannual') return 'semiannual';\n if (periodicity === 365 || periodicity === 2 || periodicity === 'annual') return 'annual';\n return null;\n}\n\nexport function billingPeriodToNumeric(billingPeriod: BillingPeriod): 30 | 180 | 365 {\n if (billingPeriod === 'semiannual') return 180;\n if (billingPeriod === 'annual') return 365;\n return 30;\n}\n\nexport function getPeriodicityLabel(\n periodicity: number | string | null | undefined,\n translate?: TranslateFn\n): string {\n const period = periodicityToBillingPeriod(periodicity);\n if (period === 'semiannual')\n return translate ? translate('common.periodicity.semiannual') : 'Semestral';\n if (period === 'annual')\n return translate ? translate('common.periodicity.annual') : 'Anual';\n return translate ? translate('common.periodicity.monthly') : 'Mensal';\n}\n\nexport function getBillingPeriodSuffix(\n billingPeriod: BillingPeriod,\n translate?: TranslateFn\n): string {\n if (billingPeriod === 'semiannual')\n return translate ? translate('common.periodicity.suffixSemiannual') : '/semestre';\n if (billingPeriod === 'annual')\n return translate ? translate('common.periodicity.suffixAnnual') : '/ano';\n return translate ? translate('common.periodicity.suffixMonthly') : '/mês';\n}\n\nexport function getBillingPeriodLabel(\n billingPeriod: BillingPeriod,\n translate?: TranslateFn\n): string {\n if (billingPeriod === 'semiannual')\n return translate ? translate('common.periodicity.labelSemiannual') : 'semestral';\n if (billingPeriod === 'annual')\n return translate ? translate('common.periodicity.labelAnnual') : 'anual';\n return translate ? translate('common.periodicity.labelMonthly') : 'mensal';\n}\n\nexport function getBillingPeriodMonths(billingPeriod: BillingPeriod): number {\n if (billingPeriod === 'semiannual') return 6;\n if (billingPeriod === 'annual') return 12;\n return 1;\n}\n\nexport function getPriceFromCalculatedData(\n data: CalculateSubscriptionResponse,\n periodicity: number | string | null | undefined\n): number {\n const period = periodicityToBillingPeriod(periodicity);\n if (period === 'annual') return data.year;\n if (period === 'semiannual') return data.semmester;\n return data.month;\n}\n\nexport function getOriginalPriceFromCalculatedData(\n data: CalculateSubscriptionResponse,\n periodicity: number | string | null | undefined\n): number {\n const period = periodicityToBillingPeriod(periodicity);\n if (period === 'annual') return data.year_original;\n if (period === 'semiannual') return data.semmester_original;\n return data.month_original;\n}\n"],"mappings":"AAKO,SAAS,2BACd,aACsB;AACtB,MAAI,gBAAgB,MAAM,gBAAgB,KAAK,gBAAgB,UAAW,QAAO;AACjF,MAAI,gBAAgB,OAAO,gBAAgB,KAAK,gBAAgB,aAAc,QAAO;AACrF,MAAI,gBAAgB,OAAO,gBAAgB,KAAK,gBAAgB,SAAU,QAAO;AACjF,SAAO;AACT;AAEO,SAAS,uBAAuB,eAA8C;AACnF,MAAI,kBAAkB,aAAc,QAAO;AAC3C,MAAI,kBAAkB,SAAU,QAAO;AACvC,SAAO;AACT;AAEO,SAAS,oBACd,aACA,WACQ;AACR,QAAM,SAAS,2BAA2B,WAAW;AACrD,MAAI,WAAW;AACb,WAAO,YAAY,UAAU,+BAA+B,IAAI;AAClE,MAAI,WAAW;AACb,WAAO,YAAY,UAAU,2BAA2B,IAAI;AAC9D,SAAO,YAAY,UAAU,4BAA4B,IAAI;AAC/D;AAEO,SAAS,uBACd,eACA,WACQ;AACR,MAAI,kBAAkB;AACpB,WAAO,YAAY,UAAU,qCAAqC,IAAI;AACxE,MAAI,kBAAkB;AACpB,WAAO,YAAY,UAAU,iCAAiC,IAAI;AACpE,SAAO,YAAY,UAAU,kCAAkC,IAAI;AACrE;AAEO,SAAS,sBACd,eACA,WACQ;AACR,MAAI,kBAAkB;AACpB,WAAO,YAAY,UAAU,oCAAoC,IAAI;AACvE,MAAI,kBAAkB;AACpB,WAAO,YAAY,UAAU,gCAAgC,IAAI;AACnE,SAAO,YAAY,UAAU,iCAAiC,IAAI;AACpE;AAEO,SAAS,uBAAuB,eAAsC;AAC3E,MAAI,kBAAkB,aAAc,QAAO;AAC3C,MAAI,kBAAkB,SAAU,QAAO;AACvC,SAAO;AACT;AAEO,SAAS,2BACd,MACA,aACQ;AACR,QAAM,SAAS,2BAA2B,WAAW;AACrD,MAAI,WAAW,SAAU,QAAO,KAAK;AACrC,MAAI,WAAW,aAAc,QAAO,KAAK;AACzC,SAAO,KAAK;AACd;AAEO,SAAS,mCACd,MACA,aACQ;AACR,QAAM,SAAS,2BAA2B,WAAW;AACrD,MAAI,WAAW,SAAU,QAAO,KAAK;AACrC,MAAI,WAAW,aAAc,QAAO,KAAK;AACzC,SAAO,KAAK;AACd;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/subscriptions/utils/periodicity.ts"],"sourcesContent":["import type { BillingPeriod } from '../types/billing-period.type';\r\nimport type { CalculateSubscriptionResponse } from '../types/calculate-subscription.type';\r\n\r\ntype TranslateFn = (key: any, values?: Record<string, string | number>) => string;\r\n\r\nexport function periodicityToBillingPeriod(\r\n periodicity: number | string | null | undefined\r\n): BillingPeriod | null {\r\n if (periodicity === 30 || periodicity === 1 || periodicity === 'monthly') return 'monthly';\r\n if (periodicity === 180 || periodicity === 3 || periodicity === 'semiannual') return 'semiannual';\r\n if (periodicity === 365 || periodicity === 2 || periodicity === 'annual') return 'annual';\r\n return null;\r\n}\r\n\r\nexport function billingPeriodToNumeric(billingPeriod: BillingPeriod): 30 | 180 | 365 {\r\n if (billingPeriod === 'semiannual') return 180;\r\n if (billingPeriod === 'annual') return 365;\r\n return 30;\r\n}\r\n\r\nexport function getPeriodicityLabel(\r\n periodicity: number | string | null | undefined,\r\n translate?: TranslateFn\r\n): string {\r\n const period = periodicityToBillingPeriod(periodicity);\r\n if (period === 'semiannual')\r\n return translate ? translate('common.periodicity.semiannual') : 'Semestral';\r\n if (period === 'annual')\r\n return translate ? translate('common.periodicity.annual') : 'Anual';\r\n return translate ? translate('common.periodicity.monthly') : 'Mensal';\r\n}\r\n\r\nexport function getBillingPeriodSuffix(\r\n billingPeriod: BillingPeriod,\r\n translate?: TranslateFn\r\n): string {\r\n if (billingPeriod === 'semiannual')\r\n return translate ? translate('common.periodicity.suffixSemiannual') : '/semestre';\r\n if (billingPeriod === 'annual')\r\n return translate ? translate('common.periodicity.suffixAnnual') : '/ano';\r\n return translate ? translate('common.periodicity.suffixMonthly') : '/mês';\r\n}\r\n\r\nexport function getBillingPeriodLabel(\r\n billingPeriod: BillingPeriod,\r\n translate?: TranslateFn\r\n): string {\r\n if (billingPeriod === 'semiannual')\r\n return translate ? translate('common.periodicity.labelSemiannual') : 'semestral';\r\n if (billingPeriod === 'annual')\r\n return translate ? translate('common.periodicity.labelAnnual') : 'anual';\r\n return translate ? translate('common.periodicity.labelMonthly') : 'mensal';\r\n}\r\n\r\nexport function getBillingPeriodMonths(billingPeriod: BillingPeriod): number {\r\n if (billingPeriod === 'semiannual') return 6;\r\n if (billingPeriod === 'annual') return 12;\r\n return 1;\r\n}\r\n\r\nexport function getPriceFromCalculatedData(\r\n data: CalculateSubscriptionResponse,\r\n periodicity: number | string | null | undefined\r\n): number {\r\n const period = periodicityToBillingPeriod(periodicity);\r\n if (period === 'annual') return data.year;\r\n if (period === 'semiannual') return data.semmester;\r\n return data.month;\r\n}\r\n\r\nexport function getOriginalPriceFromCalculatedData(\r\n data: CalculateSubscriptionResponse,\r\n periodicity: number | string | null | undefined\r\n): number {\r\n const period = periodicityToBillingPeriod(periodicity);\r\n if (period === 'annual') return data.year_original;\r\n if (period === 'semiannual') return data.semmester_original;\r\n return data.month_original;\r\n}\r\n"],"mappings":"AAKO,SAAS,2BACd,aACsB;AACtB,MAAI,gBAAgB,MAAM,gBAAgB,KAAK,gBAAgB,UAAW,QAAO;AACjF,MAAI,gBAAgB,OAAO,gBAAgB,KAAK,gBAAgB,aAAc,QAAO;AACrF,MAAI,gBAAgB,OAAO,gBAAgB,KAAK,gBAAgB,SAAU,QAAO;AACjF,SAAO;AACT;AAEO,SAAS,uBAAuB,eAA8C;AACnF,MAAI,kBAAkB,aAAc,QAAO;AAC3C,MAAI,kBAAkB,SAAU,QAAO;AACvC,SAAO;AACT;AAEO,SAAS,oBACd,aACA,WACQ;AACR,QAAM,SAAS,2BAA2B,WAAW;AACrD,MAAI,WAAW;AACb,WAAO,YAAY,UAAU,+BAA+B,IAAI;AAClE,MAAI,WAAW;AACb,WAAO,YAAY,UAAU,2BAA2B,IAAI;AAC9D,SAAO,YAAY,UAAU,4BAA4B,IAAI;AAC/D;AAEO,SAAS,uBACd,eACA,WACQ;AACR,MAAI,kBAAkB;AACpB,WAAO,YAAY,UAAU,qCAAqC,IAAI;AACxE,MAAI,kBAAkB;AACpB,WAAO,YAAY,UAAU,iCAAiC,IAAI;AACpE,SAAO,YAAY,UAAU,kCAAkC,IAAI;AACrE;AAEO,SAAS,sBACd,eACA,WACQ;AACR,MAAI,kBAAkB;AACpB,WAAO,YAAY,UAAU,oCAAoC,IAAI;AACvE,MAAI,kBAAkB;AACpB,WAAO,YAAY,UAAU,gCAAgC,IAAI;AACnE,SAAO,YAAY,UAAU,iCAAiC,IAAI;AACpE;AAEO,SAAS,uBAAuB,eAAsC;AAC3E,MAAI,kBAAkB,aAAc,QAAO;AAC3C,MAAI,kBAAkB,SAAU,QAAO;AACvC,SAAO;AACT;AAEO,SAAS,2BACd,MACA,aACQ;AACR,QAAM,SAAS,2BAA2B,WAAW;AACrD,MAAI,WAAW,SAAU,QAAO,KAAK;AACrC,MAAI,WAAW,aAAc,QAAO,KAAK;AACzC,SAAO,KAAK;AACd;AAEO,SAAS,mCACd,MACA,aACQ;AACR,QAAM,SAAS,2BAA2B,WAAW;AACrD,MAAI,WAAW,SAAU,QAAO,KAAK;AACrC,MAAI,WAAW,aAAc,QAAO,KAAK;AACzC,SAAO,KAAK;AACd;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/subscriptions/utils/resolve-plan-extras-prices.ts"],"sourcesContent":["import 'server-only';\n\nimport type { SubscriptionItem } from '../types/subscription.type';\n\ninterface PlanExtraInput {\n id_addon: number;\n value?: number;\n quantity: number;\n [key: string]: unknown;\n}\n\nexport function resolvePlanExtrasPrices<T extends PlanExtraInput>(\n extras: T[],\n subscriptionItems: SubscriptionItem[]\n): T[] {\n return extras.map((extra) => {\n const item = subscriptionItems.find((i) => i.id_addon === extra.id_addon);\n if (item) {\n return { ...extra, value: item.value ?? 0 };\n }\n return { ...extra, value: extra.value ?? 0 };\n });\n}\n"],"mappings":"AAAA,OAAO;AAWA,SAAS,wBACd,QACA,mBACK;AACL,SAAO,OAAO,IAAI,CAAC,UAAU;AAC3B,UAAM,OAAO,kBAAkB,KAAK,CAAC,MAAM,EAAE,aAAa,MAAM,QAAQ;AACxE,QAAI,MAAM;AACR,aAAO,EAAE,GAAG,OAAO,OAAO,KAAK,SAAS,EAAE;AAAA,IAC5C;AACA,WAAO,EAAE,GAAG,OAAO,OAAO,MAAM,SAAS,EAAE;AAAA,EAC7C,CAAC;AACH;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/subscriptions/utils/resolve-plan-extras-prices.ts"],"sourcesContent":["import 'server-only';\r\n\r\nimport type { SubscriptionItem } from '../types/subscription.type';\r\n\r\ninterface PlanExtraInput {\r\n id_addon: number;\r\n value?: number;\r\n quantity: number;\r\n [key: string]: unknown;\r\n}\r\n\r\nexport function resolvePlanExtrasPrices<T extends PlanExtraInput>(\r\n extras: T[],\r\n subscriptionItems: SubscriptionItem[]\r\n): T[] {\r\n return extras.map((extra) => {\r\n const item = subscriptionItems.find((i) => i.id_addon === extra.id_addon);\r\n if (item) {\r\n return { ...extra, value: item.value ?? 0 };\r\n }\r\n return { ...extra, value: extra.value ?? 0 };\r\n });\r\n}\r\n"],"mappings":"AAAA,OAAO;AAWA,SAAS,wBACd,QACA,mBACK;AACL,SAAO,OAAO,IAAI,CAAC,UAAU;AAC3B,UAAM,OAAO,kBAAkB,KAAK,CAAC,MAAM,EAAE,aAAa,MAAM,QAAQ;AACxE,QAAI,MAAM;AACR,aAAO,EAAE,GAAG,OAAO,OAAO,KAAK,SAAS,EAAE;AAAA,IAC5C;AACA,WAAO,EAAE,GAAG,OAAO,OAAO,MAAM,SAAS,EAAE;AAAA,EAC7C,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/users/action/find-user-by-id.action.ts"],"sourcesContent":["'use server';\n\nimport { safeServerAction } from '../../../utils/safeServerAction';\nimport { userService } from '../services/user.service';\n\nexport async function findUserById() {\n return safeServerAction(() => userService.findById());\n}\n"],"mappings":";AAEA,SAAS,wBAAwB;AACjC,SAAS,mBAAmB;AAE5B,eAAsB,eAAe;AACnC,SAAO,iBAAiB,MAAM,YAAY,SAAS,CAAC;AACtD;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/users/action/find-user-by-id.action.ts"],"sourcesContent":["'use server';\r\n\r\nimport { safeServerAction } from '../../../utils/safeServerAction';\r\nimport { userService } from '../services/user.service';\r\n\r\nexport async function findUserById() {\r\n return safeServerAction(() => userService.findById());\r\n}\r\n"],"mappings":";AAEA,SAAS,wBAAwB;AACjC,SAAS,mBAAmB;AAE5B,eAAsB,eAAe;AACnC,SAAO,iBAAiB,MAAM,YAAY,SAAS,CAAC;AACtD;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/users/action/mark-all-messages-as-read.action.ts"],"sourcesContent":["'use server';\n\nimport { safeMutationAction } from '../../../utils/safeMutationAction';\nimport { messagesService } from '../services/messages.service';\n\nexport async function markAllMessagesAsReadAction() {\n return safeMutationAction(() => messagesService.markAllAsRead());\n}\n"],"mappings":";AAEA,SAAS,0BAA0B;AACnC,SAAS,uBAAuB;AAEhC,eAAsB,8BAA8B;AAClD,SAAO,mBAAmB,MAAM,gBAAgB,cAAc,CAAC;AACjE;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/users/action/mark-all-messages-as-read.action.ts"],"sourcesContent":["'use server';\r\n\r\nimport { safeMutationAction } from '../../../utils/safeMutationAction';\r\nimport { messagesService } from '../services/messages.service';\r\n\r\nexport async function markAllMessagesAsReadAction() {\r\n return safeMutationAction(() => messagesService.markAllAsRead());\r\n}\r\n"],"mappings":";AAEA,SAAS,0BAA0B;AACnC,SAAS,uBAAuB;AAEhC,eAAsB,8BAA8B;AAClD,SAAO,mBAAmB,MAAM,gBAAgB,cAAc,CAAC;AACjE;","names":[]}
|