front-hub/src/utils/hooks/usePipeSubscriber.ts

50 lines
1.6 KiB
TypeScript
Raw Normal View History

2024-07-22 18:32:41 +00:00
import { UserAccount, UserName, getAuthToken, useSSESubscription } from "@frontend/kitui"
import { useUserStore } from "@root/stores/user";
type Ping = [{ event: "ping" }]
type SomeChange = [{
"id": UserAccount["_id"],
"userId": UserAccount["userId"],
"cart": UserAccount["cart"],
"wallet": {
"cash": UserAccount["wallet"]["cash"],
"currency": UserAccount["wallet"]["currency"],
"spent": UserAccount["wallet"]["spent"],
"purchasesAmount": UserAccount["wallet"]["purchasesAmount"],
"money": UserAccount["wallet"]["money"],
"lastPaymentId": string;
},
"name": UserName,
"status": UserAccount["status"],
"isDeleted": UserAccount["isDeleted"],
"createdAt": UserAccount["createdAt"];
"updatedAt": UserAccount["updatedAt"];
"from": string;
"partner": string;
}]
type PipeMessage = Ping | SomeChange
export const usePipeSubscriber = () => {
const token = getAuthToken();
const userId = useUserStore((state) => state.userId);
useSSESubscription({
enabled: Boolean(token) && Boolean(userId),
url:
process.env.REACT_APP_DOMAIN +
`/customer/v1.0.1/account/pipe?Authorization=${token}`,
onNewData: (data) => {
let message = data as PipeMessage
//Пропускаем пингование
if ('event' in message[0] && message[0].event === "ping") return
console.log("!pipe new message!:")
console.log(message)
console.log("произошёл мем")
},
marker: "pipe",
});
}