Skip to content

Commit 7336fb0

Browse files
author
Rankin Zheng
authored
Merge pull request #9 from devchat-ai/custom_buttons_text
Custom buttons text
2 parents fd57085 + c3a7794 commit 7336fb0

4 files changed

Lines changed: 65 additions & 16 deletions

File tree

src/views/components/ChatMark/index.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,11 @@ interface Wdiget {
5757
value: string;
5858
title?: string;
5959
type: "editor" | "checkbox" | "radio" | "button" | "text";
60+
submit?: string;
61+
cancel?: string;
6062
}
6163

62-
const ChatMark = ({ children, value, messageDone }) => {
64+
const ChatMark = ({ children, value, messageDone, submit = 'Submit', cancel = 'Cancel' }) => {
6365
const { classes } = useStyles();
6466
const [widgets, widgetsHandlers] = useListState<Wdiget>();
6567
const { chat } = useMst();
@@ -315,10 +317,10 @@ const ChatMark = ({ children, value, messageDone }) => {
315317
{renderWidgets(widgets)}
316318
<Box>
317319
<Button className={classes.submit} size="xs" onClick={handleSubmit}>
318-
Submit
320+
{submit}
319321
</Button>
320322
<Button className={classes.cancel} size="xs" onClick={handleCancel}>
321-
Cancel
323+
{cancel}
322324
</Button>
323325
</Box>
324326
</form>

src/views/components/MessageMarkdown/index.tsx

Lines changed: 47 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,18 @@ function parseMetaData(string) {
4949
/((?<k1>(?!=)\S+)=((?<v1>(["'`])(.*?)\5)|(?<v2>\S+)))|(?<k2>\S+)/g;
5050
const io = (string ?? "").matchAll(regexp);
5151

52-
return new Map(
52+
const resultMap = new Map(
5353
[...io]
5454
.map((item) => item?.groups)
5555
.map(({ k1, k2, v1, v2 }) => [k1 ?? k2, v1 ?? v2])
5656
);
57+
58+
let props = {};
59+
for (let [key, value] of resultMap) {
60+
props[key] = value;
61+
}
62+
63+
return props;
5764
}
5865

5966
const MessageMarkdown = observer((props: MessageMarkdownProps) => {
@@ -63,9 +70,10 @@ const MessageMarkdown = observer((props: MessageMarkdownProps) => {
6370
const tree = fromMarkdown(children);
6471
const codes = tree.children.filter((node) => node.type === "code");
6572
const lastNode = tree.children[tree.children.length - 1];
66-
const [chatmarkValues, setChatmarkValues] = useSetState({});
73+
const [chatmarkProps, setChatmarkProps] = useSetState({});
6774
const { classes } = useStyles();
6875
const { i18n, t } = useTranslation();
76+
const platform = process.env.platform;
6977

7078
const handleExplain = (value: string | undefined) => {
7179
console.log(value);
@@ -171,24 +179,41 @@ Generate a professionally written and formatted release note in markdown with th
171179
}
172180
};
173181

182+
const openLink = (link) => {
183+
messageUtil.sendMessage({
184+
command: "openLink",
185+
url: link,
186+
});
187+
};
188+
174189
useEffect(() => {
175190
let previousNode: any = null;
176191
let chatmarkCount = 0;
177192
visit(tree, function (node) {
178193
if (node.type === "code") {
179194
// set meta data as props
180-
const metaData = parseMetaData(node.meta);
181-
let props = { ...metaData };
195+
let props = {};
182196
if (node.lang === "chatmark" || node.lang === "ChatMark") {
183197
props["index"] = chatmarkCount;
198+
const metaData = parseMetaData(node.meta);
199+
setChatmarkProps({
200+
[`chatmark-${chatmarkCount}`]: {
201+
...metaData,
202+
},
203+
});
184204
} else if (
185205
(node.lang === "yaml" || node.lang === "YAML") &&
186206
previousNode &&
187207
previousNode.type === "code" &&
188208
previousNode.lang === "chatmark"
189209
) {
190-
setChatmarkValues({
191-
[`chatmark-${previousNode.data.hProperties.index}`]: node.value,
210+
setChatmarkProps({
211+
[`chatmark-${previousNode.data.hProperties.index}`]: {
212+
...chatmarkProps[
213+
`chatmark-${previousNode.data.hProperties.index}`
214+
],
215+
value: node.value,
216+
},
192217
});
193218
}
194219
node.data = {
@@ -218,6 +243,13 @@ Generate a professionally written and formatted release note in markdown with th
218243
) {
219244
return t("devchat.setkey");
220245
}
246+
if (
247+
children.includes(
248+
"OPENAI_API_KEY is missing from your environment or settings"
249+
)
250+
) {
251+
return t("devchat.setOpenAIkey");
252+
}
221253
}
222254
}
223255
return children;
@@ -234,8 +266,7 @@ Generate a professionally written and formatted release note in markdown with th
234266
visit(tree, function (node) {
235267
if (node.type === "code") {
236268
// set meta data as props
237-
const metaData = parseMetaData(node.meta);
238-
let props = { ...metaData };
269+
let props = {};
239270
if (node.lang === "step" || node.lang === "Step") {
240271
props["index"] = stepCount;
241272
} else if (node.lang === "chatmark" || node.lang === "ChatMark") {
@@ -296,9 +327,9 @@ Generate a professionally written and formatted release note in markdown with th
296327
}
297328

298329
if (lanugage === "chatmark" || lanugage === "ChatMark") {
299-
const chatmarkValue = chatmarkValues[`chatmark-${index}`];
330+
const chatmarkValue = chatmarkProps[`chatmark-${index}`];
300331
return (
301-
<ChatMark value={chatmarkValue} messageDone={messageDone}>
332+
<ChatMark messageDone={messageDone} {...chatmarkValue}>
302333
{value}
303334
</ChatMark>
304335
);
@@ -344,15 +375,20 @@ Generate a professionally written and formatted release note in markdown with th
344375
"&:hover": {
345376
backgroundColor: "#ED6A45",
346377
opacity: 0.8,
378+
color: "#fff",
347379
},
348380
"&:focus": {
349381
backgroundColor: "#ED6A45",
350382
opacity: 0.8,
383+
color: "#fff",
351384
},
352385
}}
353386
onClick={() => {
354-
handleButton(value);
387+
value === "get_devchat_key" && platform === "idea"
388+
? openLink("https://web.devchat.ai")
389+
: handleButton(value);
355390
}}
391+
{...props}
356392
>
357393
{children}
358394
</Button>

src/views/i18n/zh.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@
88
"Ask DevChat a question or type ‘/’ for workflow": "向 DevChat 直接提问或输入 '/' 以查看可用的工作流",
99
"How do I use DevChat?": "如何使用 DevChat?",
1010
"balance": "你的账户余额为 {{formatedCurrency}},登录 <4>web.devchat.ai</4> 获得更多 tokens",
11-
"devchat.help": "你想生成一些代码还是对这个项目有疑问?请首先右键单击相关的文件或代码片段,将它们添加到 DevChat 中作为上下文,然后在输入框中写下你的请求或问题,我将基于添加的上下文生成代码或回答你的问题。<br> <br> 你还可以点击输入框左侧的“+”按钮,查看更多添加上下文的快捷方法。此外,在输入框中键入“/”,DevChat 会列出可供使用的各类工作流,按 Tab 键或输入完整命令触发你需要的工作流。聊天愉快! <br> <br>下面是一些工作流的示例:<br> <br> [/code: 基于你的提示词和上下文生成代码](#code) <br> [/commit_message: 根据加入上下文中的代码变更生成提交消息](#commit_message) <br> <br> [/release_note: 根据加入上下文中的提交历史生成提交说明](#release_note) <br> <br> [/ask-code: 询问任何关于当前代码库的信息,并从这位人工智能代理那里获得答案](#ask_code) <br> <br>你可以点击[设置](#settings)来配置 DevChat",
11+
"devchat.help": "你想生成一些代码还是对这个项目有疑问?请首先右键单击相关的文件或代码片段,将它们添加到 DevChat 中作为上下文,然后在输入框中写下你的请求或问题,我将基于添加的上下文生成代码或回答你的问题。<br> <br> 你还可以点击输入框左侧的“+”按钮,查看更多添加上下文的快捷方法。此外,在输入框中键入“/”,DevChat 会列出可供使用的各类工作流,按 Tab 键或输入完整命令触发你需要的工作流。聊天愉快! <br> <br>下面是一些工作流的示例:<br> <br> [/code: 基于你的提示词和上下文生成代码](#code) <br> <br> [/commit_message: 根据加入上下文中的代码变更生成提交消息](#commit_message) <br> <br> [/release_note: 根据加入上下文中的提交历史生成提交说明](#release_note) <br> <br> [/ask-code: 询问任何关于当前代码库的信息,并从这位人工智能代理那里获得答案](#ask_code) <br> <br>你可以点击[设置](#settings)来配置 DevChat",
1212
"devchat.setkey": "你的环境或设置中缺少 DevChat 访问密钥。请输入你的 DevChat 访问密钥,这样我就可以开始正常工作了。<br> <br> <button value=\"setting_devchat_key\">设置 DevChat 访问密钥</button>",
13+
"devchat.setOpenAIkey": "你的环境或设置中缺少 OpenAI 访问密钥。请输入你的 OpenAI 或者 DevChat 访问密钥,这样我就可以开始正常工作了。<br> <br> <button value=\"get_devchat_key\">注册获取 DevChat 访问密钥</button> <button value=\"setting_devchat_key\">设置 DevChat 访问密钥</button> <button value=\"setting_devchat_key\">设置 OpenAI 访问密钥</button>",
1314
"Is DevChat Access Key ready?": "DevChat 访问密钥是否已经设置好?",
1415
"Ask questions about the current project's codebase, which requires proactive acquisition of additional context information to answer.": "询问关于当前项目代码库的问题,我将主动获取相关的上下文信息来回答。",
1516
"Generate code with a general template embedded into the prompt.": "使用隐式嵌入到提示词中的通用模板生成代码。",

src/views/stores/ChatStore.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,9 +155,19 @@ ${
155155
You can configure DevChat from [Settings](#settings).`;
156156

157157
const setKeyMessage = `
158-
DevChat key is missing from your environment or settings. Kindly input your DevChat key, and I'll ensure DevChat is all set for you.
158+
OPENAI_API_KEY is missing from your environment or settings. Kindly input your DevChat key, and I'll ensure DevChat is all set for you.
159159
160+
${process.env.platform === 'vscode'
161+
?`
162+
<button value="get_devchat_key" href="https://web.devchat.ai">Register DevChat key</button>
160163
<button value="setting_devchat_key">Set DevChat key</button>
164+
<button value="setting_openai_key">Set OpenAI key</button>
165+
`
166+
:`
167+
<button value="get_devchat_key" href="https://web.devchat.ai">Register DevChat key</button>
168+
<button value="setting_devchat_key">Set DevChat key</button>
169+
`}
170+
161171
`;
162172

163173
const setKeyUser = `Is DevChat Access Key ready?`;

0 commit comments

Comments
 (0)