'$refresh']; /** * The number of users being displayed. */ #[Computed] public function followUsersCount(): int { return $this->followUsers->count(); } /** * Called when the component is initialized. */ public function mount(): void { $this->setTitle(); $this->setEmptyMessage(); $this->setDialogTitle(); } /** * Set the title of the card based on the relationship. */ private function setTitle(): void { $this->title = match ($this->relationship) { 'followers' => __('Followers'), 'following' => __('Following'), default => __('Users'), }; } /** * Set the empty message based on the relationship. */ private function setEmptyMessage(): void { $this->emptyMessage = match ($this->relationship) { 'followers' => __('No followers yet.'), 'following' => __('Not yet following anyone.'), default => __('No users found.'), }; } /** * Set the dialog title based on the relationship. */ private function setDialogTitle(): void { $this->dialogTitle = match ($this->relationship) { 'followers' => 'User :name has these followers:', 'following' => 'User :name is following:', default => 'Users:', }; } /** * Render the component. */ public function render(): View { $this->populateFollowUsers(); return view('livewire.user.follow-card'); } /** * Called when the user follows or unfollows a user. */ #[On('auth-follow-change')] public function populateFollowUsers(): void { // Update the collection of profile user's followers (or following). $this->followUsers = $this->profileUser->{$this->relationship}()->get(); $this->dispatch('refreshComponent'); } /** * Toggle showing the follow dialog. */ public function toggleFollowDialog(): void { $this->showFollowDialog = ! $this->showFollowDialog; } }