sea-react-components 1.3.39 → 1.3.41

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 (69) hide show
  1. package/dist/HOC/can-access-application/index.d.ts +3 -2
  2. package/dist/HOC/can-access-application/index.d.ts.map +1 -1
  3. package/dist/HOC/can-access-application/index.js +2 -2
  4. package/dist/HOC/with-authorization/index.d.ts +3 -2
  5. package/dist/HOC/with-authorization/index.d.ts.map +1 -1
  6. package/dist/HOC/with-authorization/index.js +5 -5
  7. package/dist/components/comments-container/comment-form/index.d.ts +2 -1
  8. package/dist/components/comments-container/comment-form/index.d.ts.map +1 -1
  9. package/dist/components/comments-container/comment-form/index.js +5 -3
  10. package/dist/components/comments-container/index.d.ts +2 -1
  11. package/dist/components/comments-container/index.d.ts.map +1 -1
  12. package/dist/components/comments-container/index.js +11 -9
  13. package/dist/components/comments-container/use-comments/index.d.ts +2 -1
  14. package/dist/components/comments-container/use-comments/index.d.ts.map +1 -1
  15. package/dist/components/comments-container/use-comments/index.js +3 -3
  16. package/dist/components/firebase-token-handler/index.d.ts +2 -1
  17. package/dist/components/firebase-token-handler/index.d.ts.map +1 -1
  18. package/dist/components/firebase-token-handler/index.js +18 -17
  19. package/dist/components/log-activities-container/index.d.ts +2 -1
  20. package/dist/components/log-activities-container/index.d.ts.map +1 -1
  21. package/dist/components/log-activities-container/index.js +2 -2
  22. package/dist/components/log-activities-container/log-activities-list/index.d.ts +2 -1
  23. package/dist/components/log-activities-container/log-activities-list/index.d.ts.map +1 -1
  24. package/dist/components/log-activities-container/log-activities-list/index.js +4 -2
  25. package/dist/components/log-activities-container/use-log-activities/index.d.ts +2 -1
  26. package/dist/components/log-activities-container/use-log-activities/index.d.ts.map +1 -1
  27. package/dist/components/log-activities-container/use-log-activities/index.js +5 -3
  28. package/dist/components/not-authorized/index.d.ts +5 -1
  29. package/dist/components/not-authorized/index.d.ts.map +1 -1
  30. package/dist/components/not-authorized/index.js +27 -2
  31. package/dist/components/notifications-menu/index.d.ts +2 -1
  32. package/dist/components/notifications-menu/index.d.ts.map +1 -1
  33. package/dist/components/notifications-menu/index.js +48 -27
  34. package/dist/components/skeleton/index.d.ts +4 -2
  35. package/dist/components/skeleton/index.d.ts.map +1 -1
  36. package/dist/components/skeleton/index.js +3 -3
  37. package/dist/hooks/use-has-permission-access/index.d.ts +2 -2
  38. package/dist/hooks/use-has-permission-access/index.d.ts.map +1 -1
  39. package/dist/hooks/use-has-permission-access/index.js +2 -6
  40. package/dist/hooks/use-translation/index.d.ts.map +1 -1
  41. package/dist/hooks/use-translation/index.js +5 -2
  42. package/dist/hooks/user-has-application-access/index.d.ts +1 -1
  43. package/dist/hooks/user-has-application-access/index.d.ts.map +1 -1
  44. package/dist/hooks/user-has-application-access/index.js +1 -4
  45. package/dist/index.d.ts +1 -0
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +1 -0
  48. package/dist/middleware/must-auth/index.d.ts +2 -1
  49. package/dist/middleware/must-auth/index.d.ts.map +1 -1
  50. package/dist/middleware/must-auth/index.js +2 -5
  51. package/dist/providers/abstract-socket-provider/index.d.ts +22 -0
  52. package/dist/providers/abstract-socket-provider/index.d.ts.map +1 -0
  53. package/dist/providers/abstract-socket-provider/index.js +118 -0
  54. package/dist/providers/sea-socket-provider/index.d.ts +22 -0
  55. package/dist/providers/sea-socket-provider/index.d.ts.map +1 -0
  56. package/dist/providers/sea-socket-provider/index.js +119 -0
  57. package/dist/providers/socket-provider/index.d.ts +2 -1
  58. package/dist/providers/socket-provider/index.d.ts.map +1 -1
  59. package/dist/providers/socket-provider/index.js +1 -4
  60. package/dist/services/remote-service/index.d.ts +1 -0
  61. package/dist/services/remote-service/index.d.ts.map +1 -1
  62. package/dist/services/remote-service/index.js +0 -1
  63. package/dist/tsconfig.tsbuildinfo +1 -1
  64. package/dist/utils/auth-axios/index.d.ts +1 -1
  65. package/dist/utils/auth-axios/index.d.ts.map +1 -1
  66. package/dist/utils/auth-axios/index.js +1 -3
  67. package/dist/utils/axios/index.d.ts +1 -1
  68. package/dist/utils/axios/index.d.ts.map +1 -1
  69. package/package.json +2 -2
@@ -6,18 +6,12 @@ import clsx from "clsx";
6
6
  import Icon from "../icon";
7
7
  import NativeMenu from "../native-menu";
8
8
  import NativeMenuItem from "../native-menu/native-menu-item";
9
- import { getCookie } from "../../utils/cookie";
10
9
  import axios from "axios";
11
10
  import Skeleton from "../skeleton";
12
11
  import * as NotificationLocalStorageUtils from "../../utils/notification-localstorage";
13
12
  const DEFAULT_FETCH_NOTIFICATIONS_LIMIT = 50;
14
13
  const ICON_SIZE = "h-5 w-5";
15
- const axiosOptions = {
16
- headers: {
17
- Authorization: `Bearer ${getCookie(CONSTANTS.JWT.JWTCookieKey)}`,
18
- },
19
- };
20
- export default function NotificationMenu({ applicationKey, notificationBaseUrl, limit = DEFAULT_FETCH_NOTIFICATIONS_LIMIT, applicationsBaseUrls, navigate, }) {
14
+ export default function NotificationMenu({ applicationKey, notificationBaseUrl, limit = DEFAULT_FETCH_NOTIFICATIONS_LIMIT, applicationsBaseUrls, navigate, accessToken, }) {
21
15
  const [closeMenu, setCloseMenu] = useState(true);
22
16
  const [loading, setLoading] = useState(false);
23
17
  const [page, setPage] = useState(1);
@@ -26,24 +20,30 @@ export default function NotificationMenu({ applicationKey, notificationBaseUrl,
26
20
  const [unreadCount, setUnreadCount] = useState(0);
27
21
  const [notifications, setNotifications] = useState([]);
28
22
  useEffect(() => {
29
- setLoading(true);
30
- axios
31
- .get(`${notificationBaseUrl}?applicationKey=${applicationKey}&page=${page}&limit=${limit}`, axiosOptions)
32
- .then((response) => {
33
- const { data, page: p, totalCount: tc, totalPages: tp, unreadCount, } = response.data;
34
- setTotalCount(tc);
35
- setTotalPages(tp);
36
- setUnreadCount(unreadCount);
37
- setNotifications((prev) => {
38
- const all = Utils.Array.concatWithoutDuplicates(prev, data, (a, b) => a.id === b.id);
39
- return all;
23
+ if (accessToken) {
24
+ setLoading(true);
25
+ axios
26
+ .get(`${notificationBaseUrl}?applicationKey=${applicationKey}&page=${page}&limit=${limit}`, {
27
+ headers: {
28
+ Authorization: `Bearer ${accessToken}`,
29
+ },
30
+ })
31
+ .then((response) => {
32
+ const { data, page: p, totalCount: tc, totalPages: tp, unreadCount, } = response.data;
33
+ setTotalCount(tc);
34
+ setTotalPages(tp);
35
+ setUnreadCount(unreadCount);
36
+ setNotifications((prev) => {
37
+ const all = Utils.Array.concatWithoutDuplicates(prev, data, (a, b) => a.id === b.id);
38
+ return all;
39
+ });
40
+ return response;
41
+ })
42
+ .finally(() => {
43
+ setLoading(false);
40
44
  });
41
- return response;
42
- })
43
- .finally(() => {
44
- setLoading(false);
45
- });
46
- }, [applicationKey, notificationBaseUrl, limit, page]);
45
+ }
46
+ }, [applicationKey, notificationBaseUrl, limit, page, accessToken]);
47
47
  useEffect(() => {
48
48
  const handler = () => {
49
49
  const notificationIds = NotificationLocalStorageUtils.getNewNotificationIds();
@@ -56,10 +56,16 @@ export default function NotificationMenu({ applicationKey, notificationBaseUrl,
56
56
  return () => window.removeEventListener(NotificationLocalStorageUtils.NEW_NOTIFICATION_EVENT_NAME, handler);
57
57
  }, []);
58
58
  const handleNewNotificationCome = (notificationId) => {
59
+ if (!accessToken)
60
+ return;
59
61
  const exist = notifications.find((n) => n.id === notificationId);
60
62
  if (!exist) {
61
63
  axios
62
- .get(`${notificationBaseUrl}/${notificationId}`, axiosOptions)
64
+ .get(`${notificationBaseUrl}/${notificationId}`, {
65
+ headers: {
66
+ Authorization: `Bearer ${accessToken}`,
67
+ },
68
+ })
63
69
  .then((response) => {
64
70
  setUnreadCount((prev) => prev + 1);
65
71
  setTotalCount((prev) => prev + 1);
@@ -69,8 +75,14 @@ export default function NotificationMenu({ applicationKey, notificationBaseUrl,
69
75
  NotificationLocalStorageUtils.removeNotificationId(notificationId);
70
76
  };
71
77
  const markAsRead = (notification) => {
78
+ if (!accessToken)
79
+ return;
72
80
  axios
73
- .put(`${notificationBaseUrl}/${notification.id}/read`, {}, axiosOptions)
81
+ .put(`${notificationBaseUrl}/${notification.id}/read`, {}, {
82
+ headers: {
83
+ Authorization: `Bearer ${accessToken}`,
84
+ },
85
+ })
74
86
  .then((response) => {
75
87
  const readed = response.data;
76
88
  setNotifications((prev) => {
@@ -85,8 +97,14 @@ export default function NotificationMenu({ applicationKey, notificationBaseUrl,
85
97
  });
86
98
  };
87
99
  const markAllAsRead = () => {
100
+ if (!accessToken)
101
+ return;
88
102
  axios
89
- .put(`${notificationBaseUrl}/read-all`, {}, axiosOptions)
103
+ .put(`${notificationBaseUrl}/read-all`, {}, {
104
+ headers: {
105
+ Authorization: `Bearer ${accessToken}`,
106
+ },
107
+ })
90
108
  .then(() => {
91
109
  setNotifications((prev) => {
92
110
  return prev.map((n) => {
@@ -205,6 +223,9 @@ export default function NotificationMenu({ applicationKey, notificationBaseUrl,
205
223
  }, 200);
206
224
  }, children: _jsxs("div", { className: "flex-1 p-2", children: [_jsxs("div", { className: "flex flex-row items-center justify-between ", children: [_jsxs("div", { className: "flex flex-row items-center gap-2", children: [_jsx("div", { className: "font-semibold", children: icon }), " ", _jsxs("span", { className: "text-sm", children: [" ", title] })] }), _jsx("div", { className: "flex justify-end", children: _jsx("p", { className: "text-text text-xs", children: Utils.Moment.formatDateAsLabel(notification.createdAt) }) })] }), _jsx("div", { children: description })] }) }));
207
225
  };
226
+ if (!accessToken) {
227
+ return (_jsx("p", { className: "p-4 text-center text-sm text-gray-500", children: "Please provide an access token to view notifications." }));
228
+ }
208
229
  return (_jsx(NativeMenu, { size: "xl", menuButton: _jsxs("div", { className: "relative", children: [_jsx(Icon, { icon: "mingcute:notification-line", className: " hover:text-opacity-50 w-5 h-5 custom-animation" }), unreadCount !== 0 && (_jsx("div", { className: "absolute -top-2 -right-2 w-5 h-5 text-center rounded-full text-white bg-error shadow-md flex items-center justify-center", children: _jsx("p", { className: "text-xs select-none", children: unreadCount }) }))] }), maxHeight: 350, onReachBottom: () => LoadMoreNotifications(), closeMenu: closeMenu, setCloseMenu: setCloseMenu, children: _jsxs("div", { className: "flex flex-col ", children: [_jsxs("div", { className: "flex items-center justify-between gap-1 p-2", children: [_jsx("p", { className: "text-xl font-bold", children: "Notifications" }), _jsxs("button", { type: "button", className: "flex items-center gap-1 px-2 text-primary custom-animation hover:text-opacity-75", onClick: () => markAllAsRead(), children: [_jsx("p", { children: "Mare all as read" }), _jsx(Icon, { icon: "solar:check-read-linear", className: ICON_SIZE })] })] }), _jsxs("div", { className: "flex flex-col ", children: [notifications.map((notification) => (_jsx(NativeMenuItem, { children: renderNotificationItem(notification) }, `notification-${notification.id}`))), loading && (_jsx(_Fragment, { children: Array(3)
209
230
  .fill({})
210
231
  .map((_, i) => (_jsx(Skeleton, { className: "h-24 w-full" }, `notification-loading-${i}`))) }))] }), !loading && notifications.length === 0 && (_jsx("p", { className: "text-text text-center text-xs", children: "There are no more notifications" }))] }) }));
@@ -1,4 +1,6 @@
1
1
  import React from "react";
2
- export type Props = {} & React.HTMLAttributes<HTMLDivElement>;
3
- export default function Skeleton({ className, ...props }: Props): import("react/jsx-runtime").JSX.Element;
2
+ export type Props = {
3
+ count?: number;
4
+ } & React.HTMLAttributes<HTMLDivElement>;
5
+ export default function Skeleton({ className, count, ...props }: Props): import("react/jsx-runtime").JSX.Element;
4
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/skeleton/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,MAAM,KAAK,GAAG,EAAE,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;AAE9D,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,2CAO9D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/skeleton/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,MAAM,KAAK,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;AAE9E,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,2CAYzE"}
@@ -1,5 +1,5 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import clsx from "clsx";
3
- export default function Skeleton({ className, ...props }) {
4
- return (_jsx("div", { className: clsx("bg-gray-300 animate-pulse rounded-md", className), ...props }));
3
+ export default function Skeleton({ className, count = 1, ...props }) {
4
+ return (_jsx(_Fragment, { children: Array.from({ length: count }).map((_, index) => (_jsx("div", { className: clsx("bg-gray-300 animate-pulse rounded-md", className), ...props }, index))) }));
5
5
  }
@@ -1,4 +1,4 @@
1
1
  import { CONSTANTS } from "sea-platform-helpers";
2
- export declare function useHasPermission(permission: CONSTANTS.Permission.PermissionKeys): boolean;
3
- export declare function useHasOneOfPermissions(permissions: CONSTANTS.Permission.PermissionKeys[]): boolean;
2
+ export declare function useHasPermission(permission: CONSTANTS.Permission.PermissionKeys, accessToken: string): boolean;
3
+ export declare function useHasOneOfPermissions(permissions: CONSTANTS.Permission.PermissionKeys[], accessToken: string): boolean;
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/use-has-permission-access/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAIjD,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,cAAc,GAC9C,OAAO,CAQT;AAED,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,SAAS,CAAC,UAAU,CAAC,cAAc,EAAE,GACjD,OAAO,CAUT"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/use-has-permission-access/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,cAAc,EAC/C,WAAW,EAAE,MAAM,GAClB,OAAO,CAOT;AAED,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,SAAS,CAAC,UAAU,CAAC,cAAc,EAAE,EAClD,WAAW,EAAE,MAAM,GAClB,OAAO,CAST"}
@@ -1,18 +1,14 @@
1
1
  "use client";
2
- import { CONSTANTS } from "sea-platform-helpers";
3
- import { getCookie } from "../../utils/cookie";
4
2
  import { jwtDecode } from "../../utils/jwt";
5
- export function useHasPermission(permission) {
3
+ export function useHasPermission(permission, accessToken) {
6
4
  var _a, _b;
7
- const accessToken = getCookie(CONSTANTS.JWT.JWTCookieKey);
8
5
  if (!accessToken || accessToken === undefined)
9
6
  return false;
10
7
  const payload = jwtDecode(accessToken);
11
8
  return (_b = (_a = payload === null || payload === void 0 ? void 0 : payload.permissionKeys) === null || _a === void 0 ? void 0 : _a.includes(permission)) !== null && _b !== void 0 ? _b : false;
12
9
  }
13
- export function useHasOneOfPermissions(permissions) {
10
+ export function useHasOneOfPermissions(permissions, accessToken) {
14
11
  var _a, _b;
15
- const accessToken = getCookie(CONSTANTS.JWT.JWTCookieKey);
16
12
  if (!accessToken || accessToken === undefined)
17
13
  return false;
18
14
  const payload = jwtDecode(accessToken);
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/use-translation/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOpC,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe;SACnC,iCAAiC,CAAC,EAAE,CAAC,OAAO,wBAAwB,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,CAAC,iCAAiC,CAAC,CAAC;IAClJ,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe;SACnC,mBAAmB,CAAC,EAAE,CAAC,OAAO,wBAAwB,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;IACtH,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe;SACnC,4BAA4B,CAAC,EAAE,CAAC,OAAO,wBAAwB,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,CAAC,4BAA4B,CAAC,CAAC;CACzI,CAAC;AAWF,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,kBAAkB,EAClE,cAAc,EAAE,CAAC,EACjB,gBAAgB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,kBAAkB,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAC5E,oBAAoB,CAAC,EAAE,MAAM;aA8CtB,MAAM,kBAAkB,CAAC,CAAC,CAAC,WACvB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,KACvC,MAAM;EAoBV;AAED,wBAAgB,CAAC,CAAC,CAAC,SAAS,MAAM,kBAAkB,EAAE,KAAK,EAAE;IAC3D,cAAc,EAAE,CAAC,CAAC;IAClB,GAAG,EAAE,MAAM,kBAAkB,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IACzC,oBAAoB,EAAE,MAAM,CAAC;CAC9B,GAAG,MAAM,CAeT"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/use-translation/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOpC,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe;SACnC,iCAAiC,CAAC,EAAE,CAAC,OAAO,wBAAwB,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,CAAC,iCAAiC,CAAC,CAAC;IAClJ,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe;SACnC,mBAAmB,CAAC,EAAE,CAAC,OAAO,wBAAwB,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;IACtH,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe;SACnC,4BAA4B,CAAC,EAAE,CAAC,OAAO,wBAAwB,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,CAAC,4BAA4B,CAAC,CAAC;CACzI,CAAC;AAWF,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,kBAAkB,EAClE,cAAc,EAAE,CAAC,EACjB,gBAAgB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,kBAAkB,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAC5E,oBAAoB,CAAC,EAAE,MAAM;aA8CtB,MAAM,kBAAkB,CAAC,CAAC,CAAC,WACvB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,KACvC,MAAM;EAoBV;AAED,wBAAgB,CAAC,CAAC,CAAC,SAAS,MAAM,kBAAkB,EAAE,KAAK,EAAE;IAC3D,cAAc,EAAE,CAAC,CAAC;IAClB,GAAG,EAAE,MAAM,kBAAkB,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IACzC,oBAAoB,EAAE,MAAM,CAAC;CAC9B,GAAG,MAAM,CAuBT"}
@@ -70,9 +70,12 @@ export function useSeaTranslation(applicationKey, fetchTranslation, selectedLang
70
70
  return { t };
71
71
  }
72
72
  export function t(props) {
73
+ var _a, _b;
73
74
  const { applicationKey, key, params, selectedLanguageCode } = props;
74
- const translationMap = json[selectedLanguageCode] || DEFAULT_TRANSLATIONS_MAP[applicationKey];
75
- let translation = translationMap[key];
75
+ const languageMap = json[selectedLanguageCode];
76
+ const defaultMap = DEFAULT_TRANSLATIONS_MAP[applicationKey];
77
+ const keyStr = String(key);
78
+ let translation = (_b = (_a = languageMap === null || languageMap === void 0 ? void 0 : languageMap[keyStr]) !== null && _a !== void 0 ? _a : defaultMap === null || defaultMap === void 0 ? void 0 : defaultMap[keyStr]) !== null && _b !== void 0 ? _b : "";
76
79
  // Replace placeholders like {{ name }}, {{ count }}, etc.
77
80
  if (params) {
78
81
  Object.entries(params).forEach(([paramKey, paramValue]) => {
@@ -1,3 +1,3 @@
1
1
  import { CONSTANTS } from "sea-platform-helpers";
2
- export declare function useHasApplicationAccess(applicationKey: CONSTANTS.Application.ApplicationKeys): boolean;
2
+ export declare function useHasApplicationAccess(applicationKey: CONSTANTS.Application.ApplicationKeys, accessToken: string): boolean;
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/user-has-application-access/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAIjD,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,SAAS,CAAC,WAAW,CAAC,eAAe,GACpD,OAAO,CAST"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/user-has-application-access/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,SAAS,CAAC,WAAW,CAAC,eAAe,EACrD,WAAW,EAAE,MAAM,GAClB,OAAO,CAOT"}
@@ -1,10 +1,7 @@
1
1
  "use client";
2
- import { CONSTANTS } from "sea-platform-helpers";
3
- import { getCookie } from "../../utils/cookie";
4
2
  import { jwtDecode } from "../../utils/jwt";
5
- export function useHasApplicationAccess(applicationKey) {
3
+ export function useHasApplicationAccess(applicationKey, accessToken) {
6
4
  var _a, _b;
7
- const accessToken = getCookie(CONSTANTS.JWT.JWTCookieKey);
8
5
  if (!accessToken || accessToken === undefined)
9
6
  return false;
10
7
  const payload = jwtDecode(accessToken);
package/dist/index.d.ts CHANGED
@@ -10,6 +10,7 @@ export * as DeviceUtils from "./utils/device";
10
10
  export * as Services from "./services";
11
11
  export { default as MustAuth } from "./middleware/must-auth";
12
12
  export { default as SocketProvider, useSocket, SocketProviderProps, } from "./providers/socket-provider";
13
+ export { default as SEASocketProvider, useSEASocket, SEASocketProviderProps, } from "./providers/sea-socket-provider";
13
14
  export { useHasApplicationAccess } from "./hooks/user-has-application-access";
14
15
  export { useHasOneOfPermissions, useHasPermission, } from "./hooks/use-has-permission-access";
15
16
  export { useSeaTranslation, DEFAULT_TRANSLATIONS_MAP, t, } from "./hooks/use-translation";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AAGzC,OAAO,KAAK,eAAe,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,QAAQ,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,UAAU,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,SAAS,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,aAAa,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAG9C,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AAGvC,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAG7D,OAAO,EACL,OAAO,IAAI,cAAc,EACzB,SAAS,EACT,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EACL,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,CAAC,GACF,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EACL,OAAO,IAAI,KAAK,EAChB,KAAK,IAAI,UAAU,EACnB,KAAK,IAAI,UAAU,EACnB,MAAM,IAAI,WAAW,GACtB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,WAAW,EACX,SAAS,EACT,WAAW,GACZ,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EACL,OAAO,IAAI,KAAK,EAChB,KAAK,IAAI,UAAU,EACnB,KAAK,IAAI,UAAU,GACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,OAAO,IAAI,KAAK,EAChB,aAAa,EACb,SAAS,EACT,KAAK,IAAI,UAAU,GACpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAExE,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,KAAK,IAAI,aAAa,GACvB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EACL,OAAO,IAAI,UAAU,EACrB,KAAK,IAAI,eAAe,GACzB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,OAAO,IAAI,cAAc,EACzB,KAAK,IAAI,mBAAmB,GAC7B,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EACL,OAAO,IAAI,MAAM,EACjB,KAAK,IAAI,WAAW,EACpB,YAAY,GACb,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,OAAO,IAAI,gBAAgB,EAC3B,KAAK,IAAI,qBAAqB,GAC/B,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE3E,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EACL,OAAO,IAAI,WAAW,EACtB,KAAK,IAAI,gBAAgB,GAC1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,OAAO,IAAI,iBAAiB,EAC5B,KAAK,IAAI,sBAAsB,GAChC,MAAM,kCAAkC,CAAC;AAE1C,cAAc,4BAA4B,CAAC;AAE3C,OAAO,EACL,OAAO,IAAI,YAAY,EACvB,KAAK,IAAI,iBAAiB,GAC3B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,KAAK,IAAI,aAAa,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,KAAK,IAAI,aAAa,GACvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,KAAK,IAAI,aAAa,GACvB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,OAAO,IAAI,OAAO,EAClB,KAAK,IAAI,YAAY,GACtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,OAAO,IAAI,SAAS,EACpB,KAAK,IAAI,cAAc,GACxB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,gBAAgB,MAAM,+BAA+B,CAAC;AAElE,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,KAAK,IAAI,aAAa,GACvB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,OAAO,IAAI,SAAS,EACpB,KAAK,IAAI,cAAc,EACvB,wCAAwC,GACzC,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,OAAO,IAAI,KAAK,EAChB,KAAK,IAAI,UAAU,EACnB,WAAW,EACX,mCAAmC,GACpC,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,KAAK,IAAI,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EACL,OAAO,IAAI,WAAW,EACtB,KAAK,IAAI,gBAAgB,GAC1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,OAAO,IAAI,UAAU,EACrB,KAAK,IAAI,eAAe,GACzB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,OAAO,IAAI,MAAM,EACjB,KAAK,IAAI,WAAW,EACpB,SAAS,IAAI,eAAe,GAC7B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,KAAK,IAAI,aAAa,GACvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EACL,OAAO,IAAI,cAAc,EACzB,KAAK,IAAI,mBAAmB,GAC7B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,KAAK,IAAI,aAAa,GACvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,OAAO,IAAI,WAAW,EACtB,KAAK,IAAI,gBAAgB,GAC1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,OAAO,IAAI,YAAY,EACvB,KAAK,IAAI,iBAAiB,EAC1B,QAAQ,IAAI,gBAAgB,EAC5B,aAAa,IAAI,yBAAyB,EAC1C,KAAK,IAAI,iBAAiB,GAC3B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,OAAO,IAAI,WAAW,EACtB,KAAK,IAAI,gBAAgB,GAC1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,OAAO,IAAI,SAAS,EACpB,KAAK,IAAI,cAAc,EACvB,aAAa,IAAI,sBAAsB,EACvC,SAAS,IAAI,kBAAkB,EAC/B,cAAc,IAAI,uBAAuB,GAC1C,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,KAAK,IAAI,aAAa,GACvB,MAAM,8CAA8C,CAAC;AAEtD,OAAO,EACL,OAAO,IAAI,UAAU,EACrB,KAAK,IAAI,eAAe,GACzB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,KAAK,IAAI,aAAa,GACvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,OAAO,IAAI,aAAa,EACxB,KAAK,IAAI,kBAAkB,GAC5B,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,OAAO,IAAI,YAAY,EACvB,KAAK,IAAI,iBAAiB,GAC3B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,OAAO,IAAI,WAAW,EACtB,KAAK,IAAI,gBAAgB,GAC1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EACL,OAAO,IAAI,SAAS,EACpB,KAAK,IAAI,cAAc,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,OAAO,IAAI,cAAc,EACzB,KAAK,IAAI,mBAAmB,GAC7B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,OAAO,IAAI,YAAY,EACvB,KAAK,IAAI,iBAAiB,GAC3B,MAAM,6BAA6B,CAAC;AAErC,cAAc,wBAAwB,CAAC;AAEvC,OAAO,EACL,OAAO,IAAI,iBAAiB,EAC5B,KAAK,IAAI,sBAAsB,GAChC,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,OAAO,IAAI,iBAAiB,EAC5B,KAAK,IAAI,sBAAsB,GAChC,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,OAAO,IAAI,sBAAsB,EACjC,KAAK,IAAI,2BAA2B,GACrC,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAExE,OAAO,EACL,OAAO,IAAI,iBAAiB,EAC5B,KAAK,IAAI,sBAAsB,GAChC,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,OAAO,IAAI,oBAAoB,EAC/B,KAAK,IAAI,yBAAyB,GACnC,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,qCAAqC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -15,6 +15,7 @@ export * as Services from "./services";
15
15
  export { default as MustAuth } from "./middleware/must-auth";
16
16
  // providers
17
17
  export { default as SocketProvider, useSocket, } from "./providers/socket-provider";
18
+ export { default as SEASocketProvider, useSEASocket, } from "./providers/sea-socket-provider";
18
19
  // hooks
19
20
  export { useHasApplicationAccess } from "./hooks/user-has-application-access";
20
21
  export { useHasOneOfPermissions, useHasPermission, } from "./hooks/use-has-permission-access";
@@ -1,7 +1,8 @@
1
1
  import React from "react";
2
- export default function MustAuth({ children, noTokenHandler, hasTokenHandler, }: Readonly<{
2
+ export default function MustAuth({ children, noTokenHandler, hasTokenHandler, accessToken, }: Readonly<{
3
3
  children: React.ReactNode;
4
4
  noTokenHandler?: () => void;
5
5
  hasTokenHandler?: () => void;
6
+ accessToken?: string;
6
7
  }>): import("react/jsx-runtime").JSX.Element;
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/middleware/must-auth/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAKnD,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAC/B,QAAQ,EACR,cAAc,EACd,eAAe,GAChB,EAAE,QAAQ,CAAC;IACV,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;CAC9B,CAAC,2CAoBD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/middleware/must-auth/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAC/B,QAAQ,EACR,cAAc,EACd,eAAe,EACf,WAAW,GACZ,EAAE,QAAQ,CAAC;IACV,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC,2CAmBD"}
@@ -1,12 +1,9 @@
1
1
  "use client";
2
2
  import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
3
3
  import { useEffect, useState } from "react";
4
- import { CONSTANTS } from "sea-platform-helpers";
5
- import { getCookie } from "../../utils/cookie";
6
- export default function MustAuth({ children, noTokenHandler, hasTokenHandler, }) {
4
+ export default function MustAuth({ children, noTokenHandler, hasTokenHandler, accessToken, }) {
7
5
  const [isCheckingAuth, setIsCheckingAuth] = useState(true);
8
6
  useEffect(() => {
9
- const accessToken = getCookie(CONSTANTS.JWT.JWTCookieKey);
10
7
  if (!accessToken) {
11
8
  noTokenHandler();
12
9
  }
@@ -17,7 +14,7 @@ export default function MustAuth({ children, noTokenHandler, hasTokenHandler, })
17
14
  else {
18
15
  setIsCheckingAuth(false);
19
16
  }
20
- }, [noTokenHandler, hasTokenHandler]);
17
+ }, [noTokenHandler, hasTokenHandler, accessToken]);
21
18
  if (isCheckingAuth) {
22
19
  return null;
23
20
  }
@@ -0,0 +1,22 @@
1
+ import React from "react";
2
+ import { Socket, ManagerOptions, SocketOptions } from "socket.io-client";
3
+ export type SocketStatus = "idle" | "connecting" | "connected" | "disconnected" | "error";
4
+ export type SocketContextValue = {
5
+ socket: Socket | null;
6
+ status: SocketStatus;
7
+ error: Error | null;
8
+ connect: () => void;
9
+ disconnect: () => void;
10
+ };
11
+ export type SocketProviderProps = {
12
+ children: React.ReactNode;
13
+ link: string;
14
+ namespace?: string;
15
+ path?: string;
16
+ token?: string;
17
+ autoConnect?: boolean;
18
+ options?: Partial<ManagerOptions & SocketOptions>;
19
+ };
20
+ export declare function SocketProvider({ children, link, namespace, path, token, autoConnect, options, }: Readonly<SocketProviderProps>): import("react/jsx-runtime").JSX.Element;
21
+ export declare function useSocket(): SocketContextValue;
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/abstract-socket-provider/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAQN,MAAM,OAAO,CAAC;AACf,OAAO,EAAM,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAM7E,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,YAAY,GACZ,WAAW,GACX,cAAc,GACd,OAAO,CAAC;AAEZ,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,GAAG,aAAa,CAAC,CAAC;CACnD,CAAC;AAYF,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,KAAK,EACL,WAAkB,EAClB,OAAO,GACR,EAAE,QAAQ,CAAC,mBAAmB,CAAC,2CA2H/B;AAMD,wBAAgB,SAAS,uBAMxB"}
@@ -0,0 +1,118 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { createContext, useContext, useEffect, useMemo, useRef, useState, useCallback, } from "react";
4
+ import { io } from "socket.io-client";
5
+ /* ---------------------------------- */
6
+ /* Context */
7
+ /* ---------------------------------- */
8
+ const SocketContext = createContext(null);
9
+ /* ---------------------------------- */
10
+ /* Provider */
11
+ /* ---------------------------------- */
12
+ export function SocketProvider({ children, link, namespace, path, token, autoConnect = true, options, }) {
13
+ const socketRef = useRef(null);
14
+ const configRef = useRef({
15
+ link,
16
+ namespace,
17
+ path,
18
+ token,
19
+ options,
20
+ });
21
+ const [status, setStatus] = useState("idle");
22
+ const [error, setError] = useState(null);
23
+ /* ---------------------------------- */
24
+ /* Keep configRef updated without */
25
+ /* recreating connect() */
26
+ /* ---------------------------------- */
27
+ useEffect(() => {
28
+ configRef.current = {
29
+ link,
30
+ namespace,
31
+ path,
32
+ token,
33
+ options,
34
+ };
35
+ }, [link, namespace, path, token, options]);
36
+ /* ---------------------------------- */
37
+ /* Connect (stable reference) */
38
+ /* ---------------------------------- */
39
+ const connect = useCallback(() => {
40
+ var _a;
41
+ if ((_a = socketRef.current) === null || _a === void 0 ? void 0 : _a.connected)
42
+ return;
43
+ const { link, namespace, path, token, options } = configRef.current;
44
+ if (!link) {
45
+ setStatus("error");
46
+ setError(new Error("Socket link is required"));
47
+ return;
48
+ }
49
+ const finalUrl = namespace
50
+ ? `${link.replace(/\/$/, "")}${namespace}`
51
+ : link;
52
+ setStatus("connecting");
53
+ const socket = io(finalUrl, {
54
+ autoConnect: false,
55
+ transports: ["websocket"],
56
+ path,
57
+ auth: token ? { token } : undefined,
58
+ ...options,
59
+ });
60
+ socketRef.current = socket;
61
+ socket.on("connect", () => {
62
+ setStatus("connected");
63
+ setError(null);
64
+ });
65
+ socket.on("disconnect", () => {
66
+ setStatus("disconnected");
67
+ });
68
+ socket.on("connect_error", (err) => {
69
+ setStatus("error");
70
+ setError(err instanceof Error ? err : new Error("Socket connect error"));
71
+ });
72
+ socket.connect();
73
+ }, []);
74
+ /* ---------------------------------- */
75
+ /* Disconnect (stable reference) */
76
+ /* ---------------------------------- */
77
+ const disconnect = useCallback(() => {
78
+ const socket = socketRef.current;
79
+ if (!socket)
80
+ return;
81
+ socket.removeAllListeners();
82
+ socket.disconnect();
83
+ socketRef.current = null;
84
+ setStatus("disconnected");
85
+ }, []);
86
+ /* ---------------------------------- */
87
+ /* Auto Connect */
88
+ /* ---------------------------------- */
89
+ useEffect(() => {
90
+ if (!autoConnect)
91
+ return;
92
+ connect();
93
+ return () => {
94
+ disconnect();
95
+ };
96
+ }, [autoConnect, connect, disconnect]);
97
+ /* ---------------------------------- */
98
+ /* Memoized context */
99
+ /* ---------------------------------- */
100
+ const value = useMemo(() => ({
101
+ socket: socketRef.current,
102
+ status,
103
+ error,
104
+ connect,
105
+ disconnect,
106
+ }), [status, error, connect, disconnect]);
107
+ return (_jsx(SocketContext.Provider, { value: value, children: children }));
108
+ }
109
+ /* ---------------------------------- */
110
+ /* Hook */
111
+ /* ---------------------------------- */
112
+ export function useSocket() {
113
+ const context = useContext(SocketContext);
114
+ if (!context) {
115
+ throw new Error("useSocket must be used within SocketProvider");
116
+ }
117
+ return context;
118
+ }
@@ -0,0 +1,22 @@
1
+ import React from "react";
2
+ import { Socket, ManagerOptions, SocketOptions } from "socket.io-client";
3
+ export type SEASocketStatus = "idle" | "connecting" | "connected" | "disconnected" | "error";
4
+ export type SEASocketContextValue = {
5
+ socket: Socket | null;
6
+ status: SEASocketStatus;
7
+ error: Error | null;
8
+ connect: () => void;
9
+ disconnect: () => void;
10
+ };
11
+ export type SEASocketProviderProps = {
12
+ children: React.ReactNode;
13
+ link: string;
14
+ namespace?: string;
15
+ path?: string;
16
+ token?: string;
17
+ autoConnect?: boolean;
18
+ options?: Partial<ManagerOptions & SocketOptions>;
19
+ };
20
+ export default function SEASocketProvider({ children, link, namespace, path, token, autoConnect, options, }: Readonly<SEASocketProviderProps>): import("react/jsx-runtime").JSX.Element;
21
+ export declare function useSEASocket(): SEASocketContextValue;
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/sea-socket-provider/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAQN,MAAM,OAAO,CAAC;AACf,OAAO,EAAM,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAM7E,MAAM,MAAM,eAAe,GACvB,MAAM,GACN,YAAY,GACZ,WAAW,GACX,cAAc,GACd,OAAO,CAAC;AAEZ,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,GAAG,aAAa,CAAC,CAAC;CACnD,CAAC;AAYF,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACxC,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,KAAK,EACL,WAAkB,EAClB,OAAO,GACR,EAAE,QAAQ,CAAC,sBAAsB,CAAC,2CA+HlC;AAMD,wBAAgB,YAAY,0BAM3B"}
@@ -0,0 +1,119 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { createContext, useContext, useEffect, useMemo, useRef, useState, useCallback, } from "react";
4
+ import { io } from "socket.io-client";
5
+ /* ---------------------------------- */
6
+ /* Context */
7
+ /* ---------------------------------- */
8
+ const SEASocketContext = createContext(null);
9
+ /* ---------------------------------- */
10
+ /* Provider */
11
+ /* ---------------------------------- */
12
+ export default function SEASocketProvider({ children, link, namespace, path, token, autoConnect = true, options, }) {
13
+ const socketRef = useRef(null);
14
+ const configRef = useRef({
15
+ link,
16
+ namespace,
17
+ path,
18
+ token,
19
+ options,
20
+ });
21
+ const [status, setStatus] = useState("idle");
22
+ const [error, setError] = useState(null);
23
+ /* ---------------------------------- */
24
+ /* Keep configRef updated without */
25
+ /* recreating connect() */
26
+ /* ---------------------------------- */
27
+ useEffect(() => {
28
+ configRef.current = {
29
+ link,
30
+ namespace,
31
+ path,
32
+ token,
33
+ options,
34
+ };
35
+ }, [link, namespace, path, token, options]);
36
+ /* ---------------------------------- */
37
+ /* Connect (stable reference) */
38
+ /* ---------------------------------- */
39
+ const connect = useCallback(() => {
40
+ var _a;
41
+ if ((_a = socketRef.current) === null || _a === void 0 ? void 0 : _a.connected)
42
+ return;
43
+ const { link, namespace, path, token, options } = configRef.current;
44
+ if (!link) {
45
+ setStatus("error");
46
+ setError(new Error("Socket link is required"));
47
+ return;
48
+ }
49
+ const finalUrl = namespace
50
+ ? `${link.replace(/\/$/, "")}${namespace}`
51
+ : link;
52
+ console.log("Connecting to socket at:", finalUrl);
53
+ setStatus("connecting");
54
+ const socket = io(finalUrl, {
55
+ autoConnect: false,
56
+ transports: ["websocket"],
57
+ path,
58
+ auth: token ? { token } : undefined,
59
+ ...options,
60
+ });
61
+ socketRef.current = socket;
62
+ socket.on("connect", () => {
63
+ setStatus("connected");
64
+ setError(null);
65
+ });
66
+ socket.on("disconnect", () => {
67
+ setStatus("disconnected");
68
+ });
69
+ socket.on("connect_error", (err) => {
70
+ setStatus("error");
71
+ setError(err instanceof Error ? err : new Error("Socket connect error"));
72
+ });
73
+ socket.connect();
74
+ }, []);
75
+ /* ---------------------------------- */
76
+ /* Disconnect (stable reference) */
77
+ /* ---------------------------------- */
78
+ const disconnect = useCallback(() => {
79
+ const socket = socketRef.current;
80
+ if (!socket)
81
+ return;
82
+ socket.removeAllListeners();
83
+ socket.disconnect();
84
+ socketRef.current = null;
85
+ setStatus("disconnected");
86
+ }, []);
87
+ /* ---------------------------------- */
88
+ /* Auto Connect */
89
+ /* ---------------------------------- */
90
+ useEffect(() => {
91
+ if (!autoConnect)
92
+ return;
93
+ connect();
94
+ return () => {
95
+ disconnect();
96
+ };
97
+ }, [autoConnect, connect, disconnect]);
98
+ /* ---------------------------------- */
99
+ /* Memoized context */
100
+ /* ---------------------------------- */
101
+ const value = useMemo(() => ({
102
+ socket: socketRef.current,
103
+ status,
104
+ error,
105
+ connect,
106
+ disconnect,
107
+ }), [status, error, connect, disconnect]);
108
+ return (_jsx(SEASocketContext.Provider, { value: value, children: children }));
109
+ }
110
+ /* ---------------------------------- */
111
+ /* Hook */
112
+ /* ---------------------------------- */
113
+ export function useSEASocket() {
114
+ const context = useContext(SEASocketContext);
115
+ if (!context) {
116
+ throw new Error("useSEASocket must be used within SEASocketProvider");
117
+ }
118
+ return context;
119
+ }
@@ -11,7 +11,8 @@ export type SocketProviderProps = {
11
11
  link: string;
12
12
  autoConnect?: boolean;
13
13
  options?: Parameters<typeof io>[1];
14
+ accessToken?: string;
14
15
  };
15
- export default function SocketProvider({ children, link, autoConnect, options, }: Readonly<SocketProviderProps>): import("react/jsx-runtime").JSX.Element;
16
+ export default function SocketProvider({ children, link, autoConnect, options, accessToken, }: Readonly<SocketProviderProps>): import("react/jsx-runtime").JSX.Element;
16
17
  export declare function useSocket(): SocketContextValue;
17
18
  //# sourceMappingURL=index.d.ts.map