mirror of
https://github.com/Tzahi12345/YoutubeDL-Material.git
synced 2026-06-05 11:59:37 +00:00
89 lines
2.5 KiB
TypeScript
89 lines
2.5 KiB
TypeScript
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';
|
|
|
|
@Component({
|
|
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!');
|
|
}
|
|
}
|