diff --git a/src/app/modules/news/news.provider.ts b/src/app/modules/news/news.provider.ts index 809ed19b..19e09bd1 100644 --- a/src/app/modules/news/news.provider.ts +++ b/src/app/modules/news/news.provider.ts @@ -29,8 +29,9 @@ export class NewsProvider { * Get news messages * * @param size How many messages/news to fetch + * @param from From which (results) page to start */ - async getList(size: number): Promise { + async getList(size: number, from: number): Promise { const result = await this.dataProvider.search({ filter: { type: 'value', @@ -47,6 +48,7 @@ export class NewsProvider { order: 'desc', }], size: size, + from: from, }); 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 4225ad24..59e2609f 100644 --- a/src/app/modules/news/page/news-page.component.ts +++ b/src/app/modules/news/page/news-page.component.ts @@ -24,20 +24,38 @@ import {NewsProvider} from '../news.provider'; templateUrl: 'news-page.html', }) export class NewsPageComponent { + /** + * Thing counter to start query the next page from + */ + from = 0; + /** + * Page size of queries + */ + pageSize = 10; /** * News (messages) to show */ news: SCMessage[] = []; - constructor(private newsProvider: NewsProvider) { - } + constructor(private newsProvider: NewsProvider) {} /** * Fetch news from the backend */ async fetchNews() { - /* tslint:disable:no-magic-numbers */ - this.news = await this.newsProvider.getList(30); + this.news = await this.newsProvider.getList(this.pageSize, this.from); + } + + /** + * Loads more news + * + * @param event Signal from the infinite scroll to load more data + */ + // tslint:disable-next-line:no-any + async loadMore(event: any): Promise { + this.from += this.pageSize; + this.news = this.news.concat(await this.newsProvider.getList(this.pageSize, this.from)); + event.target.complete(); } /** @@ -54,6 +72,7 @@ export class NewsPageComponent { */ async refresh(refresher: IonRefresher) { try { + this.from = 0; await this.fetchNews(); } catch (e) { this.news = []; diff --git a/src/app/modules/news/page/news-page.html b/src/app/modules/news/page/news-page.html index e92a79e0..86eaadf8 100644 --- a/src/app/modules/news/page/news-page.html +++ b/src/app/modules/news/page/news-page.html @@ -4,18 +4,15 @@ - - {{ 'news.title' | translate }} + {{'news.title' | translate}} - + @@ -30,4 +27,8 @@ + + + +