@greatapps/common 1.1.24 → 1.1.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/dist/components/account/ConfigurationsMyAccountModal.mjs +121 -0
  2. package/dist/components/account/ConfigurationsMyAccountModal.mjs.map +1 -0
  3. package/dist/components/account/ConfirmGlobalPreferencesModal.mjs +45 -0
  4. package/dist/components/account/ConfirmGlobalPreferencesModal.mjs.map +1 -0
  5. package/dist/components/account/DisableTwoFactorAuthModal.mjs +67 -0
  6. package/dist/components/account/DisableTwoFactorAuthModal.mjs.map +1 -0
  7. package/dist/components/account/TwoFactorAuthModal.mjs +190 -0
  8. package/dist/components/account/TwoFactorAuthModal.mjs.map +1 -0
  9. package/dist/components/account/constants.mjs +32 -0
  10. package/dist/components/account/constants.mjs.map +1 -0
  11. package/dist/components/account/hooks/useChangeEmailForm.mjs +53 -0
  12. package/dist/components/account/hooks/useChangeEmailForm.mjs.map +1 -0
  13. package/dist/components/account/hooks/useChangePasswordForm.mjs +47 -0
  14. package/dist/components/account/hooks/useChangePasswordForm.mjs.map +1 -0
  15. package/dist/components/account/hooks/useChangePhoneForm.mjs +64 -0
  16. package/dist/components/account/hooks/useChangePhoneForm.mjs.map +1 -0
  17. package/dist/components/account/hooks/useConfigurationsModal.mjs +33 -0
  18. package/dist/components/account/hooks/useConfigurationsModal.mjs.map +1 -0
  19. package/dist/components/account/hooks/useDisableTwoFactorAuthForm.mjs +54 -0
  20. package/dist/components/account/hooks/useDisableTwoFactorAuthForm.mjs.map +1 -0
  21. package/dist/components/account/hooks/useOtpVerification.mjs +94 -0
  22. package/dist/components/account/hooks/useOtpVerification.mjs.map +1 -0
  23. package/dist/components/account/hooks/useTwoFactorAuthForm.mjs +88 -0
  24. package/dist/components/account/hooks/useTwoFactorAuthForm.mjs.map +1 -0
  25. package/dist/components/account/sections/ChangeEmailModal.mjs +180 -0
  26. package/dist/components/account/sections/ChangeEmailModal.mjs.map +1 -0
  27. package/dist/components/account/sections/ChangePasswordSection.mjs +64 -0
  28. package/dist/components/account/sections/ChangePasswordSection.mjs.map +1 -0
  29. package/dist/components/account/sections/ChangePhoneModal.mjs +182 -0
  30. package/dist/components/account/sections/ChangePhoneModal.mjs.map +1 -0
  31. package/dist/components/account/sections/MyProfileSection.mjs +312 -0
  32. package/dist/components/account/sections/MyProfileSection.mjs.map +1 -0
  33. package/dist/components/account/sections/PreferencesSection.mjs +246 -0
  34. package/dist/components/account/sections/PreferencesSection.mjs.map +1 -0
  35. package/dist/components/account/sections/SecuritySection.mjs +147 -0
  36. package/dist/components/account/sections/SecuritySection.mjs.map +1 -0
  37. package/dist/components/ui/form/ComboboxField.mjs +130 -0
  38. package/dist/components/ui/form/ComboboxField.mjs.map +1 -0
  39. package/dist/components/ui/form/FormField.mjs +103 -0
  40. package/dist/components/ui/form/FormField.mjs.map +1 -0
  41. package/dist/components/ui/form/PhoneInput.mjs +78 -0
  42. package/dist/components/ui/form/PhoneInput.mjs.map +1 -0
  43. package/dist/components/ui/form/SelectField.mjs +80 -0
  44. package/dist/components/ui/form/SelectField.mjs.map +1 -0
  45. package/dist/components/ui/form/SwitchOptionFieldWithIcon.mjs +40 -0
  46. package/dist/components/ui/form/SwitchOptionFieldWithIcon.mjs.map +1 -0
  47. package/dist/components/ui/form/TextAreaField.mjs +56 -0
  48. package/dist/components/ui/form/TextAreaField.mjs.map +1 -0
  49. package/dist/enums/AccountSectionType.mjs +11 -0
  50. package/dist/enums/AccountSectionType.mjs.map +1 -0
  51. package/dist/hooks/useCountdownTimer.mjs +29 -0
  52. package/dist/hooks/useCountdownTimer.mjs.map +1 -0
  53. package/dist/hooks/useIsMobile.mjs +18 -0
  54. package/dist/hooks/useIsMobile.mjs.map +1 -0
  55. package/dist/hooks/usePasswordVisibility.mjs +13 -0
  56. package/dist/hooks/usePasswordVisibility.mjs.map +1 -0
  57. package/dist/index.mjs +80 -0
  58. package/dist/index.mjs.map +1 -1
  59. package/dist/modules/accounts/actions/account-management.action.mjs +163 -0
  60. package/dist/modules/accounts/actions/account-management.action.mjs.map +1 -0
  61. package/dist/modules/accounts/hooks/useAccountManagement.mjs +64 -0
  62. package/dist/modules/accounts/hooks/useAccountManagement.mjs.map +1 -0
  63. package/dist/modules/accounts/services/account.service.mjs +162 -25
  64. package/dist/modules/accounts/services/account.service.mjs.map +1 -1
  65. package/dist/modules/accounts/services/two-factor.service.mjs +77 -0
  66. package/dist/modules/accounts/services/two-factor.service.mjs.map +1 -0
  67. package/dist/server.mjs +36 -0
  68. package/dist/server.mjs.map +1 -1
  69. package/dist/utils/browser/clipboard.mjs +36 -0
  70. package/dist/utils/browser/clipboard.mjs.map +1 -0
  71. package/dist/utils/file/index.mjs +9 -0
  72. package/dist/utils/file/index.mjs.map +1 -0
  73. package/dist/utils/format/masks.mjs +56 -0
  74. package/dist/utils/format/masks.mjs.map +1 -0
  75. package/dist/utils/intl/locales.mjs +12 -0
  76. package/dist/utils/intl/locales.mjs.map +1 -0
  77. package/dist/utils/intl/timezones.mjs +41 -0
  78. package/dist/utils/intl/timezones.mjs.map +1 -0
  79. package/dist/utils/validators/account.mjs +26 -0
  80. package/dist/utils/validators/account.mjs.map +1 -0
  81. package/dist/utils/validators/common.mjs +47 -0
  82. package/dist/utils/validators/common.mjs.map +1 -0
  83. package/package.json +5 -1
  84. package/src/components/account/ConfigurationsMyAccountModal.tsx +147 -0
  85. package/src/components/account/ConfirmGlobalPreferencesModal.tsx +66 -0
  86. package/src/components/account/DisableTwoFactorAuthModal.tsx +86 -0
  87. package/src/components/account/TwoFactorAuthModal.tsx +221 -0
  88. package/src/components/account/constants.ts +29 -0
  89. package/src/components/account/hooks/useChangeEmailForm.tsx +56 -0
  90. package/src/components/account/hooks/useChangePasswordForm.tsx +59 -0
  91. package/src/components/account/hooks/useChangePhoneForm.tsx +69 -0
  92. package/src/components/account/hooks/useConfigurationsModal.ts +40 -0
  93. package/src/components/account/hooks/useDisableTwoFactorAuthForm.tsx +69 -0
  94. package/src/components/account/hooks/useOtpVerification.tsx +116 -0
  95. package/src/components/account/hooks/useTwoFactorAuthForm.tsx +114 -0
  96. package/src/components/account/sections/ChangeEmailModal.tsx +224 -0
  97. package/src/components/account/sections/ChangePasswordSection.tsx +64 -0
  98. package/src/components/account/sections/ChangePhoneModal.tsx +229 -0
  99. package/src/components/account/sections/MyProfileSection.tsx +337 -0
  100. package/src/components/account/sections/PreferencesSection.tsx +277 -0
  101. package/src/components/account/sections/SecuritySection.tsx +160 -0
  102. package/src/components/ui/form/ComboboxField.tsx +154 -0
  103. package/src/components/ui/form/FormField.tsx +130 -0
  104. package/src/components/ui/form/PhoneInput.tsx +98 -0
  105. package/src/components/ui/form/SelectField.tsx +118 -0
  106. package/src/components/ui/form/SwitchOptionFieldWithIcon.tsx +47 -0
  107. package/src/components/ui/form/TextAreaField.tsx +70 -0
  108. package/src/enums/AccountSectionType.ts +6 -0
  109. package/src/hooks/useCountdownTimer.ts +41 -0
  110. package/src/hooks/useIsMobile.ts +19 -0
  111. package/src/hooks/usePasswordVisibility.ts +13 -0
  112. package/src/index.ts +70 -0
  113. package/src/modules/accounts/actions/account-management.action.ts +197 -0
  114. package/src/modules/accounts/hooks/useAccountManagement.ts +79 -0
  115. package/src/modules/accounts/services/account.service.ts +229 -50
  116. package/src/modules/accounts/services/two-factor.service.ts +98 -0
  117. package/src/modules/accounts/types.ts +157 -0
  118. package/src/server.ts +21 -0
  119. package/src/utils/browser/clipboard.ts +34 -0
  120. package/src/utils/file/index.ts +5 -0
  121. package/src/utils/format/masks.ts +52 -0
  122. package/src/utils/intl/locales.ts +15 -0
  123. package/src/utils/intl/timezones.ts +53 -0
  124. package/src/utils/validators/account.ts +36 -0
  125. package/src/utils/validators/common.ts +43 -0
package/dist/index.mjs CHANGED
@@ -59,14 +59,55 @@ import { Popover, PopoverTrigger, PopoverContent, PopoverAnchor } from "./compon
59
59
  import { Sheet, SheetTrigger, SheetClose, SheetContent, SheetHeader, SheetFooter, SheetTitle, SheetDescription } from "./components/ui/overlay/Sheet";
60
60
  import { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider } from "./components/ui/overlay/Tooltip";
61
61
  import { useMdSidebarStore } from "./store/useMdSidebarStore";
62
+ import { AccountSectionType } from "./enums/AccountSectionType";
63
+ import { default as default5 } from "./hooks/usePasswordVisibility";
64
+ import { default as default6 } from "./hooks/useCountdownTimer";
65
+ import { default as default7 } from "./hooks/useIsMobile";
66
+ import { formatPhone, formatTimer, formatFullName, formatCPF, formatCardNumber } from "./utils/format/masks";
67
+ import { buildTimezoneOptions } from "./utils/intl/timezones";
68
+ import { buildLocaleOptions, LANGUAGE_OPTIONS } from "./utils/intl/locales";
69
+ import { copyToClipboard, readFromClipboard } from "./utils/browser/clipboard";
70
+ import { FormField } from "./components/ui/form/FormField";
71
+ import { SelectField } from "./components/ui/form/SelectField";
72
+ import { ComboboxField } from "./components/ui/form/ComboboxField";
73
+ import { default as default8 } from "./components/ui/form/PhoneInput";
74
+ import { default as default9 } from "./components/ui/form/SwitchOptionFieldWithIcon";
75
+ import { TextAreaField } from "./components/ui/form/TextAreaField";
76
+ import {
77
+ useUpdateAccount,
78
+ useUpdateAccountUser,
79
+ useUpdateAccountUserById,
80
+ useDeleteAccountUser,
81
+ useDeleteAccount
82
+ } from "./modules/accounts/hooks/useAccountManagement";
83
+ import { default as default10 } from "./components/account/ConfigurationsMyAccountModal";
84
+ import { default as default11 } from "./components/account/TwoFactorAuthModal";
85
+ import { default as default12 } from "./components/account/DisableTwoFactorAuthModal";
86
+ import { default as default13 } from "./components/account/ConfirmGlobalPreferencesModal";
87
+ import { MyProfileSection } from "./components/account/sections/MyProfileSection";
88
+ import { PreferencesSection } from "./components/account/sections/PreferencesSection";
89
+ import { SecuritySection } from "./components/account/sections/SecuritySection";
90
+ import { ChangePasswordSection } from "./components/account/sections/ChangePasswordSection";
91
+ import { ChangeEmailModal } from "./components/account/sections/ChangeEmailModal";
92
+ import { ChangePhoneModal } from "./components/account/sections/ChangePhoneModal";
93
+ import {
94
+ GENDER_OPTIONS,
95
+ CURRENCY_OPTIONS,
96
+ TIMEZONE_OPTIONS,
97
+ TIME_FORMAT_OPTIONS,
98
+ NOTIFICATION_TYPES,
99
+ LANGUAGE_OPTIONS as LANGUAGE_OPTIONS2
100
+ } from "./components/account/constants";
62
101
  export {
63
102
  ADDON_IDS,
64
103
  Accordion,
65
104
  AccordionContent,
66
105
  AccordionItem,
67
106
  AccordionTrigger,
107
+ AccountSectionType,
68
108
  Badge,
69
109
  Button,
110
+ CURRENCY_OPTIONS,
70
111
  Calendar,
71
112
  CalendarDayButton,
72
113
  default2 as CancelButton,
@@ -77,8 +118,12 @@ export {
77
118
  CardFooter,
78
119
  CardHeader,
79
120
  CardTitle,
121
+ ChangeEmailModal,
122
+ ChangePasswordSection,
123
+ ChangePhoneModal,
80
124
  Checkbox,
81
125
  default3 as CircularProgress,
126
+ ComboboxField,
82
127
  Command,
83
128
  CommandDialog,
84
129
  CommandEmpty,
@@ -88,6 +133,8 @@ export {
88
133
  CommandList,
89
134
  CommandSeparator,
90
135
  CommandShortcut,
136
+ default10 as ConfigurationsMyAccountModal,
137
+ default13 as ConfirmGlobalPreferencesModal,
91
138
  CopyButton,
92
139
  DatePicker,
93
140
  DateRangePicker,
@@ -102,16 +149,23 @@ export {
102
149
  DialogPortal,
103
150
  DialogTitle,
104
151
  DialogTrigger,
152
+ default12 as DisableTwoFactorAuthModal,
153
+ FormField,
154
+ GENDER_OPTIONS,
105
155
  Input,
106
156
  InputOTP,
107
157
  InputOTPGroup,
108
158
  InputOTPSeparator,
109
159
  InputOTPSlot,
160
+ LANGUAGE_OPTIONS2 as LANGUAGE_OPTIONS,
161
+ LANGUAGE_OPTIONS as LOCALE_LANGUAGE_OPTIONS,
110
162
  MainLayout,
111
163
  MainLayoutContent,
112
164
  MainLayoutMain,
113
165
  MainLayoutSpacer,
114
166
  MdSideBarNavigation,
167
+ MyProfileSection,
168
+ NOTIFICATION_TYPES,
115
169
  NavBar,
116
170
  NavBarItem,
117
171
  NotificationItem,
@@ -123,10 +177,12 @@ export {
123
177
  PaginationLink,
124
178
  PaginationNext,
125
179
  PaginationPrevious,
180
+ default8 as PhoneInput,
126
181
  Popover,
127
182
  PopoverAnchor,
128
183
  PopoverContent,
129
184
  PopoverTrigger,
185
+ PreferencesSection,
130
186
  ProfilePopover,
131
187
  Progress,
132
188
  QueryProvider,
@@ -135,8 +191,10 @@ export {
135
191
  SUBSCRIPTIONS_QUERY_KEY,
136
192
  ScrollArea,
137
193
  ScrollBar,
194
+ SecuritySection,
138
195
  Select,
139
196
  SelectContent,
197
+ SelectField,
140
198
  SelectGroup,
141
199
  SelectItem,
142
200
  SelectLabel,
@@ -158,6 +216,9 @@ export {
158
216
  SubscriptionItemSchema,
159
217
  SubscriptionSchema,
160
218
  Switch,
219
+ default9 as SwitchOptionFieldWithIcon,
220
+ TIMEZONE_OPTIONS,
221
+ TIME_FORMAT_OPTIONS,
161
222
  Table,
162
223
  TableBody,
163
224
  TableCaption,
@@ -170,33 +231,52 @@ export {
170
231
  TabsContent,
171
232
  TabsList,
172
233
  TabsTrigger,
234
+ TextAreaField,
173
235
  Textarea,
174
236
  Toast,
175
237
  Tooltip,
176
238
  TooltipContent,
177
239
  TooltipProvider,
178
240
  TooltipTrigger,
241
+ default11 as TwoFactorAuthModal,
179
242
  USER_QUERY_KEY,
180
243
  UserAvatar,
181
244
  UsersSelectorPopover,
182
245
  badgeVariants,
246
+ buildLocaleOptions,
183
247
  buildQueryParams,
248
+ buildTimezoneOptions,
184
249
  buttonVariants,
185
250
  cn,
186
251
  continueChain,
252
+ copyToClipboard,
187
253
  createAuthMiddleware,
188
254
  createMiddlewareChain,
255
+ formatCPF,
256
+ formatCardNumber,
257
+ formatFullName,
258
+ formatPhone,
259
+ formatTimer,
189
260
  parseResult,
190
261
  parseSchema,
262
+ readFromClipboard,
191
263
  stopChain,
192
264
  toastIconContainerVariants,
193
265
  toastVariants,
194
266
  useActiveSubscription,
267
+ default6 as useCountdownTimer,
268
+ useDeleteAccount,
269
+ useDeleteAccountUser,
195
270
  useIaCredits,
196
271
  useInvalidateUser,
272
+ default7 as useIsMobile,
197
273
  useMdSidebarStore,
274
+ default5 as usePasswordVisibility,
198
275
  useSetUserData,
199
276
  useSubscriptions,
277
+ useUpdateAccount,
278
+ useUpdateAccountUser,
279
+ useUpdateAccountUserById,
200
280
  useUserQuery,
201
281
  useUserValidateSession
202
282
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// Types\nexport * from './modules/auth/schema';\nexport * from './modules/users/schema';\nexport * from './modules/whitelabel/schema';\nexport * from './infra/api/types';\n\n// Contexts\nexport * from './providers/query.provider';\nexport * from './providers/auth.provider';\nexport * from './providers/whitelabel.provider';\n\n// Hooks\nexport { useUserQuery, useUserValidateSession, useInvalidateUser, useSetUserData, USER_QUERY_KEY } from './modules/auth/hooks/useUserQuery';\nexport { useSubscriptions, SUBSCRIPTIONS_QUERY_KEY } from './modules/subscriptions/hooks/list-subscriptions.hook';\nexport { useActiveSubscription } from './modules/subscriptions/hooks/find-active-subscription.hook';\nexport { useIaCredits } from './modules/ia-credits/hooks/ia-credits.hook';\nexport type { IaCreditsSummary, IaCreditOperation } from './modules/ia-credits/types';\nexport type { Subscription, SubscriptionItem, FindSubscriptionsParams } from './modules/subscriptions/types';\nexport { SubscriptionSchema, SubscriptionItemSchema } from './modules/subscriptions/types';\nexport { ADDON_IDS } from './modules/subscriptions/constants/addons.constants';\nexport type { AddonKindEnum } from './modules/subscriptions/constants/addons.constants';\n\n// Providers\nexport { QueryProvider } from './providers/query.provider';\n\n// Middleware\nexport { createAuthMiddleware } from './middlewares/create-auth-middleware';\nexport { createMiddlewareChain } from './middlewares/chain';\nexport { continueChain, stopChain } from './middlewares/types';\nexport type { MiddlewareFunction, MiddlewareConfig, MiddlewareResult } from './middlewares/types';\n\n// Utils\nexport { cn } from './infra/utils/clsx';\nexport { buildQueryParams } from './infra/utils/params';\nexport { parseSchema, parseResult } from './infra/utils/parser';\n\n// Layout\nexport { MainLayout, MainLayoutContent, MainLayoutSpacer, MainLayoutMain } from './components/layouts/MainLayout';\nexport { NavBar } from './components/layouts/NavBar';\nexport type { NavBarProps } from './components/layouts/NavBar';\nexport { SideBarNavigation } from './components/layouts/SideBarNavigation';\nexport { MdSideBarNavigation } from './components/layouts/MdSideBarNavigation';\nexport { NotificationItem } from './components/layouts/NotificationItem';\nexport type { NotificationItemProps } from './components/layouts/NotificationItem';\nexport { NotificationsPopover } from './components/layouts/NotificationsPopover';\nexport type { NotificationsPopoverProps, NotificationData } from './components/layouts/NotificationsPopover';\nexport { UsersSelectorPopover } from './components/layouts/UsersSelectorPopover';\nexport type { UsersSelectorPopoverProps, UserSelectorItem } from './components/layouts/UsersSelectorPopover';\nexport { ProfilePopover } from './components/layouts/ProfilePopover';\nexport type { ProfilePopoverProps, ProfileMenuItem } from './components/layouts/ProfilePopover';\nexport { NavBarItem } from './components/layouts/NavBarItem';\nexport type { NavBarItemProps } from './components/layouts/NavBarItem';\n\n// UI - Buttons\nexport { Button, buttonVariants } from './components/ui/buttons/Button';\nexport { CopyButton } from './components/ui/buttons/CopyButton';\nexport { default as CancelButton } from './components/ui/buttons/CancelButton';\n\n// UI - Data Display\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from './components/ui/data-display/Accordion';\nexport { Badge, badgeVariants } from './components/ui/data-display/Badge';\nexport { Card, CardHeader, CardFooter, CardTitle, CardAction, CardDescription, CardContent } from './components/ui/data-display/Card';\nexport { Pagination, PaginationContent, PaginationLink, PaginationItem, PaginationPrevious, PaginationNext, PaginationEllipsis } from './components/ui/data-display/Pagination';\nexport { ScrollArea, ScrollBar } from './components/ui/data-display/ScrollArea';\nexport { Separator } from './components/ui/data-display/Separator';\nexport { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption } from './components/ui/data-display/Table';\nexport { Tabs, TabsList, TabsTrigger, TabsContent } from './components/ui/data-display/Tabs';\nexport { UserAvatar } from './components/ui/data-display/UserAvatar';\nexport type { UserAvatarProps } from './components/ui/data-display/UserAvatar';\n\n// UI - Feedback\nexport { default as CircularProgress } from './components/ui/feedback/CircularProgress';\nexport { default as DefaultCircularProgress } from './components/ui/feedback/DefaultCircularProgress';\nexport { Progress } from './components/ui/feedback/Progress';\nexport { Toast, toastVariants, toastIconContainerVariants } from './components/ui/feedback/Toast';\nexport type { ToastProps } from './components/ui/feedback/Toast';\n\n// UI - Form\nexport { Calendar, CalendarDayButton } from './components/ui/form/Calendar';\nexport { Checkbox } from './components/ui/form/Checkbox';\nexport { DatePicker } from './components/ui/form/DatePicker';\nexport { DateRangePicker } from './components/ui/form/DateRangePicker';\nexport { Input } from './components/ui/form/Input';\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator } from './components/ui/form/InputOtp';\nexport { RadioGroup, RadioGroupItem } from './components/ui/form/RadioGroup';\nexport { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue } from './components/ui/form/Select';\nexport { Switch } from './components/ui/form/Switch';\nexport { Textarea } from './components/ui/form/Textarea';\n\n// UI - Overlay\nexport { Command, CommandDialog, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, CommandShortcut, CommandSeparator } from './components/ui/overlay/Command';\nexport { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger } from './components/ui/overlay/Dialog';\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor } from './components/ui/overlay/Popover';\nexport { Sheet, SheetTrigger, SheetClose, SheetContent, SheetHeader, SheetFooter, SheetTitle, SheetDescription } from './components/ui/overlay/Sheet';\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider } from './components/ui/overlay/Tooltip';\n\n// Store\nexport { useMdSidebarStore } from './store/useMdSidebarStore';\n"],"mappings":"AACA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAGd,cAAc;AACd,cAAc;AACd,cAAc;AAGd,SAAS,cAAc,wBAAwB,mBAAmB,gBAAgB,sBAAsB;AACxG,SAAS,kBAAkB,+BAA+B;AAC1D,SAAS,6BAA6B;AACtC,SAAS,oBAAoB;AAG7B,SAAS,oBAAoB,8BAA8B;AAC3D,SAAS,iBAAiB;AAI1B,SAAS,qBAAqB;AAG9B,SAAS,4BAA4B;AACrC,SAAS,6BAA6B;AACtC,SAAS,eAAe,iBAAiB;AAIzC,SAAS,UAAU;AACnB,SAAS,wBAAwB;AACjC,SAAS,aAAa,mBAAmB;AAGzC,SAAS,YAAY,mBAAmB,kBAAkB,sBAAsB;AAChF,SAAS,cAAc;AAEvB,SAAS,yBAAyB;AAClC,SAAS,2BAA2B;AACpC,SAAS,wBAAwB;AAEjC,SAAS,4BAA4B;AAErC,SAAS,4BAA4B;AAErC,SAAS,sBAAsB;AAE/B,SAAS,kBAAkB;AAI3B,SAAS,QAAQ,sBAAsB;AACvC,SAAS,kBAAkB;AAC3B,SAAoB,WAAXA,gBAA+B;AAGxC,SAAS,WAAW,eAAe,kBAAkB,wBAAwB;AAC7E,SAAS,OAAO,qBAAqB;AACrC,SAAS,MAAM,YAAY,YAAY,WAAW,YAAY,iBAAiB,mBAAmB;AAClG,SAAS,YAAY,mBAAmB,gBAAgB,gBAAgB,oBAAoB,gBAAgB,0BAA0B;AACtI,SAAS,YAAY,iBAAiB;AACtC,SAAS,iBAAiB;AAC1B,SAAS,OAAO,aAAa,WAAW,aAAa,WAAW,UAAU,WAAW,oBAAoB;AACzG,SAAS,MAAM,UAAU,aAAa,mBAAmB;AACzD,SAAS,kBAAkB;AAI3B,SAAoB,WAAXA,gBAAmC;AAC5C,SAAoB,WAAXA,gBAA0C;AACnD,SAAS,gBAAgB;AACzB,SAAS,OAAO,eAAe,kCAAkC;AAIjE,SAAS,UAAU,yBAAyB;AAC5C,SAAS,gBAAgB;AACzB,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAChC,SAAS,aAAa;AACtB,SAAS,UAAU,eAAe,cAAc,yBAAyB;AACzE,SAAS,YAAY,sBAAsB;AAC3C,SAAS,QAAQ,eAAe,aAAa,YAAY,aAAa,wBAAwB,sBAAsB,iBAAiB,eAAe,mBAAmB;AACvK,SAAS,cAAc;AACvB,SAAS,gBAAgB;AAGzB,SAAS,SAAS,eAAe,cAAc,aAAa,cAAc,cAAc,aAAa,iBAAiB,wBAAwB;AAC9I,SAAS,QAAQ,aAAa,eAAe,mBAAmB,cAAc,cAAc,eAAe,cAAc,aAAa,qBAAqB;AAC3J,SAAS,SAAS,gBAAgB,gBAAgB,qBAAqB;AACvE,SAAS,OAAO,cAAc,YAAY,cAAc,aAAa,aAAa,YAAY,wBAAwB;AACtH,SAAS,SAAS,gBAAgB,gBAAgB,uBAAuB;AAGzE,SAAS,yBAAyB;","names":["default"]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// Types\nexport * from './modules/auth/schema';\nexport * from './modules/users/schema';\nexport * from './modules/whitelabel/schema';\nexport * from './infra/api/types';\n\n// Contexts\nexport * from './providers/query.provider';\nexport * from './providers/auth.provider';\nexport * from './providers/whitelabel.provider';\n\n// Hooks\nexport { useUserQuery, useUserValidateSession, useInvalidateUser, useSetUserData, USER_QUERY_KEY } from './modules/auth/hooks/useUserQuery';\nexport { useSubscriptions, SUBSCRIPTIONS_QUERY_KEY } from './modules/subscriptions/hooks/list-subscriptions.hook';\nexport { useActiveSubscription } from './modules/subscriptions/hooks/find-active-subscription.hook';\nexport { useIaCredits } from './modules/ia-credits/hooks/ia-credits.hook';\nexport type { IaCreditsSummary, IaCreditOperation } from './modules/ia-credits/types';\nexport type { Subscription, SubscriptionItem, FindSubscriptionsParams } from './modules/subscriptions/types';\nexport { SubscriptionSchema, SubscriptionItemSchema } from './modules/subscriptions/types';\nexport { ADDON_IDS } from './modules/subscriptions/constants/addons.constants';\nexport type { AddonKindEnum } from './modules/subscriptions/constants/addons.constants';\n\n// Providers\nexport { QueryProvider } from './providers/query.provider';\n\n// Middleware\nexport { createAuthMiddleware } from './middlewares/create-auth-middleware';\nexport { createMiddlewareChain } from './middlewares/chain';\nexport { continueChain, stopChain } from './middlewares/types';\nexport type { MiddlewareFunction, MiddlewareConfig, MiddlewareResult } from './middlewares/types';\n\n// Utils\nexport { cn } from './infra/utils/clsx';\nexport { buildQueryParams } from './infra/utils/params';\nexport { parseSchema, parseResult } from './infra/utils/parser';\n\n// Layout\nexport { MainLayout, MainLayoutContent, MainLayoutSpacer, MainLayoutMain } from './components/layouts/MainLayout';\nexport { NavBar } from './components/layouts/NavBar';\nexport type { NavBarProps } from './components/layouts/NavBar';\nexport { SideBarNavigation } from './components/layouts/SideBarNavigation';\nexport { MdSideBarNavigation } from './components/layouts/MdSideBarNavigation';\nexport { NotificationItem } from './components/layouts/NotificationItem';\nexport type { NotificationItemProps } from './components/layouts/NotificationItem';\nexport { NotificationsPopover } from './components/layouts/NotificationsPopover';\nexport type { NotificationsPopoverProps, NotificationData } from './components/layouts/NotificationsPopover';\nexport { UsersSelectorPopover } from './components/layouts/UsersSelectorPopover';\nexport type { UsersSelectorPopoverProps, UserSelectorItem } from './components/layouts/UsersSelectorPopover';\nexport { ProfilePopover } from './components/layouts/ProfilePopover';\nexport type { ProfilePopoverProps, ProfileMenuItem } from './components/layouts/ProfilePopover';\nexport { NavBarItem } from './components/layouts/NavBarItem';\nexport type { NavBarItemProps } from './components/layouts/NavBarItem';\n\n// UI - Buttons\nexport { Button, buttonVariants } from './components/ui/buttons/Button';\nexport { CopyButton } from './components/ui/buttons/CopyButton';\nexport { default as CancelButton } from './components/ui/buttons/CancelButton';\n\n// UI - Data Display\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from './components/ui/data-display/Accordion';\nexport { Badge, badgeVariants } from './components/ui/data-display/Badge';\nexport { Card, CardHeader, CardFooter, CardTitle, CardAction, CardDescription, CardContent } from './components/ui/data-display/Card';\nexport { Pagination, PaginationContent, PaginationLink, PaginationItem, PaginationPrevious, PaginationNext, PaginationEllipsis } from './components/ui/data-display/Pagination';\nexport { ScrollArea, ScrollBar } from './components/ui/data-display/ScrollArea';\nexport { Separator } from './components/ui/data-display/Separator';\nexport { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption } from './components/ui/data-display/Table';\nexport { Tabs, TabsList, TabsTrigger, TabsContent } from './components/ui/data-display/Tabs';\nexport { UserAvatar } from './components/ui/data-display/UserAvatar';\nexport type { UserAvatarProps } from './components/ui/data-display/UserAvatar';\n\n// UI - Feedback\nexport { default as CircularProgress } from './components/ui/feedback/CircularProgress';\nexport { default as DefaultCircularProgress } from './components/ui/feedback/DefaultCircularProgress';\nexport { Progress } from './components/ui/feedback/Progress';\nexport { Toast, toastVariants, toastIconContainerVariants } from './components/ui/feedback/Toast';\nexport type { ToastProps } from './components/ui/feedback/Toast';\n\n// UI - Form\nexport { Calendar, CalendarDayButton } from './components/ui/form/Calendar';\nexport { Checkbox } from './components/ui/form/Checkbox';\nexport { DatePicker } from './components/ui/form/DatePicker';\nexport { DateRangePicker } from './components/ui/form/DateRangePicker';\nexport { Input } from './components/ui/form/Input';\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator } from './components/ui/form/InputOtp';\nexport { RadioGroup, RadioGroupItem } from './components/ui/form/RadioGroup';\nexport { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue } from './components/ui/form/Select';\nexport { Switch } from './components/ui/form/Switch';\nexport { Textarea } from './components/ui/form/Textarea';\n\n// UI - Overlay\nexport { Command, CommandDialog, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, CommandShortcut, CommandSeparator } from './components/ui/overlay/Command';\nexport { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger } from './components/ui/overlay/Dialog';\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor } from './components/ui/overlay/Popover';\nexport { Sheet, SheetTrigger, SheetClose, SheetContent, SheetHeader, SheetFooter, SheetTitle, SheetDescription } from './components/ui/overlay/Sheet';\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider } from './components/ui/overlay/Tooltip';\n\n// Store\nexport { useMdSidebarStore } from './store/useMdSidebarStore';\n\n// Enums\nexport { AccountSectionType } from './enums/AccountSectionType';\n\n// Hooks\nexport { default as usePasswordVisibility } from './hooks/usePasswordVisibility';\nexport { default as useCountdownTimer } from './hooks/useCountdownTimer';\nexport { default as useIsMobile } from './hooks/useIsMobile';\n\n// Utils\nexport { formatPhone, formatTimer, formatFullName, formatCPF, formatCardNumber } from './utils/format/masks';\nexport { buildTimezoneOptions } from './utils/intl/timezones';\nexport type { TimezoneOption } from './utils/intl/timezones';\nexport { buildLocaleOptions, LANGUAGE_OPTIONS as LOCALE_LANGUAGE_OPTIONS } from './utils/intl/locales';\nexport type { LocaleOption } from './utils/intl/locales';\nexport { copyToClipboard, readFromClipboard } from './utils/browser/clipboard';\n\n// UI - Form (new widgets)\nexport { FormField } from './components/ui/form/FormField';\nexport { SelectField } from './components/ui/form/SelectField';\nexport { ComboboxField } from './components/ui/form/ComboboxField';\nexport type { ComboboxOption } from './components/ui/form/ComboboxField';\nexport { default as PhoneInput } from './components/ui/form/PhoneInput';\nexport { default as SwitchOptionFieldWithIcon } from './components/ui/form/SwitchOptionFieldWithIcon';\nexport { TextAreaField } from './components/ui/form/TextAreaField';\n\n// Account Module - Hooks\nexport {\n useUpdateAccount,\n useUpdateAccountUser,\n useUpdateAccountUserById,\n useDeleteAccountUser,\n useDeleteAccount,\n} from './modules/accounts/hooks/useAccountManagement';\n\n// Account Types\nexport type {\n UpdateAccountRequest,\n UpdateAccountUserRequest,\n ChangePasswordRequest,\n DeleteAccountActionResult,\n DeleteUserActionResult,\n UpdateAccountActionResult,\n UpdateUserActionResult,\n TwoFactorGenerateResult,\n TwoFactorActionResult,\n ContactResetResult,\n} from './modules/accounts/types';\n\n// Account Components\nexport { default as ConfigurationsMyAccountModal } from './components/account/ConfigurationsMyAccountModal';\nexport { default as TwoFactorAuthModal } from './components/account/TwoFactorAuthModal';\nexport { default as DisableTwoFactorAuthModal } from './components/account/DisableTwoFactorAuthModal';\nexport { default as ConfirmGlobalPreferencesModal } from './components/account/ConfirmGlobalPreferencesModal';\nexport { MyProfileSection } from './components/account/sections/MyProfileSection';\nexport { PreferencesSection } from './components/account/sections/PreferencesSection';\nexport { SecuritySection } from './components/account/sections/SecuritySection';\nexport { ChangePasswordSection } from './components/account/sections/ChangePasswordSection';\nexport { ChangeEmailModal } from './components/account/sections/ChangeEmailModal';\nexport { ChangePhoneModal } from './components/account/sections/ChangePhoneModal';\n\n// Account Constants\nexport {\n GENDER_OPTIONS,\n CURRENCY_OPTIONS,\n TIMEZONE_OPTIONS,\n TIME_FORMAT_OPTIONS,\n NOTIFICATION_TYPES,\n LANGUAGE_OPTIONS,\n} from './components/account/constants';\n"],"mappings":"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","names":["default","LANGUAGE_OPTIONS"]}
@@ -0,0 +1,163 @@
1
+ "use server";
2
+ import { accountService } from "../services/account.service";
3
+ import { ApiError } from "../../../infra/api/types";
4
+ import { twoFactorService } from "../services/two-factor.service";
5
+ async function listAccountUsersAction(params) {
6
+ try {
7
+ const { users, total } = await accountService.listAccountUsers(params);
8
+ return { success: true, data: users, total };
9
+ } catch (error) {
10
+ if (error instanceof ApiError) return { success: false, error: error.message };
11
+ return { success: false, error: "Erro ao listar usu\xE1rios. Tente novamente." };
12
+ }
13
+ }
14
+ async function updateUserAction(user) {
15
+ try {
16
+ const result = await accountService.updateAccountUser(user);
17
+ return { success: true, data: result };
18
+ } catch (error) {
19
+ if (error instanceof ApiError) return { success: false, error: error.message };
20
+ return { success: false, error: "Erro ao atualizar usu\xE1rio. Tente novamente." };
21
+ }
22
+ }
23
+ async function updateAccountUserByIdAction(userId, user) {
24
+ try {
25
+ const result = await accountService.updateAccountUserById(userId, user);
26
+ return { success: true, data: result };
27
+ } catch (error) {
28
+ if (error instanceof ApiError) return { success: false, error: error.message };
29
+ return { success: false, error: "Erro ao atualizar usu\xE1rio. Tente novamente." };
30
+ }
31
+ }
32
+ async function updateAccountAction(data) {
33
+ try {
34
+ await accountService.updateAccount(data);
35
+ return { success: true };
36
+ } catch (error) {
37
+ if (error instanceof ApiError) return { success: false, error: error.message };
38
+ return { success: false, error: "Erro ao atualizar conta. Tente novamente." };
39
+ }
40
+ }
41
+ async function deleteAccountUserAction(userId) {
42
+ try {
43
+ await accountService.deleteAccountUser(userId);
44
+ return { success: true };
45
+ } catch (error) {
46
+ if (error instanceof ApiError) return { success: false, error: error.message };
47
+ return { success: false, error: "Erro ao remover usu\xE1rio. Tente novamente." };
48
+ }
49
+ }
50
+ async function deleteAccountAction() {
51
+ try {
52
+ await accountService.deleteAccount();
53
+ return { success: true };
54
+ } catch (error) {
55
+ if (error instanceof ApiError) return { success: false, error: error.message };
56
+ return { success: false, error: "Erro ao excluir conta. Tente novamente." };
57
+ }
58
+ }
59
+ async function createAccountUserAction(user) {
60
+ try {
61
+ const result = await accountService.createAccountUser(user);
62
+ return { success: true, data: result.data };
63
+ } catch (error) {
64
+ if (error instanceof ApiError) return { success: false, error: error.message };
65
+ return { success: false, error: "Erro ao criar usu\xE1rio. Tente novamente." };
66
+ }
67
+ }
68
+ async function changePasswordAction(data) {
69
+ try {
70
+ await accountService.changePassword(data);
71
+ return { success: true };
72
+ } catch (error) {
73
+ if (error instanceof ApiError) return { success: false, error: error.message };
74
+ return { success: false, error: "Erro ao alterar senha. Tente novamente." };
75
+ }
76
+ }
77
+ async function requestEmailChangeAction(newEmail) {
78
+ try {
79
+ await accountService.requestContactReset("email", newEmail);
80
+ return { success: true };
81
+ } catch (error) {
82
+ if (error instanceof ApiError) return { success: false, error: error.message };
83
+ return { success: false, error: "E-mail j\xE1 existente ou ocorreu um erro. Tente novamente mais tarde." };
84
+ }
85
+ }
86
+ async function confirmEmailChangeAction(token, newEmail) {
87
+ try {
88
+ await accountService.confirmContactReset("email", token, newEmail);
89
+ return { success: true };
90
+ } catch (error) {
91
+ if (error instanceof ApiError) return { success: false, error: error.message };
92
+ return { success: false, error: "C\xF3digo inv\xE1lido ou expirado. Tente novamente." };
93
+ }
94
+ }
95
+ async function requestPhoneChangeAction(newPhone) {
96
+ try {
97
+ await accountService.requestContactReset("phone", newPhone);
98
+ return { success: true };
99
+ } catch (error) {
100
+ if (error instanceof ApiError) return { success: false, error: error.message };
101
+ return { success: false, error: "N\xFAmero j\xE1 existente ou ocorreu um erro. Tente novamente mais tarde." };
102
+ }
103
+ }
104
+ async function confirmPhoneChangeAction(token, newPhone) {
105
+ try {
106
+ await accountService.confirmContactReset("phone", token, newPhone);
107
+ return { success: true };
108
+ } catch (error) {
109
+ if (error instanceof ApiError) return { success: false, error: error.message };
110
+ return { success: false, error: "C\xF3digo inv\xE1lido ou expirado. Tente novamente." };
111
+ }
112
+ }
113
+ async function generateTwoFactorAction() {
114
+ try {
115
+ const result = await twoFactorService.generate();
116
+ return { success: true, qrcode: result.data.qrcode, backupCodes: result.data.backup_codes };
117
+ } catch (error) {
118
+ if (error instanceof ApiError) return { success: false, error: error.message };
119
+ return { success: false, error: "Erro ao gerar QR Code. Tente novamente." };
120
+ }
121
+ }
122
+ async function confirmTwoFactorAction(code) {
123
+ try {
124
+ await twoFactorService.confirm(code);
125
+ return { success: true };
126
+ } catch (error) {
127
+ if (error instanceof ApiError) return { success: false, error: error.message };
128
+ return { success: false, error: "C\xF3digo inv\xE1lido. Tente novamente." };
129
+ }
130
+ }
131
+ async function disableTwoFactorAction(code) {
132
+ try {
133
+ await twoFactorService.verify(code);
134
+ } catch (error) {
135
+ if (error instanceof ApiError) return { success: false, error: error.message };
136
+ return { success: false, error: "C\xF3digo inv\xE1lido. Tente novamente." };
137
+ }
138
+ try {
139
+ await twoFactorService.disable();
140
+ return { success: true };
141
+ } catch (error) {
142
+ if (error instanceof ApiError) return { success: false, error: error.message };
143
+ return { success: false, error: "Erro ao desabilitar 2FA. Tente novamente." };
144
+ }
145
+ }
146
+ export {
147
+ changePasswordAction,
148
+ confirmEmailChangeAction,
149
+ confirmPhoneChangeAction,
150
+ confirmTwoFactorAction,
151
+ createAccountUserAction,
152
+ deleteAccountAction,
153
+ deleteAccountUserAction,
154
+ disableTwoFactorAction,
155
+ generateTwoFactorAction,
156
+ listAccountUsersAction,
157
+ requestEmailChangeAction,
158
+ requestPhoneChangeAction,
159
+ updateAccountAction,
160
+ updateAccountUserByIdAction,
161
+ updateUserAction
162
+ };
163
+ //# sourceMappingURL=account-management.action.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/accounts/actions/account-management.action.ts"],"sourcesContent":["'use server';\r\n\r\nimport { accountService } from '../services/account.service';\r\nimport { ApiError } from '../../../infra/api/types';\r\nimport type {\r\n AccountUsersPaginationParams,\r\n AccountUsersActionResult,\r\n ChangePasswordActionResult,\r\n ChangePasswordRequest,\r\n ContactResetResult,\r\n CreateAccountUserRequest,\r\n DeleteAccountActionResult,\r\n DeleteUserActionResult,\r\n TwoFactorActionResult,\r\n TwoFactorGenerateResult,\r\n UpdateAccountActionResult,\r\n UpdateAccountRequest,\r\n UpdateAccountUserRequest,\r\n UpdateUserActionResult,\r\n} from '../types';\r\nimport { twoFactorService } from '../services/two-factor.service';\r\n\r\nexport async function listAccountUsersAction(\r\n params?: AccountUsersPaginationParams\r\n): Promise<AccountUsersActionResult> {\r\n try {\r\n const { users, total } = await accountService.listAccountUsers(params);\r\n return { success: true, data: users, total };\r\n } catch (error) {\r\n if (error instanceof ApiError) return { success: false, error: error.message };\r\n return { success: false, error: 'Erro ao listar usuários. Tente novamente.' };\r\n }\r\n}\r\n\r\nexport async function updateUserAction(\r\n user: UpdateAccountUserRequest\r\n): Promise<UpdateUserActionResult> {\r\n try {\r\n const result = await accountService.updateAccountUser(user);\r\n return { success: true, data: result };\r\n } catch (error) {\r\n if (error instanceof ApiError) return { success: false, error: error.message };\r\n return { success: false, error: 'Erro ao atualizar usuário. Tente novamente.' };\r\n }\r\n}\r\n\r\nexport async function updateAccountUserByIdAction(\r\n userId: number,\r\n user: UpdateAccountUserRequest\r\n): Promise<UpdateUserActionResult> {\r\n try {\r\n const result = await accountService.updateAccountUserById(userId, user);\r\n return { success: true, data: result };\r\n } catch (error) {\r\n if (error instanceof ApiError) return { success: false, error: error.message };\r\n return { success: false, error: 'Erro ao atualizar usuário. Tente novamente.' };\r\n }\r\n}\r\n\r\nexport async function updateAccountAction(\r\n data: UpdateAccountRequest\r\n): Promise<UpdateAccountActionResult> {\r\n try {\r\n await accountService.updateAccount(data);\r\n return { success: true };\r\n } catch (error) {\r\n if (error instanceof ApiError) return { success: false, error: error.message };\r\n return { success: false, error: 'Erro ao atualizar conta. Tente novamente.' };\r\n }\r\n}\r\n\r\nexport async function deleteAccountUserAction(userId: number): Promise<DeleteUserActionResult> {\r\n try {\r\n await accountService.deleteAccountUser(userId);\r\n return { success: true };\r\n } catch (error) {\r\n if (error instanceof ApiError) return { success: false, error: error.message };\r\n return { success: false, error: 'Erro ao remover usuário. Tente novamente.' };\r\n }\r\n}\r\n\r\nexport async function deleteAccountAction(): Promise<DeleteAccountActionResult> {\r\n try {\r\n await accountService.deleteAccount();\r\n return { success: true };\r\n } catch (error) {\r\n if (error instanceof ApiError) return { success: false, error: error.message };\r\n return { success: false, error: 'Erro ao excluir conta. Tente novamente.' };\r\n }\r\n}\r\n\r\nexport async function createAccountUserAction(\r\n user: CreateAccountUserRequest\r\n): Promise<AccountUsersActionResult> {\r\n try {\r\n const result = await accountService.createAccountUser(user);\r\n return { success: true, data: result.data };\r\n } catch (error) {\r\n if (error instanceof ApiError) return { success: false, error: error.message };\r\n return { success: false, error: 'Erro ao criar usuário. Tente novamente.' };\r\n }\r\n}\r\n\r\nexport async function changePasswordAction(\r\n data: ChangePasswordRequest\r\n): Promise<ChangePasswordActionResult> {\r\n try {\r\n await accountService.changePassword(data);\r\n return { success: true };\r\n } catch (error) {\r\n if (error instanceof ApiError) return { success: false, error: error.message };\r\n return { success: false, error: 'Erro ao alterar senha. Tente novamente.' };\r\n }\r\n}\r\n\r\nexport async function requestEmailChangeAction(newEmail: string): Promise<ContactResetResult> {\r\n try {\r\n await accountService.requestContactReset('email', newEmail);\r\n return { success: true };\r\n } catch (error) {\r\n if (error instanceof ApiError) return { success: false, error: error.message };\r\n return { success: false, error: 'E-mail já existente ou ocorreu um erro. Tente novamente mais tarde.' };\r\n }\r\n}\r\n\r\nexport async function confirmEmailChangeAction(\r\n token: string,\r\n newEmail: string\r\n): Promise<ContactResetResult> {\r\n try {\r\n await accountService.confirmContactReset('email', token, newEmail);\r\n return { success: true };\r\n } catch (error) {\r\n if (error instanceof ApiError) return { success: false, error: error.message };\r\n return { success: false, error: 'Código inválido ou expirado. Tente novamente.' };\r\n }\r\n}\r\n\r\nexport async function requestPhoneChangeAction(newPhone: string): Promise<ContactResetResult> {\r\n try {\r\n await accountService.requestContactReset('phone', newPhone);\r\n return { success: true };\r\n } catch (error) {\r\n if (error instanceof ApiError) return { success: false, error: error.message };\r\n return { success: false, error: 'Número já existente ou ocorreu um erro. Tente novamente mais tarde.' };\r\n }\r\n}\r\n\r\nexport async function confirmPhoneChangeAction(\r\n token: string,\r\n newPhone: string\r\n): Promise<ContactResetResult> {\r\n try {\r\n await accountService.confirmContactReset('phone', token, newPhone);\r\n return { success: true };\r\n } catch (error) {\r\n if (error instanceof ApiError) return { success: false, error: error.message };\r\n return { success: false, error: 'Código inválido ou expirado. Tente novamente.' };\r\n }\r\n}\r\n\r\nexport async function generateTwoFactorAction(): Promise<TwoFactorGenerateResult> {\r\n try {\r\n const result = await twoFactorService.generate();\r\n return { success: true, qrcode: result.data.qrcode, backupCodes: result.data.backup_codes };\r\n } catch (error) {\r\n if (error instanceof ApiError) return { success: false, error: error.message };\r\n return { success: false, error: 'Erro ao gerar QR Code. Tente novamente.' };\r\n }\r\n}\r\n\r\nexport async function confirmTwoFactorAction(code: string): Promise<TwoFactorActionResult> {\r\n try {\r\n await twoFactorService.confirm(code);\r\n return { success: true };\r\n } catch (error) {\r\n if (error instanceof ApiError) return { success: false, error: error.message };\r\n return { success: false, error: 'Código inválido. Tente novamente.' };\r\n }\r\n}\r\n\r\nexport async function disableTwoFactorAction(code: string): Promise<TwoFactorActionResult> {\r\n try {\r\n await twoFactorService.verify(code);\r\n } catch (error) {\r\n if (error instanceof ApiError) return { success: false, error: error.message };\r\n return { success: false, error: 'Código inválido. Tente novamente.' };\r\n }\r\n\r\n try {\r\n await twoFactorService.disable();\r\n return { success: true };\r\n } catch (error) {\r\n if (error instanceof ApiError) return { success: false, error: error.message };\r\n return { success: false, error: 'Erro ao desabilitar 2FA. Tente novamente.' };\r\n }\r\n}\r\n"],"mappings":"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","names":[]}
@@ -0,0 +1,64 @@
1
+ "use client";
2
+ import { useMutation, useQueryClient } from "@tanstack/react-query";
3
+ import { USER_QUERY_KEY } from "../../auth/hooks/useUserQuery";
4
+ import {
5
+ updateUserAction,
6
+ updateAccountAction,
7
+ updateAccountUserByIdAction,
8
+ deleteAccountUserAction,
9
+ deleteAccountAction
10
+ } from "../actions/account-management.action";
11
+ const ACCOUNT_USERS_QUERY_KEY = ["account-users"];
12
+ function useUpdateAccount() {
13
+ const queryClient = useQueryClient();
14
+ return useMutation({
15
+ mutationFn: (data) => updateAccountAction(data),
16
+ onSuccess: () => {
17
+ queryClient.invalidateQueries({ queryKey: ACCOUNT_USERS_QUERY_KEY });
18
+ }
19
+ });
20
+ }
21
+ function useUpdateAccountUser() {
22
+ const queryClient = useQueryClient();
23
+ return useMutation({
24
+ mutationFn: updateUserAction,
25
+ onSuccess: () => {
26
+ queryClient.invalidateQueries({ queryKey: ACCOUNT_USERS_QUERY_KEY });
27
+ queryClient.invalidateQueries({ queryKey: USER_QUERY_KEY });
28
+ }
29
+ });
30
+ }
31
+ function useUpdateAccountUserById() {
32
+ const queryClient = useQueryClient();
33
+ return useMutation({
34
+ mutationFn: ({ userId, ...user }) => updateAccountUserByIdAction(userId, user),
35
+ onSuccess: () => {
36
+ queryClient.invalidateQueries({ queryKey: ACCOUNT_USERS_QUERY_KEY });
37
+ }
38
+ });
39
+ }
40
+ function useDeleteAccountUser(options) {
41
+ const queryClient = useQueryClient();
42
+ return useMutation({
43
+ mutationFn: (userId) => deleteAccountUserAction(userId),
44
+ ...options,
45
+ onSuccess: (...params) => {
46
+ options?.onSuccess?.(...params);
47
+ queryClient.invalidateQueries({ queryKey: ACCOUNT_USERS_QUERY_KEY });
48
+ }
49
+ });
50
+ }
51
+ function useDeleteAccount(options) {
52
+ return useMutation({
53
+ mutationFn: () => deleteAccountAction(),
54
+ ...options
55
+ });
56
+ }
57
+ export {
58
+ useDeleteAccount,
59
+ useDeleteAccountUser,
60
+ useUpdateAccount,
61
+ useUpdateAccountUser,
62
+ useUpdateAccountUserById
63
+ };
64
+ //# sourceMappingURL=useAccountManagement.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/accounts/hooks/useAccountManagement.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\r\nimport { USER_QUERY_KEY } from '../../auth/hooks/useUserQuery';\r\nimport type {\r\n UpdateAccountRequest,\r\n UpdateAccountUserRequest,\r\n DeleteUserActionResult,\r\n DeleteAccountActionResult,\r\n} from '../types';\r\nimport {\r\n updateUserAction,\r\n updateAccountAction,\r\n updateAccountUserByIdAction,\r\n deleteAccountUserAction,\r\n deleteAccountAction,\r\n} from '../actions/account-management.action';\r\nimport type { UseMutationOptions } from '@tanstack/react-query';\r\n\r\nconst ACCOUNT_USERS_QUERY_KEY = ['account-users'];\r\n\r\nexport function useUpdateAccount() {\r\n const queryClient = useQueryClient();\r\n\r\n return useMutation({\r\n mutationFn: (data: UpdateAccountRequest) => updateAccountAction(data),\r\n onSuccess: () => {\r\n queryClient.invalidateQueries({ queryKey: ACCOUNT_USERS_QUERY_KEY });\r\n },\r\n });\r\n}\r\n\r\nexport function useUpdateAccountUser() {\r\n const queryClient = useQueryClient();\r\n\r\n return useMutation({\r\n mutationFn: updateUserAction,\r\n onSuccess: () => {\r\n queryClient.invalidateQueries({ queryKey: ACCOUNT_USERS_QUERY_KEY });\r\n queryClient.invalidateQueries({ queryKey: USER_QUERY_KEY });\r\n },\r\n });\r\n}\r\n\r\nexport function useUpdateAccountUserById() {\r\n const queryClient = useQueryClient();\r\n\r\n return useMutation({\r\n mutationFn: ({ userId, ...user }: UpdateAccountUserRequest & { userId: number }) =>\r\n updateAccountUserByIdAction(userId, user),\r\n onSuccess: () => {\r\n queryClient.invalidateQueries({ queryKey: ACCOUNT_USERS_QUERY_KEY });\r\n },\r\n });\r\n}\r\n\r\nexport function useDeleteAccountUser(\r\n options?: UseMutationOptions<DeleteUserActionResult, Error, number>\r\n) {\r\n const queryClient = useQueryClient();\r\n\r\n return useMutation({\r\n mutationFn: (userId: number) => deleteAccountUserAction(userId),\r\n ...options,\r\n onSuccess: (...params) => {\r\n options?.onSuccess?.(...params);\r\n queryClient.invalidateQueries({ queryKey: ACCOUNT_USERS_QUERY_KEY });\r\n },\r\n });\r\n}\r\n\r\nexport function useDeleteAccount(\r\n options?: UseMutationOptions<DeleteAccountActionResult, Error, void>\r\n) {\r\n return useMutation({\r\n mutationFn: () => deleteAccountAction(),\r\n ...options,\r\n });\r\n}\r\n"],"mappings":";AAEA,SAAS,aAAa,sBAAsB;AAC5C,SAAS,sBAAsB;AAO/B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP,MAAM,0BAA0B,CAAC,eAAe;AAEzC,SAAS,mBAAmB;AACjC,QAAM,cAAc,eAAe;AAEnC,SAAO,YAAY;AAAA,IACjB,YAAY,CAAC,SAA+B,oBAAoB,IAAI;AAAA,IACpE,WAAW,MAAM;AACf,kBAAY,kBAAkB,EAAE,UAAU,wBAAwB,CAAC;AAAA,IACrE;AAAA,EACF,CAAC;AACH;AAEO,SAAS,uBAAuB;AACrC,QAAM,cAAc,eAAe;AAEnC,SAAO,YAAY;AAAA,IACjB,YAAY;AAAA,IACZ,WAAW,MAAM;AACf,kBAAY,kBAAkB,EAAE,UAAU,wBAAwB,CAAC;AACnE,kBAAY,kBAAkB,EAAE,UAAU,eAAe,CAAC;AAAA,IAC5D;AAAA,EACF,CAAC;AACH;AAEO,SAAS,2BAA2B;AACzC,QAAM,cAAc,eAAe;AAEnC,SAAO,YAAY;AAAA,IACjB,YAAY,CAAC,EAAE,QAAQ,GAAG,KAAK,MAC7B,4BAA4B,QAAQ,IAAI;AAAA,IAC1C,WAAW,MAAM;AACf,kBAAY,kBAAkB,EAAE,UAAU,wBAAwB,CAAC;AAAA,IACrE;AAAA,EACF,CAAC;AACH;AAEO,SAAS,qBACd,SACA;AACA,QAAM,cAAc,eAAe;AAEnC,SAAO,YAAY;AAAA,IACjB,YAAY,CAAC,WAAmB,wBAAwB,MAAM;AAAA,IAC9D,GAAG;AAAA,IACH,WAAW,IAAI,WAAW;AACxB,eAAS,YAAY,GAAG,MAAM;AAC9B,kBAAY,kBAAkB,EAAE,UAAU,wBAAwB,CAAC;AAAA,IACrE;AAAA,EACF,CAAC;AACH;AAEO,SAAS,iBACd,SACA;AACA,SAAO,YAAY;AAAA,IACjB,YAAY,MAAM,oBAAoB;AAAA,IACtC,GAAG;AAAA,EACL,CAAC;AACH;","names":[]}