Skip to content
7 changes: 6 additions & 1 deletion assets/js/features/provider.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,14 +38,15 @@ export const FeatureSettingsProvider = ({
children,
defaultSettings,
epioLogoUrl,
features,
features: initialFeatures,
indexMeta,
syncedSettings,
}) => {
const [isBusy, setIsBusy] = useState(false);
const [isSyncing, setIsSyncing] = useState(!!indexMeta);
const [settings, setSettings] = useState({ ...defaultSettings });
const [savedSettings, setSavedSettings] = useState({ ...syncedSettings });
const [features, setFeatures] = useState(initialFeatures);

/**
* Get a feature's data by its slug.
Expand Down Expand Up @@ -168,6 +169,10 @@ export const FeatureSettingsProvider = ({
});

setSavedSettings(response.data);

if (response.features) {
setFeatures(response.features);
}
} finally {
setIsBusy(false);
}
Expand Down
9 changes: 7 additions & 2 deletions includes/classes/REST/Features.php
Original file line number Diff line number Diff line change
Expand Up @@ -220,9 +220,14 @@ public function update_settings( \WP_REST_Request $request ) {
FeaturesStore::factory()->update_feature( $slug, $feature, true, 'draft' );
}

$features_objects = FeaturesStore::factory()->registered_features;
$features_data = array_map( fn( $feature ) => $feature->get_json(), $features_objects );
$features_data = array_values( $features_data );

return [
'data' => $current_settings,
'success' => true,
'data' => $current_settings,
'success' => true,
'features' => $features_data,
];
}
}