Browse Source

Selected active account and did a little decoding an extraction before building JWT

home-view-notification-improvements
Matthew Raymer 1 year ago
parent
commit
ad3cb10722
  1. 20
      src/App.vue
  2. 6
      sw_scripts/additional-scripts.js
  3. 18
      sw_scripts/safari-notifications.js

20
src/App.vue

@ -431,16 +431,25 @@ export default class App extends Vue {
return outputArray; return outputArray;
} }
// The subscribeToPush method
private subscribeToPush(): Promise<void> { private subscribeToPush(): Promise<void> {
return new Promise<void>((resolve, reject) => { return new Promise<void>((resolve, reject) => {
if ("serviceWorker" in navigator && "PushManager" in window) { if (!("serviceWorker" in navigator && "PushManager" in window)) {
const errorMsg = "Push messaging is not supported";
console.warn(errorMsg);
return reject(new Error(errorMsg));
}
if (Notification.permission !== "granted") {
const errorMsg = "Notification permission not granted";
console.warn(errorMsg);
return reject(new Error(errorMsg));
}
const applicationServerKey = this.urlBase64ToUint8Array(this.b64); const applicationServerKey = this.urlBase64ToUint8Array(this.b64);
const options: PushSubscriptionOptions = { const options: PushSubscriptionOptions = {
userVisibleOnly: true, userVisibleOnly: true,
applicationServerKey: applicationServerKey, applicationServerKey: applicationServerKey,
}; };
console.log(options);
navigator.serviceWorker.ready navigator.serviceWorker.ready
.then((registration) => { .then((registration) => {
@ -454,11 +463,6 @@ export default class App extends Vue {
console.error("Push subscription failed:", error, options); console.error("Push subscription failed:", error, options);
reject(error); reject(error);
}); });
} else {
const errorMsg = "Push messaging is not supported";
console.warn(errorMsg);
reject(new Error(errorMsg));
}
}); });
} }

6
sw_scripts/additional-scripts.js

@ -5,11 +5,9 @@ importScripts(
); );
self.addEventListener("install", (event) => { self.addEventListener("install", (event) => {
event.waitUntil( console.log("Install event fired.");
(async () => {
importScripts("safari-notifications.js"); importScripts("safari-notifications.js");
})(), console.log("scripts imported", event);
);
}); });
self.addEventListener("push", function (event) { self.addEventListener("push", function (event) {

18
sw_scripts/safari-notifications.js

@ -87,6 +87,7 @@ async function fetchAllAccounts() {
async function getNotificationCount() { async function getNotificationCount() {
let secret = null; let secret = null;
let accounts = []; let accounts = [];
let result = null;
if ("secret" in self) { if ("secret" in self) {
secret = self.secret; secret = self.secret;
const secretUint8Array = self.decodeBase64(secret); const secretUint8Array = self.decodeBase64(secret);
@ -94,22 +95,21 @@ async function getNotificationCount() {
const activeDid = settings["activeDid"]; const activeDid = settings["activeDid"];
accounts = await fetchAllAccounts(); accounts = await fetchAllAccounts();
let did = null; let did = null;
let result = null;
/**
for (var i = 0; i < accounts.length; i++) { for (var i = 0; i < accounts.length; i++) {
let account = accounts[i]; let account = accounts[i];
let did = account['did']; let did = account["did"];
if (did == activeDid) { if (did == activeDid) {
let publicKeyHex = account['publicKeyHex']; let publicKeyHex = account["publicKeyHex"];
let identity = account['identity']; let identity = account["identity"];
result = publicKeyHex;
const messageWithNonceAsUint8Array = decodeBase64(identity); const messageWithNonceAsUint8Array = self.decodeBase64(identity);
const nonce = messageWithNonceAsUint8Array.slice(0, 24); const nonce = messageWithNonceAsUint8Array.slice(0, 24);
const message = messageWithNonceAsUint8Array.slice(24, identity.length); const message = messageWithNonceAsUint8Array.slice(24, identity.length);
break;
}
} }
**/ return result;
} }
return accounts.length;
} }
self.getNotificationCount = getNotificationCount; self.getNotificationCount = getNotificationCount;

Loading…
Cancel
Save