1
- import me , { myEvents } from "@/actions/users/me" ;
1
+ import me , { myEvents , myPreviousEvents } from "@/actions/users/me" ;
2
2
import { ThemeToggle } from "@/components/themeToggle" ;
3
3
import { Button } from "@/components/ui/button" ;
4
4
import EventCard from "@/components/ui/eventCard" ;
@@ -8,10 +8,16 @@ import { useAuth } from "@/context/auth";
8
8
import { deleteToken } from "@/lib/storage" ;
9
9
import { useQuery , UseQueryResult } from "@tanstack/react-query" ;
10
10
import { useRouter } from "expo-router" ;
11
- import { Image , View } from "react-native" ;
11
+ import { Image , ScrollView , View } from "react-native" ;
12
12
import Toast from "react-native-toast-message" ;
13
13
import { Event , Group } from "@/actions/types" ;
14
14
import Icon from "@/lib/icons/Icon" ;
15
+ import AnimatedPagerView from "@/components/ui/AnimatedPagerView" ;
16
+
17
+ //TODO: Foreløpig er react-native-pager-view broken... Det er ikke mulig å swipe mellom tabs
18
+ // med mindre vi ofrer å vise noe innhold større en rundt 90vh. Forhåpenligvis fikses dette,
19
+ // men i mellomtiden får vi ofre litt ux...
20
+ // Vi kan også bare... lage en helt egen pager view med reanimated.
15
21
16
22
export default function Profil ( ) {
17
23
const { setAuthState } = useAuth ( ) ;
@@ -27,6 +33,11 @@ export default function Profil() {
27
33
queryFn : myEvents ,
28
34
} ) ;
29
35
36
+ const previousEvents = useQuery ( {
37
+ queryKey : [ "users" , "me" , "previous-events" ] ,
38
+ queryFn : myPreviousEvents ,
39
+ } )
40
+
30
41
const getStudyYearAsClass = ( studyYear : Group , study : Group ) : string => {
31
42
const studyyear = Number ( studyYear . name ) ;
32
43
const currentYear = new Date ( ) . getFullYear ( ) ;
@@ -107,17 +118,8 @@ export default function Profil() {
107
118
</ Button >
108
119
109
120
< ThemeToggle className = "flex-1 min-h-full" />
110
-
111
- < Button
112
- className = "flex-1 min-h-full"
113
- variant = "default"
114
- >
115
- < Text >
116
- < Icon icon = "Settings" >
117
-
118
- </ Icon >
119
- </ Text >
120
- </ Button >
121
+ </ View >
122
+ < View className = "flex flex-row gap-4 w-full h-16" >
121
123
< Button
122
124
className = "flex-1 min-h-full"
123
125
variant = "destructive"
@@ -128,15 +130,28 @@ export default function Profil() {
128
130
</ Text >
129
131
</ Button >
130
132
</ View >
131
- < Text className = "text-2xl mt-4 font-semibold" > Dine arrangementer</ Text >
132
- < DisplayUserEvents userEvents = { userEvents } />
133
+ < View className = "my-2 border-t border-muted-foreground mx-8" />
134
+ { ! userEvents . isPending && ! previousEvents . isPending &&
135
+ < AnimatedPagerView titles = { [ "Dine arrangementer" , "Tidligere arrangementer" ] } >
136
+ < View key = { 0 } className = "max-h-[45vh]" >
137
+ < ScrollView bounces = { false } nestedScrollEnabled >
138
+ < DisplayUserEvents userEvents = { userEvents } />
139
+ </ ScrollView >
140
+ </ View >
141
+ < View key = { 1 } className = "max-h-[45vh]" >
142
+ < ScrollView bounces = { false } nestedScrollEnabled >
143
+ < DisplayUserEvents userEvents = { previousEvents } previous />
144
+ </ ScrollView >
145
+ </ View >
146
+ </ AnimatedPagerView >
147
+ }
133
148
</ View >
134
149
</ PageWrapper >
135
150
) ;
136
151
}
137
152
138
153
139
- function DisplayUserEvents ( { userEvents } : { userEvents : UseQueryResult < { results : Event [ ] } , Error > } ) {
154
+ function DisplayUserEvents ( { userEvents, previous } : { userEvents : UseQueryResult < { results : Event [ ] } , Error > , previous ?: boolean } ) {
140
155
const router = useRouter ( ) ;
141
156
142
157
if ( userEvents . isPending ) {
@@ -148,7 +163,7 @@ function DisplayUserEvents({ userEvents }: { userEvents: UseQueryResult<{ result
148
163
}
149
164
150
165
if ( userEvents . data . results . length === 0 ) {
151
- return < Text > Du er ikke påmeldt noen arrangementer.</ Text >
166
+ return < Text className = "text-center h-fit" > { previous ? " Du har ikke deltatt på noen arrangementer" : "Du er ikke påmeldt noen arrangementer." } </ Text >
152
167
}
153
168
154
169
return userEvents . data . results . map ( ( event ) => (
0 commit comments