Skip to content

Commit 2883471

Browse files
committed
feat: #309 - Separate public and admin api calls
1 parent c9f3a31 commit 2883471

File tree

6 files changed

+30
-26
lines changed

6 files changed

+30
-26
lines changed

frontend/src/api/apiClient.ts

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,19 @@ import { FormValues } from "../pages/Feedback/FeedbackForm";
33
import { Conversation } from "../components/Header/Chat";
44
const baseURL = import.meta.env.VITE_API_BASE_URL;
55

6-
export const api = axios.create({
6+
export const publicApi = axios.create({
7+
baseURL
8+
});
9+
10+
export const adminApi = axios.create({
711
baseURL,
812
headers: {
913
Authorization: `JWT ${localStorage.getItem("access")}`,
1014
},
1115
});
1216

1317
// Request interceptor to set the Authorization header
14-
api.interceptors.request.use(
18+
adminApi.interceptors.request.use(
1519
(configuration) => {
1620
const token = localStorage.getItem("access");
1721
if (token) {
@@ -29,7 +33,7 @@ const handleSubmitFeedback = async (
2933
message: FormValues["message"],
3034
) => {
3135
try {
32-
const response = await api.post(`/v1/api/feedback/`, {
36+
const response = await publicApi.post(`/v1/api/feedback/`, {
3337
feedbacktype: feedbackType,
3438
name,
3539
email,
@@ -45,7 +49,7 @@ const handleSubmitFeedback = async (
4549
const handleSendDrugSummary = async (message: FormValues["message"], guid: string) => {
4650
try {
4751
const endpoint = guid ? `/v1/api/embeddings/ask_embeddings?guid=${guid}` : '/v1/api/embeddings/ask_embeddings';
48-
const response = await api.post(endpoint, {
52+
const response = await adminApi.post(endpoint, {
4953
message,
5054
});
5155
console.log("Response data:", JSON.stringify(response.data, null, 2));
@@ -58,7 +62,7 @@ const handleSendDrugSummary = async (message: FormValues["message"], guid: strin
5862

5963
const handleRuleExtraction = async (guid: string) => {
6064
try {
61-
const response = await api.get(`/v1/api/rule_extraction_openai?guid=${guid}`);
65+
const response = await adminApi.get(`/v1/api/rule_extraction_openai?guid=${guid}`);
6266
// console.log("Rule extraction response:", JSON.stringify(response.data, null, 2));
6367
return response.data;
6468
} catch (error) {
@@ -69,7 +73,7 @@ const handleRuleExtraction = async (guid: string) => {
6973

7074
const fetchRiskDataWithSources = async (medication: string, source: "include" | "diagnosis" = "include") => {
7175
try {
72-
const response = await api.post(`/v1/api/riskWithSources`, {
76+
const response = await adminApi.post(`/v1/api/riskWithSources`, {
7377
drug: medication,
7478
source: source,
7579
});
@@ -192,7 +196,7 @@ const handleSendDrugSummaryStreamLegacy = async (
192196

193197
const fetchConversations = async (): Promise<Conversation[]> => {
194198
try {
195-
const response = await api.get(`/chatgpt/conversations/`);
199+
const response = await publicApi.get(`/chatgpt/conversations/`);
196200
return response.data;
197201
} catch (error) {
198202
console.error("Error(s) during getConversations: ", error);
@@ -202,7 +206,7 @@ const fetchConversations = async (): Promise<Conversation[]> => {
202206

203207
const fetchConversation = async (id: string): Promise<Conversation> => {
204208
try {
205-
const response = await api.get(`/chatgpt/conversations/${id}/`);
209+
const response = await publicApi.get(`/chatgpt/conversations/${id}/`);
206210
return response.data;
207211
} catch (error) {
208212
console.error("Error(s) during getConversation: ", error);
@@ -212,7 +216,7 @@ const fetchConversation = async (id: string): Promise<Conversation> => {
212216

213217
const newConversation = async (): Promise<Conversation> => {
214218
try {
215-
const response = await api.post(`/chatgpt/conversations/`, {
219+
const response = await publicApi.post(`/chatgpt/conversations/`, {
216220
messages: [],
217221
});
218222
return response.data;
@@ -228,7 +232,7 @@ const continueConversation = async (
228232
page_context?: string,
229233
): Promise<{ response: string; title: Conversation["title"] }> => {
230234
try {
231-
const response = await api.post(
235+
const response = await publicApi.post(
232236
`/chatgpt/conversations/${id}/continue_conversation/`,
233237
{
234238
message,
@@ -244,7 +248,7 @@ const continueConversation = async (
244248

245249
const deleteConversation = async (id: string) => {
246250
try {
247-
const response = await api.delete(`/chatgpt/conversations/${id}/`);
251+
const response = await publicApi.delete(`/chatgpt/conversations/${id}/`);
248252
return response.data;
249253
} catch (error) {
250254
console.error("Error(s) during deleteConversation: ", error);
@@ -257,7 +261,7 @@ const updateConversationTitle = async (
257261
newTitle: Conversation["title"],
258262
): Promise<{status: string, title: Conversation["title"]} | {error: string}> => {
259263
try {
260-
const response = await api.patch(`/chatgpt/conversations/${id}/update_title/`, {
264+
const response = await publicApi.patch(`/chatgpt/conversations/${id}/update_title/`, {
261265
title: newTitle,
262266
});
263267
return response.data;

frontend/src/pages/Files/ListOfFiles.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React, { useState, useEffect } from "react";
2-
import { api } from "../../api/apiClient";
2+
import { adminApi } from "../../api/apiClient";
33
import Layout from "../Layout/Layout";
44
import FileRow from "./FileRow";
55
import Table from "../../components/Table/Table";
@@ -37,7 +37,7 @@ const ListOfFiles: React.FC<{ showTable?: boolean }> = ({
3737
try {
3838
const url = `${baseUrl}/v1/api/uploadFile`;
3939

40-
const { data } = await api.get(url);
40+
const { data } = await adminApi.get(url);
4141

4242
if (Array.isArray(data)) {
4343
setFiles(data);
@@ -63,7 +63,7 @@ const ListOfFiles: React.FC<{ showTable?: boolean }> = ({
6363
const handleDownload = async (guid: string, fileName: string) => {
6464
try {
6565
setDownloading(guid);
66-
const { data } = await api.get(`/v1/api/uploadFile/${guid}`, { responseType: 'blob' });
66+
const { data } = await adminApi.get(`/v1/api/uploadFile/${guid}`, { responseType: 'blob' });
6767

6868
const url = window.URL.createObjectURL(new Blob([data]));
6969
const link = document.createElement("a");
@@ -84,7 +84,7 @@ const ListOfFiles: React.FC<{ showTable?: boolean }> = ({
8484
const handleOpen = async (guid: string) => {
8585
try {
8686
setOpening(guid);
87-
const { data } = await api.get(`/v1/api/uploadFile/${guid}`, { responseType: 'arraybuffer' });
87+
const { data } = await adminApi.get(`/v1/api/uploadFile/${guid}`, { responseType: 'arraybuffer' });
8888

8989
const file = new Blob([data], { type: 'application/pdf' });
9090
const fileURL = window.URL.createObjectURL(file);

frontend/src/pages/ListMeds/useMedications.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { useEffect, useState } from "react";
2-
import { api } from "../../api/apiClient";
2+
import { publicApi } from "../../api/apiClient";
33

44
export interface MedData {
55
name: string;
@@ -18,7 +18,7 @@ export function useMedications() {
1818
try {
1919
const url = `${baseUrl}/v1/api/get_full_list_med`;
2020

21-
const { data } = await api.get(url);
21+
const { data } = await publicApi.get(url);
2222

2323
data.sort((a: MedData, b: MedData) => {
2424
const nameA = a.name.toUpperCase();

frontend/src/pages/ManageMeds/ManageMeds.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { useState, useEffect } from "react";
22
import Layout from "../Layout/Layout";
33
import Welcome from "../../components/Welcome/Welcome";
44
import ErrorMessage from "../../components/ErrorMessage";
5-
import { api } from "../../api/apiClient";
5+
import { adminApi } from "../../api/apiClient";
66
function ManageMedications() {
77
interface MedData {
88
id: string;
@@ -23,7 +23,7 @@ function ManageMedications() {
2323
const fetchMedications = async () => {
2424
try {
2525
const url = `${baseUrl}/v1/api/get_full_list_med`;
26-
const { data } = await api.get(url);
26+
const { data } = await adminApi.get(url);
2727
data.sort((a: MedData, b: MedData) => a.name.localeCompare(b.name));
2828
setMedications(data);
2929
} catch (e: unknown) {
@@ -36,7 +36,7 @@ function ManageMedications() {
3636
// Handle Delete Medication
3737
const handleDelete = async (name: string) => {
3838
try {
39-
await api.delete(`${baseUrl}/v1/api/delete_med`, { data: { name } });
39+
await adminApi.delete(`${baseUrl}/v1/api/delete_med`, { data: { name } });
4040
setMedications((prev) => prev.filter((med) => med.name !== name));
4141
setConfirmDelete(null);
4242
} catch (e: unknown) {
@@ -56,7 +56,7 @@ function ManageMedications() {
5656
return;
5757
}
5858
try {
59-
await api.post(`${baseUrl}/v1/api/add_medication`, {
59+
await adminApi.post(`${baseUrl}/v1/api/add_medication`, {
6060
name: newMedName,
6161
benefits: newMedBenefits,
6262
risks: newMedRisks,

frontend/src/pages/PatientManager/NewPatientForm.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { PatientInfo, Diagnosis } from "./PatientTypes";
44
import { useMedications } from "../ListMeds/useMedications";
55
import ChipsInput from "../../components/ChipsInput/ChipsInput";
66
import Tooltip from "../../components/Tooltip";
7-
import { api } from "../../api/apiClient";
7+
import { publicApi } from "../../api/apiClient";
88
import { useGlobalContext } from "../../contexts/GlobalContext.tsx";
99
// import ErrorMessage from "../../components/ErrorMessage";
1010

@@ -155,7 +155,7 @@ const NewPatientForm = ({
155155
const baseUrl = import.meta.env.VITE_API_BASE_URL;
156156
const url = `${baseUrl}/v1/api/get_med_recommend`;
157157

158-
const { data } = await api.post(url, payload);
158+
const { data } = await publicApi.post(url, payload);
159159

160160
const categorizedMedications = {
161161
first: data.first ?? [],

frontend/src/pages/RulesManager/RulesManager.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React, { useState, useEffect } from "react";
22
import Layout from "../Layout/Layout";
33
import Welcome from "../../components/Welcome/Welcome";
44
import ErrorMessage from "../../components/ErrorMessage";
5-
import { api } from "../../api/apiClient";
5+
import { adminApi } from "../../api/apiClient";
66
import { ChevronDown, ChevronUp } from "lucide-react";
77

88
interface Medication {
@@ -69,7 +69,7 @@ function RulesManager() {
6969
const fetchMedRules = async () => {
7070
try {
7171
const url = `${baseUrl}/v1/api/medRules`;
72-
const { data } = await api.get<MedRulesResponse>(url);
72+
const { data } = await adminApi.get<MedRulesResponse>(url);
7373

7474
if (!data || !Array.isArray(data.results)) {
7575
throw new Error("Invalid response format");

0 commit comments

Comments
 (0)