From fd66219b3cbfdf878b58ed107f62d36cdc0cfe72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nils=20Norman=20Hauk=C3=A5s?= Date: Sun, 14 Aug 2016 23:44:03 +0200 Subject: [PATCH] Promisified background.js --- src/plugin-specific/background.js | 61 ++++++++++++++++++++++--------- 1 file changed, 43 insertions(+), 18 deletions(-) diff --git a/src/plugin-specific/background.js b/src/plugin-specific/background.js index 49e3d19..a19adf1 100644 --- a/src/plugin-specific/background.js +++ b/src/plugin-specific/background.js @@ -32,36 +32,61 @@ function injectIframe(tab) { * javascript. */ chrome.runtime.onMessage.addListener((msg) => { - if (msg.command === 'requestUserInfo') { + if (msg.command === 'loginAndRequestUserInfo') { console.log('Extension got a command to retrieve user info'); + + loginUser() + .then(askForUserEmail) + .then(function (userInfo) { + messageExtension({ loginObj: userInfo }); + }); + } + + if (msg.command === 'logOutUser') { + logOutUser().then(function () { + messageExtension('deletedUserAuthToken'); + }); + } + +}); + +function loginUser() { + return new Promise(function (resolve, reject) { chrome.identity.getAuthToken({ interactive: true }, function (token) { console.log('user was logged in and token is: '); console.log(token); - //with the user logged in we can finally ask for email. - askForUserEmail(); + resolve(token); }) - } -}); - -function askForUserEmail() { - chrome.identity.getProfileUserInfo((userInfo) => { - console.log(userInfo) - messageExtension({ loginObj: userInfo }) }); } -function messageExtension(messageToSend, callback) { +function askForUserEmail() { + return new Promise(function (resolve, reject) { + chrome.identity.getProfileUserInfo(resolve); + }); +} + +function logOutUser() { + return new Promise(function (resolve, reject) { + loginUser() + .then(function (loadedToken) { + chrome.identity.removeCachedAuthToken({ token: loadedToken }, resolve); + }) + }); +} + +function messageExtension(messageToSend) { /** * small note: Cannot query tab for currentWindow: true because * opening a new window to approve the app permissions * will prevent this script from finding the right * tab to message with the user info. */ - chrome.tabs.query({ active: true }, function (tabs) { - if (callback) { - chrome.tabs.sendMessage(tabs[0].id, messageToSend, callback); - } else { - chrome.tabs.sendMessage(tabs[0].id, messageToSend); - } - }); + return new Promise(function (resolve, reject) { + chrome.tabs.query({ active: true }, function (tabs) { + chrome.tabs.sendMessage(tabs[0].id, messageToSend, resolve); + }); + }) + + } \ No newline at end of file