diff --git a/src/Parse.js b/src/Parse.js index e4b351923..7554b3c80 100644 --- a/src/Parse.js +++ b/src/Parse.js @@ -47,7 +47,6 @@ const Parse = { /* eslint-enable no-console */ } Parse._initialize(applicationId, javaScriptKey); - EventuallyQueue.poll(); }, _initialize(applicationId: string, javaScriptKey: string, masterKey: string) { @@ -267,12 +266,23 @@ Parse._getInstallationId = function () { }; /** * Enable pinning in your application. - * This must be called before your application can use pinning. + * This must be called after `Parse.initialize` in your application. * + * @param [polling] Allow pinging the server /health endpoint. Default true + * @param [ms] Milliseconds to ping the server. Default 2000ms * @static */ -Parse.enableLocalDatastore = function () { - Parse.LocalDatastore.isEnabled = true; +Parse.enableLocalDatastore = function (polling = true, ms: number = 2000) { + if (!Parse.applicationId) { + console.log("'enableLocalDataStore' must be called after 'initialize'"); + return; + } + if (!Parse.LocalDatastore.isEnabled) { + Parse.LocalDatastore.isEnabled = true; + if (polling) { + EventuallyQueue.poll(ms); + } + } }; /** * Flag that indicates whether Local Datastore is enabled. diff --git a/src/__tests__/Parse-test.js b/src/__tests__/Parse-test.js index d0dd5ab9d..965668b7b 100644 --- a/src/__tests__/Parse-test.js +++ b/src/__tests__/Parse-test.js @@ -114,15 +114,34 @@ describe('Parse module', () => { it('can enable LocalDatastore', () => { jest.spyOn(console, 'log').mockImplementationOnce(() => {}); + jest.spyOn(EventuallyQueue, 'poll').mockImplementationOnce(() => {}); + + Parse.initialize(null, null); + Parse.enableLocalDatastore(); + expect(console.log).toHaveBeenCalledWith( + "'enableLocalDataStore' must be called after 'initialize'" + ); + + Parse.initialize('A', 'B'); Parse.LocalDatastore.isEnabled = false; Parse.enableLocalDatastore(); + expect(Parse.LocalDatastore.isEnabled).toBe(true); expect(Parse.isLocalDatastoreEnabled()).toBe(true); + expect(EventuallyQueue.poll).toHaveBeenCalledTimes(1); + expect(EventuallyQueue.poll).toHaveBeenCalledWith(2000); + + EventuallyQueue.poll.mockClear(); + const polling = false; + Parse.enableLocalDatastore(polling); + expect(EventuallyQueue.poll).toHaveBeenCalledTimes(0); }); it('can dump LocalDatastore', async () => { + jest.spyOn(console, 'log').mockImplementationOnce(() => {}); Parse.LocalDatastore.isEnabled = false; let LDS = await Parse.dumpLocalDatastore(); + expect(console.log).toHaveBeenCalledWith('Parse.enableLocalDatastore() must be called first'); expect(LDS).toEqual({}); Parse.LocalDatastore.isEnabled = true; const controller = { diff --git a/src/__tests__/browser-test.js b/src/__tests__/browser-test.js index 7e1682ce8..e89714204 100644 --- a/src/__tests__/browser-test.js +++ b/src/__tests__/browser-test.js @@ -57,7 +57,7 @@ describe('Browser', () => { jest.spyOn(console, 'log').mockImplementationOnce(() => {}); jest.spyOn(EventuallyQueue, 'poll').mockImplementationOnce(() => {}); Parse.initialize('A', 'B'); - expect(EventuallyQueue.poll).toHaveBeenCalledTimes(1); + expect(EventuallyQueue.poll).toHaveBeenCalledTimes(0); }); it('load StorageController', () => {