Browse Source

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

pull/78/head
Matthew Raymer 10 months ago
parent
commit
ad3cb10722
  1. 50
      src/App.vue
  2. 8
      sw_scripts/additional-scripts.js
  3. 30
      sw_scripts/safari-notifications.js

50
src/App.vue

@ -431,34 +431,38 @@ export default class App extends Vue {
return outputArray;
}
// The subscribeToPush method
private subscribeToPush(): Promise<void> {
return new Promise<void>((resolve, reject) => {
if ("serviceWorker" in navigator && "PushManager" in window) {
const applicationServerKey = this.urlBase64ToUint8Array(this.b64);
const options: PushSubscriptionOptions = {
userVisibleOnly: true,
applicationServerKey: applicationServerKey,
};
console.log(options);
navigator.serviceWorker.ready
.then((registration) => {
return registration.pushManager.subscribe(options);
})
.then((subscription) => {
console.log("Push subscription successful:", subscription);
resolve();
})
.catch((error) => {
console.error("Push subscription failed:", error, options);
reject(error);
});
} else {
if (!("serviceWorker" in navigator && "PushManager" in window)) {
const errorMsg = "Push messaging is not supported";
console.warn(errorMsg);
reject(new Error(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 options: PushSubscriptionOptions = {
userVisibleOnly: true,
applicationServerKey: applicationServerKey,
};
navigator.serviceWorker.ready
.then((registration) => {
return registration.pushManager.subscribe(options);
})
.then((subscription) => {
console.log("Push subscription successful:", subscription);
resolve();
})
.catch((error) => {
console.error("Push subscription failed:", error, options);
reject(error);
});
});
}

8
sw_scripts/additional-scripts.js

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

30
sw_scripts/safari-notifications.js

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

Loading…
Cancel
Save