Fixed broken Dropbox integration

This commit is contained in:
Igor Zinken
2026-03-28 18:46:12 +01:00
parent 35e7fa195f
commit b5e62020fb
2 changed files with 22 additions and 24 deletions

View File

@@ -11,19 +11,19 @@
</body>
<script type="text/javascript">
(function() {
var params = window.location.hash.split( "&" );
var accessToken = null;
for ( var i = 0; i < params.length; i++ ) {
var param = params[ i ];
const params = window.location.hash.split( "&" );
let accessToken = null;
for ( let i = 0; i < params.length; i++ ) {
const param = params[ i ];
if ( param.indexOf( "access_token" ) > -1 ) {
accessToken = param.split( "access_token=" )[ 1 ];
break;
}
}
if ( accessToken ) {
window.opener.postMessage({
"accessToken": accessToken,
}, window.opener );
const authChannel = new BroadcastChannel( "dropbox_auth" );
authChannel.postMessage({ accessToken });
window.close();
}
})();
</script>

View File

@@ -1,7 +1,7 @@
/**
* The MIT License (MIT)
*
* Igor Zinken 2020-2023 - https://www.igorski.nl
* Igor Zinken 2020-2026 - https://www.igorski.nl
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
@@ -31,7 +31,6 @@ let registerAccessToken: ( token: string ) => void;
let init: () => void;
let validateScopes: ( scope: string ) => boolean;
let disconnect: () => void;
let loginWindow: Window;
let boundHandler: ( event: MessageEvent ) => void;
const PRIVACY_POLICY_URL = "https://www.igorski.nl/bitmappery/privacy";
@@ -114,23 +113,22 @@ export default {
}
},
loginDropbox(): void {
loginWindow = window.open( this.authUrl );
boundHandler = this.messageHandlerDropbox.bind( this );
window.addEventListener( "message", boundHandler );
},
messageHandlerDropbox({ data }: MessageEvent ): void {
if ( data?.accessToken ) {
registerAccessToken( data.accessToken );
window.removeEventListener( "message", boundHandler );
loginWindow.close();
loginWindow = null;
this.showConnectionMessage( STORAGE_TYPES.DROPBOX );
this.authenticated = true;
const authChannel = new BroadcastChannel( "dropbox_auth" );
let loginWindow: Window;
authChannel.onmessage = ({ data }: MessageEvent ): void => {
if ( data?.accessToken ) {
registerAccessToken( data.accessToken );
this.showConnectionMessage( STORAGE_TYPES.DROPBOX );
this.authenticated = true;
if ( autoOpenFileBrowserOnConnect ) {
this.openFileBrowserDropbox();
if ( autoOpenFileBrowserOnConnect ) {
this.openFileBrowserDropbox();
}
authChannel.close();
loginWindow.close();
}
}
};
loginWindow = window.open( this.authUrl )!;
},
openFileBrowserDropbox(): void {
this.openModal( DROPBOX_FILE_SELECTOR );