| 
21 | 21 | 	import DialogModal from '$lib/common/DialogModal.svelte';  | 
22 | 22 | 	import HeadTitle from '$lib/common/HeadTitle.svelte';  | 
23 | 23 | 	import LoadingDots from '$lib/common/LoadingDots.svelte';  | 
 | 24 | +	import StateModal from '$lib/common/StateModal.svelte';  | 
24 | 25 | 	import { utcToLocal } from '$lib/helpers/datetime';  | 
25 | 26 | 	import { replaceNewLine } from '$lib/helpers/http';  | 
26 | 27 | 	import { SenderAction, UserRole } from '$lib/helpers/enums';  | 
 | 
33 | 34 | 	import Swal from 'sweetalert2/dist/sweetalert2.js';  | 
34 | 35 | 	import "sweetalert2/src/sweetalert2.scss";  | 
35 | 36 | 	import moment from 'moment';  | 
36 |  | -	import StateModal from '$lib/common/StateModal.svelte';  | 
 | 37 | +	  | 
37 | 38 | 	  | 
38 | 39 | 	const options = {  | 
39 | 40 | 		scrollbars: {  | 
 | 
107 | 108 | 		signalr.onConversationContentLogGenerated = onConversationContentLogGenerated;  | 
108 | 109 | 		signalr.onConversationStateLogGenerated = onConversationStateLogGenerated;  | 
109 | 110 | 		signalr.onSenderActionGenerated = onSenderActionGenerated;  | 
 | 111 | +		signalr.onConversationMessageDeleted = onConversationMessageDeleted;  | 
110 | 112 | 		await signalr.start(params.conversationId);  | 
111 | 113 | 
  | 
112 | 114 | 		const scrollElement = document.querySelector('.chat-scrollbar');  | 
 | 
257 | 259 | 		stateLogs = stateLogs.map(x => { return { ...x }; });  | 
258 | 260 | 	}  | 
259 | 261 | 
  | 
260 |  | -	/**  @param {import('$types').ConversationSenderActionModel} data */  | 
 | 262 | +	/** @param {import('$types').ConversationSenderActionModel} data */  | 
261 | 263 | 	function onSenderActionGenerated(data) {  | 
262 | 264 | 		if (data?.sender_action == SenderAction.TypingOn) {  | 
263 | 265 | 			isThinking = true;  | 
 | 
266 | 268 | 		}  | 
267 | 269 | 	}  | 
268 | 270 | 
  | 
 | 271 | +	/** @param {import('$types').ConversationMessageDeleteModel} data */  | 
 | 272 | +	function onConversationMessageDeleted(data) {  | 
 | 273 | +		if (!!!data?.message_id) return;  | 
 | 274 | +		truncateDialogs(data.message_id);  | 
 | 275 | +	}  | 
 | 276 | +
  | 
269 | 277 | 	async function newConversationHandler() {  | 
270 | 278 | 		const conversation = await newConversation(params.agentId);  | 
271 | 279 |         conversationStore.set(conversation);  | 
272 |  | -		let url = `chat/${params.agentId}/${conversation.id}`;  | 
273 |  | -		if (isLite) {  | 
274 |  | -			url = `${url}?isLite=true`;  | 
275 |  | -		}  | 
 | 280 | +		const url = `chat/${params.agentId}/${conversation.id}`;  | 
276 | 281 | 		window.location.href = url;  | 
277 | 282 | 	}  | 
278 | 283 | 
  | 
 | 
422 | 427 | 	function toggleUserAddStateModal() {  | 
423 | 428 | 		isOpenUserAddStateModal = !isOpenUserAddStateModal;  | 
424 | 429 | 		if (isOpenUserAddStateModal) {  | 
425 |  | -			loadAddStates();  | 
 | 430 | +			loadUserAddStates();  | 
426 | 431 | 		}  | 
427 | 432 | 	}  | 
428 | 433 | 
  | 
429 |  | -	function loadAddStates() {  | 
 | 434 | +	function loadUserAddStates() {  | 
430 | 435 | 		const conversationUserStates = conversationUserStateStore.get();  | 
431 | 436 | 		if (!!conversationUserStates && conversationUserStates.conversationId == params.conversationId && !!conversationUserStates.states) {  | 
432 | 437 | 			userAddStates = [...conversationUserStates.states];  | 
 | 
446 | 451 | 		toggleUserAddStateModal();  | 
447 | 452 | 	}  | 
448 | 453 | 
  | 
449 |  | -	function clearAddedStates() {  | 
 | 454 | +	function clearUserAddStates() {  | 
450 | 455 | 		// @ts-ignore  | 
451 | 456 | 		Swal.fire({  | 
452 | 457 | 			title: 'Are you sure?',  | 
 | 
459 | 464 | 		// @ts-ignore  | 
460 | 465 | 		}).then(async (result) => {  | 
461 | 466 | 			if (result.value) {  | 
 | 467 | +				userAddStates = [];  | 
462 | 468 | 				conversationUserStateStore.reset();  | 
463 | 469 | 			}  | 
464 | 470 | 		});  | 
 | 
503 | 509 | 
  | 
504 | 510 | 	/** @param {string} messageId */  | 
505 | 511 | 	async function handleDeleteMessage(messageId) {  | 
506 |  | -		const isDeleted = truncateDialogs(messageId);  | 
507 |  | -		if (!isDeleted) return;  | 
508 | 512 | 		await deleteConversationMessage(params.conversationId, messageId);  | 
509 | 513 | 	}  | 
510 | 514 | 
  | 
 | 
532 | 536 | 	}  | 
533 | 537 | 
  | 
534 | 538 | 	async function confirmEditMsg() {  | 
535 |  | -		const isDeleted = truncateDialogs(truncateMsgId);  | 
536 |  | -		if (!isDeleted) return;  | 
537 |  | -
  | 
538 | 539 | 		isSendingMsg = true;  | 
539 | 540 | 		isOpenEditMsgModal = false;  | 
540 | 541 | 		renewUserSentMessages(editText);  | 
 | 
642 | 643 | 	}  | 
643 | 644 | </script>  | 
644 | 645 | 
  | 
 | 646 | +
  | 
645 | 647 | <svelte:window on:resize={() => resizeChatWindow()}/>  | 
646 | 648 | 
  | 
647 | 649 | <DialogModal  | 
 | 
721 | 723 | 															{#if !isOpenUserAddStateModal}  | 
722 | 724 | 															<DropdownItem on:click={() => toggleUserAddStateModal()}>Add States</DropdownItem>  | 
723 | 725 | 															{/if}  | 
724 |  | -															<DropdownItem on:click={() => clearAddedStates()}>Clear States</DropdownItem>  | 
 | 726 | +															<DropdownItem on:click={() => clearUserAddStates()}>Clear States</DropdownItem>  | 
725 | 727 | 														</DropdownMenu>  | 
726 | 728 | 													</Dropdown>  | 
727 | 729 | 												</li>  | 
 | 
0 commit comments