Files
hipmi/src/app_modules/colab/_lib/api_collaboration.ts
Bagasbanuna02 740ae44734 fix: collaboration
deskripsi:
- fix chat group
2025-05-28 16:31:59 +08:00

234 lines
5.6 KiB
TypeScript

export const apiGetAllCollaboration = async ({
kategori,
page,
}: {
kategori: "beranda" | "partisipasi" | "proyeksaya" | "grup";
page: string;
}) => {
const respone = await fetch(
`/api/collaboration/get?kategori=${kategori}&page=${page}`
);
return await respone.json().catch(() => null);
};
export const apiGetOneCollaborationById = async ({
id,
kategori,
page,
}: {
id: string;
kategori: "detail" | "list_partisipan" | "cek_partisipasi";
page?: string;
}) => {
try {
// Fetch token from cookie
const { token } = await fetch("/api/get-cookie").then((res) => res.json());
if (!token) {
console.error("No token found");
return null;
}
const respone = await fetch(
`/api/collaboration/${id}?kategori=${kategori}&page=${page}`,
{
method: "GET",
headers: {
"Content-Type": "application/json",
Accept: "application/json",
Authorization: `Bearer ${token}`,
},
}
);
if (!respone.ok) {
const errorData = await respone.json().catch(() => null);
console.error(
"Failed to get one collaboration by id",
respone.statusText,
errorData
);
throw new Error(
errorData?.message || "Failed to get one collaboration by id"
);
}
const data = await respone.json();
return data;
} catch (error) {
console.error("Error get one collaboration by id", error);
return null;
}
};
export const apiGetDataGroupById = async ({
id,
kategori,
page,
}: {
id: string;
kategori: "detail" | "info_group";
page?: string;
}) => {
const respone = await fetch(
`/api/collaboration/group/${id}?kategori=${kategori}&page=${page}`
);
return await respone.json().catch(() => null);
};
export const apiGetMasterIndustri = async () => {
try {
// Fetch token from cookie
const { token } = await fetch("/api/get-cookie").then((res) => res.json());
if (!token) {
console.error("No token found");
return null;
}
const response = await fetch(`/api/collaboration/master`, {
method: "GET",
headers: {
"Content-Type": "application/json",
Accept: "application/json",
Authorization: `Bearer ${token}`,
},
});
if (!response.ok) {
const errorData = await response.json().catch(() => null);
console.error(
"Error get master industri:",
errorData?.message || "Unknown error"
);
return null;
}
return await response.json();
} catch (error) {
console.error("Error get master industri:", error);
throw error;
}
};
export const apiCollaborationGetMessageByRoomId = async ({
id,
page,
}: {
id: string;
page: string;
}) => {
try {
// Fetch token from cookie
const { token } = await fetch("/api/get-cookie").then((res) => res.json());
if (!token) {
console.error("No token found");
return null;
}
const response = await fetch(
`/api/collaboration/${id}/message?page=${page}`,
{
method: "GET",
headers: {
"Content-Type": "application/json",
Accept: "application/json",
Authorization: `Bearer ${token}`,
},
}
);
if (!response.ok) {
const errorData = await response.json().catch(() => null);
console.error(
"Error get message by room id:",
response.statusText,
errorData
);
throw new Error(errorData?.message || "Failed to get message by room id");
}
return await response.json();
} catch (error) {
console.error("Error get message by room id:", error);
throw error;
}
};
export const apiGetMessageByRoomId = async ({
id,
lastMessageId,
}: {
id: string;
lastMessageId?: string;
}) => {
try {
// Fetch token from cookie
const { token } = await fetch("/api/get-cookie").then((res) => res.json());
if (!token) {
console.error("No token found");
return null;
}
console.log("lastMessageId", lastMessageId);
let url = `/api/collaboration/${id}/chat`;
if (lastMessageId) {
url += `?cursor=${lastMessageId}`;
}
const response = await fetch(url, {
method: "GET",
headers: {
"Content-Type": "application/json",
Accept: "application/json",
Authorization: `Bearer ${token}`,
},
});
if (!response.ok) {
const errorData = await response.json().catch(() => null);
console.error(
"Error get message by room id:",
response.statusText,
errorData
);
throw new Error(errorData?.message || "Failed to get message by room id");
}
return await response.json();
} catch (error) {
console.error("Error get message by room id:", error);
throw error;
}
};
export const apiCollaborationGetRoomById = async ({
id,
}: {
id: string;
}) => {
try {
// Fetch token from cookie
const { token } = await fetch("/api/get-cookie").then((res) => res.json());
if (!token) {
console.error("No token found");
return null;
}
const response = await fetch(`/api/collaboration/${id}/room`, {
method: "GET",
headers: {
"Content-Type": "application/json",
Accept: "application/json",
Authorization: `Bearer ${token}`,
},
});
if (!response.ok) {
const errorData = await response.json().catch(() => null);
console.error(
"Error get room by id:",
response.statusText,
errorData
);
throw new Error(errorData?.message || "Failed to get room by id");
}
return await response.json();
} catch (error) {
console.error("Error get room by id:", error);
throw error;
}
};