From fd59c0b28ff9aaace218010dc025ba9a1047cd9b Mon Sep 17 00:00:00 2001 From: Sakamoto Shiina <68018796+ShiinaSakamoto@users.noreply.github.com> Date: Thu, 17 Apr 2025 19:44:14 +0900 Subject: [PATCH] [Update/Refactor] Automatically disable and save the status to config.json if the plugin is not supported. --- .../MergePluginsController.jsx | 2 ++ .../setting_box/plugins/Plugins.jsx | 31 ++----------------- src-ui/logics/configs/plugins/usePlugins.js | 29 +++++++++++++++++ 3 files changed, 33 insertions(+), 29 deletions(-) diff --git a/src-ui/app/_app_controllers/plugins_controllers/MergePluginsController.jsx b/src-ui/app/_app_controllers/plugins_controllers/MergePluginsController.jsx index c4545bc3..e0e258b7 100644 --- a/src-ui/app/_app_controllers/plugins_controllers/MergePluginsController.jsx +++ b/src-ui/app/_app_controllers/plugins_controllers/MergePluginsController.jsx @@ -10,6 +10,7 @@ export const MergePluginsController = () => { currentFetchedPluginsInfo, currentSavedPluginsStatus, downloadAndExtractPlugin, + toggleSavedPluginStatus, } = usePlugins(); const { checkVrctVerCompatibility } = useSoftwareVersion(); @@ -129,6 +130,7 @@ export const MergePluginsController = () => { !plugin.latest_plugin_info?.is_plugin_supported ) { plugin.is_enabled = false; + toggleSavedPluginStatus(plugin.plugin_id); } } }); diff --git a/src-ui/app/config_page/setting_section/setting_box/plugins/Plugins.jsx b/src-ui/app/config_page/setting_section/setting_box/plugins/Plugins.jsx index 9f7f490e..e60927f4 100644 --- a/src-ui/app/config_page/setting_section/setting_box/plugins/Plugins.jsx +++ b/src-ui/app/config_page/setting_section/setting_box/plugins/Plugins.jsx @@ -22,9 +22,8 @@ const PluginDownloadContainer = () => { const { downloadAndExtractPlugin, currentPluginsData, - updatePluginsData, currentSavedPluginsStatus, - setSavedPluginsStatus, + toggleSavedPluginStatus, handlePendingPlugin, } = usePlugins(); @@ -42,33 +41,7 @@ const PluginDownloadContainer = () => { // プラグインのオンオフ切り替え処理 const toggleFunction = (target_plugin_id) => { - const is_exists = currentSavedPluginsStatus.data.some( - (d) => d.plugin_id === target_plugin_id - ); - let new_value = []; - if (is_exists) { - new_value = currentSavedPluginsStatus.data.map((d) => { - if (d.plugin_id === target_plugin_id) { - d.is_enabled = !d.is_enabled; - } - return d; - }); - } else { - new_value.push(...currentSavedPluginsStatus.data); - new_value.push({ - plugin_id: target_plugin_id, - is_enabled: true, - }); - } - - // 「currentPluginsData.data」でis_downloadedがtrueのものだけ残す - new_value = new_value.filter((item) => - currentPluginsData.data.some( - (plugin) => plugin.plugin_id === item.plugin_id && plugin.is_downloaded - ) - ); - - setSavedPluginsStatus(new_value); + toggleSavedPluginStatus(target_plugin_id); }; const variable_state = currentSavedPluginsStatus.state; diff --git a/src-ui/logics/configs/plugins/usePlugins.js b/src-ui/logics/configs/plugins/usePlugins.js index 2e92ef74..53db0c0b 100644 --- a/src-ui/logics/configs/plugins/usePlugins.js +++ b/src-ui/logics/configs/plugins/usePlugins.js @@ -298,7 +298,35 @@ export const usePlugins = () => { }); }; + const toggleSavedPluginStatus = (target_plugin_id) => { + const is_exists = currentSavedPluginsStatus.data.some( + (d) => d.plugin_id === target_plugin_id + ); + let new_value = []; + if (is_exists) { + new_value = currentSavedPluginsStatus.data.map((d) => { + if (d.plugin_id === target_plugin_id) { + d.is_enabled = !d.is_enabled; + } + return d; + }); + } else { + new_value.push(...currentSavedPluginsStatus.data); + new_value.push({ + plugin_id: target_plugin_id, + is_enabled: true, + }); + } + // 「currentPluginsData.data」でis_downloadedがtrueのものだけ残す + new_value = new_value.filter((item) => + currentPluginsData.data.some( + (plugin) => plugin.plugin_id === item.plugin_id && plugin.is_downloaded + ) + ); + + setSavedPluginsStatus(new_value); + }; const setSavedPluginsStatus = (plugins_status) => { pendingSavedPluginsStatus(); @@ -344,6 +372,7 @@ export const usePlugins = () => { currentLoadedPlugins, updateLoadedPlugins, + toggleSavedPluginStatus, setSavedPluginsStatus, handlePendingPlugin,