<?php

namespace Laravel\Nova;

use Illuminate\Support\Arr;

trait ProxiesCanSeeToGate
{
    /**
     * Indicate that the entity can be seen when a given authorization ability is available.
     *
     * @param  string  $ability
     * @param  array|mixed  $arguments
     * @return $this
     */
    public function canSeeWhen($ability, $arguments = [])
    {
        $arguments = Arr::wrap($arguments);

        if (isset($arguments[0]) && $arguments[0] instanceof Resource) {
            $arguments[0] = $arguments[0]->resource;
        }

        return $this->canSee(
            static fn ($request) => Nova::user($request)->can($ability, $arguments)
        );
    }
}
