@greatapps/common 1.1.278 → 1.1.279

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.
@@ -15,7 +15,10 @@ import {
15
15
  import { useLogin } from "../modules/auth/hooks/login.hook";
16
16
  import { useRegister } from "../modules/auth/hooks/register.hook";
17
17
  import { useLogout } from "../modules/auth/hooks/logout.hook";
18
- import { useCurrentAccount, ACCOUNT_QUERY_KEY } from "../modules/accounts/hooks/current-account.hook";
18
+ import {
19
+ useCurrentAccount,
20
+ ACCOUNT_QUERY_KEY
21
+ } from "../modules/accounts/hooks/current-account.hook";
19
22
  import { useWhitelabelUrls } from "./whitelabel.provider";
20
23
  const AuthContext = createContext(
21
24
  void 0
@@ -63,18 +66,15 @@ function AuthProvider({ children }) {
63
66
  [queryClient, setUserData]
64
67
  );
65
68
  const resolveLogoutRedirect = useCallback(() => {
66
- if (typeof window === "undefined") {
67
- return "/login";
68
- }
69
69
  try {
70
70
  const currentOrigin = window.location.origin;
71
71
  const pagesOrigin = pagesUrl ? new URL(pagesUrl).origin : "";
72
72
  if (pagesOrigin && currentOrigin === pagesOrigin) {
73
- return accountsUrl || "/login";
73
+ return `${accountsUrl}/login?redirect=${encodeURIComponent(pagesUrl)}`;
74
74
  }
75
75
  } catch {
76
76
  }
77
- return "/login";
77
+ return `${accountsUrl}/login?redirect=${encodeURIComponent(pagesUrl || "/")}`;
78
78
  }, [accountsUrl, pagesUrl]);
79
79
  const logout = useCallback(async () => {
80
80
  try {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/providers/auth.provider.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport {\r\n createContext,\r\n ReactNode,\r\n useCallback,\r\n useContext,\r\n useMemo,\r\n} from \"react\";\r\nimport { useQueryClient } from \"@tanstack/react-query\";\r\nimport {\n useUserQuery,\n useSetUserData,\n useUserValidateSession,\n} from \"../modules/auth/hooks/useUserQuery\";\nimport { useLogin } from \"../modules/auth/hooks/login.hook\";\r\nimport { useRegister } from \"../modules/auth/hooks/register.hook\";\r\nimport { useLogout } from \"../modules/auth/hooks/logout.hook\";\r\nimport {\n AuthState,\n LoginRequest,\n RegisterRequest,\n} from \"../modules/auth/schema\";\n\r\nexport type LoginResult =\n | { result: \"success\" }\n | { result: \"two_factor_required\"; cookie: string }\n | { result: \"error\"; message: string };\nimport { useCurrentAccount, ACCOUNT_QUERY_KEY } from \"../modules/accounts/hooks/current-account.hook\";\nimport { useWhitelabelUrls } from \"./whitelabel.provider\";\n\ninterface AuthContextProps extends AuthState {\n login: (credentials: LoginRequest) => Promise<LoginResult>;\n register: (data: RegisterRequest) => Promise<void>;\n logout: () => Promise<void>;\n}\n\r\nexport const AuthContext = createContext<AuthContextProps | undefined>(\r\n undefined\r\n);\r\n\r\ninterface AuthProviderProps {\r\n children: ReactNode;\r\n}\r\n\r\nexport function AuthProvider({ children }: AuthProviderProps) {\r\n const { data: user, isLoading: isQueryLoading } = useUserQuery();\r\n const { data: account, isLoading: isAccountLoading } = useCurrentAccount();\r\n const { isLoading: isSessionLoading } = useUserValidateSession();\r\n\r\n const queryClient = useQueryClient();\n const setUserData = useSetUserData();\n const { accountsUrl, pagesUrl } = useWhitelabelUrls();\n\r\n const { mutateAsync: loginMutate, isPending: isLogging } = useLogin();\n const { mutateAsync: registerMutate, isPending: isRegistering } =\r\n useRegister();\r\n const { mutateAsync: logoutMutate, isPending: isLoggingOut } = useLogout();\r\n\r\n const isAuthenticated = !!user;\r\n const isLoading =\r\n isLogging ||\r\n isRegistering ||\r\n isLoggingOut ||\r\n isQueryLoading ||\r\n isAccountLoading ||\r\n isSessionLoading;\r\n\r\n const login = useCallback(\r\n async (credentials: LoginRequest): Promise<LoginResult> => {\r\n try {\r\n const data = await loginMutate(credentials);\r\n\r\n if (data.result === \"two_factor_required\") {\r\n return { result: \"two_factor_required\", cookie: data.cookie };\r\n }\r\n\r\n queryClient.clear();\r\n setUserData(data.user);\r\n queryClient.setQueryData(ACCOUNT_QUERY_KEY, data.account);\r\n\r\n return { result: \"success\" };\r\n } catch (error) {\r\n const message =\r\n error instanceof Error ? error.message : \"Ocorreu um erro ao fazer login. Tente novamente.\";\r\n return { result: \"error\", message };\r\n }\r\n },\r\n [queryClient, setUserData]\r\n );\r\n\r\n const register = useCallback(\r\n async (data: RegisterRequest): Promise<void> => {\r\n await registerMutate(data, {\r\n onSuccess: (data) => {\r\n queryClient.clear();\r\n setUserData(data.user);\r\n queryClient.setQueryData(ACCOUNT_QUERY_KEY, data.account);\r\n },\r\n });\r\n },\r\n [queryClient, setUserData]\r\n );\r\n\r\n const resolveLogoutRedirect = useCallback(() => {\n if (typeof window === \"undefined\") {\n return \"/login\";\n }\n\n try {\n const currentOrigin = window.location.origin;\n const pagesOrigin = pagesUrl ? new URL(pagesUrl).origin : \"\";\n\n if (pagesOrigin && currentOrigin === pagesOrigin) {\n return accountsUrl || \"/login\";\n }\n } catch {\n // fallback below\n }\n\n return \"/login\";\n }, [accountsUrl, pagesUrl]);\n\n const logout = useCallback(async (): Promise<void> => {\n try {\n await logoutMutate(undefined);\n } catch {\n // cookie já removido no servidor mesmo se a API falhou\n } finally {\n queryClient.clear();\n window.location.assign(resolveLogoutRedirect());\n }\n }, [queryClient, logoutMutate, resolveLogoutRedirect]);\n\r\n const value: AuthContextProps = useMemo(\r\n () => ({\r\n user: user ?? null,\r\n account: account ?? null,\r\n isAuthenticated,\r\n isLoading,\r\n login,\r\n register,\r\n logout,\r\n }),\r\n [user, account, isAuthenticated, isLoading, login, register, logout]\r\n );\r\n\r\n return <AuthContext.Provider value={value}>{children}</AuthContext.Provider>;\r\n}\r\n\r\nexport function useAuth(): AuthContextProps {\r\n const context = useContext(AuthContext);\r\n\r\n if (context === undefined) {\r\n throw new Error(\"useAuth deve ser usado dentro de um AuthProvider\");\r\n }\r\n\r\n return context;\r\n}\r\n"],"mappings":"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","names":["data"]}
1
+ {"version":3,"sources":["../../src/providers/auth.provider.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport {\r\n createContext,\r\n ReactNode,\r\n useCallback,\r\n useContext,\r\n useMemo,\r\n} from \"react\";\r\nimport { useQueryClient } from \"@tanstack/react-query\";\r\nimport {\r\n useUserQuery,\r\n useSetUserData,\r\n useUserValidateSession,\r\n} from \"../modules/auth/hooks/useUserQuery\";\r\nimport { useLogin } from \"../modules/auth/hooks/login.hook\";\r\nimport { useRegister } from \"../modules/auth/hooks/register.hook\";\r\nimport { useLogout } from \"../modules/auth/hooks/logout.hook\";\r\nimport {\r\n AuthState,\r\n LoginRequest,\r\n RegisterRequest,\r\n} from \"../modules/auth/schema\";\r\n\r\nexport type LoginResult =\r\n | { result: \"success\" }\r\n | { result: \"two_factor_required\"; cookie: string }\r\n | { result: \"error\"; message: string };\r\nimport {\r\n useCurrentAccount,\r\n ACCOUNT_QUERY_KEY,\r\n} from \"../modules/accounts/hooks/current-account.hook\";\r\nimport { useWhitelabelUrls } from \"./whitelabel.provider\";\r\n\r\ninterface AuthContextProps extends AuthState {\r\n login: (credentials: LoginRequest) => Promise<LoginResult>;\r\n register: (data: RegisterRequest) => Promise<void>;\r\n logout: () => Promise<void>;\r\n}\r\n\r\nexport const AuthContext = createContext<AuthContextProps | undefined>(\r\n undefined,\r\n);\r\n\r\ninterface AuthProviderProps {\r\n children: ReactNode;\r\n}\r\n\r\nexport function AuthProvider({ children }: AuthProviderProps) {\r\n const { data: user, isLoading: isQueryLoading } = useUserQuery();\r\n const { data: account, isLoading: isAccountLoading } = useCurrentAccount();\r\n const { isLoading: isSessionLoading } = useUserValidateSession();\r\n\r\n const queryClient = useQueryClient();\r\n const setUserData = useSetUserData();\r\n const { accountsUrl, pagesUrl } = useWhitelabelUrls();\r\n\r\n const { mutateAsync: loginMutate, isPending: isLogging } = useLogin();\r\n const { mutateAsync: registerMutate, isPending: isRegistering } =\r\n useRegister();\r\n const { mutateAsync: logoutMutate, isPending: isLoggingOut } = useLogout();\r\n\r\n const isAuthenticated = !!user;\r\n const isLoading =\r\n isLogging ||\r\n isRegistering ||\r\n isLoggingOut ||\r\n isQueryLoading ||\r\n isAccountLoading ||\r\n isSessionLoading;\r\n\r\n const login = useCallback(\r\n async (credentials: LoginRequest): Promise<LoginResult> => {\r\n try {\r\n const data = await loginMutate(credentials);\r\n\r\n if (data.result === \"two_factor_required\") {\r\n return { result: \"two_factor_required\", cookie: data.cookie };\r\n }\r\n\r\n queryClient.clear();\r\n setUserData(data.user);\r\n queryClient.setQueryData(ACCOUNT_QUERY_KEY, data.account);\r\n\r\n return { result: \"success\" };\r\n } catch (error) {\r\n const message =\r\n error instanceof Error\r\n ? error.message\r\n : \"Ocorreu um erro ao fazer login. Tente novamente.\";\r\n return { result: \"error\", message };\r\n }\r\n },\r\n [queryClient, setUserData],\r\n );\r\n\r\n const register = useCallback(\r\n async (data: RegisterRequest): Promise<void> => {\r\n await registerMutate(data, {\r\n onSuccess: (data) => {\r\n queryClient.clear();\r\n setUserData(data.user);\r\n queryClient.setQueryData(ACCOUNT_QUERY_KEY, data.account);\r\n },\r\n });\r\n },\r\n [queryClient, setUserData],\r\n );\r\n\r\n const resolveLogoutRedirect = useCallback(() => {\r\n try {\r\n const currentOrigin = window.location.origin;\r\n const pagesOrigin = pagesUrl ? new URL(pagesUrl).origin : \"\";\r\n\r\n if (pagesOrigin && currentOrigin === pagesOrigin) {\r\n return `${accountsUrl}/login?redirect=${encodeURIComponent(pagesUrl)}`;\r\n }\r\n } catch {\r\n // fallback below\r\n }\r\n\r\n return `${accountsUrl}/login?redirect=${encodeURIComponent(pagesUrl || \"/\")}`;\r\n }, [accountsUrl, pagesUrl]);\r\n\r\n const logout = useCallback(async (): Promise<void> => {\r\n try {\r\n await logoutMutate(undefined);\r\n } catch {\r\n // cookie já removido no servidor mesmo se a API falhou\r\n } finally {\r\n queryClient.clear();\r\n window.location.assign(resolveLogoutRedirect());\r\n }\r\n }, [queryClient, logoutMutate, resolveLogoutRedirect]);\r\n\r\n const value: AuthContextProps = useMemo(\r\n () => ({\r\n user: user ?? null,\r\n account: account ?? null,\r\n isAuthenticated,\r\n isLoading,\r\n login,\r\n register,\r\n logout,\r\n }),\r\n [user, account, isAuthenticated, isLoading, login, register, logout],\r\n );\r\n\r\n return <AuthContext.Provider value={value}>{children}</AuthContext.Provider>;\r\n}\r\n\r\nexport function useAuth(): AuthContextProps {\r\n const context = useContext(AuthContext);\r\n\r\n if (context === undefined) {\r\n throw new Error(\"useAuth deve ser usado dentro de um AuthProvider\");\r\n }\r\n\r\n return context;\r\n}\r\n"],"mappings":"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","names":["data"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@greatapps/common",
3
- "version": "1.1.278",
3
+ "version": "1.1.279",
4
4
  "description": "Shared library for GreatApps frontend applications",
5
5
  "main": "./dist/index.mjs",
6
6
  "types": "./src/index.ts",
@@ -1,25 +1,25 @@
1
1
  export interface GeneralStyleJson {
2
- cor_principal: string;
3
- cor_hover: string;
4
- cor_link: string;
2
+ primary_color: string;
3
+ hover_color: string;
4
+ link_color: string;
5
5
  }
6
6
 
7
7
  export interface PageStyleJson {
8
- titulo_principal: string | null;
9
- cor_titulo_principal: string | null;
10
- cor_fundo: string | null;
11
- imagem: string | null;
12
- titulo_secundario: string | null;
13
- cor_titulo_secundario: string | null;
14
- descricao: string | null;
15
- cor_descricao: string | null;
16
- toggle_imagem: boolean;
17
- toggle_titulo_secundario: boolean;
18
- toggle_descricao: boolean;
8
+ main_title: string | null;
9
+ main_title_color: string | null;
10
+ background_color: string | null;
11
+ image: string | null;
12
+ secondary_title: string | null;
13
+ secondary_title_color: string | null;
14
+ description: string | null;
15
+ description_color: string | null;
16
+ show_image: boolean;
17
+ show_secondary_title: boolean;
18
+ show_description: boolean;
19
19
  }
20
20
 
21
21
  export interface DashboardStyleJson {
22
- cor_fundo: string | null;
22
+ background_color: string | null;
23
23
  }
24
24
 
25
25
  export interface WhitelabelData {
@@ -8,35 +8,38 @@ import {
8
8
  useMemo,
9
9
  } from "react";
10
10
  import { useQueryClient } from "@tanstack/react-query";
11
- import {
12
- useUserQuery,
13
- useSetUserData,
14
- useUserValidateSession,
15
- } from "../modules/auth/hooks/useUserQuery";
11
+ import {
12
+ useUserQuery,
13
+ useSetUserData,
14
+ useUserValidateSession,
15
+ } from "../modules/auth/hooks/useUserQuery";
16
16
  import { useLogin } from "../modules/auth/hooks/login.hook";
17
17
  import { useRegister } from "../modules/auth/hooks/register.hook";
18
18
  import { useLogout } from "../modules/auth/hooks/logout.hook";
19
- import {
20
- AuthState,
21
- LoginRequest,
22
- RegisterRequest,
23
- } from "../modules/auth/schema";
24
-
25
- export type LoginResult =
26
- | { result: "success" }
27
- | { result: "two_factor_required"; cookie: string }
28
- | { result: "error"; message: string };
29
- import { useCurrentAccount, ACCOUNT_QUERY_KEY } from "../modules/accounts/hooks/current-account.hook";
30
- import { useWhitelabelUrls } from "./whitelabel.provider";
31
-
32
- interface AuthContextProps extends AuthState {
33
- login: (credentials: LoginRequest) => Promise<LoginResult>;
34
- register: (data: RegisterRequest) => Promise<void>;
35
- logout: () => Promise<void>;
36
- }
19
+ import {
20
+ AuthState,
21
+ LoginRequest,
22
+ RegisterRequest,
23
+ } from "../modules/auth/schema";
24
+
25
+ export type LoginResult =
26
+ | { result: "success" }
27
+ | { result: "two_factor_required"; cookie: string }
28
+ | { result: "error"; message: string };
29
+ import {
30
+ useCurrentAccount,
31
+ ACCOUNT_QUERY_KEY,
32
+ } from "../modules/accounts/hooks/current-account.hook";
33
+ import { useWhitelabelUrls } from "./whitelabel.provider";
34
+
35
+ interface AuthContextProps extends AuthState {
36
+ login: (credentials: LoginRequest) => Promise<LoginResult>;
37
+ register: (data: RegisterRequest) => Promise<void>;
38
+ logout: () => Promise<void>;
39
+ }
37
40
 
38
41
  export const AuthContext = createContext<AuthContextProps | undefined>(
39
- undefined
42
+ undefined,
40
43
  );
41
44
 
42
45
  interface AuthProviderProps {
@@ -48,11 +51,11 @@ export function AuthProvider({ children }: AuthProviderProps) {
48
51
  const { data: account, isLoading: isAccountLoading } = useCurrentAccount();
49
52
  const { isLoading: isSessionLoading } = useUserValidateSession();
50
53
 
51
- const queryClient = useQueryClient();
52
- const setUserData = useSetUserData();
53
- const { accountsUrl, pagesUrl } = useWhitelabelUrls();
54
+ const queryClient = useQueryClient();
55
+ const setUserData = useSetUserData();
56
+ const { accountsUrl, pagesUrl } = useWhitelabelUrls();
54
57
 
55
- const { mutateAsync: loginMutate, isPending: isLogging } = useLogin();
58
+ const { mutateAsync: loginMutate, isPending: isLogging } = useLogin();
56
59
  const { mutateAsync: registerMutate, isPending: isRegistering } =
57
60
  useRegister();
58
61
  const { mutateAsync: logoutMutate, isPending: isLoggingOut } = useLogout();
@@ -82,11 +85,13 @@ export function AuthProvider({ children }: AuthProviderProps) {
82
85
  return { result: "success" };
83
86
  } catch (error) {
84
87
  const message =
85
- error instanceof Error ? error.message : "Ocorreu um erro ao fazer login. Tente novamente.";
88
+ error instanceof Error
89
+ ? error.message
90
+ : "Ocorreu um erro ao fazer login. Tente novamente.";
86
91
  return { result: "error", message };
87
92
  }
88
93
  },
89
- [queryClient, setUserData]
94
+ [queryClient, setUserData],
90
95
  );
91
96
 
92
97
  const register = useCallback(
@@ -99,38 +104,34 @@ export function AuthProvider({ children }: AuthProviderProps) {
99
104
  },
100
105
  });
101
106
  },
102
- [queryClient, setUserData]
107
+ [queryClient, setUserData],
103
108
  );
104
109
 
105
- const resolveLogoutRedirect = useCallback(() => {
106
- if (typeof window === "undefined") {
107
- return "/login";
108
- }
109
-
110
- try {
111
- const currentOrigin = window.location.origin;
112
- const pagesOrigin = pagesUrl ? new URL(pagesUrl).origin : "";
113
-
114
- if (pagesOrigin && currentOrigin === pagesOrigin) {
115
- return accountsUrl || "/login";
116
- }
117
- } catch {
118
- // fallback below
119
- }
120
-
121
- return "/login";
122
- }, [accountsUrl, pagesUrl]);
123
-
124
- const logout = useCallback(async (): Promise<void> => {
125
- try {
126
- await logoutMutate(undefined);
127
- } catch {
128
- // cookie já removido no servidor mesmo se a API falhou
129
- } finally {
130
- queryClient.clear();
131
- window.location.assign(resolveLogoutRedirect());
132
- }
133
- }, [queryClient, logoutMutate, resolveLogoutRedirect]);
110
+ const resolveLogoutRedirect = useCallback(() => {
111
+ try {
112
+ const currentOrigin = window.location.origin;
113
+ const pagesOrigin = pagesUrl ? new URL(pagesUrl).origin : "";
114
+
115
+ if (pagesOrigin && currentOrigin === pagesOrigin) {
116
+ return `${accountsUrl}/login?redirect=${encodeURIComponent(pagesUrl)}`;
117
+ }
118
+ } catch {
119
+ // fallback below
120
+ }
121
+
122
+ return `${accountsUrl}/login?redirect=${encodeURIComponent(pagesUrl || "/")}`;
123
+ }, [accountsUrl, pagesUrl]);
124
+
125
+ const logout = useCallback(async (): Promise<void> => {
126
+ try {
127
+ await logoutMutate(undefined);
128
+ } catch {
129
+ // cookie removido no servidor mesmo se a API falhou
130
+ } finally {
131
+ queryClient.clear();
132
+ window.location.assign(resolveLogoutRedirect());
133
+ }
134
+ }, [queryClient, logoutMutate, resolveLogoutRedirect]);
134
135
 
135
136
  const value: AuthContextProps = useMemo(
136
137
  () => ({
@@ -142,7 +143,7 @@ export function AuthProvider({ children }: AuthProviderProps) {
142
143
  register,
143
144
  logout,
144
145
  }),
145
- [user, account, isAuthenticated, isLoading, login, register, logout]
146
+ [user, account, isAuthenticated, isLoading, login, register, logout],
146
147
  );
147
148
 
148
149
  return <AuthContext.Provider value={value}>{children}</AuthContext.Provider>;
@@ -1 +0,0 @@
1
- //# sourceMappingURL=styles-schema.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,37 +0,0 @@
1
- // Espelha gapps-r3-admin/src/modules/styles/types.ts (WhitelabelStylesRow)
2
-
3
- export interface GeneralStyleJson {
4
- nome_empresa: string;
5
- favicon: string | null;
6
- logo: string | null;
7
- cor_principal: string;
8
- cor_hover: string;
9
- cor_link: string;
10
- }
11
-
12
- export interface PageStyleJson {
13
- titulo_principal: string | null;
14
- cor_titulo_principal: string | null;
15
- cor_fundo: string | null;
16
- imagem: string | null;
17
- titulo_secundario: string | null;
18
- cor_titulo_secundario: string | null;
19
- descricao: string | null;
20
- cor_descricao: string | null;
21
- toggle_imagem: boolean;
22
- toggle_titulo_secundario: boolean;
23
- toggle_descricao: boolean;
24
- }
25
-
26
- export interface DashboardStyleJson {
27
- cor_fundo: string | null;
28
- }
29
-
30
- export interface WhitelabelStylesData {
31
- id: number;
32
- id_wl: number;
33
- general: GeneralStyleJson | null;
34
- signin_page: PageStyleJson | null;
35
- signup_page: PageStyleJson | null;
36
- dashboard: DashboardStyleJson | null;
37
- }