diff --git a/src/app/home/recent-playlists/playlist-item/playlist-item.component.html b/src/app/home/recent-playlists/playlist-item/playlist-item.component.html index dffad27c7..fd5795d87 100644 --- a/src/app/home/recent-playlists/playlist-item/playlist-item.component.html +++ b/src/app/home/recent-playlists/playlist-item/playlist-item.component.html @@ -1,7 +1,4 @@ - - drag_indicator + (); @Output() removeClicked = new EventEmitter(); - portalStatus: 'active' | 'inactive' | 'expired' | 'unavailable' = - 'unavailable'; - private readonly dataService = inject(DataService); + portalStatus: PortalStatus = 'unavailable'; + private readonly portalStatusService = inject(PortalStatusService); // eslint-disable-next-line @typescript-eslint/no-misused-promises async ngOnInit() { @@ -56,28 +56,12 @@ export class PlaylistItemComponent implements OnInit { private async checkPortalStatus() { try { - const response = await this.dataService.fetchData( - `${this.item.serverUrl}/player_api.php`, - { - username: this.item.username, - password: this.item.password, - action: 'get_account_info', - } - ); - - if (!response?.user_info?.status) { - this.portalStatus = 'unavailable'; - return; - } - - if (response.user_info.status === 'Active') { - const expDate = new Date( - parseInt(response.user_info.exp_date) * 1000 + this.portalStatus = + await this.portalStatusService.checkPortalStatus( + this.item.serverUrl, + this.item.username, + this.item.password ); - this.portalStatus = expDate < new Date() ? 'expired' : 'active'; - } else { - this.portalStatus = 'inactive'; - } } catch (error) { console.error('Error checking portal status:', error); this.portalStatus = 'unavailable'; @@ -85,6 +69,10 @@ export class PlaylistItemComponent implements OnInit { } getStatusClass(): string { - return `status-${this.portalStatus}`; + return this.portalStatusService.getStatusClass(this.portalStatus); + } + + getStatusIcon(): string { + return this.portalStatusService.getStatusIcon(this.portalStatus); } } diff --git a/src/app/home/recent-playlists/recent-playlists.component.html b/src/app/home/recent-playlists/recent-playlists.component.html index f493ae25c..f615a3561 100644 --- a/src/app/home/recent-playlists/recent-playlists.component.html +++ b/src/app/home/recent-playlists/recent-playlists.component.html @@ -12,15 +12,13 @@ /> @defer { - search
diff --git a/src/app/home/recent-playlists/recent-playlists.component.scss b/src/app/home/recent-playlists/recent-playlists.component.scss index ec2fe1367..4249be841 100644 --- a/src/app/home/recent-playlists/recent-playlists.component.scss +++ b/src/app/home/recent-playlists/recent-playlists.component.scss @@ -35,32 +35,8 @@ .search-field > .mat-mdc-text-field-wrapper { border-radius: 30px; } - - .cdk-drag-preview .mat-list-item-content { - display: flex; - flex-direction: row; - align-items: center; - box-sizing: border-box; - padding: 0 16px; - position: relative; - height: inherit; - width: 100%; - justify-content: space-between; - - .mat-list-text { - display: flex; - flex-direction: column; - flex: auto; - box-sizing: border-box; - overflow: hidden; - padding-left: 16px; - } - } } -.favorites-icon { - padding-left: 36px; -} #skeleton-container { padding-top: 10px; @@ -81,9 +57,10 @@ } } -@media (max-width: 599px) { +@media only screen and (max-width: 480px) { .favorites-icon { padding-left: 0 !important; + display: none } .search-field { diff --git a/src/app/home/recent-playlists/recent-playlists.component.ts b/src/app/home/recent-playlists/recent-playlists.component.ts index 59fb558d2..57fc4f180 100644 --- a/src/app/home/recent-playlists/recent-playlists.component.ts +++ b/src/app/home/recent-playlists/recent-playlists.component.ts @@ -1,8 +1,4 @@ -import { - CdkDragDrop, - DragDropModule, - moveItemInArray, -} from '@angular/cdk/drag-drop'; +import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop'; import { AsyncPipe, NgFor, NgIf } from '@angular/common'; import { Component, @@ -57,7 +53,6 @@ import { PlaylistItemComponent } from './playlist-item/playlist-item.component'; styleUrls: ['./recent-playlists.component.scss'], imports: [ AsyncPipe, - DragDropModule, MatButtonModule, MatDividerModule, MatIconModule,