diff --git a/src-ui/app/_app_controllers/PluginsController.jsx b/src-ui/app/_app_controllers/PluginsController.jsx index 2fad4376..98327baf 100644 --- a/src-ui/app/_app_controllers/PluginsController.jsx +++ b/src-ui/app/_app_controllers/PluginsController.jsx @@ -15,6 +15,7 @@ export const PluginsController = ({ fetchPluginsHasRunRef }) => { updatePluginsData, currentSavedPluginsStatus, updateIsPluginsInitialized, + downloadAndExtractPlugin, } = usePlugins(); useEffect(() => { @@ -36,19 +37,19 @@ export const PluginsController = ({ fetchPluginsHasRunRef }) => { const is_latest_version_available = !(target_downloaded_plugin.plugin_version === info.plugin_version); new_plugin_info = { - is_downloaded: true, - is_latest_version_already: (target_downloaded_plugin.downloaded_plugin_info?.plugin_version === info.plugin_version), - is_latest_version_available: is_latest_version_available, - latest_plugin_info: { ...info }, ...target_downloaded_plugin, + is_downloaded: true, + latest_plugin_info: { ...info }, + is_latest_version_available: is_latest_version_available, + is_latest_version_already: (target_downloaded_plugin.downloaded_plugin_info?.plugin_version === info.plugin_version), }; } else { // infoにもあり登録済みだがダウンロードされていない new_plugin_info = { + ...target_downloaded_plugin, is_downloaded: false, is_latest_version_already: false, is_latest_version_available: info.is_latest_version_available, latest_plugin_info: { ...info }, - ...target_downloaded_plugin, } } } else { // 未ダウンロード @@ -75,8 +76,29 @@ export const PluginsController = ({ fetchPluginsHasRunRef }) => { plugin.is_latest_version_available = (plugin.latest_plugin_info.is_plugin_supported); } }); + + // ダウンロード済みで最新版じゃない場合、自動的にアップデート + // is_latest_version_supported: true のみ。 + // 失敗した場合、現在のバージョンが非対応の場合はdisabledにする。 + new_data.forEach(async plugin => { + if (plugin.is_enabled) { + if (!plugin.is_latest_version_already && plugin.is_latest_version_available) { + await downloadAndExtractPlugin(plugin); + } + } + }); + + new_data.forEach(async plugin => { + if (plugin.is_enabled) { + if (!plugin.downloaded_plugin_info?.is_plugin_supported) { + plugin.is_enabled = false + } + } + }); + return new_data; }); + } catch (error) { console.error(error); } diff --git a/src-ui/app/config_page/setting_section/setting_box/_components/plugins_control_component/PluginsControlComponent.jsx b/src-ui/app/config_page/setting_section/setting_box/_components/plugins_control_component/PluginsControlComponent.jsx index 4408d6cc..e6ddd500 100644 --- a/src-ui/app/config_page/setting_section/setting_box/_components/plugins_control_component/PluginsControlComponent.jsx +++ b/src-ui/app/config_page/setting_section/setting_box/_components/plugins_control_component/PluginsControlComponent.jsx @@ -52,7 +52,14 @@ const DownloadedPluginControl = ({ const latest_version = plugin_status.latest_plugin_info?.plugin_version; - if (plugin_status.is_latest_version_already) { + + if (!plugin_status.downloaded_plugin_info.is_plugin_supported) { + return ( +
現在利用不可 使用中VRCTバージョンとの互換性なし
+最新のバージョン: {latest_version}
@@ -72,7 +79,7 @@ const DownloadedPluginControl = ({ } else { return (最新のバージョン: {latest_version}
+最新版は現在利用不可
最新のバージョン: {latest_version}
+VRCT最新版で利用可能
+