From f7b9cb919046eccf79ce8c393c8d06330a4ab64c Mon Sep 17 00:00:00 2001 From: Jaanu423 Date: Thu, 18 Sep 2025 16:40:04 +0530 Subject: [PATCH] currect edit profile button --- src/screens/SplashScreen.tsx | 2 +- src/screens/home/UserProfileStatus.tsx | 16 +-- src/screens/profile/BecomeOrg.tsx | 30 ++++- src/screens/profile/Profile.tsx | 152 ++++++++++++------------ src/screens/profile/SwitchNavigator.tsx | 9 +- 5 files changed, 124 insertions(+), 85 deletions(-) diff --git a/src/screens/SplashScreen.tsx b/src/screens/SplashScreen.tsx index e424cac..ff214e1 100644 --- a/src/screens/SplashScreen.tsx +++ b/src/screens/SplashScreen.tsx @@ -21,7 +21,7 @@ const SplashScreen = () => { try { const credentials = await Keychain.getGenericPassword(); if (!credentials) { - Alert.alert("Error", "You are not logged in"); + // Alert.alert("Error", "You are not logged in"); return; } const token = credentials.password; diff --git a/src/screens/home/UserProfileStatus.tsx b/src/screens/home/UserProfileStatus.tsx index 9349c05..f031f9b 100644 --- a/src/screens/home/UserProfileStatus.tsx +++ b/src/screens/home/UserProfileStatus.tsx @@ -11,6 +11,7 @@ import { import * as Keychain from "react-native-keychain"; import { useFocusEffect, useNavigation } from "@react-navigation/native"; import { BASE_URL } from "../../utils/ApiUrls"; +import colors from "../../components/colors"; export type ApiResponse = { message: string; @@ -136,13 +137,14 @@ const UserProfileStatus: React.FC = () => { { if (intervalId) { - clearInterval(intervalId); - setIntervalId(null); - } + onPress={() => { + if (intervalId) { + clearInterval(intervalId); + setIntervalId(null); + } - setShowModal(false); - }} + setShowModal(false); + }} > Close @@ -221,7 +223,7 @@ const styles = StyleSheet.create({ fontSize: 20, fontWeight: "700", marginBottom: 10, - color: "#FF9500", + color: colors.primary, }, modalText: { fontSize: 14, diff --git a/src/screens/profile/BecomeOrg.tsx b/src/screens/profile/BecomeOrg.tsx index cbe6225..1ac795c 100644 --- a/src/screens/profile/BecomeOrg.tsx +++ b/src/screens/profile/BecomeOrg.tsx @@ -9,12 +9,17 @@ import { KeyboardAvoidingView, Platform, SafeAreaView, + TouchableOpacity, } from "react-native"; import * as Keychain from "react-native-keychain"; import { CustomInput, CustomButton } from "../../components/common/Custom"; import colors from "../../components/colors"; +import { useNavigation } from "@react-navigation/native"; +import AppView from "../../components/AppView"; +import Ionicons from "@react-native-vector-icons/ionicons"; const BecomeOrg = () => { + const navigation = useNavigation(); const [bankAccountNumber, setBankAccountNumber] = useState(""); const [bankName, setBankName] = useState(""); const [branchCode, setBranchCode] = useState(""); @@ -58,6 +63,7 @@ const BecomeOrg = () => { setBankAccountNumber(""); setBankName(""); setBranchCode(""); + navigation.navigate("Home" as never); } else { Alert.alert("Error", result.message || "Failed to apply"); } @@ -70,7 +76,14 @@ const BecomeOrg = () => { }; return ( - + + + navigation.replace("Home" as never)} > + + + User Profile + + { )} - + ); }; @@ -140,4 +153,17 @@ const styles = StyleSheet.create({ textAlign: "center", color: colors.textDark, }, + header: { + flexDirection: "row", + justifyContent: "space-between", + alignItems: "center", + padding: 16, + borderBottomLeftRadius: 20, + borderBottomRightRadius: 20, + }, + headerTitle: { + fontSize: 22, + fontWeight: "700", + color: "#000" + }, }); diff --git a/src/screens/profile/Profile.tsx b/src/screens/profile/Profile.tsx index 36ef8f5..4b9147e 100644 --- a/src/screens/profile/Profile.tsx +++ b/src/screens/profile/Profile.tsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect, useCallback} from "react"; +import React, { useState, useEffect, useCallback } from "react"; import { StyleSheet, View, @@ -243,35 +243,35 @@ const Profile = () => { } }; - const logout = async (navigation: any) => { - try { - const credentials = await Keychain.getGenericPassword(); + const logout = async (navigation: any) => { + try { + const credentials = await Keychain.getGenericPassword(); - if (!credentials) { - Alert.alert("Info", "No user is currently logged in"); - return; + if (!credentials) { + Alert.alert("Info", "No user is currently logged in"); + return; + } + + // Clear stored credentials + await Keychain.resetGenericPassword(); + Alert.alert("Success", "You have been logged out"); + navigation.replace("Login"); + } catch (error) { + console.error("Logout error:", error); + Alert.alert("Error", "Failed to log out. Please try again."); } + }; - // Clear stored credentials - await Keychain.resetGenericPassword(); - Alert.alert("Success", "You have been logged out"); - navigation.replace("Login"); - } catch (error) { - console.error("Logout error:", error); - Alert.alert("Error", "Failed to log out. Please try again."); - } -}; - - const confirmLogout = (navigation: any) => { - Alert.alert( - "Logout", - "Are you sure you want to log out?", - [ - { text: "Cancel", style: "cancel" }, - { text: "Yes, Logout", style: "destructive", onPress: () => logout(navigation) }, - ] - ); -}; + const confirmLogout = (navigation: any) => { + Alert.alert( + "Logout", + "Are you sure you want to log out?", + [ + { text: "Cancel", style: "cancel" }, + { text: "Yes, Logout", style: "destructive", onPress: () => logout(navigation) }, + ] + ); + }; useFocusEffect( @@ -281,7 +281,7 @@ const Profile = () => { ); useEffect(() => { - userStatus(); + userStatus(); fetchUserProfile(); }, []); @@ -316,7 +316,7 @@ const Profile = () => { { {/* Profile Card */} {/* Profile Image Section */} - {/* { - statusData?.role && statusData?.organizerStatus ? - Your Role: {statusData.role} | Organizer Status: {statusData.organizerStatus} - : - } */} + { user?.role === "ORGANIZER" && user?.organizerStatus === "NOT_APPLIED" || "PENDING" ? ( + Your Role: {user.role} | Organizer Status: {user.organizerStatus} + ) : ( + + )} { <> {/* Profile Details */} - Personal Information - + + + Personal Information + Become Organizer + {/* - Become Organizer + + */} + + + setEditing(true)} + icon="create" + style={styles.editButton} + buttonBackground={colors.pastelBlue} + /> + - @@ -419,15 +432,11 @@ const Profile = () => { {user.role || "User"} - - setEditing(true)} - icon="create" - style={styles.editButton} - buttonBackground={colors.pastelBlue} - /> + + + + ) : ( <> @@ -482,22 +491,24 @@ const Profile = () => { onChangeText={(text) => setUser({ ...user, gender: text })} icon="male-female" /> - - - - setEditing(false)} - icon="close" - style={styles.cancelButton} - buttonBackground="#f38080ff" - /> + + + + setEditing(false)} + icon="close" + style={styles.cancelButton} + buttonBackground="" + /> + + )} @@ -530,15 +541,8 @@ const styles = StyleSheet.create({ justifyContent: "space-between", alignItems: "center", padding: 16, - // paddingTop: 50, - // backgroundColor: "#6366f1", borderBottomLeftRadius: 20, borderBottomRightRadius: 20, - // elevation: 4, - // shadowColor: "#000", - // shadowOffset: { width: 0, height: 2 }, - // shadowOpacity: 0.2, - // shadowRadius: 4, }, headerTitle: { fontSize: 22, @@ -598,13 +602,13 @@ const styles = StyleSheet.create({ borderRadius: 25, }, detailsSection: { - marginBottom: 24, + marginBottom: "40%", }, sectionTitle: { fontSize: 18, fontWeight: "700", color: "#1e293b", - marginBottom: 16, + // marginBottom: 16, paddingBottom: 8, borderBottomWidth: 1, borderBottomColor: "#f1f5f9", @@ -629,10 +633,10 @@ const styles = StyleSheet.create({ fontWeight: "500", }, editButton: { - marginTop: 8, + paddingHorizontal: 8, }, editSection: { - marginBottom: 20, + marginBottom: '40%', flex: 1, }, editButtons: { @@ -643,6 +647,8 @@ const styles = StyleSheet.create({ }, cancelButton: { marginTop: 4, + borderWidth: 1, + borderColor: "#cbd5e1", }, inputContainer: { marginBottom: 16, diff --git a/src/screens/profile/SwitchNavigator.tsx b/src/screens/profile/SwitchNavigator.tsx index 5a26a3a..bee3379 100644 --- a/src/screens/profile/SwitchNavigator.tsx +++ b/src/screens/profile/SwitchNavigator.tsx @@ -2,6 +2,7 @@ import React, { useState } from "react"; import { View, Text, StyleSheet, Switch } from "react-native"; import { useNavigation } from "@react-navigation/native"; import type { NativeStackNavigationProp } from "@react-navigation/native-stack"; +import colors from "../../components/colors"; type RootStackParamList = { BecomeOrg: undefined; @@ -24,6 +25,10 @@ const SwitchNavigator: React.FC = ({ role, status }) => { if (newValue) { navigation.navigate("BecomeOrg"); // Navigate when ON + setTimeout(() => { + setIsEnabled(false); + }, 2000); + // Reset switch to OFF after navigation } else { navigation.navigate("Profile"); // Navigate when OFF } @@ -40,8 +45,8 @@ const SwitchNavigator: React.FC = ({ role, status }) => { : `Request Organizer Role ${status}`}