2022-12-22 17:02:34 +01:00
|
|
|
import { isMobile } from '@/utils/isMobileSignal'
|
2023-03-10 16:00:57 +01:00
|
|
|
import { createEffect, createSignal, Show } from 'solid-js'
|
2023-03-15 08:35:16 +01:00
|
|
|
import { isNotEmpty } from '@typebot.io/lib'
|
2022-12-22 17:02:34 +01:00
|
|
|
import { DefaultAvatar } from './DefaultAvatar'
|
|
|
|
|
2023-01-25 11:27:47 +01:00
|
|
|
export const Avatar = (props: { initialAvatarSrc?: string }) => {
|
2023-03-10 16:00:57 +01:00
|
|
|
const [avatarSrc, setAvatarSrc] = createSignal(props.initialAvatarSrc)
|
|
|
|
|
|
|
|
createEffect(() => {
|
|
|
|
if (
|
2024-01-18 11:13:45 +01:00
|
|
|
(avatarSrc()?.startsWith('{{') || !avatarSrc()) &&
|
2023-03-10 16:00:57 +01:00
|
|
|
props.initialAvatarSrc?.startsWith('http')
|
|
|
|
)
|
|
|
|
setAvatarSrc(props.initialAvatarSrc)
|
|
|
|
})
|
2023-01-25 11:27:47 +01:00
|
|
|
|
|
|
|
return (
|
2023-04-03 09:00:39 +02:00
|
|
|
<Show when={isNotEmpty(avatarSrc())} keyed fallback={<DefaultAvatar />}>
|
2023-01-25 11:27:47 +01:00
|
|
|
<figure
|
|
|
|
class={
|
2023-02-20 17:40:51 +01:00
|
|
|
'flex justify-center items-center rounded-full text-white relative animate-fade-in flex-shrink-0 ' +
|
2023-01-25 11:27:47 +01:00
|
|
|
(isMobile() ? 'w-6 h-6 text-sm' : 'w-10 h-10 text-xl')
|
|
|
|
}
|
|
|
|
>
|
|
|
|
<img
|
|
|
|
src={avatarSrc()}
|
|
|
|
alt="Bot avatar"
|
|
|
|
class="rounded-full object-cover w-full h-full"
|
2023-05-03 08:29:13 -04:00
|
|
|
elementtiming={'Bot avatar'}
|
|
|
|
fetchpriority={'high'}
|
2023-01-25 11:27:47 +01:00
|
|
|
/>
|
|
|
|
</figure>
|
|
|
|
</Show>
|
|
|
|
)
|
|
|
|
}
|