autowp/autowp-frontend

View on GitHub
src/app/api/comments/comments.service.ts

Summary

Maintainability
A
0 mins
Test Coverage
import {inject, Injectable} from '@angular/core';
import {GetMessagesRequest, ModeratorAttention} from '@grpc/spec.pb';
import {CommentsClient} from '@grpc/spec.pbsc';
import {AuthService, Role} from '@services/auth.service';
import {Observable, of} from 'rxjs';
import {map, shareReplay, switchMap} from 'rxjs/operators';
 
@Injectable({
providedIn: 'root',
})
export class APICommentsService {
readonly #auth = inject(AuthService);
readonly #commentsClient = inject(CommentsClient);
 
public readonly attentionCommentsCount$: Observable<null | number> = this.#auth.hasRole$(Role.MODER).pipe(
switchMap((isModer) => {
if (!isModer) {
return of(null);
}
 
return this.#commentsClient
.getMessages(
new GetMessagesRequest({
limit: 0,
moderatorAttention: ModeratorAttention.REQUIRED,
}),
)
.pipe(map((response) => (response.paginator ? response.paginator.totalItemCount : null)));
}),
shareReplay({bufferSize: 1, refCount: false}),
);
}