MCPcopy
hub / github.com/AstrBotDevs/AstrBot / newExtension

Function newExtension

dashboard/src/views/extension/useExtensionPage.js:2032–2102  ·  view source on GitHub ↗
(ignoreVersionCheck = false)

Source from the content-addressed store, hash-verified

2030 };
2031
2032 const newExtension = async (ignoreVersionCheck = false) => {
2033 const shouldIgnoreVersionCheck = ignoreVersionCheck === true;
2034 if (extension_url.value === "" && upload_file.value === null) {
2035 toast(tm("messages.fillUrlOrFile"), "error");
2036 return;
2037 }
2038
2039 if (extension_url.value !== "" && upload_file.value !== null) {
2040 toast(tm("messages.dontFillBoth"), "error");
2041 return;
2042 }
2043 const source = upload_file.value !== null ? "file" : "url";
2044 loading_.value = true;
2045
2046 try {
2047 if (source === "url" && !selectedInstallDownloadUrl.value) {
2048 if (!installUsesGithubSource.value) {
2049 toast(tm("messages.invalidGithubRepo"), "error");
2050 loading_.value = false;
2051 return;
2052 }
2053
2054 const validationPayload = buildInstallRepoValidationPayload();
2055 if (!validationPayload) {
2056 toast(tm("messages.fillUrlOrFile"), "error");
2057 loading_.value = false;
2058 return;
2059 }
2060 installUrlValidation.validating = true;
2061 installUrlValidation.status = "loading";
2062 installUrlValidation.message = tm("messages.validatingPlugin");
2063 installUrlValidation.version = "";
2064 installUrlValidation.metadata = null;
2065 try {
2066 const { data, message } = await validatePluginRepo(validationPayload);
2067 installUrlValidation.status = "valid";
2068 installUrlValidation.message = message;
2069 installUrlValidation.version = data.version || "";
2070 installUrlValidation.metadata = data;
2071 } catch (error) {
2072 const message = resolveErrorMessage(
2073 error,
2074 tm("messages.pluginValidateFailed"),
2075 );
2076 installUrlValidation.status = "error";
2077 installUrlValidation.message = message;
2078 toast(message, "error");
2079 loading_.value = false;
2080 return;
2081 } finally {
2082 installUrlValidation.validating = false;
2083 }
2084 }
2085
2086 const res = await performInstallRequest({
2087 source,
2088 ignoreVersionCheck: shouldIgnoreVersionCheck,
2089 });

Callers 1

Calls 9

resolveErrorMessageFunction · 0.90
tmFunction · 0.85
performInstallRequestFunction · 0.85
handleInstallResponseFunction · 0.85
toastFunction · 0.70
validatePluginRepoFunction · 0.70

Tested by

no test coverage detected