mirror of https://github.com/halo-dev/halo
feat: add supports for check started status after start plugin operation (#4558)
#### What type of PR is this? /area console /kind improvement /milestone 2.10.x #### What this PR does / why we need it: 支持在启动插件之后检测插件的启动状态,防止直接刷新之后 bundle.js 的内容没有及时更新。 #### Does this PR introduce a user-facing change? ```release-note 优化 Console 端启动插件的逻辑 ```pull/4552/head^2
parent
2baf6aeb31
commit
a1ea355fdb
|
@ -49,10 +49,16 @@ export function usePluginLifeCycle(
|
||||||
});
|
});
|
||||||
|
|
||||||
pluginToUpdate.spec.enabled = !pluginToUpdate.spec.enabled;
|
pluginToUpdate.spec.enabled = !pluginToUpdate.spec.enabled;
|
||||||
await apiClient.extension.plugin.updatepluginHaloRunV1alpha1Plugin({
|
|
||||||
name: pluginToUpdate.metadata.name,
|
const { data: newPlugin } =
|
||||||
plugin: pluginToUpdate,
|
await apiClient.extension.plugin.updatepluginHaloRunV1alpha1Plugin({
|
||||||
});
|
name: pluginToUpdate.metadata.name,
|
||||||
|
plugin: pluginToUpdate,
|
||||||
|
});
|
||||||
|
|
||||||
|
await checkStatus(newPlugin);
|
||||||
|
|
||||||
|
return newPlugin;
|
||||||
},
|
},
|
||||||
retry: 3,
|
retry: 3,
|
||||||
retryDelay: 1000,
|
retryDelay: 1000,
|
||||||
|
@ -61,6 +67,38 @@ export function usePluginLifeCycle(
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function checkStatus(plugin: Plugin) {
|
||||||
|
const maxRetry = 5;
|
||||||
|
let retryCount = 0;
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
const check = () => {
|
||||||
|
if (retryCount >= maxRetry) {
|
||||||
|
reject(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
apiClient.extension.plugin
|
||||||
|
.getpluginHaloRunV1alpha1Plugin({ name: plugin.metadata.name })
|
||||||
|
.then((response) => {
|
||||||
|
const { enabled } = response.data.spec;
|
||||||
|
const { phase } = response.data.status || {};
|
||||||
|
if (
|
||||||
|
(enabled && phase === "STARTED") ||
|
||||||
|
(!enabled && phase !== "STARTED")
|
||||||
|
) {
|
||||||
|
resolve(true);
|
||||||
|
} else {
|
||||||
|
setTimeout(check, 1000);
|
||||||
|
retryCount++;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
reject(false);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
check();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
const uninstall = (deleteExtensions?: boolean) => {
|
const uninstall = (deleteExtensions?: boolean) => {
|
||||||
if (!plugin?.value) return;
|
if (!plugin?.value) return;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue