diff --git a/api/qrCodeAPI.tsx b/api/qrCodeAPI.tsx
index 9a6d038..ad4bdee 100644
--- a/api/qrCodeAPI.tsx
+++ b/api/qrCodeAPI.tsx
@@ -16,9 +16,9 @@ const API_URL_SET_BOOKMARK = "/v1/user/setBookmark";
const API_URL_DELETE_BOOKMARK = "/v1/user/deleteBookmark";
-const API_URL_GET_SCANNED_GMAILS = "/v1/gmail/getEmails";
-const API_URL_GET_USER = "/v1/user/getUser"; // New endpoint
-
+const API_URL_GET_EMAILS = "/v1/gmail/getEmails";
+const API_URL_GET_SCANNED_EMAILS = "/v1/gmail/getScannedEmails";
+const API_URL_GET_USER = "/v1/user/getUser";
// Create an Axios instance
@@ -103,37 +103,6 @@ export const getQRCodeDetails = async (qrCodeId: string) => {
});
};
-// Function to get scanned Gmail emails
-export const getEmails = async (accessToken: string) => {
- console.log("getEmails function called");
-
- try {
- console.log("Making API request to get scanned emails with accessToken:", accessToken);
- const response = await apiRequest({
- method: 'get',
- url: `${API_BASE_URL}${API_URL_GET_SCANNED_GMAILS}`,
- headers: {
- 'accessToken': accessToken,
- },
- });
-
- console.log("API Response:", response);
- return response;
- } catch (error) {
- console.error("Error during getEmails API call:", error);
-
- if (error.response) {
- console.error("Response error data:", error.response.data);
- } else if (error.request) {
- console.error("Request error, no response received:", error.request);
- } else {
- console.error("Error message:", error.message);
- }
-
- throw error;
- }
-};
-
//-----------
// GET User's Scanned Histories
@@ -187,14 +156,67 @@ export const deleteAllScannedHistories = async () => {
});
};
-// GET Scan user's GMAILS
-export const getScannedGmails = async () => {
- return apiRequest({
- method: 'get',
- url: `${API_BASE_URL}${API_URL_GET_SCANNED_GMAILS}`
- });
+// GET already scanned emails from DB
+export const getScannedEmails = async () => {
+ console.log("getScannedEmails function called");
+
+ try {
+ console.log("Making API request to get already scanned emails from the database");
+ const response = await apiRequest({
+ method: 'get',
+ url: `${API_BASE_URL}${API_URL_GET_SCANNED_EMAILS}`
+ });
+
+ console.log("API Response:", response);
+ return response;
+ } catch (error) {
+ console.error("Error during getScannedEmails API call:", error);
+
+ if (error.response) {
+ console.error("Response error data:", error.response.data);
+ } else if (error.request) {
+ console.error("Request error, no response received:", error.request);
+ } else {
+ console.error("Error message:", error.message);
+ }
+
+ throw error;
+ }
};
+// Function to get start the scanning of inbox in server
+export const getEmails = async (accessToken: string, refreshToken: string) => {
+ console.log("getEmails function called");
+
+ try {
+ console.log("Making API request to get Gmail emails with accessToken and refreshToken");
+ const response = await apiRequest({
+ method: 'get',
+ url: `${API_BASE_URL}${API_URL_GET_EMAILS}`,
+ headers: {
+ accessToken,
+ refreshToken,
+ },
+ });
+
+ console.log("API Response:", response);
+ return response;
+ } catch (error) {
+ console.error("Error during getEmails API call:", error);
+
+ if (error.response) {
+ console.error("Response error data:", error.response.data);
+ } else if (error.request) {
+ console.error("Request error, no response received:", error.request);
+ } else {
+ console.error("Error message:", error.message);
+ }
+
+ throw error;
+ }
+};
+
+
// Get user information
export const getUserInfo = async () => {
return apiRequest({
diff --git a/screens/EmailScreen.tsx b/screens/EmailScreen.tsx
index f328627..727fb06 100644
--- a/screens/EmailScreen.tsx
+++ b/screens/EmailScreen.tsx
@@ -1,55 +1,83 @@
-
import React, { useState, useEffect } from 'react';
import { View, Text, TouchableOpacity, FlatList, StyleSheet, ActivityIndicator, Alert } from 'react-native';
-import { getEmails } from '../api/qrCodeAPI';
+import { getEmails, getScannedEmails } from '../api/qrCodeAPI';
const EmailScreen: React.FC = () => {
const [selectedMessage, setSelectedMessage] = useState(null);
const [emailData, setEmailData] = useState(null);
const [loading, setLoading] = useState(true);
+ const [rescanLoading, setRescanLoading] = useState(false);
const [error, setError] = useState(null);
-
+
useEffect(() => {
- const fetchEmails = async () => {
+ startPollingForScannedEmails();
+ }, []);
+
+ // Function to initiate the email fetching process
+ const initiateEmailFetch = async () => {
+ setRescanLoading(true);
+ try {
+ // Call to start email fetching process
+ const response = await getEmails(
+ 'Access Token here',
+ 'Refresh Token here'
+ );
+ setRescanLoading(false);
+ } catch (error) {
+ console.error('Error initiating email fetch:', error);
+ setError('Error rescanning inbox.');
+ setRescanLoading(false);
+ }
+ };
+
+ // Function to poll for scanned emails
+ const startPollingForScannedEmails = () => {
+ const pollingInterval = setInterval(async () => {
try {
- const emails = await getEmails('access Token here!!!'); // Replace with actual token retrieval
- setEmailData(emails);
+ const scannedEmails = await getScannedEmails();
+ if (scannedEmails) {
+ setEmailData(scannedEmails);
+ clearInterval(pollingInterval);
+ setLoading(false);
+ }
} catch (error) {
+ console.error('Error fetching scanned emails:', error);
setError('Error fetching emails.');
- } finally {
+ clearInterval(pollingInterval);
setLoading(false);
}
- };
-
- fetchEmails();
- }, []);
+ }, 3000); // Poll every 3 seconds
+ };
const handleSelectMessage = (message) => {
setSelectedMessage(selectedMessage === message ? null : message);
};
- if (loading) {
- return (
-
-
- Fetching emails...
-
- );
- }
-
- if (error) {
- return (
-
- {error}
-
- );
- }
-
return (
+ {loading && (
+
+
+ Fetching emails...
+
+ )}
+ {error && (
+
+ {error}
+
+ )}
{emailData && (
<>
- {emailData.emailAddress}
+
+
+ Rescan Inbox
+
+
+ {rescanLoading && (
+
+ Rescanning inbox...
+
+ )}
item.messageId}
@@ -59,34 +87,34 @@ const EmailScreen: React.FC = () => {
{item.date}
{selectedMessage === item && (
- {item.qrCodeByContentId && (
-
- QR Codes by Content ID:
- {item.qrCodeByContentId.map((qrCode, index) => (
-
- {qrCode.decodedContent.map((url, i) => (
- Alert.alert("Testing")}>
- {url}
-
+ {item.qrCodeByContentId && (
+
+ QR Codes by Content ID:
+ {item.qrCodeByContentId.map((qrCode, index) => (
+
+ {qrCode.decodedContent.map((url, i) => (
+ Alert.alert("Testing")}>
+ {url}
+
+ ))}
+
))}
- ))}
-
- )}
+ )}
{item.qrCodeByURL && (
-
- QR Codes by URL:
- {item.qrCodeByURL.map((qrCode, index) => (
-
- {qrCode.decodedContent.map((url, i) => (
- Alert.alert("Testing")}>
- {url}
-
- ))}
-
- ))}
-
-)}
+
+ QR Codes by URL:
+ {item.qrCodeByURL.map((qrCode, index) => (
+
+ {qrCode.decodedContent.map((url, i) => (
+ Alert.alert("Testing")}>
+ {url}
+
+ ))}
+
+ ))}
+
+ )}
)}
@@ -115,11 +143,24 @@ const styles = StyleSheet.create({
backgroundColor: '#f8f0fc',
padding: 10,
},
- loadingText: {
- fontSize: 18,
- color: '#ff69b4',
- marginBottom: 10,
- textAlign: 'center',
+ buttonContainer: {
+ justifyContent: 'center',
+ alignItems: 'center',
+ marginVertical: 20,
+ },
+ button: {
+ backgroundColor: '#ff69b4',
+ padding: 10,
+ borderRadius: 5,
+ },
+ buttonText: {
+ color: '#fff',
+ fontWeight: 'bold',
+ },
+ rescanIndicator: {
+ justifyContent: 'center',
+ alignItems: 'center',
+ marginVertical: 10,
},
emailListContainer: {
flex: 1,