From 975f8e25e46ef9542d2291f5faefdfd2005b7442 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jovan=20Kruni=C4=87?= Date: Tue, 6 Jul 2021 17:16:55 +0200 Subject: [PATCH] refactor: sort news by datePublished on backend --- src/app/modules/news/news.provider.ts | 36 ++++++------------- .../modules/news/page/news-page.component.ts | 13 +++---- 2 files changed, 18 insertions(+), 31 deletions(-) diff --git a/src/app/modules/news/news.provider.ts b/src/app/modules/news/news.provider.ts index 5f3fa0d1..809ed19b 100644 --- a/src/app/modules/news/news.provider.ts +++ b/src/app/modules/news/news.provider.ts @@ -15,7 +15,6 @@ import {Injectable} from '@angular/core'; import {SCMessage} from '@openstapps/core'; import {DataProvider} from '../data/data.provider'; - /** * Service for providing news messages */ @@ -23,16 +22,15 @@ import {DataProvider} from '../data/data.provider'; providedIn: 'root', }) export class NewsProvider { - constructor(private dataProvider: DataProvider) {} + constructor(private dataProvider: DataProvider) { + } /** * Get news messages - * TODO: make dates sortable on the backend side and then adjust this method * * @param size How many messages/news to fetch - * @param sort If sort by date needs to be performed */ - async getList(size: number, sort?: boolean): Promise { + async getList(size: number): Promise { const result = await this.dataProvider.search({ filter: { type: 'value', @@ -41,28 +39,16 @@ export class NewsProvider { value: 'message', }, }, + sort: [{ + type: 'generic', + arguments: { + field: 'datePublished', + }, + order: 'desc', + }], size: size, }); - const news = result.data as SCMessage[]; - - if (sort) { - news.sort((a, b) => { - if ( - typeof a.datePublished !== 'undefined' && - typeof b.datePublished !== 'undefined' - ) { - return a.datePublished > b.datePublished - ? -1 - : a.datePublished < b.datePublished - ? 1 - : 0; - } - - return 0; - }); - } - - return news; + return result.data as SCMessage[]; } } diff --git a/src/app/modules/news/page/news-page.component.ts b/src/app/modules/news/page/news-page.component.ts index cad46950..4225ad24 100644 --- a/src/app/modules/news/page/news-page.component.ts +++ b/src/app/modules/news/page/news-page.component.ts @@ -12,7 +12,7 @@ * You should have received a copy of the GNU General Public License along with * this program. If not, see . */ -import {Component, OnInit} from '@angular/core'; +import {Component} from '@angular/core'; import {IonRefresher} from '@ionic/angular'; import {SCMessage} from '@openstapps/core'; import {NewsProvider} from '../news.provider'; @@ -23,20 +23,21 @@ import {NewsProvider} from '../news.provider'; selector: 'stapps-news-page', templateUrl: 'news-page.html', }) -export class NewsPageComponent implements OnInit { +export class NewsPageComponent { /** * News (messages) to show */ news: SCMessage[] = []; - constructor(private newsProvider: NewsProvider) {} + constructor(private newsProvider: NewsProvider) { + } /** * Fetch news from the backend */ async fetchNews() { - /* eslint-disable no-magic-numbers */ - this.news = await this.newsProvider.getList(30, true); + /* tslint:disable:no-magic-numbers */ + this.news = await this.newsProvider.getList(30); } /** @@ -54,7 +55,7 @@ export class NewsPageComponent implements OnInit { async refresh(refresher: IonRefresher) { try { await this.fetchNews(); - } catch { + } catch (e) { this.news = []; } finally { await refresher.complete();