Skip to content

Commit

Permalink
Merge pull request #43 from rodolfomiranda/reconnection
Browse files Browse the repository at this point in the history
Reconnect and passcode timeout
  • Loading branch information
rodolfomiranda committed Jan 8, 2024
2 parents 1f63ed6 + ed02be8 commit 0d67ffb
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 27 deletions.
8 changes: 5 additions & 3 deletions src/pages/background/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { configService } from "@pages/background/services/config";
import { userService } from "@pages/background/services/user";
import { signifyService } from "@pages/background/services/signify";
import { IMessage } from "@pages/background/types";
import { senderIsPopup } from "@pages/background/utils";
Expand Down Expand Up @@ -51,7 +52,7 @@ chrome.runtime.onMessage.addListener(function (
}
} else if (senderIsPopup(sender)) {
// handle messages from Popup
console.log("Message received from browser extension popup: " + message);
console.log("Message received from browser extension popup: " + message.type + ":" + message.subtype);

if (
message.type === "authentication" &&
Expand All @@ -66,6 +67,7 @@ chrome.runtime.onMessage.addListener(function (
message.subtype === "disconnect-agent"
) {
await signifyService.disconnect();
await userService.removePasscode();
sendResponse({ data: { isConnected: false } });
}

Expand All @@ -75,10 +77,10 @@ chrome.runtime.onMessage.addListener(function (
) {
await signifyService.connect(
message.data.vendorUrl,
message.data.passcode,
message.data.bootUrl
message.data.passcode
);
await configService.setUrl(message.data.vendorUrl);
await userService.setPasscode(message.data.passcode);
const state = await signifyService.isConnected();
sendResponse({ data: { state } });
}
Expand Down
6 changes: 3 additions & 3 deletions src/pages/background/services/browser-storage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,21 +17,21 @@ const BrowserStorage = (storage = getNonSyncStorage()) => {
});
}

const getValue = (name) => {
const getValue = (name:string) => {
return new Promise(resolve => {
_storage.get(name, items => {
resolve(items[name]);
});
});
}

const removeKey = (name) => {
const removeKey = (name:string) => {
return new Promise<void>(resolve => {
_storage.remove(name, () => resolve());
});
}

const setValue = (name, value) => {
const setValue = (name:string, value:any) => {
return new Promise<void>(resolve => {
_storage.set({ [name]: value }, () => resolve());
});
Expand Down
8 changes: 4 additions & 4 deletions src/pages/background/services/config.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
import { browserStorageService } from "@pages/background/services/browser-storage"

const CONFIG_ENUMS = {
VENDOR_URL: "vendor-url"
KERIA_URL: "keria-url"
}

const Config = () => {
const getUrl = async (): Promise<string> => {
return await browserStorageService.getValue(CONFIG_ENUMS.VENDOR_URL);
return await browserStorageService.getValue(CONFIG_ENUMS.KERIA_URL);
}

const removeUrl = async () => {
await browserStorageService.removeKey(CONFIG_ENUMS.VENDOR_URL);
await browserStorageService.removeKey(CONFIG_ENUMS.KERIA_URL);
}

const setUrl = async (token: string) => {
await browserStorageService.setValue(CONFIG_ENUMS.VENDOR_URL, token)
await browserStorageService.setValue(CONFIG_ENUMS.KERIA_URL, token)
}

return {
Expand Down
26 changes: 19 additions & 7 deletions src/pages/background/services/signify.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,32 @@
import { SignifyClient, Tier, ready, Authenticater } from "signify-ts";
import { userService } from "@pages/background/services/user";
import { configService } from "@pages/background/services/config";



const Signify = () => {
let _client: SignifyClient | null;

const connect = async (url: string, passcode: string, boot_url: string) => {
const connect = async (url: string, passcode: string) => {
await ready();
_client = new SignifyClient(url, passcode, Tier.low, boot_url);
_client = new SignifyClient(url, passcode, Tier.low);
await _client.connect();
};
setTimeout(async () => {
console.log("Timer expired, client and passcode zeroed out");
_client = null;
await userService.removePasscode();
}, 120000);
}

const isConnected = async () => {
console.log("_client is connected", _client);
return _client ? true : false
const passcode = await userService.getPasscode();
const url = await configService.getUrl();
if (url && passcode && !_client) {
await connect(url, passcode);
}

// const state = await _client?.state();
// return state;
console.log(_client ? "Signify client is connected" : "Signify client is not connected");
return _client ? true : false
};

const validateClient = () => {
Expand Down
20 changes: 10 additions & 10 deletions src/pages/background/services/user.ts
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
import { browserStorageService } from "@pages/background/services/browser-storage"

const USER_ENUMS = {
TOKEN: "user-token"
PASSCODE: "user-passcode"
}

const User = () => {
const getToken = async () => {
return await browserStorageService.getValue(USER_ENUMS.TOKEN);
const getPasscode = async () : Promise<string> => {
return await browserStorageService.getValue(USER_ENUMS.PASSCODE);
}

const removeToken = async () => {
await browserStorageService.removeKey(USER_ENUMS.TOKEN);
const removePasscode = async () => {
await browserStorageService.removeKey(USER_ENUMS.PASSCODE);
}

const setToken = async (token: string) => {
await browserStorageService.setValue(USER_ENUMS.TOKEN, token)
const setPasscode = async (passcode: string) => {
await browserStorageService.setValue(USER_ENUMS.PASSCODE, passcode)
}

return {
removeToken,
getToken,
setToken
removePasscode,
getPasscode,
setPasscode
}
}

Expand Down

0 comments on commit 0d67ffb

Please sign in to comment.