Spaces:
Build error
Build error
| import { Component } from '@angular/core'; | |
| import { Router, UrlSerializer } from '@angular/router'; | |
| import { Sort } from 'api-types'; | |
| import { PostsService } from 'app/posts.services'; | |
| import { Clipboard } from '@angular/cdk/clipboard'; | |
| ({ | |
| selector: 'app-generate-rss-url', | |
| templateUrl: './generate-rss-url.component.html', | |
| styleUrls: ['./generate-rss-url.component.scss'] | |
| }) | |
| export class GenerateRssUrlComponent { | |
| usersList = null; | |
| userFilter = ''; | |
| titleFilter = ''; | |
| subscriptionFilter = ''; | |
| fileTypeFilter = 'both'; | |
| itemLimit = null; | |
| favoriteFilter = false; | |
| url = ''; | |
| baseURL = `${this.postsService.config.Host.url}:${this.postsService.config.Host.port}/api/rss` | |
| sortProperty = 'registered' | |
| descendingMode = true | |
| constructor(public postsService: PostsService, private router: Router, private serializer: UrlSerializer, private clipboard: Clipboard) { | |
| if (postsService.isLoggedIn) { | |
| this.usersList = [this.postsService.user]; | |
| this.userFilter = postsService.user.uid; | |
| this.getUsers(); | |
| } | |
| this.url = this.baseURL; | |
| this.rebuildURL(); | |
| } | |
| getUsers() { | |
| this.postsService.getUsers().subscribe(res => { | |
| this.usersList = res['users']; | |
| console.log(this.usersList) | |
| }); | |
| } | |
| sortOptionChanged(sort: Sort) { | |
| this.descendingMode = sort['order'] === -1; | |
| this.sortProperty = sort['by']; | |
| this.rebuildURL(); | |
| } | |
| rebuildURL() { | |
| // code can be cleaned up | |
| const params = {}; | |
| if (this.userFilter) { | |
| params['uuid'] = encodeURIComponent(this.userFilter); | |
| } | |
| if (this.titleFilter) { | |
| params['text_search'] = encodeURIComponent(this.titleFilter); | |
| } | |
| if (this.subscriptionFilter) { | |
| params['sub_id'] = encodeURIComponent(this.subscriptionFilter); | |
| } | |
| if (this.itemLimit) { | |
| params['range'] = [0, this.itemLimit]; | |
| } | |
| if (this.favoriteFilter) { | |
| params['favorite_filter'] = this.favoriteFilter; | |
| } | |
| if (this.fileTypeFilter !== 'both') { | |
| params['file_type_filter'] = this.fileTypeFilter; | |
| } | |
| if (this.sortProperty !== 'registered' || !this.descendingMode) { | |
| params['sort'] = encodeURIComponent(JSON.stringify({by: this.sortProperty, order: this.descendingMode ? -1 : 1})); | |
| } | |
| const tree = this.router.createUrlTree(['..'], { queryParams: params }); | |
| this.url = `${this.baseURL}${this.serializer.serialize(tree)}`; | |
| } | |
| copyURL() { | |
| this.clipboard.copy(this.url); | |
| this.postsService.openSnackBar('URL copied!'); | |
| } | |
| } | |