feat: add code and text block types (#609)

This commit is contained in:
Jeremy 2024-12-16 18:14:40 +05:30 committed by GitHub
parent 3df0fd4c0f
commit 9778631d6f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
27 changed files with 1754 additions and 290 deletions

View file

@ -4,18 +4,20 @@ import { useSWRConfig } from 'swr';
import type { Suggestion } from '@/lib/db/schema';
import type { UIBlock } from './block';
import type { BlockKind, UIBlock } from './block';
import { useUserMessageId } from '@/hooks/use-user-message-id';
type StreamingDelta = {
type:
| 'text-delta'
| 'code-delta'
| 'title'
| 'id'
| 'suggestion'
| 'clear'
| 'finish'
| 'user-message-id';
| 'user-message-id'
| 'kind';
content: string | Suggestion;
};
@ -67,6 +69,12 @@ export function useBlockStream({
title: delta.content as string,
};
case 'kind':
return {
...draftBlock,
kind: delta.content as BlockKind,
};
case 'text-delta':
return {
...draftBlock,
@ -80,6 +88,19 @@ export function useBlockStream({
status: 'streaming',
};
case 'code-delta':
return {
...draftBlock,
content: delta.content as string,
isVisible:
draftBlock.status === 'streaming' &&
draftBlock.content.length > 20 &&
draftBlock.content.length < 30
? true
: draftBlock.isVisible,
status: 'streaming',
};
case 'suggestion':
setTimeout(() => {
setOptimisticSuggestions((currentSuggestions) => [
@ -107,5 +128,5 @@ export function useBlockStream({
return draftBlock;
}
});
}, [streamingData, setBlock]);
}, [streamingData, setBlock, setUserMessageIdFromServer]);
}