mirror of
https://github.com/Heretek-AI/GDevelop.git
synced 2026-08-25 12:23:58 -04:00
d88dc4772f
Only show in developer changelog
46 lines
1.4 KiB
TypeScript
46 lines
1.4 KiB
TypeScript
namespace gdjs {
|
|
const logger = new gdjs.Logger('Firebase (setup)');
|
|
export namespace evtTools {
|
|
/**
|
|
* Firebase Event Tools
|
|
* @namespace
|
|
*/
|
|
export namespace firebaseTools {
|
|
/**
|
|
* An array of callbacks to call when the app gets initialized.
|
|
*/
|
|
export const onAppCreated: Array<() => void> = [];
|
|
|
|
/**
|
|
* Sets up the Firebase SDK. Only exported for testing purposes.
|
|
* @internal
|
|
*/
|
|
export const _setupFirebase = async (runtimeScene: gdjs.RuntimeScene) => {
|
|
try {
|
|
var firebaseConfig = JSON.parse(
|
|
//@ts-expect-error We have a try catch to catch this potential error.
|
|
runtimeScene
|
|
.getGame()
|
|
.getExtensionProperty('Firebase', 'FirebaseConfig')
|
|
);
|
|
} catch (e) {
|
|
logger.error('The Firebase configuration is invalid! Error: ' + e);
|
|
return;
|
|
}
|
|
if (typeof firebaseConfig !== 'object') return;
|
|
if (firebase.apps.length !== 0) await firebase.app().delete();
|
|
firebase.initializeApp(firebaseConfig);
|
|
for (let func of onAppCreated) {
|
|
try {
|
|
func();
|
|
} catch (e) {
|
|
logger.error('An error occurred while running a callback: ' + e);
|
|
}
|
|
}
|
|
};
|
|
|
|
gdjs.registerFirstRuntimeSceneLoadedCallback(_setupFirebase);
|
|
}
|
|
}
|
|
}
|