mirror of
https://github.com/discourse/discourse-ai.git
synced 2025-03-04 00:10:07 +00:00
56 lines
1.4 KiB
JavaScript
56 lines
1.4 KiB
JavaScript
|
import { ajax } from "discourse/lib/ajax";
|
||
|
import { clipboardCopy } from "discourse/lib/utilities";
|
||
|
import I18n from "discourse-i18n";
|
||
|
|
||
|
export default async function (topic, fromPostNumber, toPostNumber) {
|
||
|
const stream = topic.get("postStream");
|
||
|
|
||
|
let postNumbers = [];
|
||
|
// simpler to understand than Array.from
|
||
|
for (let i = fromPostNumber; i <= toPostNumber; i++) {
|
||
|
postNumbers.push(i);
|
||
|
}
|
||
|
|
||
|
const postIds = postNumbers.map((postNumber) => {
|
||
|
return stream.findPostIdForPostNumber(postNumber);
|
||
|
});
|
||
|
|
||
|
// we need raw to construct so post stream will not help
|
||
|
|
||
|
const url = `/t/${topic.id}/posts.json`;
|
||
|
const data = {
|
||
|
post_ids: postIds,
|
||
|
include_raw: true,
|
||
|
};
|
||
|
|
||
|
const response = await ajax(url, { data });
|
||
|
|
||
|
let buffer = [];
|
||
|
buffer.push("<details class='ai-quote'>");
|
||
|
buffer.push("<summary>");
|
||
|
buffer.push(`<span>${topic.title}</span>`);
|
||
|
buffer.push(
|
||
|
`<span title='${I18n.t("discourse_ai.ai_bot.ai_title")}'>${I18n.t(
|
||
|
"discourse_ai.ai_bot.ai_label"
|
||
|
)}</span>`
|
||
|
);
|
||
|
buffer.push("</summary>");
|
||
|
|
||
|
response.post_stream.posts.forEach((post) => {
|
||
|
buffer.push("");
|
||
|
buffer.push(`**${post.username}:**`);
|
||
|
buffer.push("");
|
||
|
buffer.push(post.raw);
|
||
|
});
|
||
|
|
||
|
buffer.push("</details>");
|
||
|
|
||
|
const text = buffer.join("\n");
|
||
|
|
||
|
if (window.discourseAiTestClipboard) {
|
||
|
window.discourseAiClipboard = text;
|
||
|
}
|
||
|
|
||
|
await clipboardCopy(text);
|
||
|
}
|