mirror of
				https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web.git
				synced 2025-11-04 16:23:41 +08:00 
			
		
		
		
	add_image_pasting
This commit is contained in:
		@@ -1100,6 +1100,45 @@ function _Chat() {
 | 
			
		||||
    };
 | 
			
		||||
    // eslint-disable-next-line react-hooks/exhaustive-deps
 | 
			
		||||
  }, []);
 | 
			
		||||
  
 | 
			
		||||
  const handlePaste = useCallback(
 | 
			
		||||
    async (event: React.ClipboardEvent<HTMLTextAreaElement>) => {
 | 
			
		||||
      const items = (event.clipboardData || window.clipboardData).items;
 | 
			
		||||
      for (const item of items) {
 | 
			
		||||
        if (item.kind === "file" && item.type.startsWith("image/")) {
 | 
			
		||||
          event.preventDefault();
 | 
			
		||||
          const file = item.getAsFile();
 | 
			
		||||
          if (file) {
 | 
			
		||||
            const images: string[] = [];
 | 
			
		||||
            images.push(...attachImages);
 | 
			
		||||
            images.push(
 | 
			
		||||
              ...(await new Promise<string[]>((res, rej) => {
 | 
			
		||||
                setUploading(true);
 | 
			
		||||
                const imagesData: string[] = [];
 | 
			
		||||
                compressImage(file, 256 * 1024)
 | 
			
		||||
                  .then((dataUrl) => {
 | 
			
		||||
                    imagesData.push(dataUrl);
 | 
			
		||||
                    setUploading(false);
 | 
			
		||||
                    res(imagesData);
 | 
			
		||||
                  })
 | 
			
		||||
                  .catch((e) => {
 | 
			
		||||
                    setUploading(false);
 | 
			
		||||
                    rej(e);
 | 
			
		||||
                  });
 | 
			
		||||
              })),
 | 
			
		||||
            );
 | 
			
		||||
            const imagesLength = images.length;
 | 
			
		||||
 | 
			
		||||
            if (imagesLength > 3) {
 | 
			
		||||
              images.splice(3, imagesLength - 3);
 | 
			
		||||
            }
 | 
			
		||||
            setAttachImages(images);
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    [attachImages],
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  async function uploadImage() {
 | 
			
		||||
    const images: string[] = [];
 | 
			
		||||
@@ -1449,6 +1488,7 @@ function _Chat() {
 | 
			
		||||
            onKeyDown={onInputKeyDown}
 | 
			
		||||
            onFocus={scrollToBottom}
 | 
			
		||||
            onClick={scrollToBottom}
 | 
			
		||||
            onPaste={handlePaste}
 | 
			
		||||
            rows={inputRows}
 | 
			
		||||
            autoFocus={autoFocus}
 | 
			
		||||
            style={{
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user