Ensure CSS is added after html edit.

This commit is contained in:
Nils Norman Haukås 2016-08-27 20:36:59 +02:00
parent f1e3180323
commit 98028d6430
2 changed files with 76 additions and 73 deletions

View file

@ -18,7 +18,10 @@ import 'ngstorage';
console.log('Finished importing');
if (!window.tagitTestMode) {
preparePage(loadAngular);
preparePage(function () {
loadAngular()
chrome.runtime.sendMessage({command: 'injectCSS'})
});
}
else {
loadAngular();

View file

@ -1,97 +1,97 @@
var tabThatLoadedOurApp = null;
chrome.browserAction.onClicked.addListener(function (tab) {
isMenuOpen(function (responseIsItOpen) {
if (responseIsItOpen) {
console.log('Closing menu');
chrome.tabs.reload();
} else {
console.log('Opening menu');
injectIframe(tab);
}
})
chrome.browserAction.onClicked.addListener(function(tab) {
tabThatLoadedOurApp = tab;
isMenuOpen(function(responseIsItOpen) {
if (responseIsItOpen) {
console.log('Closing menu');
chrome.tabs.reload();
} else {
console.log('Opening menu');
chrome.tabs.executeScript(tab.id, {
file: 'app.js'
});
}
})
});
function isMenuOpen(callback) {
messageExtension('isMenuOpen').then(callback);
}
function injectIframe(tab) {
chrome.tabs.executeScript(tab.id, {
file: 'app.js'
}, () => {
chrome.tabs.insertCSS(tab.id, {
file: 'style.css',
allFrames: true
});
});
messageExtension('isMenuOpen').then(callback);
}
/**
* Start listening for messages coming from the injected
* javascript.
*/
chrome.runtime.onMessage.addListener((msg) => {
console.log('chrome.runtime.onMessage.addListener(msg)');
console.log(msg);
if (msg.command === 'loginAndRequestUserInfo') {
console.log('Extension got a command to retrieve user info');
chrome.runtime.onMessage.addListener(function(msg) {
loginUser()
.then(askForUserEmail)
.then(function (userInfo) {
console.log('Background.js received userInfo:');
console.log(userInfo);
messageExtension({ loginObj: userInfo });
});
}
console.log('chrome.runtime.onMessage.addListener(msg)');
console.log(msg);
if (msg.command === 'logOutUser') {
logOutUser().then(function () {
messageExtension('deletedUserAuthToken');
});
}
if (msg.command === 'loginAndRequestUserInfo') {
console.log('Extension got a command to retrieve user info');
loginUser()
.then(askForUserEmail)
.then(function(userInfo) {
console.log('Background.js received userInfo:');
console.log(userInfo);
messageExtension({ loginObj: userInfo });
});
}
if (msg.command === 'logOutUser') {
logOutUser().then(function() {
messageExtension('deletedUserAuthToken');
});
}
if (msg.command === 'injectCSS') {
chrome.tabs.insertCSS(tabThatLoadedOurApp.id, {
file: 'style.css',
allFrames: true
});
}
});
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);
resolve(token);
})
});
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);
resolve(token);
})
});
}
function askForUserEmail() {
return new Promise(function (resolve, reject) {
chrome.identity.getProfileUserInfo(resolve);
});
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);
})
});
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.
*/
return new Promise(function (resolve, reject) {
chrome.tabs.query({ active: true }, function (tabs) {
chrome.tabs.sendMessage(tabs[0].id, messageToSend, resolve);
});
})
}
/**
* 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.
*/
return new Promise(function(resolve, reject) {
chrome.tabs.query({ active: true }, function(tabs) {
chrome.tabs.sendMessage(tabs[0].id, messageToSend, resolve);
});
})
}