From 7b8000101a7b86502a2804a4e234c43903300f19 Mon Sep 17 00:00:00 2001 From: karishmas6 Date: Wed, 16 Oct 2024 20:47:14 +0530 Subject: [PATCH] wip: gsheet integration ui --- .../molecules/IntegrationSettings.tsx | 66 +++++++++++++++---- 1 file changed, 54 insertions(+), 12 deletions(-) diff --git a/src/components/molecules/IntegrationSettings.tsx b/src/components/molecules/IntegrationSettings.tsx index ed6bea50..485c762c 100644 --- a/src/components/molecules/IntegrationSettings.tsx +++ b/src/components/molecules/IntegrationSettings.tsx @@ -1,7 +1,8 @@ -import React, { useState } from 'react'; +import React, { useState, useEffect } from 'react'; import { GenericModal } from "../atoms/GenericModal"; -import { MenuItem, TextField, Typography } from "@mui/material"; +import { MenuItem, TextField, Typography, CircularProgress } from "@mui/material"; import Button from "@mui/material/Button"; +import axios from 'axios'; import { modalStyle } from "./AddWhereCondModal"; interface IntegrationProps { @@ -18,18 +19,40 @@ export interface IntegrationSettings { } export const IntegrationSettingsModal = ({ isOpen, handleStart, handleClose }: IntegrationProps) => { - const [settings, setSettings] = useState({ credentials: '', spreadsheetId: '', range: '', data: '', }); + const [spreadsheets, setSpreadsheets] = useState<{ id: string, name: string }[]>([]); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(null); + + useEffect(() => { + if (isOpen) { + // Fetch Google Sheets from backend when modal is opened + setLoading(true); + axios.get('http://localhost:8080/auth/google/callback') + .then(response => { + setSpreadsheets(response.data.files); + setLoading(false); + }) + .catch(error => { + setError(`Error fetching spreadsheets: ${error}`); + setLoading(false); + }); + } + }, [isOpen]); const handleChange = (field: keyof IntegrationSettings) => (e: React.ChangeEvent) => { setSettings({ ...settings, [field]: e.target.value }); }; + const handleSpreadsheetSelect = (e: React.ChangeEvent) => { + setSettings({ ...settings, spreadsheetId: e.target.value }); + }; + return ( - + {loading ? ( + + ) : error ? ( + {error} + ) : ( + + {spreadsheets.map(sheet => ( + + {sheet.name} + + ))} + + )} -