|
100 | 100 | </div> |
101 | 101 | </div> |
102 | 102 | <EmojiPicker |
103 | | - :show="isEmojiPickerVisible" |
| 103 | + :show="uiStore.isEmojiPickerVisible" |
104 | 104 | @select-emoji="insertEmoji" |
105 | 105 | @select-sticker="sendSticker" |
106 | 106 | /> |
@@ -132,7 +132,9 @@ const uiStore = useUiStore(); |
132 | 132 | const newMessage = ref(''); |
133 | 133 | const textareaRef = ref(null); |
134 | 134 | const fileInputRef = ref(null); |
135 | | -const isEmojiPickerVisible = ref(false); |
| 135 | +// --- ❌ REMOVAL --- |
| 136 | +// const isEmojiPickerVisible = ref(false); |
| 137 | +// --- ❌ REMOVAL --- |
136 | 138 | const preview = ref(null); |
137 | 139 | const isRecording = ref(false); |
138 | 140 | const recordingDuration = ref(0); |
@@ -194,13 +196,27 @@ function send() { |
194 | 196 | // ✅ MODIFICATION START: Handle stickerId instead of sticker object |
195 | 197 | function sendSticker(stickerId) { |
196 | 198 | chatStore.sendMessage({ stickerId }); |
197 | | - isEmojiPickerVisible.value = false; |
| 199 | + // ✅ MODIFICATION: Use store action to close |
| 200 | + uiStore.toggleEmojiPicker(false); |
198 | 201 | } |
199 | 202 | // ✅ MODIFICATION END |
200 | 203 |
|
201 | 204 | function insertEmoji(emoji) { const textarea = textareaRef.value; const start = textarea.selectionStart; const end = textarea.selectionEnd; newMessage.value = newMessage.value.substring(0, start) + emoji + newMessage.value.substring(end); nextTick(() => { textarea.selectionStart = textarea.selectionEnd = start + emoji.length; textarea.focus(); }); } |
202 | | -function toggleEmojiPicker() { isEmojiPickerVisible.value = !isEmojiPickerVisible.value; } |
203 | | -function closeEmojiPicker(event) { if (isEmojiPickerVisible.value && !event.target.closest('.picker-container, .input-container')) { isEmojiPickerVisible.value = false; } } |
| 205 | +
|
| 206 | +// ✅ MODIFICATION START: Use store action |
| 207 | +function toggleEmojiPicker() { |
| 208 | + uiStore.toggleEmojiPicker(); |
| 209 | +} |
| 210 | +// ✅ MODIFICATION END |
| 211 | +
|
| 212 | +// ✅ MODIFICATION START: Use store state and action |
| 213 | +function closeEmojiPicker(event) { |
| 214 | + if (uiStore.isEmojiPickerVisible && !event.target.closest('.picker-container, .input-container')) { |
| 215 | + uiStore.toggleEmojiPicker(false); |
| 216 | + } |
| 217 | +} |
| 218 | +// ✅ MODIFICATION END |
| 219 | +
|
204 | 220 | async function handleFileSelect(event) { const file = event.target.files[0]; if (file) await processFile(file); if(event.target) event.target.value = ''; } |
205 | 221 | async function handlePaste(event) { const file = event.clipboardData.files[0]; if (file?.type.startsWith('image/')) { event.preventDefault(); await processFile(file); } } |
206 | 222 | async function processFile(file) { |
|
0 commit comments