<?php

namespace App\Observers;

use App\Helpers\Uuid;
use App\Models\User;
use Illuminate\Support\Facades\File;

class UserObserver
{
    public function creating(User $user): void
    {
        $user->public_id ??= Uuid::generate();
    }

    public function updating(User $user): void
    {
        if (!$user->isDirty('avatar')) {
            return;
        }

        $oldAvatar = $user->getRawOriginal('avatar');

        // If the avatar is being updated, delete the old avatar
        rescue_if($oldAvatar, static fn () => File::delete(image_storage_path($oldAvatar)));
    }

    public function deleted(User $user): void
    {
        rescue_if(
            $user->has_custom_avatar,
            static fn () => File::delete(image_storage_path($user->getRawOriginal('avatar')))
        );
    }
}