Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Port token context to utils #1418

Open
wants to merge 16 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ jobs:
run_install: |
- args: [--frozen-lockfile]
- run: pnpm build
- run: pnpm test:ci --coverage
- run: pnpm test:ci -- --coverage
- uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
Expand Down
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,13 @@
"utils": "pnpm --filter @cartridge/utils",
"example:next": "pnpm --filter @cartridge/controller-example-next",
"example:svelte": "pnpm --filter @cartridge/controller-example-svelte",
"test": "pnpm keychain test",
"test:ci": "pnpm keychain test:ci",
"test": "turbo test",
"test:ci": "turbo test:ci",
"test:storybook": "pnpm turbo build:deps test:storybook",
"test:storybook:update": "pnpm turbo build:deps test:storybook:update"
},
"dependencies": {
"@cartridge/presets": "github:cartridge-gg/presets#c7e6fb7"
"@cartridge/presets": "catalog:"
},
"devDependencies": {
"@changesets/changelog-github": "^0.4.2",
Expand Down
17 changes: 5 additions & 12 deletions packages/keychain/.storybook/main.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import type { StorybookConfig } from "@storybook/react-vite";
import { join, dirname, resolve } from "path";
import path from "path";
import { mergeConfig } from "vite";

/**
* This function is used to resolve the absolute path of a package.
* It is needed in projects that use Yarn PnP or are set up within a monorepo.
*/
function getAbsolutePath(value: string) {
return dirname(require.resolve(join(value, "package.json")));
return path.dirname(require.resolve(path.join(value, "package.json")));
}
const config: StorybookConfig = {
stories: ["../src/**/*.mdx", "../src/**/*.stories.@(ts|tsx)"],
Expand All @@ -19,21 +19,14 @@ const config: StorybookConfig = {
name: getAbsolutePath("@storybook/react-vite"),
options: {},
},
viteFinal: async (config) => {
return mergeConfig(config, {
viteFinal: (config) =>
mergeConfig(config, {
build: {
rollupOptions: {
external: ["vite-plugin-node-polyfills/shims/global"],
},
},
resolve: {
alias: {
react: resolve(__dirname, "../node_modules/react"),
"react-dom": resolve(__dirname, "../node_modules/react-dom"),
},
},
});
},
}),
staticDirs: ["../public"],
previewHead: process.env.SNAPSHOT
? (head) => `${head}<style>*{animation:none!important;}</style>`
Expand Down
2 changes: 1 addition & 1 deletion packages/keychain/.storybook/mock.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { constants, RpcProvider } from "starknet";
import Controller from "@cartridge/controller";
import { controllerConfigs, SessionPolicies } from "@cartridge/presets";
import { Parameters } from "@storybook/react";
import { ConnectionContextValue } from "../src/components/provider/connection";
import { UpgradeInterface } from "../src/hooks/upgrade";
import { ConnectCtx, ConnectionCtx } from "../src/utils/connection/types";
import { defaultTheme } from "@cartridge/presets";
import { useThemeEffect } from "@cartridge/ui-next";
import Controller from "../src/utils/controller";

export interface StoryParameters extends Parameters {
connection?: {
Expand Down
7 changes: 5 additions & 2 deletions packages/keychain/.storybook/provider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ import { QueryClient, QueryClientProvider } from "react-query";
import { mainnet } from "@starknet-react/chains";
import { StarknetConfig, publicProvider, voyager } from "@starknet-react/core";
import { BrowserRouter } from "react-router-dom";
import { TokensProvider } from "@cartridge/utils";
import { ConnectionContext } from "../src/components/provider/connection";
import { UIProvider } from "../src/components/provider/ui";
import { StoryParameters, useMockedConnection } from "./mock";
import { TokensProvider } from "../src/components/provider/tokens";

export function Provider({
children,
Expand All @@ -23,7 +23,10 @@ export function Provider({
<QueryClientProvider client={queryClient}>
<ConnectionContext.Provider value={connection}>
<UIProvider>
<TokensProvider>
<TokensProvider
address={parameters.connection?.controller?.address()}
provider={parameters.connection?.controller?.provider}
>
<BrowserRouter>{children}</BrowserRouter>
</TokensProvider>
</UIProvider>
Expand Down
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this change is due to the new mocked data. i'll create another pr to show all cases of <DeployController /> component.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 0 additions & 10 deletions packages/keychain/global.d.ts

This file was deleted.

13 changes: 11 additions & 2 deletions packages/keychain/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,15 @@
"test:storybook:update": "start-server-and-test 'SNAPSHOT=1 pnpm storybook:serve' 6001 'pnpm test-storybook --url http://127.0.0.1:6001 -u'",
"test:storybook": "start-server-and-test 'pnpm storybook:serve' 6001 'pnpm test-storybook -u'"
},
"imports": {
"#*": [
"./src/*",
"./src/*.ts",
"./src/*.tsx",
"./src/*/index.ts",
"./src/*/index.tsx"
]
},
"dependencies": {
"@cartridge/account-wasm": "workspace:*",
"@cartridge/controller": "workspace:*",
Expand Down Expand Up @@ -64,7 +73,7 @@
"@types/react": "catalog:",
"@types/react-dom": "catalog:",
"@vitejs/plugin-react-swc": "catalog:",
"@vitest/coverage-v8": "2.1.8",
"@vitest/coverage-v8": "catalog:",
"autoprefixer": "catalog:",
"eslint": "catalog:",
"http-server": "catalog:",
Expand All @@ -83,7 +92,7 @@
"vite-plugin-node-polyfills": "^0.22.0",
"vite-plugin-top-level-await": "catalog:",
"vite-plugin-wasm": "catalog:",
"vitest": "^2.1.8"
"vitest": "catalog:"
},
"peerDependencies": {
"@starknet-react/chains": "catalog:",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { ErrorCode } from "@cartridge/account-wasm/controller";
import {
starknetTransactionExecutionErrorTestCases,
starknetTransactionValidationErrorTestCases,
} from "@/utils/errors";
} from "#utils/errors";

const meta = {
component: ControllerErrorAlert,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import type { Meta, StoryObj } from "@storybook/react";
import { DeployController } from "./DeployController";
import { constants, num } from "starknet";
import { JsControllerError } from "@cartridge/account-wasm/controller";
import Controller from "@/utils/controller";
import Controller from "#utils/controller";

const meta = {
component: DeployController,
Expand Down
11 changes: 5 additions & 6 deletions packages/keychain/src/components/DeployController.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,14 @@
ControllerIcon,
} from "@cartridge/ui-next";
import { Funding } from "./funding";
import { useConnection } from "@/hooks/connection";
import { useConnection } from "#hooks/connection";
import { ControllerErrorAlert, ErrorAlert } from "./ErrorAlert";
import { useDeploy } from "@/hooks/deploy";
import { useDeploy } from "#hooks/deploy";
import { Fees } from "./Fees";
import { ControllerError } from "@/utils/connection";
import { TransactionSummary } from "@/components/transaction/TransactionSummary";
import { ControllerError } from "#utils/connection";
import { TransactionSummary } from "#components/transaction/TransactionSummary";
import { Link } from "react-router-dom";
import { useFeeToken } from "@/hooks/tokens";
import { getChainName } from "@cartridge/utils";
import { getChainName, useFeeToken } from "@cartridge/utils";

export function DeployController({
onClose,
Expand All @@ -49,7 +48,7 @@

// What is this cancer
const feeEstimate: FeeEstimate | undefined = ctrlError?.data?.fee_estimate;
const estimateFee: EstimateFee | undefined = feeEstimate

Check warning on line 51 in packages/keychain/src/components/DeployController.tsx

View workflow job for this annotation

GitHub Actions / ts-lint

The 'estimateFee' conditional could make the dependencies of useEffect Hook (at line 113) change on every render. To fix this, wrap the initialization of 'estimateFee' in its own useMemo() Hook

Check warning on line 51 in packages/keychain/src/components/DeployController.tsx

View workflow job for this annotation

GitHub Actions / ts-lint

The 'estimateFee' conditional could make the dependencies of useCallback Hook (at line 127) change on every render. To fix this, wrap the initialization of 'estimateFee' in its own useMemo() Hook
? {
gas_consumed: BigInt(feeEstimate.gas_consumed),
overall_fee: BigInt(feeEstimate.overall_fee),
Expand Down
4 changes: 2 additions & 2 deletions packages/keychain/src/components/ErrorAlert.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@
useState,
} from "react";
import { ErrorCode } from "@cartridge/account-wasm/controller";
import { ControllerError } from "@/utils/connection";
import { parseExecutionError, parseValidationError } from "@/utils/errors";
import { ControllerError } from "#utils/connection";
import { parseExecutionError, parseValidationError } from "#utils/errors";
import { formatAddress } from "@cartridge/utils";
import { Link } from "react-router-dom";
import { useExplorer } from "@starknet-react/core";
Expand Down Expand Up @@ -404,13 +404,13 @@
);
}

export function isControllerError(

Check warning on line 407 in packages/keychain/src/components/ErrorAlert.tsx

View workflow job for this annotation

GitHub Actions / ts-lint

Fast refresh only works when a file only exports components. Use a new file to share constants or functions between components
error: ControllerError | Error,
): error is ControllerError {
return !!(error as ControllerError).code;
}

export function humanizeString(str: string): string {

Check warning on line 413 in packages/keychain/src/components/ErrorAlert.tsx

View workflow job for this annotation

GitHub Actions / ts-lint

Fast refresh only works when a file only exports components. Use a new file to share constants or functions between components
return (
str
// Convert from camelCase or snake_case
Expand Down
4 changes: 2 additions & 2 deletions packages/keychain/src/components/ErrorBoundary.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ import {
Button,
LayoutHeader,
} from "@cartridge/ui-next";
import { useConnection } from "@/hooks/connection";
import { CARTRIDGE_DISCORD_LINK } from "@/const";
import { useConnection } from "#hooks/connection";
import { CARTRIDGE_DISCORD_LINK } from "#const";
import { Link } from "react-router-dom";
import { useEffect } from "react";
import { usePostHog } from "./provider/posthog";
Expand Down
2 changes: 1 addition & 1 deletion packages/keychain/src/components/ErrorBoundry.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { Meta, StoryObj } from "@storybook/react";
import { ErrorPage } from "./ErrorBoundary";

const meta: Meta<typeof ErrorPage> = {
title: "@/components/ErrorPage",
title: "#components/ErrorPage",
component: ErrorPage,
parameters: {
layout: "centered",
Expand Down
4 changes: 2 additions & 2 deletions packages/keychain/src/components/ExecutionContainer.test.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { screen, fireEvent, waitFor } from "@testing-library/react";
import { ExecutionContainer } from "./ExecutionContainer";
import { describe, expect, beforeEach, it, vi } from "vitest";
import { renderWithConnection } from "@/test/mocks/connection";
import { renderWithProviders } from "@/test/mocks/providers";
import { renderWithConnection } from "#test/mocks/connection";
import { renderWithProviders } from "#test/mocks/providers";

describe("ExecutionContainer", () => {
const defaultProps = {
Expand Down
10 changes: 5 additions & 5 deletions packages/keychain/src/components/ExecutionContainer.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { ControllerErrorAlert, ErrorAlert } from "@/components/ErrorAlert";
import { useConnection } from "@/hooks/connection";
import type { ControllerError } from "@/utils/connection";
import { parseControllerError } from "@/utils/connection/execute";
import { ControllerErrorAlert, ErrorAlert } from "#components/ErrorAlert";
import { useConnection } from "#hooks/connection";
import type { ControllerError } from "#utils/connection";
import { parseControllerError } from "#utils/connection/execute";
import { ErrorCode } from "@cartridge/account-wasm/controller";
import {
Button,
Expand All @@ -17,7 +17,7 @@
import { DeployController } from "./DeployController";
import { Fees } from "./Fees";
import { Funding } from "./funding";
import { OcclusionDetector } from "@/components/OcclusionDetector";
import { OcclusionDetector } from "#components/OcclusionDetector";

interface ExecutionContainerProps {
transactions: Call[];
Expand Down Expand Up @@ -111,7 +111,7 @@
};

estimateFeesAsync();
}, [transactions, estimateFees]);

Check warning on line 114 in packages/keychain/src/components/ExecutionContainer.tsx

View workflow job for this annotation

GitHub Actions / ts-lint

React Hook useEffect has a missing dependency: 'feeEstimate'. Either include it or remove the dependency array

useEffect(() => {
setCtrlError(executionError);
Expand Down
4 changes: 1 addition & 3 deletions packages/keychain/src/components/Fees.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
import { useEffect, useState } from "react";
import { Spinner } from "@cartridge/ui-next";
import { ERC20, useFeeToken, convertTokenAmountToUSD } from "@cartridge/utils";
import { EstimateFee } from "starknet";

import { convertTokenAmountToUSD, useFeeToken } from "@/hooks/tokens";
import { ErrorAlert } from "./ErrorAlert";
import { ERC20 } from "./provider/tokens";

export function Fees({
isLoading: isEstimating,
Expand Down
2 changes: 1 addition & 1 deletion packages/keychain/src/components/OcclusionDetector.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { useConnection } from "@/hooks/connection";
import { useConnection } from "#hooks/connection";
import { useEffect, useRef, useState, useCallback } from "react";

export function OcclusionDetector() {
Expand Down
4 changes: 2 additions & 2 deletions packages/keychain/src/components/SignMessage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ import {
CardListItem,
LayoutHeader,
} from "@cartridge/ui-next";
import { useConnection } from "@/hooks/connection";
import { OcclusionDetector } from "@/components/OcclusionDetector";
import { useConnection } from "#hooks/connection";
import { OcclusionDetector } from "#components/OcclusionDetector";

export function SignMessage({
typedData,
Expand Down
4 changes: 2 additions & 2 deletions packages/keychain/src/components/Transaction.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import {
Spinner,
StarknetIcon,
} from "@cartridge/ui-next";
import { useController } from "@/hooks/controller";
import { useChainName } from "@/hooks/chain";
import { useController } from "#hooks/controller";
import { useChainName } from "#hooks/chain";
import { StarkscanUrl } from "@cartridge/utils";
import { Link } from "react-router-dom";

Expand Down
2 changes: 1 addition & 1 deletion packages/keychain/src/components/authenticate.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Authenticate as AuthComponent } from "@/components/connect";
import { Authenticate as AuthComponent } from "#components/connect";
import { constants } from "starknet";
import { useEffect, useState } from "react";
import { useNavigate, useSearchParams } from "react-router-dom";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import type { Meta, StoryObj } from "@storybook/react";
import { CreateSession } from "./CreateSession";
import { ETH_CONTRACT_ADDRESS } from "@cartridge/utils";
import { parseSessionPolicies } from "@/hooks/session";
import { parseSessionPolicies } from "#hooks/session";
import { controllerConfigs } from "@cartridge/presets";

const meta: Meta<typeof CreateSession> = {
Expand Down
22 changes: 11 additions & 11 deletions packages/keychain/src/components/connect/CreateSession.tsx
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
import { ControllerErrorAlert } from "@/components/ErrorAlert";
import { SessionConsent } from "@/components/connect";
import { Upgrade } from "./Upgrade";
import { UnverifiedSessionSummary } from "@/components/session/UnverifiedSessionSummary";
import { VerifiedSessionSummary } from "@/components/session/VerifiedSessionSummary";
import { NOW } from "@/const";
import { CreateSessionProvider } from "@/context/session";
import { useConnection } from "@/hooks/connection";
import { ControllerErrorAlert } from "#components/ErrorAlert";
import { SessionConsent } from "#components/connect";
import { Upgrade } from "#components/connect/Upgrade";
import { UnverifiedSessionSummary } from "#components/session/UnverifiedSessionSummary";
import { VerifiedSessionSummary } from "#components/session/VerifiedSessionSummary";
import { NOW } from "#const";
import { CreateSessionProvider } from "#context/session";
import { useConnection } from "#hooks/connection";
import {
type ContractType,
type ParsedSessionPolicies,
useCreateSession,
} from "@/hooks/session";
import type { ControllerError } from "@/utils/connection";
} from "#hooks/session";
import type { ControllerError } from "#utils/connection";
import {
Button,
Checkbox,
Expand All @@ -23,7 +23,7 @@ import {
} from "@cartridge/ui-next";
import { useCallback, useMemo, useState } from "react";
import { type BigNumberish } from "starknet";
import { OcclusionDetector } from "../OcclusionDetector";
import { OcclusionDetector } from "#components/OcclusionDetector";
import { useUpgrade } from "../provider/upgrade";

const requiredPolicies: Array<ContractType> = ["VRF"];
Expand Down
16 changes: 8 additions & 8 deletions packages/keychain/src/components/connect/RegisterSession.tsx
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
import { ExecutionContainer } from "@/components/ExecutionContainer";
import { SessionConsent } from "@/components/connect";
import { UnverifiedSessionSummary } from "@/components/session/UnverifiedSessionSummary";
import { VerifiedSessionSummary } from "@/components/session/VerifiedSessionSummary";
import { NOW } from "@/const";
import { CreateSessionProvider } from "@/context/session";
import { useConnection } from "@/hooks/connection";
import { ExecutionContainer } from "#components/ExecutionContainer";
import { SessionConsent } from "#components/connect";
import { UnverifiedSessionSummary } from "#components/session/UnverifiedSessionSummary";
import { VerifiedSessionSummary } from "#components/session/VerifiedSessionSummary";
import { NOW } from "#const";
import { CreateSessionProvider } from "#context/session";
import { useConnection } from "#hooks/connection";
import {
type ContractType,
type ParsedSessionPolicies,
useCreateSession,
} from "@/hooks/session";
} from "#hooks/session";
import { Button, LayoutContent, SliderIcon } from "@cartridge/ui-next";
import { useCallback, useEffect, useMemo, useState } from "react";
import {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { useConnection } from "@/hooks/connection";
import { useConnection } from "#hooks/connection";
import { LockIcon, VerifiedIcon } from "@cartridge/ui-next";
import { useMemo } from "react";
import { Link } from "react-router-dom";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import type { Meta, StoryObj } from "@storybook/react";

import { Upgrade } from "./Upgrade";
import Controller from "@/utils/controller";
import Controller from "#utils/controller";
import { constants } from "starknet";

const meta = {
Expand Down
4 changes: 2 additions & 2 deletions packages/keychain/src/components/connect/Upgrade.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { LayoutContent, BoltIcon, CircleIcon } from "@cartridge/ui-next";
import { ExecutionContainer } from "@/components/ExecutionContainer";
import { useConnection } from "@/hooks/connection";
import { ExecutionContainer } from "#components/ExecutionContainer";
import { useConnection } from "#hooks/connection";
import { useUpgrade } from "../provider/upgrade";

export const Upgrade = () => {
Expand Down
Loading
Loading