@@ -14,9 +14,10 @@ export const TITLE = 'Feed';
1414export class FeedComponent implements OnInit {
1515 @Input ( ) public containers : IEventContainer [ ] ;
1616 @Input ( ) public nobig = false ;
17- public events : IEvent [ ] ;
17+ public events : IEvent [ ] = [ ] ;
1818 public selectedEvent : IEvent ;
1919 public error : number ;
20+ public eventFilter : 'all' | 'mine' | 'verify' = 'all' ;
2021
2122 constructor (
2223 public dataService : DataService ,
@@ -33,18 +34,34 @@ export class FeedComponent implements OnInit {
3334 /* Set title */
3435 this . dataService . setTitle ( TITLE ) ;
3536
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 => {
3852 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 ) ;
4355 } , ( e ) => {
4456 this . error = e . status ;
4557 } ) ;
4658 }
4759
60+ onFilterChange ( filter : 'all' | 'mine' | 'verify' ) {
61+ this . eventFilter = filter ;
62+ this . loadEvents ( ) ;
63+ }
64+
4865 /** Opens the event-details component */
4966 OpenEvent ( event : IEvent ) {
5067 if ( this . dataService . isMobile ( ) ) {
@@ -58,8 +75,8 @@ export class FeedComponent implements OnInit {
5875 MakeContainers ( events : IEvent [ ] ) : IEventContainer [ ] {
5976 /* Initialize */
6077 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 ) {
6380 event . image_url = event . bodies [ 0 ] . image_url ;
6481 }
6582 }
@@ -77,7 +94,7 @@ export class FeedComponent implements OnInit {
7794 /** Static first tab */
7895 result . push ( {
7996 title : 'Upcoming' ,
80- events : events . splice ( 0 , 3 )
97+ events : events . slice ( 0 , 3 )
8198 } ) ;
8299
83100 /** Check if not enough events */
@@ -95,7 +112,7 @@ export class FeedComponent implements OnInit {
95112 }
96113 prev . events . push ( event ) ;
97114 }
98- if ( prev . events !== [ ] ) {
115+ if ( prev . events . length > 0 ) {
99116 result . push ( prev ) ;
100117 }
101118 return result ;
0 commit comments