Skip to content

Commit

Permalink
add load from url
Browse files Browse the repository at this point in the history
  • Loading branch information
lloydzhou committed Sep 2, 2024
1 parent 6435e7a commit 3ec67f9
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 3 deletions.
50 changes: 48 additions & 2 deletions app/components/plugin.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import DeleteIcon from "../icons/delete.svg";
import EyeIcon from "../icons/eye.svg";
import CopyIcon from "../icons/copy.svg";
import ConfirmIcon from "../icons/confirm.svg";
import ReloadIcon from "../icons/reload.svg";

import { Plugin, usePluginStore, FunctionToolService } from "../store/plugin";
import {
Expand All @@ -31,7 +32,7 @@ import {
import { downloadAs } from "../utils";
import Locale from "../locales";
import { useNavigate } from "react-router-dom";
import { useEffect, useState } from "react";
import { useEffect, useState, useCallback } from "react";
import { Path } from "../constant";
import { nanoid } from "nanoid";

Expand Down Expand Up @@ -90,6 +91,37 @@ export function PluginPage() {
}
}, 100).bind(null, editingPlugin);

const [loadUrl, setLoadUrl] = useState<string>("");
const loadFromUrl = (loadUrl: string) =>
fetch(loadUrl)
.catch((e) => {
const p = new URL(loadUrl);
return fetch(`/api/proxy/${p.pathname}?${p.search}`, {
headers: {
"X-Base-URL": p.origin,
},
});
})
.then((res) => res.text())
.then((content) => {
try {
return JSON.stringify(JSON.parse(content), null, " ");
} catch (e) {
return content;
}
})
.then((content) => {
pluginStore.updatePlugin(editingPlugin.id, (plugin) => {
plugin.content = content;
const tool = FunctionToolService.add(plugin, true);
plugin.title = tool.api.definition.info.title;
plugin.version = tool.api.definition.info.version;
});
})
.catch((e) => {
showToast(Locale.Plugin.EditModal.Error);
});

return (
<ErrorBoundary>
<div className={styles["mask-page"]}>
Expand Down Expand Up @@ -262,8 +294,22 @@ export function PluginPage() {
</ListItem>
</List>
<List>
<ListItem title={Locale.Plugin.EditModal.Content}>
<div style={{ display: "flex", justifyContent: "flex-end" }}>
<input
type="text"
style={{ minWidth: 200, marginRight: 20 }}
onInput={(e) => setLoadUrl(e.currentTarget.value)}
></input>
<IconButton
icon={<ReloadIcon />}
text={Locale.Plugin.EditModal.Load}
bordered
onClick={() => loadFromUrl(loadUrl)}
/>
</div>
</ListItem>
<ListItem
title={Locale.Plugin.EditModal.Content}
subTitle={
<div
className={`markdown-body ${pluginStyles["plugin-content"]}`}
Expand Down
2 changes: 1 addition & 1 deletion app/components/ui-lib.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ export function Card(props: { children: JSX.Element[]; className?: string }) {
}

export function ListItem(props: {
title: string;
title?: string;
subTitle?: string | JSX.Element;
children?: JSX.Element | JSX.Element[];
icon?: JSX.Element;
Expand Down
1 change: 1 addition & 0 deletions app/locales/cn.ts
Original file line number Diff line number Diff line change
Expand Up @@ -561,6 +561,7 @@ const cn = {
Download: "下载",
Auth: "授权方式",
Content: "OpenAPI Schema",
Load: "从网页加载",
Method: "方法",
Error: "格式错误",
},
Expand Down
1 change: 1 addition & 0 deletions app/locales/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -570,6 +570,7 @@ const en: LocaleType = {
Download: "Download",
Auth: "Authentication Type",
Content: "OpenAPI Schema",
Load: "Load From URL",
Method: "Method",
Error: "OpenAPI Schema Error",
},
Expand Down

0 comments on commit 3ec67f9

Please sign in to comment.