Skip to content

Commit

Permalink
feat: simplify onStateChange
Browse files Browse the repository at this point in the history
  • Loading branch information
rjborba committed Jul 29, 2024
1 parent b25f649 commit 2f7aea2
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
| `colorScheme` | `color-scheme` | | `"dark" \| "light" \| "system"` | `'light'` |
| `facetProperty` | `facet-property` | | `string` | `undefined` |
| `open` | `open` | | `boolean` | `false` |
| `resultMap` | -- | | `{ section?: string; title?: string; path?: string; description?: string; }` | `{}` |
| `resultMap` | -- | | `{ title?: string; description?: string; path?: string; section?: string; }` | `{}` |
| `themeConfig` | -- | | `{ typography?: DeepPartial<{ '--font-primary': string; }>; colors?: DeepPartial<{ gray50: string; gray100: string; gray200: string; gray300: string; gray400: string; gray500: string; gray600: string; gray700: string; gray800: string; gray900: string; gray950: string; purple100: string; purple200: string; purple300: string; purple500: string; purple700: string; light: { "--text-color-primary": string; "--text-color-secondary": string; "--text-color-tertiary": string; "--text-color-accent": string; "--text-color-inactive": string; "--text-color-reverse": string; "--background-color-primary": string; "--background-color-secondary": string; "--background-color-tertiary": string; "--background-color-fourth": string; "--background-color-reverse": string; "--border-color-primary": string; "--border-color-secondary": string; "--border-color-tertiary": string; "--border-color-accent": string; "--icon-color-primary": string; "--icon-color-secondary": string; "--icon-color-tertiary": string; "--icon-color-inactive": string; "--icon-color-accent": string; "--shadow-color-primary": string; "--button-text-color-primary": string; "--button-text-color-inactive": string; "--button-background-color-primary": string; "--button-background-color-inactive": string; }; dark: { "--text-color-primary": string; "--text-color-secondary": string; "--text-color-tertiary": string; "--text-color-accent": string; "--text-color-inactive": string; "--text-color-reverse": string; "--background-color-primary": string; "--background-color-secondary": string; "--background-color-tertiary": string; "--background-color-fourth": string; "--background-color-reverse": string; "--border-color-primary": string; "--border-color-secondary": string; "--border-color-tertiary": string; "--border-color-accent": string; "--icon-color-primary": string; "--icon-color-secondary": string; "--icon-color-tertiary": string; "--icon-color-inactive": string; "--icon-color-accent": string; "--shadow-color-primary": string; "--button-text-color-primary": string; "--button-background-color-primary": string; }; }>; }` | `undefined` |


Expand Down
56 changes: 22 additions & 34 deletions packages/ui-stencil/src/services/ChatService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,49 +17,38 @@ export class ChatService {

chatContext.lockScrollOnBottom = true

// TODO: possibly fix on Orama Client
chatContext.interactions = [...chatContext.interactions, { query: term, status: TAnswerStatus.loading }]

if (!this.answerSession) {
this.answerSession = this.oramaClient.createAnswerSession({
events: {
onStateChange: (state) => {
const latestState = state[state.length - 1]

const loading = latestState.loading
const response = latestState.response
chatContext.interactions = state.map((interaction, index) => {
let answerStatus = TAnswerStatus.loading

// biome-ignore lint/suspicious/noExplicitAny: Client should expose this type
const sources = (latestState.sources as any)?.map((source) => {
// TODO: this should depend on the source type
return {
title: source.document?.title,
description: source.document?.content,
path: source.document?.path,
if (interaction.loading && interaction.response) {
answerStatus = TAnswerStatus.streaming
} else if (!interaction.loading && interaction.response) {
answerStatus = TAnswerStatus.done
}
})

let answerStatus = TAnswerStatus.loading

if (loading && response) {
answerStatus = TAnswerStatus.streaming
} else if (!loading && response) {
answerStatus = TAnswerStatus.done
}

chatContext.interactions = chatContext.interactions.map((interaction, index) => {
if (index === chatContext.interactions.length - 1) {
// biome-ignore lint/suspicious/noExplicitAny: Client should expose this type
const sources = (interaction.sources as any)?.map((source) => {
// TODO: this should depend on the source type
return {
...interaction,
response,
sources,
interactionId: latestState.interactionId,
relatedQueries: latestState.relatedQueries,
status: answerStatus,
latest: true,
title: source.document?.title,
description: source.document?.content,
path: source.document?.path,
}
})

return {
query: interaction.query,
interactionId: interaction.interactionId,
response: interaction.response,
relatedQueries: interaction.relatedQueries,
status: answerStatus,
latest: state.length - 1 === index,
sources,
}
return { ...interaction, latest: false }
})
},
},
Expand Down Expand Up @@ -105,6 +94,5 @@ export class ChatService {
this.answerSession.clearSession()
// TODO: Not sure if this is the right place to do it
chatContext.lockScrollOnBottom = true
chatContext.interactions = []
}
}

0 comments on commit 2f7aea2

Please sign in to comment.