diff --git a/src/screens/GroupScreen.tsx b/src/screens/GroupScreen.tsx index e97539c..32d48de 100644 --- a/src/screens/GroupScreen.tsx +++ b/src/screens/GroupScreen.tsx @@ -190,7 +190,8 @@ export default function GroupScreen() { try { const credentials = await Keychain.getGenericPassword(); if (!credentials) { - Alert.alert("Error", "You are not logged in"); + ToastAndroid.show('You are not logged in', ToastAndroid.SHORT); + return; } const token = credentials.password; @@ -233,7 +234,7 @@ export default function GroupScreen() { const handleViewGroup = (group: Group) => { // navigation.navigate('GroupDetails', { group }); - Alert.alert("View Group", `Viewing details for ${group.groupName}`); + ToastAndroid.show(`Viewing details for ${group.groupName}`, ToastAndroid.SHORT); }; const onRefresh = () => { diff --git a/src/screens/InviteScreen.tsx b/src/screens/InviteScreen.tsx index 5373457..58b9a4d 100644 --- a/src/screens/InviteScreen.tsx +++ b/src/screens/InviteScreen.tsx @@ -8,6 +8,7 @@ import { TouchableOpacity, Alert, ActivityIndicator, + ToastAndroid, } from 'react-native'; import { RootStackParamList } from '../navigation/AppNavigator'; // Adjust path import { apiCall } from '../utils/ApiHelper'; // Adjust path @@ -78,9 +79,10 @@ const InviteScreen: FC = ({ route }) => { // Replace with your actual API call to join the group // For now, it just shows an alert. await apiCall(`http://192.168.1.5:9060/api/fund/groups/join/invite/${code}`, 'POST'); - Alert.alert('Success!', `You have requested to join "${groupDetails.groupName}".`); + ToastAndroid.show(`You have requested to join "${groupDetails.groupName}".`, ToastAndroid.SHORT); + fetchGroupDetails(); // Refresh details after joining } catch (e: any) { - Alert.alert('Join Error', e.message || 'An unexpected error occurred.'); + ToastAndroid.show(e.message || 'An unexpected error occurred.', ToastAndroid.SHORT); } finally { setJoining(false); } diff --git a/src/screens/OrgnizerRagister.tsx b/src/screens/OrgnizerRagister.tsx index ef8fcc5..b20b083 100644 --- a/src/screens/OrgnizerRagister.tsx +++ b/src/screens/OrgnizerRagister.tsx @@ -9,6 +9,7 @@ import { KeyboardAvoidingView, Platform, ScrollView, + ToastAndroid, } from "react-native"; import axios from "axios"; import { ORGRAGISTRATION } from "../utils/ApiUrls"; @@ -30,7 +31,7 @@ export default function OrganizerRegisterScreen() { const [loading, setLoading] = useState(false); const handleSubmit = async () => { if (!bankAccountNumber || !bankName || !branchCode) { - Alert.alert("Error", "All fields are required."); + ToastAndroid.show('All fields are required.', ToastAndroid.SHORT); return; } @@ -42,7 +43,7 @@ const handleSubmit = async () => { const token = creds ? creds.password : null; if (!token) { - Alert.alert("Error", "No token found. Please log in again."); + ToastAndroid.show('No token found. Please log in again.', ToastAndroid.SHORT); setLoading(false); return; } @@ -65,10 +66,13 @@ const handleSubmit = async () => { ); console.log("✅ Organizer Registered:", res.data); - Alert.alert("Success", "Organizer registered successfully!"); + ToastAndroid.show('Organizer registered successfully!', ToastAndroid.SHORT); + // Optionally, reset form fields + setBankAccountNumber(""); + setBankName(""); + setBranchCode(""); } catch (err: any) { console.error("❌ Register Error:", err?.response?.data || err.message); - // Alert.alert("Error", "Failed to register. Please try again."); } finally { setLoading(false); } diff --git a/src/screens/home/GroupList.tsx b/src/screens/home/GroupList.tsx index ece029d..b38c208 100644 --- a/src/screens/home/GroupList.tsx +++ b/src/screens/home/GroupList.tsx @@ -77,7 +77,7 @@ const GroupList = () => { const fetchGroups = async () => { const credentials = await keychain.getGenericPassword(); if (!credentials) { - Alert.alert("Error", "You are not logged in"); + ToastAndroid.show('You are not logged in', ToastAndroid.SHORT); return; } const token = credentials.password; diff --git a/src/screens/home/Home.tsx b/src/screens/home/Home.tsx index 71e74ec..51dd386 100644 --- a/src/screens/home/Home.tsx +++ b/src/screens/home/Home.tsx @@ -10,6 +10,7 @@ import { Alert, FlatList, ListRenderItem, + ToastAndroid, } from "react-native"; import AppView from "../../components/AppView"; import colors from "../../components/colors"; @@ -97,7 +98,7 @@ const Home: React.FC = () => { } else if (item.action === "NAVIGATE_CREATE_GROUP") { navigation.navigate("GroupCreation" as never); } else { - Alert.alert("Unknown action", item.title); + ToastAndroid.show(`Unknown action: ${item.title}`, ToastAndroid.SHORT); } }; diff --git a/src/screens/home/RequestList.tsx b/src/screens/home/RequestList.tsx index ca29730..1e4f04b 100644 --- a/src/screens/home/RequestList.tsx +++ b/src/screens/home/RequestList.tsx @@ -8,7 +8,8 @@ import { RefreshControl, Alert, ActivityIndicator, - TextInput + TextInput, + ToastAndroid } from 'react-native'; import { Ionicons } from '@react-native-vector-icons/ionicons'; import colors from '../../components/colors'; @@ -50,7 +51,7 @@ const RequestList: React.FC = () => { const credentials = await keychain.getGenericPassword(); if (!credentials) { - Alert.alert("Error", "You are not logged in"); + ToastAndroid.show('You are not logged in', ToastAndroid.SHORT); return; } const token = credentials.password; @@ -146,14 +147,13 @@ const RequestList: React.FC = () => { // Remove the accepted request from the list const updatedRequests = requests.filter(req => req.requestId !== requestId); setRequests(updatedRequests); - Alert.alert("Success", data.message || "Request accepted successfully"); + ToastAndroid.show(data.message || "Request accepted successfully", ToastAndroid.SHORT); fetchRequests(); } else { throw new Error(data.message || "Failed to accept request"); } } catch (error) { const errorMessage = error instanceof Error ? error.message : "An unknown error occurred"; - // Alert.alert("Error", `Failed to accept request: ${errorMessage}`); console.error("Accept Error:", error); } finally { setProcessingRequest(null); @@ -192,14 +192,15 @@ const RequestList: React.FC = () => { // Remove the declined request from the list const updatedRequests = requests.filter(req => req.requestId !== selectedRequestId); setRequests(updatedRequests); - Alert.alert("Success", data.message || "Request declined successfully"); + ToastAndroid.show(data.message || "Request declined successfully", ToastAndroid.SHORT); + fetchRequests(); } else { throw new Error(data.message || "Failed to decline request"); } } catch (error) { const errorMessage = error instanceof Error ? error.message : "An unknown error occurred"; - // Alert.alert("Error", `Failed to decline request: ${errorMessage}`); + console.error("Decline Error:", error); } finally { setProcessingRequest(null); diff --git a/src/screens/home/UserProfileStatus.tsx b/src/screens/home/UserProfileStatus.tsx index 92d80ce..1d0f908 100644 --- a/src/screens/home/UserProfileStatus.tsx +++ b/src/screens/home/UserProfileStatus.tsx @@ -39,7 +39,7 @@ const UserProfileStatus: React.FC = () => { try { const credentials = await Keychain.getGenericPassword(); if (!credentials) { - Alert.alert("Error", "You are not logged in"); + ToastAndroid.show('You are not logged in', ToastAndroid.SHORT); return; } const token = credentials.password; diff --git a/src/screens/home/user-home/UserHome.tsx b/src/screens/home/user-home/UserHome.tsx index 869de65..beded4a 100644 --- a/src/screens/home/user-home/UserHome.tsx +++ b/src/screens/home/user-home/UserHome.tsx @@ -1,249 +1,267 @@ -import React, { useEffect, useState } from "react"; -import { - StyleSheet, - Text, - View, - FlatList, - TouchableOpacity, - Alert, - RefreshControl, - ScrollView, - Button, -} from "react-native"; -import { useNavigation } from "@react-navigation/native"; -import type { NativeStackNavigationProp } from "@react-navigation/native-stack"; -import type { RootStackParamList } from "../../../navigation/AppNavigator"; -import colors from "../../../components/colors"; -import { Ionicons } from "@react-native-vector-icons/ionicons"; -import { GET_JOINED_GROUP_URL } from "../../../utils/ApiUrls"; -import * as Keychain from "react-native-keychain"; -import AnimatedCard from "../../../components/common/AnimatedCard"; +// import React, { useEffect, useState } from "react"; +// import { +// StyleSheet, +// Text, +// View, +// FlatList, +// TouchableOpacity, +// Alert, +// RefreshControl, +// ScrollView, +// Button, +// ToastAndroid, +// } from "react-native"; +// import { useNavigation } from "@react-navigation/native"; +// import type { NativeStackNavigationProp } from "@react-navigation/native-stack"; +// import type { RootStackParamList } from "../../../navigation/AppNavigator"; +// import colors from "../../../components/colors"; +// import { Ionicons } from "@react-native-vector-icons/ionicons"; +// import { GET_JOINED_GROUP_URL } from "../../../utils/ApiUrls"; +// import * as Keychain from "react-native-keychain"; +// import AnimatedCard from "../../../components/common/AnimatedCard"; -type NavigationProp = NativeStackNavigationProp< - RootStackParamList, - "GroupDetails" ->; +// type NavigationProp = NativeStackNavigationProp< +// RootStackParamList, +// "GroupDetails" +// >; -type Group = { - id: string; - groupName: string; - description: string; - currentParticipants: number; - maxParticipants: number; - contributionAmount: number; - status: string; -}; +// type Group = { +// id: string; +// groupName: string; +// description: string; +// currentParticipants: number; +// maxParticipants: number; +// contributionAmount: number; +// status: string; +// }; + +// const UserHome = () => { +// const navigation = useNavigation(); +// const [groups, setGroups] = useState([]); +// const [loading, setLoading] = useState(false) +// const [refreshing, setRefreshing] = useState(false) + + +// const activeGroups = groups.filter((g) => g.status === "ACTIVE"); + +// const totalGroups = activeGroups.length; + +// const totalContribution = activeGroups.reduce( +// (sum, g) => sum + g.contributionAmount, +// 0 +// ); + +// const onRefresh = async () => { +// setRefreshing(true) +// await handleGroup() +// setRefreshing(false) +// } + +// const handleGroup = async () => { +// try { +// setLoading(true) +// const credentials = await Keychain.getGenericPassword(); +// if (!credentials) { +// ToastAndroid.show('You are not logged in', ToastAndroid.SHORT); +// return; +// } +// const token = credentials.password; + +// const response = await fetch(GET_JOINED_GROUP_URL, { +// method: "GET", +// headers: { +// Accept: "*/*", +// Authorization: `Bearer ${token}`, +// }, +// }); + +// const result = await response.json(); +// if (result.status === "success") { +// console.log("GET_JOINED_GROUP_URL res : ", result); +// setGroups(result.data); // save API data +// setLoading(false) +// } else { +// ToastAndroid.show("Failed to fetch groups", ToastAndroid.SHORT); +// setLoading(false) +// } +// } catch (error) { +// console.error("❌ Error fetching groups:", error); +// } finally { +// setLoading(false) +// } +// }; + +// useEffect(() => { +// handleGroup(); +// }, []); + +// const renderItem = ({ item }: { item: Group }) => { +// return ( +// navigation.navigate("GroupDetails", { item })} +// > +// {item.groupName} +// {item.description} +// +// +// +// {item.currentParticipants}/{item.maxParticipants} members +// +// + +// +// Contribution: ₹{item.contributionAmount} +// +// Status: {item.status} +// +// ); +// }; + +// return ( +// +// {/* Stats */} + +// {/*