From 9ec088320bc15a2bc4d1d9c8e96f2fb4aa305855 Mon Sep 17 00:00:00 2001 From: Justin Poehnelt Date: Fri, 11 Jun 2021 18:29:25 +0000 Subject: [PATCH 1/3] feat: resolve window.google --- src/index.test.ts | 9 +++++---- src/index.ts | 8 ++++---- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/index.test.ts b/src/index.test.ts index 0b416024..16bf98b4 100644 --- a/src/index.test.ts +++ b/src/index.test.ts @@ -292,8 +292,9 @@ test("loader should resolve immediately when successfully loaded", async () => { // use await/async pattern since the promise resolves without trigger const loader = new Loader({ apiKey: "foo", retries: 0 }); loader["done"] = true; - - await expect(loader.loadPromise()).resolves.toBeUndefined(); + // TODO causes warning + window.google = { maps: { version: "3.*.*" } as any }; + await expect(loader.loadPromise()).resolves.toBeDefined(); }); test("loader should resolve immediately when failed loading", async () => { @@ -324,7 +325,7 @@ test("loader should resolve immediately when google.maps defined", async () => { const loader = new Loader({ apiKey: "foo" }); window.google = { maps: { version: "3.*.*" } as any }; console.warn = jest.fn(); - await expect(loader.loadPromise()).resolves.toBeUndefined(); + await expect(loader.loadPromise()).resolves.toBeDefined(); delete window.google; expect(console.warn).toHaveBeenCalledTimes(1); }); @@ -334,7 +335,7 @@ test("loader should not warn if done and google.maps is defined", async () => { loader["done"] = true; window.google = { maps: { version: "3.*.*" } as any }; console.warn = jest.fn(); - await expect(loader.loadPromise()).resolves.toBeUndefined(); + await expect(loader.loadPromise()).resolves.toBeDefined(); delete window.google; expect(console.warn).toHaveBeenCalledTimes(0); }); diff --git a/src/index.ts b/src/index.ts index e9d229f5..08db03d9 100644 --- a/src/index.ts +++ b/src/index.ts @@ -180,7 +180,7 @@ export interface LoaderOptions { * libraries: ["places"] * }); * - * loader.load().then(() => { + * loader.load().then((google) => { * const map = new google.maps.Map(...) * }) * ``` @@ -367,7 +367,7 @@ export class Loader { /** * Load the Google Maps JavaScript API script and return a Promise. */ - load(): Promise { + load(): Promise { return this.loadPromise(); } @@ -376,11 +376,11 @@ export class Loader { * * @ignore */ - loadPromise(): Promise { + loadPromise(): Promise { return new Promise((resolve, reject) => { this.loadCallback((err: Event) => { if (!err) { - resolve(); + resolve(window.google); } else { reject(err); } From 8af64fae974e2f38f6caa634da41f037635e52fb Mon Sep 17 00:00:00 2001 From: Justin Poehnelt Date: Fri, 11 Jun 2021 18:49:21 +0000 Subject: [PATCH 2/3] docs(README): update readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a871b2dd..e5eb883c 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ Using a promise for when the script has loaded. // Promise loader .load() - .then(() => { + .then((google) => { new google.maps.Map(document.getElementById("map"), mapOptions); }) .catch(e => { From 21face2bd519cae1ac5585e1ebd388a762307990 Mon Sep 17 00:00:00 2001 From: Justin Poehnelt Date: Fri, 11 Jun 2021 18:50:41 +0000 Subject: [PATCH 3/3] chore: update example --- examples/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/index.html b/examples/index.html index cafd2d0a..a5468f98 100644 --- a/examples/index.html +++ b/examples/index.html @@ -61,7 +61,7 @@ // Promise loader .load() - .then(() => { + .then((google) => { new google.maps.Map(document.getElementById("map"), mapOptions); }) .catch((e) => {