import SecurityClient from "@app/components/utilities/SecurityClient"; interface WorkspaceProps { workspaceId: string; offset: number; limit: number; userId: string; actionNames: string; } /** * This function fetches the activity logs for a certain project * @param {object} obj * @param {string} obj.workspaceId - workspace id for which we are trying to get project log * @param {object} obj.offset - teh starting point of logs that we want to pull * @param {object} obj.limit - how many logs will we output * @param {object} obj.userId - optional userId filter - will only query logs for that user * @param {string} obj.actionNames - optional actionNames filter - will only query logs for those actions * @returns */ const getProjectLogs = async ({ workspaceId, offset, limit, userId, actionNames }: WorkspaceProps) => { let payload; if (userId !== "" && actionNames !== "") { payload = { offset: String(offset), limit: String(limit), sortBy: "recent", userId: JSON.stringify(userId), actionNames }; } else if (userId !== "") { payload = { offset: String(offset), limit: String(limit), sortBy: "recent", userId: JSON.stringify(userId) }; } else if (actionNames !== "") { payload = { offset: String(offset), limit: String(limit), sortBy: "recent", actionNames }; } else { payload = { offset: String(offset), limit: String(limit), sortBy: "recent" }; } return SecurityClient.fetchCall( `/api/v1/workspace/${workspaceId}/logs?${new URLSearchParams(payload)}`, { method: "GET", headers: { "Content-Type": "application/json" } } ).then(async (res) => { if (res && res.status === 200) { return (await res.json()).logs; } console.log("Failed to get project logs"); return undefined; }); }; export default getProjectLogs;