Browse Source

refac/fix: title generation button issue

Timothy Jaeryang Baek 2 tháng trước cách đây
mục cha
commit
d21a2581a6

+ 12 - 3
src/lib/components/layout/Sidebar/ChatItem.svelte

@@ -139,7 +139,10 @@
 	let itemElement;
 
 	let generating = false;
+
+	let ignoreBlur = false;
 	let doubleClicked = false;
+
 	let dragged = false;
 	let x = 0;
 	let y = 0;
@@ -314,10 +317,12 @@
 				bind:value={chatTitle}
 				class=" bg-transparent w-full outline-hidden mr-10"
 				placeholder={generating ? $i18n.t('Generating...') : ''}
+				disabled={generating}
 				on:keydown={chatTitleInputKeydownHandler}
 				on:blur={async (e) => {
-					// check if target is generate button
-					if (e.relatedTarget?.id === 'generate-title-button') {
+					if (ignoreBlur) {
+						ignoreBlur = false;
+
 						return;
 					}
 
@@ -417,8 +422,12 @@
 			>
 				<Tooltip content={$i18n.t('Generate')}>
 					<button
-						class=" self-center dark:hover:text-white transition"
+						class=" self-center dark:hover:text-white transition disabled:cursor-not-allowed"
 						id="generate-title-button"
+						disabled={generating}
+						on:mouseenter={() => {
+							ignoreBlur = true;
+						}}
 						on:click={(e) => {
 							e.preventDefault();
 							e.stopImmediatePropagation();

+ 8 - 1
src/lib/components/notes/NoteEditor.svelte

@@ -126,6 +126,7 @@
 	let showDeleteConfirm = false;
 	let showAccessControlModal = false;
 
+	let ignoreBlur = false;
 	let titleInputFocused = false;
 	let titleGenerating = false;
 
@@ -970,7 +971,8 @@ Provide the enhanced notes in markdown format. Use markdown syntax for headings,
 								}}
 								on:blur={(e) => {
 									// check if target is generate button
-									if (e.relatedTarget?.id === 'generate-title-button') {
+									if (ignoreBlur) {
+										ignoreBlur = false;
 										return;
 									}
 
@@ -987,6 +989,11 @@ Provide the enhanced notes in markdown format. Use markdown syntax for headings,
 										<button
 											class=" self-center dark:hover:text-white transition"
 											id="generate-title-button"
+											disabled={(note?.user_id !== $user?.id && $user?.role !== 'admin') ||
+												titleGenerating}
+											on:mouseenter={() => {
+												ignoreBlur = true;
+											}}
 											on:click={(e) => {
 												e.preventDefault();
 												e.stopImmediatePropagation();