@@ -15,11 +15,14 @@ import { Fonts } from '@/constants/Fonts';
1515import { Colors } from '@/constants/Colors' ;
1616import { useRouter } from 'expo-router' ;
1717import { useAuth } from '@/context/AuthContext' ;
18+ import { useProfile } from '@/hooks/useProfile' ;
1819import { itemService } from '@/services/itemService' ;
20+ import { volunteerService } from '@/services/volunteerService' ;
1921import { LoadingScreen } from '@/components/LoadingScreen' ;
2022import SearchInputWithFilter from '@/components/SearchInputWithFilter' ;
2123import ItemFilterDrawer from '@/components/drawers/ItemFilterDrawer' ;
2224import { ShopItem } from '@/types/api/item' ;
25+ import { Volunteer } from '@/types/api/volunteer' ;
2326
2427export interface ItemFilters {
2528 priceRange : { min : number ; max : number } ;
@@ -32,13 +35,17 @@ export default function StoreScreen() {
3235 const [ loading , setLoading ] = useState ( false ) ;
3336 const [ refreshing , setRefreshing ] = useState ( false ) ;
3437 const [ drawerOpen , setDrawerOpen ] = useState ( false ) ;
38+ const profile = useProfile ( ) ;
3539 const [ filters , setFilters ] = useState < ItemFilters > ( {
3640 priceRange : { min : 0 , max : 10000 } ,
3741 category : '' ,
3842 } ) ;
43+ const [ currentVolunteer , setCurrentVolunteer ] = useState < Volunteer | null > (
44+ null
45+ ) ;
3946
4047 const router = useRouter ( ) ;
41- const { volunteer , token } = useAuth ( ) ;
48+ const { user , token } = useAuth ( ) ;
4249
4350 const loadItems = useCallback ( async ( ) => {
4451 try {
@@ -71,8 +78,22 @@ export default function StoreScreen() {
7178 } , [ token ] ) ;
7279
7380 useEffect ( ( ) => {
74- loadItems ( ) ;
75- } , [ loadItems ] ) ;
81+ // Fetch current volunteer if user is available (same approach as profile page)
82+ const fetchVolunteer = async ( ) => {
83+ let volunteerData : Volunteer | null = null ;
84+ if ( user ?. entityId ) {
85+ try {
86+ volunteerData = await volunteerService . getSelf ( ) ;
87+ setCurrentVolunteer ( volunteerData ) ;
88+ } catch ( err ) {
89+ console . error ( 'Error fetching current volunteer:' , err ) ;
90+ }
91+ }
92+
93+ await loadItems ( ) ;
94+ } ;
95+ fetchVolunteer ( ) ;
96+ } , [ loadItems , profile . volunteer ?. experience ] ) ;
7697
7798 const filteredItems = useMemo ( ( ) => {
7899 return items . filter ( item => {
@@ -113,6 +134,12 @@ export default function StoreScreen() {
113134 }
114135 } , [ loadItems ] ) ;
115136
137+ // useFocusEffect(
138+ // useCallback(() => {
139+ // refreshProfile(); // pulls latest XP, coins, level
140+ // }, [])
141+ // );
142+
116143 if ( loading ) {
117144 return < LoadingScreen text = "Loading items..." /> ;
118145 }
@@ -156,7 +183,7 @@ export default function StoreScreen() {
156183 fontFamily : Fonts . medium_500 ,
157184 } }
158185 >
159- Level { volunteer ?. currentLevel ?? 0 }
186+ Level { currentVolunteer ?. currentLevel ?? 0 }
160187 </ ThemedText >
161188
162189 < ThemedText
@@ -167,7 +194,7 @@ export default function StoreScreen() {
167194 fontFamily : Fonts . medium_500 ,
168195 } }
169196 >
170- { volunteer ?. coins ?? 0 } coins
197+ { currentVolunteer ?. coins ?? 0 } coins
171198 </ ThemedText >
172199
173200 < TouchableOpacity
0 commit comments