MCPcopy
hub / github.com/OpenPipe/OpenPipe / ExportLogsModal

Function ExportLogsModal

app/src/components/requestLogs/ExportButton.tsx:53–170  ·  view source on GitHub ↗
({ disclosure }: { disclosure: UseDisclosureReturn })

Source from the content-addressed store, hash-verified

51export default ExportButton;
52
53const ExportLogsModal = ({ disclosure }: { disclosure: UseDisclosureReturn }) => {
54 const selectedProjectId = useSelectedProject().data?.id;
55 const filters = useFilters().filters;
56 const defaultToSelected = useAppStore((s) => s.selectedLogs.defaultToSelected);
57 const selectedLogIds = useAppStore((s) => s.selectedLogs.selectedLogIds);
58 const deselectedLogIds = useAppStore((s) => s.selectedLogs.deselectedLogIds);
59 const resetLogSelection = useAppStore((s) => s.selectedLogs.resetLogSelection);
60 const totalNumLogsSelected = useTotalNumLogsSelected();
61
62 const [removeDuplicates, setRemoveDuplicates] = useState(true);
63 const [excludeErrors, setExcludeErrors] = useState(true);
64
65 useEffect(() => {
66 if (disclosure.isOpen) {
67 setRemoveDuplicates(true);
68 setExcludeErrors(true);
69 }
70 }, [disclosure.isOpen]);
71
72 const exportLogsMutation = api.loggedCalls.export.useMutation();
73
74 const [exportLogs, exportInProgress] = useHandledAsyncCallback(async () => {
75 if (!selectedProjectId) return;
76 const response = await exportLogsMutation.mutateAsync({
77 projectId: selectedProjectId,
78 filters,
79 defaultToSelected,
80 selectedLogIds: Array.from(selectedLogIds),
81 deselectedLogIds: Array.from(deselectedLogIds),
82 removeDuplicates,
83 excludeErrors,
84 });
85
86 const dataUrl = `data:application/pdf;base64,${response}`;
87 const blob = await fetch(dataUrl).then((res) => res.blob());
88 const url = URL.createObjectURL(blob);
89 const a = document.createElement("a");
90
91 a.href = url;
92 a.download = `exported.jsonl`;
93 document.body.appendChild(a);
94 a.click();
95 document.body.removeChild(a);
96
97 disclosure.onClose();
98 resetLogSelection();
99 }, [
100 exportLogsMutation,
101 selectedProjectId,
102 filters,
103 defaultToSelected,
104 selectedLogIds,
105 deselectedLogIds,
106 resetLogSelection,
107 removeDuplicates,
108 excludeErrors,
109 ]);
110

Callers

nothing calls this directly

Calls 6

useSelectedProjectFunction · 0.90
useFiltersFunction · 0.90
useTotalNumLogsSelectedFunction · 0.90
useHandledAsyncCallbackFunction · 0.90
resetLogSelectionFunction · 0.85
thenMethod · 0.45

Tested by

no test coverage detected