forked from open-webui/open-webui
feat: custom chatId route support
This commit is contained in:
parent
99e8816e73
commit
2342c5036b
14 changed files with 2672 additions and 2042 deletions
67
src/lib/utils/index.ts
Normal file
67
src/lib/utils/index.ts
Normal file
|
@ -0,0 +1,67 @@
|
|||
import { v4 as uuidv4 } from 'uuid';
|
||||
import sha256 from 'js-sha256';
|
||||
|
||||
//////////////////////////
|
||||
// Helper functions
|
||||
//////////////////////////
|
||||
|
||||
export const splitStream = (splitOn) => {
|
||||
let buffer = '';
|
||||
return new TransformStream({
|
||||
transform(chunk, controller) {
|
||||
buffer += chunk;
|
||||
const parts = buffer.split(splitOn);
|
||||
parts.slice(0, -1).forEach((part) => controller.enqueue(part));
|
||||
buffer = parts[parts.length - 1];
|
||||
},
|
||||
flush(controller) {
|
||||
if (buffer) controller.enqueue(buffer);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
export const convertMessagesToHistory = (messages) => {
|
||||
let history = {
|
||||
messages: {},
|
||||
currentId: null
|
||||
};
|
||||
|
||||
let parentMessageId = null;
|
||||
let messageId = null;
|
||||
|
||||
for (const message of messages) {
|
||||
messageId = uuidv4();
|
||||
|
||||
if (parentMessageId !== null) {
|
||||
history.messages[parentMessageId].childrenIds = [
|
||||
...history.messages[parentMessageId].childrenIds,
|
||||
messageId
|
||||
];
|
||||
}
|
||||
|
||||
history.messages[messageId] = {
|
||||
...message,
|
||||
id: messageId,
|
||||
parentId: parentMessageId,
|
||||
childrenIds: []
|
||||
};
|
||||
|
||||
parentMessageId = messageId;
|
||||
}
|
||||
|
||||
history.currentId = messageId;
|
||||
return history;
|
||||
};
|
||||
|
||||
export const getGravatarURL = (email) => {
|
||||
// Trim leading and trailing whitespace from
|
||||
// an email address and force all characters
|
||||
// to lower case
|
||||
const address = String(email).trim().toLowerCase();
|
||||
|
||||
// Create a SHA256 hash of the final string
|
||||
const hash = sha256(address);
|
||||
|
||||
// Grab the actual image URL
|
||||
return `https://www.gravatar.com/avatar/${hash}`;
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue