diff --git a/src/events.js b/src/events.js index b3dd5af..16123f2 100644 --- a/src/events.js +++ b/src/events.js @@ -4,31 +4,34 @@ * @param {*} changeInfo * @param {*} tab */ -const updated = (tabId, changeInfo, tab) => { - if (changeInfo.status == 'complete' && tab.active) { - chrome.tabs.executeScript(tab.ib, { - file: 'login.js', - }); - } +const updated = (details) => { + chrome.scripting.executeScript( + { + target: { tabId: details.tabId }, + files: ['login.js'], + }, + () => {} + ); }; /** * Run when extension is installed */ -const installed = () => { - window.open('@pages/options.html', '_blank'); +const installed = (reason) => { + if (reason === chrome.runtime.OnInstalledReason.INSTALL) { + chrome.tabs.create({ + url: '@pages/options.html', + }); + } getAccounts((accounts) => { - chrome.storage.sync.set( - { - enabled: true, - accounts: accounts || [], - }, - () => getAccounts(console.log) - ); + chrome.storage.sync.set({ + enabled: true, + accounts: accounts || [], + }); }); - chrome.browserAction.setBadgeText({ + chrome.action.setBadgeText({ text: 'ON', }); }; @@ -41,5 +44,13 @@ const getAccounts = (callback) => { chrome.storage.sync.get('accounts', ({ accounts }) => callback(accounts)); }; -chrome.tabs.onUpdated.addListener(updated); +const filter = { + url: [ + { + urlMatches: 'https://accounts.magister.net/*', + }, + ], +}; + +chrome.webNavigation.onCompleted.addListener(updated, filter); chrome.runtime.onInstalled.addListener(installed); diff --git a/src/login.js b/src/login.js index 0049da1..a4abc42 100644 --- a/src/login.js +++ b/src/login.js @@ -1,11 +1,15 @@ const $ = document.querySelector.bind(document); const getSettings = (callback) => - chrome.storage.sync.get('accounts', ({ current, accounts }) => callback(accounts[current])); + chrome.storage.sync.get(['accounts', 'primaryAccount'], ({ primaryAccount, accounts }) => { + if (accounts && accounts.length != 0) { + callback(accounts.find((account) => account.username == primaryAccount)); + } + }); const login = () => { - getSettings(async ({ school, number, password }) => { - const schoolPicker = $('scholenkiezer_value'); + getSettings(async ({ school, username: number, password }) => { + const schoolPicker = $('#scholenkiezer_value'); if (schoolPicker) { if (school) { diff --git a/src/manifest.json b/src/manifest.json index 7d2f412..237e95f 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -4,7 +4,7 @@ "version": "3.0", "description": "Auto-Login for Magister 6 webapp.", "options_page": "@pages/options.html", - "homepage_url": "http://mb-o.nl/autologin", + "homepage_url": "http://github.com/guusvanmeerveld/magister-auto-login", "background": { "service_worker": "events.js" }, @@ -24,6 +24,6 @@ "128": "@icons/128x.png", "256": "@icons/256x.png" }, - "permissions": ["storage"], + "permissions": ["storage", "scripting", "webNavigation"], "host_permissions": ["https://accounts.magister.net/*"] } diff --git a/src/stylesheets/options.sass b/src/stylesheets/options.sass index a4529ca..6229504 100644 --- a/src/stylesheets/options.sass +++ b/src/stylesheets/options.sass @@ -12,6 +12,9 @@ position: relative + h3 + margin-bottom: 0 + a position: absolute cursor: pointer