import { Component } from '@angular/core';
import Talk from 'talkjs';
@Component({
selector: 'app-chat',
standalone: true,
imports: [],
template: `
<div id="talkjs-container" style="height: 600px">Loading chats...</div>
`,
styles: '',
})
export class ChatComponent {
constructor() {
Talk.ready.then((): void => {
const session = new Talk.Session({
appId: 'MAGIC_APP_ID',
userId: 'sample_user_alice',
});
const chatbox = session.createChatbox();
chatbox.select('sample_conversation');
chatbox.mount(document.getElementById('talkjs-container'));
});
}
}
<script>
async createPopup(session: Talk.Session) {
const supportUser = {
id: 5,
username: 'Sebastian',
email: 'sebastian@example.com',
photoUrl: 'https://example.com/portrait.jpg',
};
const conversation = await this.getOrCreateConversation(session, supportUser);
return session.createPopup(conversation, { keepOpen: false });
}
</script>
We were able to offload all messaging to TalkJS — hugely simplifying our development of an otherwise complex stack.