@greatapps/common 1.1.262 → 1.1.263
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/embeds/CrispEmbed.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/UsersSelectorPopover.mjs.map +1 -1
- package/dist/components/modals/BuyCreditsModal.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/ProjectSelectorPopover.mjs.map +1 -1
- package/dist/components/navigation/shells/TabsMobileShell.mjs.map +1 -1
- package/dist/components/navigation/subcomponents/ProjectSelector.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/hooks/copy-to-clipboard.hook.mjs.map +1 -1
- package/dist/index.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/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/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/services/account.service.mjs.map +1 -1
- package/dist/modules/auth/actions/validate-session.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/cards/actions/list-cards.action.mjs.map +1 -1
- package/dist/modules/cards/hooks/cards.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/ia-credits/actions/list-ia-credits.action.mjs.map +1 -1
- package/dist/modules/plans/actions/find-plan-by-id.action.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/projects/actions/add-project-user.action.mjs.map +1 -1
- package/dist/modules/projects/actions/list-all-account-users.action.mjs.map +1 -1
- package/dist/modules/projects/actions/list-available-users.action.mjs.map +1 -1
- package/dist/modules/projects/actions/list-project-users.action.mjs.map +1 -1
- package/dist/modules/projects/actions/remove-project-user.action.mjs.map +1 -1
- package/dist/modules/projects/hooks/add-project-user.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-project-users.hook.mjs.map +1 -1
- package/dist/modules/projects/hooks/remove-project-user.hook.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-plan.action.mjs.map +1 -1
- package/dist/modules/subscriptions/constants/query-keys.constants.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-plan.hook.mjs.map +1 -1
- package/dist/modules/subscriptions/types/calculate-subscription.type.mjs.map +1 -1
- package/dist/modules/subscriptions/utils/build-plan-extras.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/list-messages.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/hooks/messages.hook.mjs.map +1 -1
- package/dist/modules/whitelabel/actions/find-whitelabel-styles.action.mjs.map +1 -1
- package/dist/modules/whitelabel/actions/find-whitelabel.action.mjs.map +1 -1
- package/dist/modules/whitelabel/actions/revalidate-whitelabel-styles.action.mjs.map +1 -1
- package/dist/modules/whitelabel/actions/revalidate-whitelabel.action.mjs.map +1 -1
- package/dist/modules/whitelabel/services/whitelabel-styles.service.mjs.map +1 -1
- package/dist/modules/whitelabel/services/whitelabel.service.mjs +0 -5
- package/dist/modules/whitelabel/services/whitelabel.service.mjs.map +1 -1
- package/dist/providers/whitelabel.provider.mjs.map +1 -1
- package/dist/store/useBuyCreditsModal.mjs.map +1 -1
- package/dist/utils/countries.mjs.map +1 -1
- package/dist/utils/safeServerAction.mjs.map +1 -1
- package/dist/utils/withAction.mjs.map +1 -1
- package/package.json +89 -89
- package/src/components/account/ConfigurationsMyAccountModal.tsx +150 -150
- package/src/components/account/ConfirmDeleteAccountModal.tsx +55 -55
- package/src/components/account/ConfirmGlobalPreferencesModal.tsx +66 -66
- package/src/components/account/DeleteAccountModal.tsx +130 -130
- package/src/components/account/DisableTwoFactorAuthModal.tsx +86 -86
- package/src/components/account/IsntPossibleDeleteAccountModal.tsx +49 -49
- package/src/components/account/TwoFactorAuthModal.tsx +223 -223
- package/src/components/account/hooks/useChangePhoneForm.tsx +81 -81
- package/src/components/account/hooks/useTwoFactorAuthForm.tsx +101 -101
- package/src/components/account/sections/ChangeEmailModal.tsx +225 -225
- package/src/components/account/sections/ChangePasswordSection.tsx +64 -64
- package/src/components/account/sections/ChangePhoneModal.tsx +231 -231
- package/src/components/account/sections/MyProfileSection.tsx +327 -327
- package/src/components/account/sections/PreferencesSection.tsx +273 -273
- package/src/components/account/sections/SecuritySection.tsx +160 -160
- package/src/components/embeds/CrispEmbed.tsx +101 -101
- package/src/components/embeds/FrillEmbed.tsx +119 -119
- package/src/components/layouts/AppMobileNavBar.tsx +118 -118
- package/src/components/layouts/AppNavBar.tsx +51 -51
- package/src/components/layouts/MdSideBarNavigation.tsx +56 -56
- package/src/components/layouts/NavBar.tsx +120 -120
- package/src/components/layouts/NotificationsPopover.tsx +115 -115
- package/src/components/layouts/ProfilePopover.tsx +164 -164
- package/src/components/layouts/UsersSelectorPopover.tsx +238 -238
- package/src/components/modals/BuyCreditsModal.tsx +301 -301
- package/src/components/navigation/CancelledSubscriptionBanner.tsx +69 -69
- package/src/components/navigation/NavItemsContext.ts +20 -20
- package/src/components/navigation/ProjectSelectorPopover.tsx +157 -157
- package/src/components/navigation/shells/TabsMobileShell.tsx +72 -72
- package/src/components/navigation/subcomponents/ProjectSelector.tsx +156 -156
- package/src/components/pages/notifications/Notifications.tsx +160 -160
- package/src/components/ui/buttons/Button.tsx +57 -57
- package/src/components/ui/buttons/CancelButton.tsx +14 -14
- package/src/components/ui/buttons/CopyButton.tsx +54 -54
- 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 +75 -75
- package/src/components/ui/data-display/Pagination.tsx +126 -126
- package/src/components/ui/data-display/PaymentInfoCard.tsx +186 -186
- 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 +75 -75
- package/src/components/ui/feedback/DefaultCircularProgress.tsx +61 -61
- package/src/components/ui/feedback/LoadingOverlay.tsx +31 -31
- 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 +101 -101
- 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 +154 -154
- package/src/components/ui/form/DatePicker.tsx +97 -97
- package/src/components/ui/form/DateRangePicker.tsx +108 -108
- package/src/components/ui/form/FormField.tsx +131 -131
- 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 +205 -205
- 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 +151 -151
- package/src/components/ui/overlay/Popover.tsx +49 -49
- package/src/components/ui/overlay/Sheet.tsx +166 -166
- package/src/components/ui/overlay/Tooltip.tsx +62 -62
- package/src/hooks/copy-to-clipboard.hook.tsx +67 -67
- package/src/index.ts +376 -376
- package/src/middleware.ts +4 -4
- package/src/modules/accounts/actions/account-management.action.ts +91 -91
- package/src/modules/accounts/actions/find-current-account.action.ts +9 -9
- 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 +22 -22
- package/src/modules/accounts/hooks/useAccountManagement.ts +85 -85
- package/src/modules/accounts/hooks/useCurrencies.ts +15 -15
- package/src/modules/accounts/hooks/useTimezones.ts +15 -15
- package/src/modules/accounts/services/account.service.ts +236 -236
- package/src/modules/accounts/types.ts +214 -214
- package/src/modules/auth/actions/validate-session.action.ts +56 -56
- 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/cards/actions/list-cards.action.ts +8 -8
- package/src/modules/cards/hooks/cards.hook.ts +14 -14
- package/src/modules/cards/services/cards.service.ts +32 -32
- package/src/modules/cards/types.ts +32 -32
- package/src/modules/ia-credits/actions/list-ia-credits.action.ts +8 -8
- package/src/modules/plans/actions/find-plan-by-id.action.ts +8 -8
- package/src/modules/plans/hooks/use-has-plan-addon.hook.ts +17 -17
- package/src/modules/plans/hooks/use-plan-by-id.hook.ts +13 -13
- package/src/modules/plans/services/plans.service.ts +36 -36
- package/src/modules/plans/types/plan.type.ts +21 -21
- package/src/modules/projects/actions/add-project-user.action.ts +9 -9
- package/src/modules/projects/actions/list-all-account-users.action.ts +9 -9
- package/src/modules/projects/actions/list-available-users.action.ts +9 -9
- package/src/modules/projects/actions/list-project-users.action.ts +9 -9
- package/src/modules/projects/actions/remove-project-user.action.ts +9 -9
- package/src/modules/projects/hooks/add-project-user.hook.ts +69 -69
- package/src/modules/projects/hooks/list-all-account-users.hook.ts +34 -34
- package/src/modules/projects/hooks/list-available-users.hook.ts +33 -33
- package/src/modules/projects/hooks/list-project-users.hook.ts +33 -33
- package/src/modules/projects/hooks/remove-project-user.hook.ts +69 -69
- 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-plan.action.ts +26 -26
- package/src/modules/subscriptions/constants/query-keys.constants.ts +1 -1
- package/src/modules/subscriptions/hooks/calculate-subscription.hook.ts +13 -13
- package/src/modules/subscriptions/hooks/find-active-subscription.hook.ts +19 -19
- package/src/modules/subscriptions/hooks/list-subscriptions.hook.ts +16 -16
- package/src/modules/subscriptions/hooks/update-subscription-plan.hook.ts +25 -25
- package/src/modules/subscriptions/types/billing-period.type.ts +1 -1
- package/src/modules/subscriptions/types/calculate-subscription.type.ts +75 -75
- package/src/modules/subscriptions/utils/build-plan-extras.ts +56 -56
- package/src/modules/subscriptions/utils/periodicity.ts +52 -52
- 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/list-messages.action.ts +12 -12
- 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/hooks/messages.hook.ts +60 -60
- package/src/modules/whitelabel/actions/find-whitelabel-styles.action.ts +14 -14
- package/src/modules/whitelabel/actions/find-whitelabel.action.ts +23 -23
- package/src/modules/whitelabel/actions/revalidate-whitelabel-styles.action.ts +10 -10
- package/src/modules/whitelabel/actions/revalidate-whitelabel.action.ts +19 -19
- package/src/modules/whitelabel/schema.ts +83 -83
- package/src/modules/whitelabel/services/whitelabel-styles.service.ts +129 -129
- package/src/modules/whitelabel/services/whitelabel.service.ts +5 -5
- package/src/modules/whitelabel/styles-schema.ts +37 -37
- package/src/providers/whitelabel.provider.tsx +54 -54
- package/src/store/useBuyCreditsModal.ts +25 -25
- package/src/utils/countries.ts +224 -224
- package/src/utils/safeServerAction.ts +21 -21
- package/src/utils/withAction.ts +13 -13
|
@@ -1,236 +1,236 @@
|
|
|
1
|
-
import 'server-only';
|
|
2
|
-
|
|
3
|
-
import { api } from '../../../infra/api/client';
|
|
4
|
-
import { ApiError } from '../../../infra/api/types';
|
|
5
|
-
import { buildQueryParams } from '../../../infra/utils/params';
|
|
6
|
-
import { getUserContext } from '../../auth/utils/get-user-context';
|
|
7
|
-
import { fileToBase64 } from '../../../utils/file/index';
|
|
8
|
-
import type {
|
|
9
|
-
Account,
|
|
10
|
-
AccountUsersPaginationParams,
|
|
11
|
-
ChangePasswordRequest,
|
|
12
|
-
ChangePasswordResponse,
|
|
13
|
-
ChangeUserPhotoResponse,
|
|
14
|
-
CreateAccountUserRequest,
|
|
15
|
-
CreateAccountUserResponse,
|
|
16
|
-
DeleteAccountResponse,
|
|
17
|
-
DeleteAccountUserResponse,
|
|
18
|
-
GetAccountDataResponse,
|
|
19
|
-
ListAccountUsersResponse,
|
|
20
|
-
UpdateAccountRequest,
|
|
21
|
-
UpdateAccountResponse,
|
|
22
|
-
UpdateAccountUserRequest,
|
|
23
|
-
UpdateAccountUserResponse,
|
|
24
|
-
} from '../types';
|
|
25
|
-
|
|
26
|
-
class AccountService {
|
|
27
|
-
async findCurrentAccount(): Promise<Account> {
|
|
28
|
-
const { id_account } = await getUserContext();
|
|
29
|
-
const response = await api.apps.get<GetAccountDataResponse>(`/accounts/${id_account}`);
|
|
30
|
-
|
|
31
|
-
if (response.status === 0 || !response.data?.[0]) {
|
|
32
|
-
throw new ApiError(
|
|
33
|
-
response.message || 'Erro ao buscar dados da conta',
|
|
34
|
-
'GET_ACCOUNT_FAILED',
|
|
35
|
-
400
|
|
36
|
-
);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
return response.data[0];
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
async listAccountUsers(params?: Partial<AccountUsersPaginationParams>) {
|
|
43
|
-
const { id_account } = await getUserContext();
|
|
44
|
-
const queryParams = buildQueryParams(params);
|
|
45
|
-
const endpoint = `/accounts/${id_account}/users?${queryParams}`;
|
|
46
|
-
const response = await api.apps.get<ListAccountUsersResponse>(endpoint);
|
|
47
|
-
|
|
48
|
-
if (response.status === 0) {
|
|
49
|
-
throw new ApiError(
|
|
50
|
-
response.message || 'Erro ao listar usuários',
|
|
51
|
-
'LIST_ACCOUNT_USERS_FAILED',
|
|
52
|
-
400
|
|
53
|
-
);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
return {
|
|
57
|
-
users: response.data || [],
|
|
58
|
-
total: response.total || 0,
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
async changeUserPhoto(userId: number, photo: File): Promise<ChangeUserPhotoResponse> {
|
|
63
|
-
const { id_account } = await getUserContext();
|
|
64
|
-
const base64 = await fileToBase64(photo);
|
|
65
|
-
const response = await api.apps.put<ChangeUserPhotoResponse>(
|
|
66
|
-
`/accounts/${id_account}/users/${userId}/file/photo`,
|
|
67
|
-
{ file: base64 }
|
|
68
|
-
);
|
|
69
|
-
|
|
70
|
-
if (response.status === 0) {
|
|
71
|
-
throw new ApiError(
|
|
72
|
-
response.message || 'Erro ao mudar foto do usuário',
|
|
73
|
-
'CHANGE_USER_PHOTO_FAILED',
|
|
74
|
-
400
|
|
75
|
-
);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
return response;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
async deleteAccountUser(userId: number): Promise<DeleteAccountUserResponse> {
|
|
82
|
-
const { id_account } = await getUserContext();
|
|
83
|
-
const response = await api.apps.delete<DeleteAccountUserResponse>(
|
|
84
|
-
`/accounts/${id_account}/users/${userId}`
|
|
85
|
-
);
|
|
86
|
-
|
|
87
|
-
if (response.status === 0) {
|
|
88
|
-
throw new ApiError(response.message || 'Erro ao deletar usuário', 'DELETE_USER_FAILED', 400);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
return response;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
async deleteAccount(): Promise<DeleteAccountResponse> {
|
|
95
|
-
const { id_account } = await getUserContext();
|
|
96
|
-
const response = await api.apps.delete<DeleteAccountResponse>(`/accounts/${id_account}`);
|
|
97
|
-
|
|
98
|
-
if (response.status === 0) {
|
|
99
|
-
throw new ApiError(response.message || 'Erro ao deletar conta', 'DELETE_ACCOUNT_FAILED', 400);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
return response;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
async createAccountUser(user: CreateAccountUserRequest): Promise<CreateAccountUserResponse> {
|
|
106
|
-
const { id_account } = await getUserContext();
|
|
107
|
-
const response = await api.apps.post<CreateAccountUserResponse>(
|
|
108
|
-
`/accounts/${id_account}/users`,
|
|
109
|
-
{
|
|
110
|
-
...user,
|
|
111
|
-
photo: user.photo ? await fileToBase64(user.photo) : null,
|
|
112
|
-
}
|
|
113
|
-
);
|
|
114
|
-
|
|
115
|
-
if (response.status === 0) {
|
|
116
|
-
throw new ApiError(response.message || 'Erro ao criar usuário', 'CREATE_USER_FAILED', 400);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
return response;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
private async resolvePhotoField(user: UpdateAccountUserRequest): Promise<{ photo?: string | null }> {
|
|
123
|
-
if (user.photo === undefined) return {};
|
|
124
|
-
const photo =
|
|
125
|
-
user.photo != null && typeof user.photo !== 'string'
|
|
126
|
-
? await fileToBase64(user.photo)
|
|
127
|
-
: user.photo;
|
|
128
|
-
return { photo };
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
async updateAccountUser(user: UpdateAccountUserRequest): Promise<UpdateAccountUserResponse> {
|
|
132
|
-
const { id_account, id_user } = await getUserContext();
|
|
133
|
-
const response = await api.apps.put<UpdateAccountUserResponse>(
|
|
134
|
-
`/accounts/${id_account}/users/${id_user}`,
|
|
135
|
-
{ ...user, ...(await this.resolvePhotoField(user)) }
|
|
136
|
-
);
|
|
137
|
-
|
|
138
|
-
if (response.status === 0) {
|
|
139
|
-
throw new ApiError(
|
|
140
|
-
response.message || 'Erro ao atualizar usuário',
|
|
141
|
-
'UPDATE_USER_FAILED',
|
|
142
|
-
400
|
|
143
|
-
);
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
return response;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
async updateAccountUserById(
|
|
150
|
-
userId: number,
|
|
151
|
-
user: UpdateAccountUserRequest
|
|
152
|
-
): Promise<UpdateAccountUserResponse> {
|
|
153
|
-
const { id_account } = await getUserContext();
|
|
154
|
-
const response = await api.apps.put<UpdateAccountUserResponse>(
|
|
155
|
-
`/accounts/${id_account}/users/${userId}`,
|
|
156
|
-
{ ...user, ...(await this.resolvePhotoField(user)) }
|
|
157
|
-
);
|
|
158
|
-
|
|
159
|
-
if (response.status === 0) {
|
|
160
|
-
throw new ApiError(
|
|
161
|
-
response.message || 'Erro ao atualizar usuário',
|
|
162
|
-
'UPDATE_USER_FAILED',
|
|
163
|
-
400
|
|
164
|
-
);
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
return response;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
async updateAccount(data: UpdateAccountRequest): Promise<UpdateAccountResponse> {
|
|
171
|
-
const { id_account } = await getUserContext();
|
|
172
|
-
const response = await api.apps.put<UpdateAccountResponse>(`/accounts/${id_account}`, data);
|
|
173
|
-
|
|
174
|
-
if (response.status === 0) {
|
|
175
|
-
throw new ApiError(
|
|
176
|
-
response.message || 'Erro ao atualizar conta',
|
|
177
|
-
'UPDATE_ACCOUNT_FAILED',
|
|
178
|
-
400
|
|
179
|
-
);
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
return response;
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
async requestContactReset(type: 'email' | 'phone', newContact: string, ddi?: string): Promise<void> {
|
|
186
|
-
const { id_account, id_user } = await getUserContext();
|
|
187
|
-
const response = await api.apps.post<{ status: number; message: string }>(
|
|
188
|
-
`/accounts/${id_account}/users/${id_user}/resetContact/request`,
|
|
189
|
-
{ type, newContact, ...(ddi ? { ddi } : {}) }
|
|
190
|
-
);
|
|
191
|
-
|
|
192
|
-
if (response.status === 0) {
|
|
193
|
-
throw new ApiError(
|
|
194
|
-
response.message || 'Erro ao solicitar alteração',
|
|
195
|
-
'REQUEST_CONTACT_RESET_FAILED',
|
|
196
|
-
400
|
|
197
|
-
);
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
async confirmContactReset(type: 'email' | 'phone', token: string, newContact: string, ddi?: string): Promise<void> {
|
|
202
|
-
const { id_account, id_user } = await getUserContext();
|
|
203
|
-
const response = await api.apps.post<{ status: number; message: string }>(
|
|
204
|
-
`/accounts/${id_account}/users/${id_user}/resetContact/confirm`,
|
|
205
|
-
{ type, token, newContact, ...(ddi ? { ddi } : {}) }
|
|
206
|
-
);
|
|
207
|
-
|
|
208
|
-
if (response.status === 0) {
|
|
209
|
-
throw new ApiError(
|
|
210
|
-
response.message || 'Código inválido ou expirado',
|
|
211
|
-
'CONFIRM_CONTACT_RESET_FAILED',
|
|
212
|
-
400
|
|
213
|
-
);
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
async changePassword(data: ChangePasswordRequest): Promise<ChangePasswordResponse> {
|
|
218
|
-
const { id_account, id_user } = await getUserContext();
|
|
219
|
-
const response = await api.apps.put<ChangePasswordResponse>(
|
|
220
|
-
`/accounts/${id_account}/users/${id_user}/action/changePassword`,
|
|
221
|
-
data
|
|
222
|
-
);
|
|
223
|
-
|
|
224
|
-
if (response.status === 0) {
|
|
225
|
-
throw new ApiError(
|
|
226
|
-
response.message || 'Erro ao alterar senha',
|
|
227
|
-
'CHANGE_PASSWORD_FAILED',
|
|
228
|
-
400
|
|
229
|
-
);
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
return response;
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
export const accountService = new AccountService();
|
|
1
|
+
import 'server-only';
|
|
2
|
+
|
|
3
|
+
import { api } from '../../../infra/api/client';
|
|
4
|
+
import { ApiError } from '../../../infra/api/types';
|
|
5
|
+
import { buildQueryParams } from '../../../infra/utils/params';
|
|
6
|
+
import { getUserContext } from '../../auth/utils/get-user-context';
|
|
7
|
+
import { fileToBase64 } from '../../../utils/file/index';
|
|
8
|
+
import type {
|
|
9
|
+
Account,
|
|
10
|
+
AccountUsersPaginationParams,
|
|
11
|
+
ChangePasswordRequest,
|
|
12
|
+
ChangePasswordResponse,
|
|
13
|
+
ChangeUserPhotoResponse,
|
|
14
|
+
CreateAccountUserRequest,
|
|
15
|
+
CreateAccountUserResponse,
|
|
16
|
+
DeleteAccountResponse,
|
|
17
|
+
DeleteAccountUserResponse,
|
|
18
|
+
GetAccountDataResponse,
|
|
19
|
+
ListAccountUsersResponse,
|
|
20
|
+
UpdateAccountRequest,
|
|
21
|
+
UpdateAccountResponse,
|
|
22
|
+
UpdateAccountUserRequest,
|
|
23
|
+
UpdateAccountUserResponse,
|
|
24
|
+
} from '../types';
|
|
25
|
+
|
|
26
|
+
class AccountService {
|
|
27
|
+
async findCurrentAccount(): Promise<Account> {
|
|
28
|
+
const { id_account } = await getUserContext();
|
|
29
|
+
const response = await api.apps.get<GetAccountDataResponse>(`/accounts/${id_account}`);
|
|
30
|
+
|
|
31
|
+
if (response.status === 0 || !response.data?.[0]) {
|
|
32
|
+
throw new ApiError(
|
|
33
|
+
response.message || 'Erro ao buscar dados da conta',
|
|
34
|
+
'GET_ACCOUNT_FAILED',
|
|
35
|
+
400
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return response.data[0];
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
async listAccountUsers(params?: Partial<AccountUsersPaginationParams>) {
|
|
43
|
+
const { id_account } = await getUserContext();
|
|
44
|
+
const queryParams = buildQueryParams(params);
|
|
45
|
+
const endpoint = `/accounts/${id_account}/users?${queryParams}`;
|
|
46
|
+
const response = await api.apps.get<ListAccountUsersResponse>(endpoint);
|
|
47
|
+
|
|
48
|
+
if (response.status === 0) {
|
|
49
|
+
throw new ApiError(
|
|
50
|
+
response.message || 'Erro ao listar usuários',
|
|
51
|
+
'LIST_ACCOUNT_USERS_FAILED',
|
|
52
|
+
400
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return {
|
|
57
|
+
users: response.data || [],
|
|
58
|
+
total: response.total || 0,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
async changeUserPhoto(userId: number, photo: File): Promise<ChangeUserPhotoResponse> {
|
|
63
|
+
const { id_account } = await getUserContext();
|
|
64
|
+
const base64 = await fileToBase64(photo);
|
|
65
|
+
const response = await api.apps.put<ChangeUserPhotoResponse>(
|
|
66
|
+
`/accounts/${id_account}/users/${userId}/file/photo`,
|
|
67
|
+
{ file: base64 }
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
if (response.status === 0) {
|
|
71
|
+
throw new ApiError(
|
|
72
|
+
response.message || 'Erro ao mudar foto do usuário',
|
|
73
|
+
'CHANGE_USER_PHOTO_FAILED',
|
|
74
|
+
400
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return response;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
async deleteAccountUser(userId: number): Promise<DeleteAccountUserResponse> {
|
|
82
|
+
const { id_account } = await getUserContext();
|
|
83
|
+
const response = await api.apps.delete<DeleteAccountUserResponse>(
|
|
84
|
+
`/accounts/${id_account}/users/${userId}`
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
if (response.status === 0) {
|
|
88
|
+
throw new ApiError(response.message || 'Erro ao deletar usuário', 'DELETE_USER_FAILED', 400);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return response;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
async deleteAccount(): Promise<DeleteAccountResponse> {
|
|
95
|
+
const { id_account } = await getUserContext();
|
|
96
|
+
const response = await api.apps.delete<DeleteAccountResponse>(`/accounts/${id_account}`);
|
|
97
|
+
|
|
98
|
+
if (response.status === 0) {
|
|
99
|
+
throw new ApiError(response.message || 'Erro ao deletar conta', 'DELETE_ACCOUNT_FAILED', 400);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
return response;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
async createAccountUser(user: CreateAccountUserRequest): Promise<CreateAccountUserResponse> {
|
|
106
|
+
const { id_account } = await getUserContext();
|
|
107
|
+
const response = await api.apps.post<CreateAccountUserResponse>(
|
|
108
|
+
`/accounts/${id_account}/users`,
|
|
109
|
+
{
|
|
110
|
+
...user,
|
|
111
|
+
photo: user.photo ? await fileToBase64(user.photo) : null,
|
|
112
|
+
}
|
|
113
|
+
);
|
|
114
|
+
|
|
115
|
+
if (response.status === 0) {
|
|
116
|
+
throw new ApiError(response.message || 'Erro ao criar usuário', 'CREATE_USER_FAILED', 400);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
return response;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
private async resolvePhotoField(user: UpdateAccountUserRequest): Promise<{ photo?: string | null }> {
|
|
123
|
+
if (user.photo === undefined) return {};
|
|
124
|
+
const photo =
|
|
125
|
+
user.photo != null && typeof user.photo !== 'string'
|
|
126
|
+
? await fileToBase64(user.photo)
|
|
127
|
+
: user.photo;
|
|
128
|
+
return { photo };
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
async updateAccountUser(user: UpdateAccountUserRequest): Promise<UpdateAccountUserResponse> {
|
|
132
|
+
const { id_account, id_user } = await getUserContext();
|
|
133
|
+
const response = await api.apps.put<UpdateAccountUserResponse>(
|
|
134
|
+
`/accounts/${id_account}/users/${id_user}`,
|
|
135
|
+
{ ...user, ...(await this.resolvePhotoField(user)) }
|
|
136
|
+
);
|
|
137
|
+
|
|
138
|
+
if (response.status === 0) {
|
|
139
|
+
throw new ApiError(
|
|
140
|
+
response.message || 'Erro ao atualizar usuário',
|
|
141
|
+
'UPDATE_USER_FAILED',
|
|
142
|
+
400
|
|
143
|
+
);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
return response;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
async updateAccountUserById(
|
|
150
|
+
userId: number,
|
|
151
|
+
user: UpdateAccountUserRequest
|
|
152
|
+
): Promise<UpdateAccountUserResponse> {
|
|
153
|
+
const { id_account } = await getUserContext();
|
|
154
|
+
const response = await api.apps.put<UpdateAccountUserResponse>(
|
|
155
|
+
`/accounts/${id_account}/users/${userId}`,
|
|
156
|
+
{ ...user, ...(await this.resolvePhotoField(user)) }
|
|
157
|
+
);
|
|
158
|
+
|
|
159
|
+
if (response.status === 0) {
|
|
160
|
+
throw new ApiError(
|
|
161
|
+
response.message || 'Erro ao atualizar usuário',
|
|
162
|
+
'UPDATE_USER_FAILED',
|
|
163
|
+
400
|
|
164
|
+
);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
return response;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
async updateAccount(data: UpdateAccountRequest): Promise<UpdateAccountResponse> {
|
|
171
|
+
const { id_account } = await getUserContext();
|
|
172
|
+
const response = await api.apps.put<UpdateAccountResponse>(`/accounts/${id_account}`, data);
|
|
173
|
+
|
|
174
|
+
if (response.status === 0) {
|
|
175
|
+
throw new ApiError(
|
|
176
|
+
response.message || 'Erro ao atualizar conta',
|
|
177
|
+
'UPDATE_ACCOUNT_FAILED',
|
|
178
|
+
400
|
|
179
|
+
);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
return response;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
async requestContactReset(type: 'email' | 'phone', newContact: string, ddi?: string): Promise<void> {
|
|
186
|
+
const { id_account, id_user } = await getUserContext();
|
|
187
|
+
const response = await api.apps.post<{ status: number; message: string }>(
|
|
188
|
+
`/accounts/${id_account}/users/${id_user}/resetContact/request`,
|
|
189
|
+
{ type, newContact, ...(ddi ? { ddi } : {}) }
|
|
190
|
+
);
|
|
191
|
+
|
|
192
|
+
if (response.status === 0) {
|
|
193
|
+
throw new ApiError(
|
|
194
|
+
response.message || 'Erro ao solicitar alteração',
|
|
195
|
+
'REQUEST_CONTACT_RESET_FAILED',
|
|
196
|
+
400
|
|
197
|
+
);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
async confirmContactReset(type: 'email' | 'phone', token: string, newContact: string, ddi?: string): Promise<void> {
|
|
202
|
+
const { id_account, id_user } = await getUserContext();
|
|
203
|
+
const response = await api.apps.post<{ status: number; message: string }>(
|
|
204
|
+
`/accounts/${id_account}/users/${id_user}/resetContact/confirm`,
|
|
205
|
+
{ type, token, newContact, ...(ddi ? { ddi } : {}) }
|
|
206
|
+
);
|
|
207
|
+
|
|
208
|
+
if (response.status === 0) {
|
|
209
|
+
throw new ApiError(
|
|
210
|
+
response.message || 'Código inválido ou expirado',
|
|
211
|
+
'CONFIRM_CONTACT_RESET_FAILED',
|
|
212
|
+
400
|
|
213
|
+
);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
async changePassword(data: ChangePasswordRequest): Promise<ChangePasswordResponse> {
|
|
218
|
+
const { id_account, id_user } = await getUserContext();
|
|
219
|
+
const response = await api.apps.put<ChangePasswordResponse>(
|
|
220
|
+
`/accounts/${id_account}/users/${id_user}/action/changePassword`,
|
|
221
|
+
data
|
|
222
|
+
);
|
|
223
|
+
|
|
224
|
+
if (response.status === 0) {
|
|
225
|
+
throw new ApiError(
|
|
226
|
+
response.message || 'Erro ao alterar senha',
|
|
227
|
+
'CHANGE_PASSWORD_FAILED',
|
|
228
|
+
400
|
|
229
|
+
);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
return response;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
export const accountService = new AccountService();
|