32 lines
1000 B
TypeScript
32 lines
1000 B
TypeScript
import {
|
|
Component,
|
|
computed,
|
|
inject,
|
|
input
|
|
} from '@angular/core';
|
|
import { CommonModule } from '@angular/common';
|
|
import { NgIcon, provideIcons } from '@ng-icons/core';
|
|
import { lucideUserCheck, lucideUserPlus } from '@ng-icons/lucide';
|
|
import { FriendService } from '../../application/services/friend.service';
|
|
import type { User } from '../../../../shared-kernel';
|
|
|
|
@Component({
|
|
selector: 'app-friend-button',
|
|
standalone: true,
|
|
imports: [CommonModule, NgIcon],
|
|
viewProviders: [provideIcons({ lucideUserCheck, lucideUserPlus })],
|
|
templateUrl: './friend-button.component.html'
|
|
})
|
|
export class FriendButtonComponent {
|
|
private readonly friends = inject(FriendService);
|
|
|
|
readonly user = input.required<User>();
|
|
readonly userId = computed(() => this.user().oderId || this.user().id);
|
|
readonly isFriend = computed(() => this.friends.isFriend(this.userId()));
|
|
|
|
toggle(event: Event): void {
|
|
event.stopPropagation();
|
|
void this.friends.toggleFriend(this.userId());
|
|
}
|
|
}
|