mirror of
https://gitlab.com/openstapps/openstapps.git
synced 2026-01-22 01:22:54 +00:00
refactor: replace TSLint with ESLint
This commit is contained in:
committed by
Jovan Krunić
parent
67fb4a43c9
commit
d696215d08
@@ -22,31 +22,27 @@ import {DataModule} from '../data/data.module';
|
||||
import {SettingsProvider} from '../settings/settings.provider';
|
||||
import {NewsItemComponent} from './page/news-item.component';
|
||||
import {NewsPageComponent} from './page/news-page.component';
|
||||
import {SkeletonNewsItem} from './page/skeleton-news-item.component';
|
||||
import {SkeletonNewsItemComponent} from './page/skeleton-news-item.component';
|
||||
|
||||
const newsRoutes: Routes = [
|
||||
{path: 'news', component: NewsPageComponent},
|
||||
];
|
||||
const newsRoutes: Routes = [{path: 'news', component: NewsPageComponent}];
|
||||
|
||||
/**
|
||||
* News Module
|
||||
*/
|
||||
@NgModule({
|
||||
declarations: [
|
||||
NewsPageComponent,
|
||||
SkeletonNewsItem,
|
||||
NewsItemComponent,
|
||||
NewsPageComponent,
|
||||
SkeletonNewsItemComponent,
|
||||
],
|
||||
imports: [
|
||||
IonicModule.forRoot(),
|
||||
TranslateModule.forChild(),
|
||||
RouterModule.forChild(newsRoutes),
|
||||
CommonModule,
|
||||
MomentModule,
|
||||
DataModule,
|
||||
IonicModule.forRoot(),
|
||||
MomentModule,
|
||||
RouterModule.forChild(newsRoutes),
|
||||
TranslateModule.forChild(),
|
||||
],
|
||||
providers: [
|
||||
SettingsProvider,
|
||||
],
|
||||
providers: [SettingsProvider],
|
||||
})
|
||||
export class NewsModule {}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
import {Injectable} from '@angular/core';
|
||||
import {SCMessage} from '@openstapps/core';
|
||||
import {DataProvider} from '../data/data.provider';
|
||||
|
||||
/**
|
||||
* Service for providing news messages
|
||||
*/
|
||||
@@ -22,12 +23,12 @@ 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
|
||||
*/
|
||||
@@ -47,8 +48,15 @@ export class NewsProvider {
|
||||
|
||||
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);
|
||||
if (
|
||||
typeof a.datePublished !== 'undefined' &&
|
||||
typeof b.datePublished !== 'undefined'
|
||||
) {
|
||||
return a.datePublished > b.datePublished
|
||||
? -1
|
||||
: a.datePublished < b.datePublished
|
||||
? 1
|
||||
: 0;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -27,5 +27,4 @@ export class NewsItemComponent {
|
||||
* News (message) to show
|
||||
*/
|
||||
@Input() item: SCMessage;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,25 +1,41 @@
|
||||
<ion-card>
|
||||
<span *ngIf="item.url; else imageNoUrl">
|
||||
<a href="{{item.url}}">
|
||||
<ion-thumbnail><ion-img src="{{item.image}}" (ionError)="$event.target.nextSibling.style.display='block'" alt=""></ion-img>
|
||||
<ion-icon name="newspaper-outline"></ion-icon>
|
||||
</ion-thumbnail>
|
||||
</a>
|
||||
</span>
|
||||
<span *ngIf="item.url; else imageNoUrl">
|
||||
<a href="{{ item.url }}">
|
||||
<ion-thumbnail
|
||||
><ion-img
|
||||
src="{{ item.image }}"
|
||||
(ionError)="$event.target.nextSibling.style.display = 'block'"
|
||||
alt=""
|
||||
></ion-img>
|
||||
<ion-icon name="newspaper-outline"></ion-icon>
|
||||
</ion-thumbnail>
|
||||
</a>
|
||||
</span>
|
||||
<ng-template #imageNoUrl>
|
||||
<ion-thumbnail>
|
||||
<ion-img src="{{item.image}}" (ionError)="$event.target.nextSibling.style.display='block'" alt=""></ion-img>
|
||||
<ion-img
|
||||
src="{{ item.image }}"
|
||||
(ionError)="$event.target.nextSibling.style.display = 'block'"
|
||||
alt=""
|
||||
></ion-img>
|
||||
<ion-icon name="newspaper-outline"></ion-icon>
|
||||
</ion-thumbnail>
|
||||
</ng-template>
|
||||
<ion-card-header>
|
||||
<ion-card-subtitle *ngIf="item.datePublished">{{item.datePublished | amDateFormat:'LLL'}}</ion-card-subtitle>
|
||||
<ion-card-subtitle *ngIf="item.datePublished">{{
|
||||
item.datePublished | amDateFormat: 'LLL'
|
||||
}}</ion-card-subtitle>
|
||||
<ion-card-title>
|
||||
<span *ngIf="item.url; else titleNoUrl"><a href="{{item.url}}"><span class="text">{{item.name}}</span><span class="icon"><ion-icon name="open-outline"></ion-icon></span></a></span>
|
||||
<ng-template #titleNoUrl>{{item.name}}</ng-template>
|
||||
<span *ngIf="item.url; else titleNoUrl"
|
||||
><a href="{{ item.url }}"
|
||||
><span class="text">{{ item.name }}</span
|
||||
><span class="icon"
|
||||
><ion-icon name="open-outline"></ion-icon></span></a
|
||||
></span>
|
||||
<ng-template #titleNoUrl>{{ item.name }}</ng-template>
|
||||
</ion-card-title>
|
||||
</ion-card-header>
|
||||
<ion-card-content>
|
||||
{{item.messageBody}}
|
||||
{{ item.messageBody }}
|
||||
</ion-card-content>
|
||||
</ion-card>
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
import {Component} from '@angular/core';
|
||||
import {Component, OnInit} from '@angular/core';
|
||||
import {IonRefresher} from '@ionic/angular';
|
||||
import {SCMessage} from '@openstapps/core';
|
||||
import {NewsProvider} from '../news.provider';
|
||||
@@ -23,20 +23,19 @@ import {NewsProvider} from '../news.provider';
|
||||
selector: 'stapps-news-page',
|
||||
templateUrl: 'news-page.html',
|
||||
})
|
||||
export class NewsPageComponent {
|
||||
export class NewsPageComponent implements OnInit {
|
||||
/**
|
||||
* 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 */
|
||||
/* eslint-disable no-magic-numbers */
|
||||
this.news = await this.newsProvider.getList(30, true);
|
||||
}
|
||||
|
||||
@@ -55,7 +54,7 @@ export class NewsPageComponent {
|
||||
async refresh(refresher: IonRefresher) {
|
||||
try {
|
||||
await this.fetchNews();
|
||||
} catch (e) {
|
||||
} catch {
|
||||
this.news = [];
|
||||
} finally {
|
||||
await refresher.complete();
|
||||
|
||||
@@ -5,14 +5,17 @@
|
||||
<ion-menu-button></ion-menu-button>
|
||||
</ion-buttons>
|
||||
<!--TODO: read this from the config (menu item title)-->
|
||||
<ion-title>{{'news.title' | translate}}</ion-title>
|
||||
<ion-title>{{ 'news.title' | translate }}</ion-title>
|
||||
</ion-toolbar>
|
||||
</ion-header>
|
||||
|
||||
<ion-content fullscreen>
|
||||
<ion-refresher slot="fixed" (ionRefresh)="refresh($event.target)">
|
||||
<ion-refresher-content pullingIcon="chevron-down-outline" pullingText="{{'data.REFRESH_ACTION' | translate}}"
|
||||
refreshingText="{{'data.REFRESHING' | translate}}">
|
||||
<ion-refresher-content
|
||||
pullingIcon="chevron-down-outline"
|
||||
pullingText="{{ 'data.REFRESH_ACTION' | translate }}"
|
||||
refreshingText="{{ 'data.REFRESHING' | translate }}"
|
||||
>
|
||||
</ion-refresher-content>
|
||||
</ion-refresher>
|
||||
<ion-grid>
|
||||
|
||||
@@ -21,5 +21,4 @@ import {Component} from '@angular/core';
|
||||
selector: 'stapps-skeleton-news-item',
|
||||
templateUrl: 'skeleton-news-item.html',
|
||||
})
|
||||
export class SkeletonNewsItem {
|
||||
}
|
||||
export class SkeletonNewsItemComponent {}
|
||||
|
||||
@@ -1,12 +1,18 @@
|
||||
<ion-card>
|
||||
<ion-card-header>
|
||||
<ion-card-subtitle><ion-skeleton-text animated style="width: 20%"></ion-skeleton-text></ion-card-subtitle>
|
||||
<ion-card-title><ion-skeleton-text animated style="width: 95%"></ion-skeleton-text></ion-card-title>
|
||||
<ion-card-title><ion-skeleton-text animated style="width: 65%"></ion-skeleton-text></ion-card-title>
|
||||
<ion-card-subtitle
|
||||
><ion-skeleton-text animated style="width: 20%"></ion-skeleton-text
|
||||
></ion-card-subtitle>
|
||||
<ion-card-title
|
||||
><ion-skeleton-text animated style="width: 95%"></ion-skeleton-text
|
||||
></ion-card-title>
|
||||
<ion-card-title
|
||||
><ion-skeleton-text animated style="width: 65%"></ion-skeleton-text
|
||||
></ion-card-title>
|
||||
</ion-card-header>
|
||||
<ion-card-content>
|
||||
<p><ion-skeleton-text animated style="width: 95%;"></ion-skeleton-text></p>
|
||||
<p><ion-skeleton-text animated style="width: 95%;"></ion-skeleton-text></p>
|
||||
<p><ion-skeleton-text animated style="width: 55%;"></ion-skeleton-text></p>
|
||||
<p><ion-skeleton-text animated style="width: 95%"></ion-skeleton-text></p>
|
||||
<p><ion-skeleton-text animated style="width: 95%"></ion-skeleton-text></p>
|
||||
<p><ion-skeleton-text animated style="width: 55%"></ion-skeleton-text></p>
|
||||
</ion-card-content>
|
||||
</ion-card>
|
||||
|
||||
Reference in New Issue
Block a user