<?php

namespace App\Support;

use Illuminate\Support\Facades\Storage;

trait ResolvesPrivateUploads
{
    protected function privateUploadDisk(): string
    {
        return 'local';
    }

    protected function privateUploadExists(?string $path): bool
    {
        if (! $path) {
            return false;
        }

        return Storage::disk('local')->exists($path)
            || Storage::disk('public')->exists($path);
    }

    protected function privateUploadAbsolutePath(string $path): string
    {
        if (Storage::disk('local')->exists($path)) {
            return Storage::disk('local')->path($path);
        }

        return Storage::disk('public')->path($path);
    }

    protected function deletePrivateUpload(?string $path): void
    {
        if (! $path) {
            return;
        }
        if (Storage::disk('local')->exists($path)) {
            Storage::disk('local')->delete($path);
        }
        if (Storage::disk('public')->exists($path)) {
            Storage::disk('public')->delete($path);
        }
    }
}
