Skip to content

Commit

Permalink
Switch network and disconnect
Browse files Browse the repository at this point in the history
  • Loading branch information
andborges committed Sep 27, 2023
1 parent f832771 commit 09939f2
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 1 deletion.
8 changes: 7 additions & 1 deletion packages/extension/src/providers/kadena/methods/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
import kdaAccountsGet from "./kda_accounts_get";
import kdaBalanceGet from "./kda_balance_get";
import kdaSignerSignPayload from "./kda_signer_signPayload";
import kdaSwitchNetwork from "./kda_switchNetwork";

export default [kdaAccountsGet, kdaBalanceGet, kdaSignerSignPayload];
export default [
kdaAccountsGet,
kdaBalanceGet,
kdaSignerSignPayload,
kdaSwitchNetwork,
];
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
import { getCustomError } from "@/libs/error";
import { sendToBackgroundFromBackground } from "@/libs/messenger/extension";
import { InternalMethods } from "@/types/messenger";
import { ProviderRPCRequest } from "@/types/provider";
import { MiddlewareFunction } from "@enkryptcom/types";
import DomainState from "@/libs/domain-state";

import KadenaProvider from "..";
import KDANetworks from "../networks";
import { KadenaNetworks } from "../types";

const method: MiddlewareFunction = function (
this: KadenaProvider,
payload: ProviderRPCRequest,
res,
next
): void {
if (payload.method !== "kda_switchNetwork") return next();
else {
if (
!payload.params ||
payload.params.length < 1 ||
!Object.values(KadenaNetworks).includes(payload.params[0])
) {
return res(getCustomError("kda_switchNetwork: invalid params"));
}

const allNetworks = Object.values(KDANetworks);
const validNetwork = allNetworks.find(
(net) => net.name === payload.params![0]
);

if (validNetwork) {
sendToBackgroundFromBackground({
message: JSON.stringify({
method: InternalMethods.changeNetwork,
params: [validNetwork.name],
}),
provider: validNetwork.provider,
tabId: payload.options?.tabId,
}).then(() => {
const domainState = new DomainState();
domainState
.setSelectedNetwork(validNetwork.name)
.then(() => res(null, true));
});
} else {
return res(
getCustomError(
`kda_switchNetwork: provided network ${
payload.params![0]
} not supported`
)
);
}
}
};

export default method;
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ import DomainState from "@/libs/domain-state";
import EvmAccountState from "@/providers/ethereum/libs/accounts-state";
import BtcAccountState from "@/providers/bitcoin/libs/accounts-state";
import SubstrateAccountState from "@/providers/polkadot/libs/accounts-state";
import KadenaAccountState from "@/providers/kadena/libs/accounts-state";
const isCopied = ref(false);
const domainState = new DomainState();
Expand All @@ -70,6 +71,7 @@ const allAccountStates = [
new EvmAccountState(),
new BtcAccountState(),
new SubstrateAccountState(),
new KadenaAccountState(),
];
const props = defineProps({
name: {
Expand Down

0 comments on commit 09939f2

Please sign in to comment.