<?php
defined( 'ABSPATH' ) || exit;

class BW_WebP_Settings {

	const OPTION = 'bw_webp_settings';

	const DEFAULTS = array(
		'quality'             => 82,
		'workers'             => 4,
		'converter'           => 'auto',
		'skip_thumbnails'     => false,
		'enable_rewrite'      => true,
		'delete_on_uninstall' => false,
	);

	public function get(): array {
		$stored = get_option( self::OPTION, array() );
		return wp_parse_args( is_array( $stored ) ? $stored : array(), self::DEFAULTS );
	}

	public function update( array $input ): array {
		$current = $this->get();

		$next = array(
			'quality'             => max( 1, min( 100, (int) ( $input['quality']             ?? $current['quality'] ) ) ),
			'workers'             => max( 1, min( 8,   (int) ( $input['workers']             ?? $current['workers'] ) ) ),
			'converter'           => in_array( $input['converter'] ?? $current['converter'], array( 'auto', 'cwebp', 'imagick', 'gd' ), true )
				? (string) ( $input['converter'] ?? $current['converter'] )
				: 'auto',
			'skip_thumbnails'     => ! empty( $input['skip_thumbnails'] ),
			'enable_rewrite'      => ! empty( $input['enable_rewrite'] ),
			'delete_on_uninstall' => ! empty( $input['delete_on_uninstall'] ),
		);

		update_option( self::OPTION, $next, false );
		return $next;
	}
}
