@duongtrungnguyen/next-helper
Version:
Helper library for Next.js 15
62 lines • 2.46 kB
JavaScript
;
"use client";
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var use_socket_exports = {};
__export(use_socket_exports, {
useSocket: () => useSocket
});
module.exports = __toCommonJS(use_socket_exports);
var import_react = require("react");
var import_socket = require("socket.io-client");
var import_headers = require("next/headers");
var import_configs = require("../configs");
var import_auth = require("../auth");
function useSocket(namespace) {
const { state } = (0, import_auth.useAuth)();
const socketRef = (0, import_react.useRef)(null);
const [isConnected, setIsConnected] = (0, import_react.useState)(false);
(0, import_react.useEffect)(() => {
initSocket();
return () => {
var _a;
(_a = socketRef.current) == null ? void 0 : _a.disconnect();
};
}, [namespace, state]);
const initSocket = async () => {
var _a;
const cookieStore = await (0, import_headers.cookies)();
const accessToken = (_a = cookieStore.get(import_configs.libConfig.auth.cookies.accessToken)) == null ? void 0 : _a.value;
if (!accessToken || !state.isAuthenticated) return;
if (socketRef.current) {
socketRef.current.disconnect();
}
socketRef.current = (0, import_socket.io)(`${process.env.NEXT_PUBLIC_API_SERVER_ORIGIN}/${namespace}`, {
transports: ["websocket"],
auth: { token: `Bearer ${accessToken}` }
});
socketRef.current.on("connect", () => setIsConnected(true));
socketRef.current.on("disconnect", () => setIsConnected(false));
};
return { socket: socketRef.current, isConnected };
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
useSocket
});
//# sourceMappingURL=use-socket.js.map