Skip to content

Commit

Permalink
Minor fixes (#1299)
Browse files Browse the repository at this point in the history
* Dont duplicate ph logs

* Disconnect Session Connector

* Avoid duplicate estimations
  • Loading branch information
tarrencev authored Jan 20, 2025
1 parent cc2a28b commit ccae5a5
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 34 deletions.
4 changes: 4 additions & 0 deletions packages/connector/src/session.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ export default class SessionConnector extends InjectedConnector {
this.controller = controller;
}

async disconnect() {
this.controller.disconnect();
}

static fromConnectors(connectors: Connector[]): SessionConnector {
const connector = connectors.find((c) => c.id === "controller_session");
if (!connector) {
Expand Down
16 changes: 0 additions & 16 deletions packages/controller/src/session/provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -219,23 +219,13 @@ export default class SessionProvider extends BaseProvider {

// Check expiration
const expirationTime = parseInt(sessionRegistration.expiresAt) * 1000;
console.log("Session expiration check:", {
expirationTime,
currentTime: Date.now(),
expired: Date.now() >= expirationTime,
});
if (Date.now() >= expirationTime) {
console.log("Session expired, clearing stored session");
this.clearStoredSession();
return;
}

// Check stored policies
const storedPoliciesStr = localStorage.getItem("sessionPolicies");
console.log("Checking stored policies:", {
storedPoliciesStr,
currentPolicies: this._policies,
});
if (storedPoliciesStr) {
const storedPolicies = JSON.parse(
storedPoliciesStr,
Expand All @@ -245,14 +235,8 @@ export default class SessionProvider extends BaseProvider {
this._policies,
storedPolicies,
);
console.log("Policy validation result:", {
isValid,
storedPolicies,
requestedPolicies: this._policies,
});

if (!isValid) {
console.log("Policy validation failed, clearing stored session");
this.clearStoredSession();
return;
}
Expand Down
4 changes: 3 additions & 1 deletion packages/keychain/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,11 +45,13 @@
"react-router-dom": "catalog:",
"sonner": "catalog:",
"viem": "catalog:",
"wagmi": "^1.4.12"
"wagmi": "^1.4.12",
"lodash": "^4.17.21"
},
"devDependencies": {
"@cartridge/eslint": "workspace:*",
"@cartridge/tsconfig": "workspace:*",
"@types/lodash": "^4.14.202",
"@chromatic-com/storybook": "^1.9.0",
"@storybook/addon-essentials": "catalog:",
"@storybook/addon-interactions": "catalog:",
Expand Down
23 changes: 22 additions & 1 deletion packages/keychain/src/components/ExecutionContainer.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { useState, useCallback, useEffect } from "react";
import { useState, useCallback, useEffect, useRef } from "react";
import { Button } from "@cartridge/ui-next";
import { Container, Footer } from "@/components/layout";
import { useConnection } from "@/hooks/connection";
Expand All @@ -10,6 +10,7 @@ import { DeployController } from "./DeployController";
import { ErrorCode } from "@cartridge/account-wasm/controller";
import { BannerProps } from "./layout/container/header/Banner";
import { parseControllerError } from "@/utils/connection/execute";
import isEqual from "lodash/isEqual";

interface ExecutionContainerProps {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
Expand Down Expand Up @@ -50,6 +51,12 @@ export function ExecutionContainer({
"execute",
);

// Prevent unnecessary estimate fee calls.
const prevTransactionsRef = useRef({
transactions: undefined,
transactionsDetail: undefined,
});

const estimateFees = useCallback(
// eslint-disable-next-line @typescript-eslint/no-explicit-any
async (transactions: any, transactionsDetail?: any) => {
Expand Down Expand Up @@ -77,6 +84,20 @@ export function ExecutionContainer({
return;
}

// Only estimate if transactions or details have changed
if (
isEqual(prevTransactionsRef.current.transactions, transactions) &&
isEqual(
prevTransactionsRef.current.transactionsDetail,
transactionsDetail,
)
) {
return;
}

// Update ref with current values
prevTransactionsRef.current = { transactions, transactionsDetail };

const estimateFeesAsync = async () => {
await estimateFees(transactions, transactionsDetail);
};
Expand Down
22 changes: 8 additions & 14 deletions packages/keychain/src/components/home.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,14 @@ export function Home() {
}
}, [controller, policies]);

useEffect(() => {
if (context?.type) {
posthog?.capture(
`Call ${context.type.charAt(0).toUpperCase() + context.type.slice(1)}`,
);
}
}, [context?.type, posthog]);

if (window.self === window.top || !context?.origin) {
return <></>;
}
Expand All @@ -57,8 +65,6 @@ export function Home() {

switch (context.type) {
case "connect": {
posthog?.capture("Call Connect");

// if no policies, we can connect immediately
if (
!policies ||
Expand Down Expand Up @@ -99,13 +105,9 @@ export function Home() {
}

case "logout": {
posthog?.capture("Call Logout");

return <Logout />;
}
case "sign-message": {
posthog?.capture("Call Sign Message");

const ctx = context as SignMessageCtx;
return (
<SignMessage
Expand All @@ -123,8 +125,6 @@ export function Home() {
}

case "execute": {
posthog?.capture("Call Execute");

const ctx = context as ExecuteCtx;
if (!hasSessionForPolicies) {
return (
Expand Down Expand Up @@ -162,8 +162,6 @@ export function Home() {
}

case "deploy": {
posthog?.capture("Call Deploy");

const ctx = context as DeployCtx;
return (
<DeployController
Expand All @@ -177,13 +175,9 @@ export function Home() {
);
}
case "open-settings": {
posthog?.capture("Call Open Settings");

return <Settings />;
}
case "open-purchase-credits": {
posthog?.capture("Call Purchase Credits");

return <PurchaseCredits />;
}
default:
Expand Down
10 changes: 8 additions & 2 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit ccae5a5

Please sign in to comment.