Skip to content

Commit

Permalink
Ensure that pgAdmin works when opened in an iframe. pgadmin-org#7681
Browse files Browse the repository at this point in the history
  • Loading branch information
yogeshmahajan-1903 authored Jul 16, 2024
1 parent a06c136 commit c4a5268
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 4 deletions.
3 changes: 2 additions & 1 deletion web/pgadmin/static/js/BrowserComponent.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import { getBrowser } from './utils';
import PropTypes from 'prop-types';
import Processes from '../../misc/bgprocess/static/js/Processes';
import { useBeforeUnload } from './custom_hooks';
import pgWindow from 'sources/window';


const objectExplorerGroup = {
Expand Down Expand Up @@ -125,7 +126,7 @@ export default function BrowserComponent({pgAdmin}) {
return (
<PgAdminContext.Provider value={pgAdmin}>
<ModalProvider>
<NotifierProvider pgAdmin={pgAdmin} onReady={()=>setUiReady(true)}/>
<NotifierProvider pgAdmin={pgAdmin} pgWindow={pgWindow} onReady={()=>setUiReady(true)}/>
{browser != 'Electron' && <AppMenuBar />}
<div style={{height: (browser != 'Electron' ? 'calc(100% - 30px)' : '100%')}}>
<Layout
Expand Down
8 changes: 5 additions & 3 deletions web/pgadmin/static/js/helpers/Notifier.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -187,16 +187,18 @@ export function NotifierProvider({ pgAdmin, pgWindow, getInstance, children, onR
const modal = useModal();

useEffect(()=>{
// if open in an iframe then use top pgAdmin
if(window.self != window.top) {
// if opened in an iframe then use top pgAdmin
// pgAdmin itself can open in iframe, skip this in that case.
if(window.self != window.top && pgWindow != window ) {
pgAdmin.Browser.notifier = new Notifier(modal, pgWindow.pgAdmin.Browser.notifier.snackbar);
onReady?.();
getInstance?.(pgAdmin.Browser.notifier);
}
}, []);

// if open in a window, then create your own Snackbar
if(window.self == window.top) {
// if pgAdmin is opened inside an iframe then it also same as new window.
if(window.self == window.top || (window.self != window.top && pgWindow != window )) {
return (
<Root>
<SnackbarProvider
Expand Down

0 comments on commit c4a5268

Please sign in to comment.