chore: bump version to 1.10.0 and enhance model selection functionality
Some checks failed
Build & Release Plugin / release (push) Failing after 10s

This commit is contained in:
2026-02-06 18:47:21 +00:00
parent ee1873568d
commit 5ed94f79d3
2 changed files with 56 additions and 5 deletions

View File

@@ -181,6 +181,7 @@ class Groq_AI_Product_Text_Settings_Page extends Groq_AI_Admin_Base {
'attributes' => [
'id' => 'groq-ai-model-select',
],
'current_provider' => isset( $settings['provider'] ) ? $settings['provider'] : '',
]
);
@@ -569,15 +570,50 @@ class Groq_AI_Product_Text_Settings_Page extends Groq_AI_Admin_Base {
<?php
}
private function render_model_select_field( $field_args ) {
public function render_model_select_field( $field_args ) {
$name = isset( $field_args['name'] ) ? $field_args['name'] : '';
$id = isset( $field_args['id'] ) && '' !== $field_args['id'] ? $field_args['id'] : 'groq-ai-model-select';
$current = isset( $field_args['value'] ) ? (string) $field_args['value'] : '';
$placeholder = __( 'Selecteer eerst een aanbieder', GROQ_AI_PRODUCT_TEXT_DOMAIN );
$current_provider = isset( $field_args['current_provider'] ) ? sanitize_key( (string) $field_args['current_provider'] ) : '';
$provider = '' !== $current_provider ? $this->provider_manager->get_provider( $current_provider ) : null;
$models = [];
if ( $provider ) {
$models = $this->prepare_models_list_for_provider( $current_provider, $this->plugin->get_cached_models_for_provider( $current_provider ) );
if ( empty( $models ) ) {
$models = $this->prepare_models_list_for_provider( $current_provider, $provider->get_available_models() );
}
$placeholder = __( 'Selecteer een model', GROQ_AI_PRODUCT_TEXT_DOMAIN );
} elseif ( '' !== $current_provider ) {
$placeholder = __( 'Geen modellen gevonden. Gebruik "Live modellen ophalen".', GROQ_AI_PRODUCT_TEXT_DOMAIN );
}
?>
<div class="groq-ai-model-field">
<select id="<?php echo esc_attr( $id ); ?>" name="<?php echo esc_attr( $name ); ?>" data-current-model="<?php echo esc_attr( $current ); ?>">
<option value="" selected="selected"><?php echo esc_html( $placeholder ); ?></option>
<option value=""><?php echo esc_html( $placeholder ); ?></option>
<?php
if ( ! empty( $models ) ) :
$has_current = in_array( $current, $models, true );
foreach ( $models as $model ) :
?>
<option value="<?php echo esc_attr( $model ); ?>" <?php selected( $current, $model ); ?>><?php echo esc_html( $model ); ?></option>
<?php
endforeach;
if ( $current && ! $has_current ) :
?>
<option value="<?php echo esc_attr( $current ); ?>" selected="selected"><?php echo esc_html( $current ); ?></option>
<?php
endif;
elseif ( $current ) :
?>
<option value="<?php echo esc_attr( $current ); ?>" selected="selected"><?php echo esc_html( $current ); ?></option>
<?php
endif;
?>
</select>
</div>
<button type="button" class="button" id="groq-ai-refresh-models"><?php esc_html_e( 'Live modellen ophalen', GROQ_AI_PRODUCT_TEXT_DOMAIN ); ?></button>
@@ -865,8 +901,11 @@ class Groq_AI_Product_Text_Settings_Page extends Groq_AI_Admin_Base {
foreach ( $this->provider_manager->get_providers() as $provider ) {
$provider_key = $provider->get_key();
$cached_models = $this->plugin->get_cached_models_for_provider( $provider_key );
$cached_models = Groq_AI_Model_Exclusions::filter_models( $provider_key, $cached_models );
$cached_models = $this->prepare_models_list_for_provider( $provider_key, $this->plugin->get_cached_models_for_provider( $provider_key ) );
if ( empty( $cached_models ) ) {
$cached_models = $this->prepare_models_list_for_provider( $provider_key, $provider->get_available_models() );
}
$data['providers'][ $provider_key ] = [
'default_label' => sprintf( __( 'Gebruik standaardmodel (%s)', GROQ_AI_PRODUCT_TEXT_DOMAIN ), $provider->get_default_model() ),
'models' => $cached_models,
@@ -878,6 +917,18 @@ class Groq_AI_Product_Text_Settings_Page extends Groq_AI_Admin_Base {
wp_localize_script( 'groq-ai-settings', 'GroqAISettingsData', $data );
}
private function prepare_models_list_for_provider( $provider_key, $models ) {
$list = Groq_AI_Model_Exclusions::filter_models( $provider_key, $models );
if ( empty( $list ) ) {
return [];
}
sort( $list, SORT_NATURAL | SORT_FLAG_CASE );
return $list;
}
public function handle_google_oauth_start() {
if ( ! current_user_can( 'manage_options' ) ) {
wp_die( esc_html__( 'Je hebt geen toestemming om deze actie uit te voeren.', GROQ_AI_PRODUCT_TEXT_DOMAIN ), '', [ 'response' => 403 ] );