* webui : added download action (#13552) * webui : import and export (for all conversations) * webui : fixed download-format, import of one conversation * webui : add ExportedConversations type for chat import/export * feat: Update naming & order * chore: Linting * feat: Import/Export UX improvements * chore: update webui build output * feat: Update UI placement of Import/Export tab in Chat Settings Dialog * refactor: Cleanup chore: update webui build output * feat: Enable shift-click multiple conversation items selection * chore: update webui static build * chore: update webui static build --------- Co-authored-by: Sascha Rogmann <github@rogmann.org>
30 lines
989 B
TypeScript
30 lines
989 B
TypeScript
/**
|
|
* Utility functions for conversation data manipulation
|
|
*/
|
|
|
|
/**
|
|
* Creates a map of conversation IDs to their message counts from exported conversation data
|
|
* @param exportedData - Array of exported conversations with their messages
|
|
* @returns Map of conversation ID to message count
|
|
*/
|
|
export function createMessageCountMap(
|
|
exportedData: Array<{ conv: DatabaseConversation; messages: DatabaseMessage[] }>
|
|
): Map<string, number> {
|
|
const countMap = new Map<string, number>();
|
|
|
|
for (const item of exportedData) {
|
|
countMap.set(item.conv.id, item.messages.length);
|
|
}
|
|
|
|
return countMap;
|
|
}
|
|
|
|
/**
|
|
* Gets the message count for a specific conversation from the count map
|
|
* @param conversationId - The ID of the conversation
|
|
* @param countMap - Map of conversation IDs to message counts
|
|
* @returns The message count, or 0 if not found
|
|
*/
|
|
export function getMessageCount(conversationId: string, countMap: Map<string, number>): number {
|
|
return countMap.get(conversationId) ?? 0;
|
|
}
|