mirror of
				https://github.com/cinnyapp/cinny.git
				synced 2025-11-04 06:20:28 +03:00 
			
		
		
		
	fix ctrl + k hotkey not working for browser with some extensions (#2481)
	
		
			
	
		
	
	
		
	
		
			Some checks failed
		
		
	
	
		
			
				
	
				Deploy to Netlify (dev) / Deploy to Netlify (push) Has been cancelled
				
			
		
		
	
	
				
					
				
			
		
			Some checks failed
		
		
	
	Deploy to Netlify (dev) / Deploy to Netlify (push) Has been cancelled
				
			This commit is contained in:
		
							parent
							
								
									b3497d9ed6
								
							
						
					
					
						commit
						31c6d13fdf
					
				
					 6 changed files with 40 additions and 42 deletions
				
			
		| 
						 | 
					@ -90,6 +90,7 @@
 | 
				
			||||||
      window.global ||= window;
 | 
					      window.global ||= window;
 | 
				
			||||||
    </script>
 | 
					    </script>
 | 
				
			||||||
    <div id="root"></div>
 | 
					    <div id="root"></div>
 | 
				
			||||||
 | 
					    <div id="portalContainer"></div>
 | 
				
			||||||
    <script type="module" src="./src/index.tsx"></script>
 | 
					    <script type="module" src="./src/index.tsx"></script>
 | 
				
			||||||
  </body>
 | 
					  </body>
 | 
				
			||||||
</html>
 | 
					</html>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										8
									
								
								package-lock.json
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								package-lock.json
									
										
									
										generated
									
									
									
								
							| 
						 | 
					@ -32,7 +32,7 @@
 | 
				
			||||||
        "emojibase-data": "15.3.2",
 | 
					        "emojibase-data": "15.3.2",
 | 
				
			||||||
        "file-saver": "2.0.5",
 | 
					        "file-saver": "2.0.5",
 | 
				
			||||||
        "focus-trap-react": "10.0.2",
 | 
					        "focus-trap-react": "10.0.2",
 | 
				
			||||||
        "folds": "2.2.0",
 | 
					        "folds": "2.3.0",
 | 
				
			||||||
        "html-dom-parser": "4.0.0",
 | 
					        "html-dom-parser": "4.0.0",
 | 
				
			||||||
        "html-react-parser": "4.2.0",
 | 
					        "html-react-parser": "4.2.0",
 | 
				
			||||||
        "i18next": "23.12.2",
 | 
					        "i18next": "23.12.2",
 | 
				
			||||||
| 
						 | 
					@ -7163,9 +7163,9 @@
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/folds": {
 | 
					    "node_modules/folds": {
 | 
				
			||||||
      "version": "2.2.0",
 | 
					      "version": "2.3.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/folds/-/folds-2.2.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/folds/-/folds-2.3.0.tgz",
 | 
				
			||||||
      "integrity": "sha512-uOfck5eWEIK11rhOAEdSoPIvMXwv+D1Go03pxSAKezWVb+uRoBdmE6LEqiLOF+ac4DGmZRMPvpdDsXCg7EVNIg==",
 | 
					      "integrity": "sha512-1KoM21jrg5daxvKrmSY0V04wa946KlNT0z6h017Rsnw2fdtNC6J0f34Ce5GF46Tzi00gZ/7SvCDXMzW/7e5s0w==",
 | 
				
			||||||
      "license": "Apache-2.0",
 | 
					      "license": "Apache-2.0",
 | 
				
			||||||
      "peerDependencies": {
 | 
					      "peerDependencies": {
 | 
				
			||||||
        "@vanilla-extract/css": "1.9.2",
 | 
					        "@vanilla-extract/css": "1.9.2",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -43,7 +43,7 @@
 | 
				
			||||||
    "emojibase-data": "15.3.2",
 | 
					    "emojibase-data": "15.3.2",
 | 
				
			||||||
    "file-saver": "2.0.5",
 | 
					    "file-saver": "2.0.5",
 | 
				
			||||||
    "focus-trap-react": "10.0.2",
 | 
					    "focus-trap-react": "10.0.2",
 | 
				
			||||||
    "folds": "2.2.0",
 | 
					    "folds": "2.3.0",
 | 
				
			||||||
    "html-dom-parser": "4.0.0",
 | 
					    "html-dom-parser": "4.0.0",
 | 
				
			||||||
    "html-react-parser": "4.2.0",
 | 
					    "html-react-parser": "4.2.0",
 | 
				
			||||||
    "i18next": "23.12.2",
 | 
					    "i18next": "23.12.2",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -79,9 +79,8 @@ export function RoomView({ room, eventId }: { room: Room; eventId?: string }) {
 | 
				
			||||||
    useCallback(
 | 
					    useCallback(
 | 
				
			||||||
      (evt) => {
 | 
					      (evt) => {
 | 
				
			||||||
        if (editableActiveElement()) return;
 | 
					        if (editableActiveElement()) return;
 | 
				
			||||||
        // means some menu or modal window is open
 | 
					        const portalContainer = document.getElementById('portalContainer');
 | 
				
			||||||
        const lastNode = document.body.lastElementChild;
 | 
					        if (portalContainer && portalContainer.children.length > 0) {
 | 
				
			||||||
        if (lastNode && !lastNode.hasAttribute('data-last-node')) {
 | 
					 | 
				
			||||||
          return;
 | 
					          return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if (shouldFocusMessageField(evt) || isKeyHotkey('mod+v', evt)) {
 | 
					        if (shouldFocusMessageField(evt) || isKeyHotkey('mod+v', evt)) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -434,9 +434,8 @@ export function SearchModalRenderer() {
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          // means some menu or modal window is open
 | 
					          const portalContainer = document.getElementById('portalContainer');
 | 
				
			||||||
          const lastNode = document.body.lastElementChild;
 | 
					          if (portalContainer && portalContainer.children.length > 0) {
 | 
				
			||||||
          if (lastNode && !lastNode.hasAttribute('data-last-node')) {
 | 
					 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
          setOpen(true);
 | 
					          setOpen(true);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,6 @@
 | 
				
			||||||
import React, { useEffect } from 'react';
 | 
					import React from 'react';
 | 
				
			||||||
import { Provider as JotaiProvider } from 'jotai';
 | 
					import { Provider as JotaiProvider } from 'jotai';
 | 
				
			||||||
 | 
					import { OverlayContainerProvider, PopOutContainerProvider, TooltipContainerProvider } from 'folds';
 | 
				
			||||||
import { RouterProvider } from 'react-router-dom';
 | 
					import { RouterProvider } from 'react-router-dom';
 | 
				
			||||||
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
 | 
					import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
 | 
				
			||||||
import { ReactQueryDevtools } from '@tanstack/react-query-devtools';
 | 
					import { ReactQueryDevtools } from '@tanstack/react-query-devtools';
 | 
				
			||||||
| 
						 | 
					@ -13,41 +14,39 @@ import { ScreenSizeProvider, useScreenSize } from '../hooks/useScreenSize';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const queryClient = new QueryClient();
 | 
					const queryClient = new QueryClient();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const useLastNodeToDetectReactPortalEntry = () => {
 | 
					 | 
				
			||||||
  useEffect(() => {
 | 
					 | 
				
			||||||
    const lastDiv = document.createElement('div');
 | 
					 | 
				
			||||||
    lastDiv.setAttribute('data-last-node', 'true');
 | 
					 | 
				
			||||||
    document.body.appendChild(lastDiv);
 | 
					 | 
				
			||||||
  }, []);
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function App() {
 | 
					function App() {
 | 
				
			||||||
  const screenSize = useScreenSize();
 | 
					  const screenSize = useScreenSize();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  useLastNodeToDetectReactPortalEntry();
 | 
					  const portalContainer = document.getElementById('portalContainer') ?? undefined;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return (
 | 
					  return (
 | 
				
			||||||
    <ScreenSizeProvider value={screenSize}>
 | 
					    <TooltipContainerProvider value={portalContainer}>
 | 
				
			||||||
      <FeatureCheck>
 | 
					      <PopOutContainerProvider value={portalContainer}>
 | 
				
			||||||
        <ClientConfigLoader
 | 
					        <OverlayContainerProvider value={portalContainer}>
 | 
				
			||||||
          fallback={() => <ConfigConfigLoading />}
 | 
					          <ScreenSizeProvider value={screenSize}>
 | 
				
			||||||
          error={(err, retry, ignore) => (
 | 
					            <FeatureCheck>
 | 
				
			||||||
            <ConfigConfigError error={err} retry={retry} ignore={ignore} />
 | 
					              <ClientConfigLoader
 | 
				
			||||||
          )}
 | 
					                fallback={() => <ConfigConfigLoading />}
 | 
				
			||||||
        >
 | 
					                error={(err, retry, ignore) => (
 | 
				
			||||||
          {(clientConfig) => (
 | 
					                  <ConfigConfigError error={err} retry={retry} ignore={ignore} />
 | 
				
			||||||
            <ClientConfigProvider value={clientConfig}>
 | 
					                )}
 | 
				
			||||||
              <QueryClientProvider client={queryClient}>
 | 
					              >
 | 
				
			||||||
                <JotaiProvider>
 | 
					                {(clientConfig) => (
 | 
				
			||||||
                  <RouterProvider router={createRouter(clientConfig, screenSize)} />
 | 
					                  <ClientConfigProvider value={clientConfig}>
 | 
				
			||||||
                </JotaiProvider>
 | 
					                    <QueryClientProvider client={queryClient}>
 | 
				
			||||||
                <ReactQueryDevtools initialIsOpen={false} />
 | 
					                      <JotaiProvider>
 | 
				
			||||||
              </QueryClientProvider>
 | 
					                        <RouterProvider router={createRouter(clientConfig, screenSize)} />
 | 
				
			||||||
            </ClientConfigProvider>
 | 
					                      </JotaiProvider>
 | 
				
			||||||
          )}
 | 
					                      <ReactQueryDevtools initialIsOpen={false} />
 | 
				
			||||||
        </ClientConfigLoader>
 | 
					                    </QueryClientProvider>
 | 
				
			||||||
      </FeatureCheck>
 | 
					                  </ClientConfigProvider>
 | 
				
			||||||
    </ScreenSizeProvider>
 | 
					                )}
 | 
				
			||||||
 | 
					              </ClientConfigLoader>
 | 
				
			||||||
 | 
					            </FeatureCheck>
 | 
				
			||||||
 | 
					          </ScreenSizeProvider>
 | 
				
			||||||
 | 
					        </OverlayContainerProvider>
 | 
				
			||||||
 | 
					      </PopOutContainerProvider>
 | 
				
			||||||
 | 
					    </TooltipContainerProvider>
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue