| 
127 | 127 | 	let loadTextEditor = false;  | 
128 | 128 | 	let loadFileEditor = false;  | 
129 | 129 | 	let autoScrollLog = false;  | 
 | 130 | +	let disableAction = false;  | 
130 | 131 | 
  | 
131 | 132 | 	$: {  | 
132 | 133 | 		const editor = lastBotMsg?.rich_content?.editor || '';  | 
 | 
135 | 136 | 		loadEditor = !isSendingMsg && !isThinking && (loadTextEditor || loadFileEditor);  | 
136 | 137 | 	}  | 
137 | 138 | 
  | 
 | 139 | +	$: {  | 
 | 140 | +		disableAction = currentUser?.role !== UserRole.Admin && currentUser?.id !== conversationUser?.id;  | 
 | 141 | +	}  | 
 | 142 | +
  | 
138 | 143 | 	setContext('chat-window-context', {  | 
139 | 144 | 		autoScrollToBottom: autoScrollToBottom  | 
140 | 145 | 	});  | 
 | 
914 | 919 | 														</DropdownToggle>  | 
915 | 920 | 														<DropdownMenu>  | 
916 | 921 | 															{#if !isLoadStateLog}  | 
917 |  | -															<DropdownItem on:click={() => toggleStateLog()}>View States</DropdownItem>  | 
 | 922 | +															<DropdownItem  | 
 | 923 | +																on:click={() => toggleStateLog()}  | 
 | 924 | +															>  | 
 | 925 | +																View States  | 
 | 926 | +															</DropdownItem>  | 
918 | 927 | 															{/if}  | 
919 | 928 | 															{#if !isOpenUserAddStateModal}  | 
920 |  | -															<DropdownItem on:click={() => toggleUserAddStateModal()}>Add States</DropdownItem>  | 
 | 929 | +															<DropdownItem  | 
 | 930 | +																disabled={disableAction}  | 
 | 931 | +																on:click={() => toggleUserAddStateModal()}  | 
 | 932 | +															>  | 
 | 933 | +																Add States  | 
 | 934 | +															</DropdownItem>  | 
921 | 935 | 															{/if}  | 
922 |  | -															<DropdownItem on:click={() => clearUserAddStates()}>Clear States</DropdownItem>  | 
 | 936 | +															<DropdownItem  | 
 | 937 | +																disabled={disableAction}  | 
 | 938 | +																on:click={() => clearUserAddStates()}  | 
 | 939 | +															>  | 
 | 940 | +																Clear States  | 
 | 941 | +															</DropdownItem>  | 
923 | 942 | 														</DropdownMenu>  | 
924 | 943 | 													</Dropdown>  | 
925 | 944 | 												</li>  | 
 | 
932 | 951 | 									<li class="list-inline-item d-md-inline-block">  | 
933 | 952 | 										<button  | 
934 | 953 | 											class="btn btn-primary btn-rounded btn-sm chat-send waves-effect waves-light"  | 
 | 954 | +											disabled={disableAction}  | 
935 | 955 | 											on:click={() => endChat()}  | 
936 | 956 | 										>  | 
937 | 957 | 											<span class="d-none d-sm-inline-block me-2" >End Conversation</span> <i class="mdi mdi-window-close"></i>  | 
 | 
986 | 1006 | 										</div>  | 
987 | 1007 | 											{#if !isLite}  | 
988 | 1008 | 												<Dropdown>  | 
989 |  | -													<DropdownToggle class="dropdown-toggle" tag="span" disabled={isSendingMsg || isThinking}>  | 
 | 1009 | +													<DropdownToggle class="dropdown-toggle" tag="span" disabled={isSendingMsg || isThinking || disableAction}>  | 
990 | 1010 | 														<i class="bx bx-dots-vertical-rounded" />  | 
991 | 1011 | 													</DropdownToggle>  | 
992 | 1012 | 													<DropdownMenu class="dropdown-menu-end">  | 
 | 
1055 | 1075 | 								<button  | 
1056 | 1076 | 									type="submit"  | 
1057 | 1077 | 									class="btn btn-primary btn-rounded waves-effect waves-light"  | 
1058 |  | -									disabled={isSendingMsg || isThinking}  | 
 | 1078 | +									disabled={isSendingMsg || isThinking || disableAction}  | 
1059 | 1079 | 									on:click={startListen}  | 
1060 | 1080 | 								>  | 
1061 | 1081 | 									<i class="mdi mdi-{microphoneIcon} md-36" />  | 
 | 
1066 | 1086 | 									<ChatTextArea  | 
1067 | 1087 | 										className={`chat-input ${loadFileEditor ? 'chat-uploader' : ''}`}  | 
1068 | 1088 | 										bind:text={text}  | 
1069 |  | -										disabled={isSendingMsg || isThinking}  | 
 | 1089 | +										disabled={isSendingMsg || isThinking || disableAction}  | 
1070 | 1090 | 										editor={lastBotMsg?.rich_content?.editor || ''}  | 
1071 | 1091 | 										onKeyDown={e => onSendMessage(e)}  | 
1072 | 1092 | 									/>  | 
1073 | 1093 | 									{#if loadFileEditor}  | 
1074 | 1094 | 										<div class="chat-input-links">  | 
1075 |  | -											<ChatImageUploader />  | 
 | 1095 | +											<ChatImageUploader disabled={disableAction} />  | 
1076 | 1096 | 										</div>  | 
1077 | 1097 | 									{/if}  | 
1078 | 1098 | 								</div>  | 
 | 
1081 | 1101 | 								<button  | 
1082 | 1102 | 									type="submit"  | 
1083 | 1103 | 									class="btn btn-primary btn-rounded chat-send waves-effect waves-light"  | 
1084 |  | -									disabled={!!!_.trim(text) || isSendingMsg || isThinking}  | 
 | 1104 | +									disabled={!!!_.trim(text) || isSendingMsg || isThinking || disableAction}  | 
1085 | 1105 | 									on:click={() => sentTextMessage()}  | 
1086 | 1106 | 								><span class="d-none d-md-inline-block me-2">Send</span>  | 
1087 | 1107 | 									<i class="mdi mdi-send" />  | 
 | 
0 commit comments