[Update/Refactor] Automatically disable and save the status to config.json if the plugin is not supported.

This commit is contained in:
Sakamoto Shiina
2025-04-17 19:44:14 +09:00
parent b8c1688172
commit fd59c0b28f
3 changed files with 33 additions and 29 deletions

View File

@@ -10,6 +10,7 @@ export const MergePluginsController = () => {
currentFetchedPluginsInfo, currentFetchedPluginsInfo,
currentSavedPluginsStatus, currentSavedPluginsStatus,
downloadAndExtractPlugin, downloadAndExtractPlugin,
toggleSavedPluginStatus,
} = usePlugins(); } = usePlugins();
const { checkVrctVerCompatibility } = useSoftwareVersion(); const { checkVrctVerCompatibility } = useSoftwareVersion();
@@ -129,6 +130,7 @@ export const MergePluginsController = () => {
!plugin.latest_plugin_info?.is_plugin_supported !plugin.latest_plugin_info?.is_plugin_supported
) { ) {
plugin.is_enabled = false; plugin.is_enabled = false;
toggleSavedPluginStatus(plugin.plugin_id);
} }
} }
}); });

View File

@@ -22,9 +22,8 @@ const PluginDownloadContainer = () => {
const { const {
downloadAndExtractPlugin, downloadAndExtractPlugin,
currentPluginsData, currentPluginsData,
updatePluginsData,
currentSavedPluginsStatus, currentSavedPluginsStatus,
setSavedPluginsStatus, toggleSavedPluginStatus,
handlePendingPlugin, handlePendingPlugin,
} = usePlugins(); } = usePlugins();
@@ -42,33 +41,7 @@ const PluginDownloadContainer = () => {
// プラグインのオンオフ切り替え処理 // プラグインのオンオフ切り替え処理
const toggleFunction = (target_plugin_id) => { const toggleFunction = (target_plugin_id) => {
const is_exists = currentSavedPluginsStatus.data.some( toggleSavedPluginStatus(target_plugin_id);
(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 variable_state = currentSavedPluginsStatus.state; const variable_state = currentSavedPluginsStatus.state;

View File

@@ -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) => { const setSavedPluginsStatus = (plugins_status) => {
pendingSavedPluginsStatus(); pendingSavedPluginsStatus();
@@ -344,6 +372,7 @@ export const usePlugins = () => {
currentLoadedPlugins, currentLoadedPlugins,
updateLoadedPlugins, updateLoadedPlugins,
toggleSavedPluginStatus,
setSavedPluginsStatus, setSavedPluginsStatus,
handlePendingPlugin, handlePendingPlugin,