mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-19 23:35:59 +00:00
plugin fixes
This commit is contained in:
@@ -2,7 +2,8 @@ import _ from 'lodash';
|
||||
|
||||
export function extractPluginIcon(packageManifest) {
|
||||
const { links } = packageManifest || {};
|
||||
const { repository, homepage } = links || {};
|
||||
const { repository } = links || {};
|
||||
const homepage = (links && links.homepage) || packageManifest.homepage;
|
||||
const tested = repository || homepage || packageManifest.homepage;
|
||||
|
||||
if (tested) {
|
||||
|
||||
@@ -55,7 +55,7 @@ function Delimiter() {
|
||||
return <span> | </span>;
|
||||
}
|
||||
|
||||
export default function PluginTab({ packageName }) {
|
||||
function PluginTabCore({ packageName }) {
|
||||
const theme = useTheme();
|
||||
const installed = useInstalledPlugins();
|
||||
const info = useFetch({
|
||||
@@ -63,7 +63,7 @@ export default function PluginTab({ packageName }) {
|
||||
url: 'plugins/info',
|
||||
defaultValue: null,
|
||||
});
|
||||
const { readme, manifest } = info || {};
|
||||
let { readme, manifest } = info || {};
|
||||
const handleInstall = async () => {
|
||||
axios.post('plugins/install', { packageName });
|
||||
};
|
||||
@@ -71,34 +71,52 @@ export default function PluginTab({ packageName }) {
|
||||
axios.post('plugins/uninstall', { packageName });
|
||||
};
|
||||
|
||||
if (info == null) {
|
||||
return <LoadingInfo message="Loading extension detail" />;
|
||||
}
|
||||
|
||||
if (manifest == null) {
|
||||
const installedFound = installed.find((x) => x.name == packageName);
|
||||
if (installedFound) {
|
||||
manifest = installedFound;
|
||||
readme = installedFound.readme;
|
||||
}
|
||||
if (manifest == null) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
<Header theme={theme}>
|
||||
<Icon src={extractPluginIcon(manifest)} />
|
||||
<HeaderBody>
|
||||
<Title theme={theme}>{packageName}</Title>
|
||||
<HeaderLine>
|
||||
<Author>{extractPluginAuthor(manifest)}</Author>
|
||||
<Delimiter />
|
||||
<Version>{manifest.version && manifest.version}</Version>
|
||||
</HeaderLine>
|
||||
<HeaderLine>
|
||||
{!installed.find((x) => x.name == packageName) && (
|
||||
<FormStyledButton type="button" value="Install" onClick={handleInstall} />
|
||||
)}
|
||||
{!!installed.find((x) => x.name == packageName) && (
|
||||
<FormStyledButton type="button" value="Uninstall" onClick={handleUninstall} />
|
||||
)}
|
||||
</HeaderLine>
|
||||
</HeaderBody>
|
||||
</Header>
|
||||
<ReactMarkdown>{readme}</ReactMarkdown>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
export default function PluginTab({ packageName }) {
|
||||
const theme = useTheme();
|
||||
return (
|
||||
<WhitePage theme={theme}>
|
||||
{info == null || manifest == null ? (
|
||||
<LoadingInfo message="Loading extension detail" />
|
||||
) : (
|
||||
<>
|
||||
<Header theme={theme}>
|
||||
<Icon src={extractPluginIcon(manifest)} />
|
||||
<HeaderBody>
|
||||
<Title theme={theme}>{packageName}</Title>
|
||||
<HeaderLine>
|
||||
<Author>{extractPluginAuthor(manifest)}</Author>
|
||||
<Delimiter />
|
||||
<Version>{manifest.version && manifest.version}</Version>
|
||||
</HeaderLine>
|
||||
<HeaderLine>
|
||||
{!installed.find((x) => x.name == packageName) && (
|
||||
<FormStyledButton type="button" value="Install" onClick={handleInstall} />
|
||||
)}
|
||||
{!!installed.find((x) => x.name == packageName) && (
|
||||
<FormStyledButton type="button" value="Uninstall" onClick={handleUninstall} />
|
||||
)}
|
||||
</HeaderLine>
|
||||
</HeaderBody>
|
||||
</Header>
|
||||
<ReactMarkdown>{readme}</ReactMarkdown>
|
||||
</>
|
||||
)}
|
||||
<PluginTabCore packageName={packageName} />
|
||||
</WhitePage>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user