@@ -14,9 +14,10 @@ export const TITLE = 'Feed';
14
14
export class FeedComponent implements OnInit {
15
15
@Input ( ) public containers : IEventContainer [ ] ;
16
16
@Input ( ) public nobig = false ;
17
- public events : IEvent [ ] ;
17
+ public events : IEvent [ ] = [ ] ;
18
18
public selectedEvent : IEvent ;
19
19
public error : number ;
20
+ public eventFilter : 'all' | 'mine' | 'verify' = 'all' ;
20
21
21
22
constructor (
22
23
public dataService : DataService ,
@@ -33,18 +34,34 @@ export class FeedComponent implements OnInit {
33
34
/* Set title */
34
35
this . dataService . setTitle ( TITLE ) ;
35
36
36
- /* Get all events */
37
- this . dataService . GetAllEvents ( ) . subscribe ( result => {
37
+ this . loadEvents ( ) ;
38
+ }
39
+
40
+ loadEvents ( ) {
41
+ this . error = null ;
42
+ let obs ;
43
+ if ( this . eventFilter === 'mine' ) {
44
+ obs = this . dataService . GetMyEvents ( ) ;
45
+ } else if ( this . eventFilter === 'verify' ) {
46
+ obs = this . dataService . GetEventsToVerify ( ) ;
47
+ } else {
48
+ obs = this . dataService . GetAllEventsVerified ( ) ;
49
+ }
50
+
51
+ obs . subscribe ( result => {
38
52
this . events = result . data ;
39
- if ( this . events . length === 0 ) {
40
- this . error = 204 ;
41
- }
42
- this . containers = this . MakeContainers ( result . data ) ;
53
+ if ( this . events . length === 0 ) this . error = 204 ;
54
+ this . containers = this . MakeContainers ( this . events ) ;
43
55
} , ( e ) => {
44
56
this . error = e . status ;
45
57
} ) ;
46
58
}
47
59
60
+ onFilterChange ( filter : 'all' | 'mine' | 'verify' ) {
61
+ this . eventFilter = filter ;
62
+ this . loadEvents ( ) ;
63
+ }
64
+
48
65
/** Opens the event-details component */
49
66
OpenEvent ( event : IEvent ) {
50
67
if ( this . dataService . isMobile ( ) ) {
@@ -58,8 +75,8 @@ export class FeedComponent implements OnInit {
58
75
MakeContainers ( events : IEvent [ ] ) : IEventContainer [ ] {
59
76
/* Initialize */
60
77
for ( const event of events ) {
61
- /* Set fallback images explictly */
62
- if ( ! event . image_url || event . image_url === '' ) {
78
+ // Safe fallback image
79
+ if ( ( ! event . image_url || event . image_url === '' ) && event . bodies && event . bodies . length > 0 ) {
63
80
event . image_url = event . bodies [ 0 ] . image_url ;
64
81
}
65
82
}
@@ -77,7 +94,7 @@ export class FeedComponent implements OnInit {
77
94
/** Static first tab */
78
95
result . push ( {
79
96
title : 'Upcoming' ,
80
- events : events . splice ( 0 , 3 )
97
+ events : events . slice ( 0 , 3 )
81
98
} ) ;
82
99
83
100
/** Check if not enough events */
@@ -95,7 +112,7 @@ export class FeedComponent implements OnInit {
95
112
}
96
113
prev . events . push ( event ) ;
97
114
}
98
- if ( prev . events !== [ ] ) {
115
+ if ( prev . events . length > 0 ) {
99
116
result . push ( prev ) ;
100
117
}
101
118
return result ;
0 commit comments