Skip to content

Commit

Permalink
feat(core): adjust the start method in peerConnection to accept an id…
Browse files Browse the repository at this point in the history
…entifier (#455)

* feat: adjust the start method to accept an identifier

* feat: allow overriding of a connection

* feat: remove NO_IDENTIFIERS_STORED var

* feat: revert getIdentifierOobi parameters types
  • Loading branch information
Sotatek-HocNguyena committed May 8, 2024
1 parent e5839a8 commit 63d0aa5
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 14 deletions.
17 changes: 9 additions & 8 deletions src/core/cardano/walletConnect/identityWalletConnect.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@ import { Agent } from "../../agent/agent";
class IdentityWalletConnect extends CardanoPeerConnect {
static readonly IDENTIFIER_ID_NOT_LOCATED =
"The id doesn't correspond with any stored identifier";
static readonly NO_IDENTIFIERS_STORED = "No stored identifiers";

private selectedAid: string;
getIdentifierOobi: () => Promise<string>;
sign: (identifier: string, payload: string) => Promise<string>;

Expand All @@ -22,6 +21,7 @@ class IdentityWalletConnect extends CardanoPeerConnect {
walletInfo: IWalletInfo,
seed: string | null,
announce: string[],
selectedAid: string,
discoverySeed?: string | null
) {
super(walletInfo, {
Expand All @@ -30,16 +30,17 @@ class IdentityWalletConnect extends CardanoPeerConnect {
discoverySeed: discoverySeed,
logLevel: "info",
});

this.selectedAid = selectedAid;
this.signerCache = new Map();

this.getIdentifierOobi = async (): Promise<string> => {
const identifiers = await Agent.agent.identifiers.getIdentifiers();
if (!(identifiers && identifiers.length > 0)) {
throw new Error(IdentityWalletConnect.NO_IDENTIFIERS_STORED);
const identifier = await Agent.agent.identifiers.getIdentifier(
this.selectedAid
);
if (!identifier) {
throw new Error(IdentityWalletConnect.IDENTIFIER_ID_NOT_LOCATED);
}

return Agent.agent.connections.getOobi(identifiers[0].signifyName);
return Agent.agent.connections.getOobi(identifier.signifyName);
};

this.sign = async (
Expand Down
21 changes: 15 additions & 6 deletions src/core/cardano/walletConnect/peerConnection.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,9 @@ class PeerConnection {

private identityWalletConnect: IdentityWalletConnect | undefined;
private connected = false;
private connectedDAppAdress = "";

async start() {
async start(selectedAid: string) {
let meerkatSeed = null;

try {
Expand All @@ -40,20 +41,29 @@ class PeerConnection {
} catch {
meerkatSeed = null;
}

if (
this.identityWalletConnect &&
this.connectedDAppAdress.trim().length !== 0
) {
this.disconnectDApp(this.connectedDAppAdress);
}
this.identityWalletConnect = new IdentityWalletConnect(
this.walletInfo,
meerkatSeed,
this.announce
this.announce,
selectedAid
);
this.identityWalletConnect.setOnConnect(
(connectMessage: IConnectMessage) => {
this.connected = true;
if (!connectMessage.error) {
this.connected = true;
this.connectedDAppAdress = connectMessage.dApp.address;
}
}
);

this.identityWalletConnect.setOnDisconnect(
(connectMessage: IConnectMessage) => {
(disConnectMessage: IConnectMessage) => {
this.connected = false;
}
);
Expand All @@ -73,7 +83,6 @@ class PeerConnection {

const seed = this.identityWalletConnect.connect(dAppIdentifier);
SecureStorage.set(KeyStoreKeys.MEERKAT_SEED, seed);
this.connected = true;
}

disconnectDApp(dAppIdentifier: string) {
Expand Down

0 comments on commit 63d0aa5

Please sign in to comment.