From 37a5c22b69ba48eabf20e033f166b3c5228cff98 Mon Sep 17 00:00:00 2001 From: Luiz Gomes <8636507+LuizAsFight@users.noreply.github.com> Date: Mon, 3 Feb 2025 15:03:30 -0300 Subject: [PATCH] chore: upgrade checkout action to v4 + remove chainInfo machine (#1802) --- .changeset/moody-eggs-hope.md | 5 + .github/workflows/docs-scrapper.yml | 2 +- .github/workflows/pr-tests-e2e-assets.yml | 4 +- .github/workflows/pr-tests-e2e-crx-lock.yml | 2 +- .github/workflows/pr-tests-e2e.yml | 4 +- .github/workflows/pr-tests-jest.yml | 2 +- .github/workflows/pr.yaml | 10 +- .github/workflows/release-npm-changeset.yaml | 2 +- .github/workflows/tests-devnet.yaml | 2 +- .github/workflows/tests-testnet.yaml | 2 +- .../app/src/systems/Network/hooks/index.ts | 1 - .../src/systems/Network/hooks/useChainInfo.ts | 50 -------- .../Network/machines/chainInfoMachine.test.ts | 40 ------ .../Network/machines/chainInfoMachine.ts | 116 ------------------ 14 files changed, 20 insertions(+), 222 deletions(-) create mode 100644 .changeset/moody-eggs-hope.md delete mode 100644 packages/app/src/systems/Network/hooks/useChainInfo.ts delete mode 100644 packages/app/src/systems/Network/machines/chainInfoMachine.test.ts delete mode 100644 packages/app/src/systems/Network/machines/chainInfoMachine.ts diff --git a/.changeset/moody-eggs-hope.md b/.changeset/moody-eggs-hope.md new file mode 100644 index 0000000000..97d68b38dc --- /dev/null +++ b/.changeset/moody-eggs-hope.md @@ -0,0 +1,5 @@ +--- +"fuels-wallet": patch +--- + +chore: upgrade checkout action to v4 + remove chainInfo machine diff --git a/.github/workflows/docs-scrapper.yml b/.github/workflows/docs-scrapper.yml index 1be086157e..c7ec0ab447 100644 --- a/.github/workflows/docs-scrapper.yml +++ b/.github/workflows/docs-scrapper.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Docker uses: FuelLabs/github-actions/setups/docker@master diff --git a/.github/workflows/pr-tests-e2e-assets.yml b/.github/workflows/pr-tests-e2e-assets.yml index 2d7b75ca27..32758cbef8 100644 --- a/.github/workflows/pr-tests-e2e-assets.yml +++ b/.github/workflows/pr-tests-e2e-assets.yml @@ -15,7 +15,7 @@ jobs: runs-on: buildjet-8vcpu-ubuntu-2204 timeout-minutes: 10 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: FuelLabs/github-actions/setups/node@master with: node-version: 20.11.0 @@ -32,7 +32,7 @@ jobs: - name: Upload Test Report if: failure() - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: e2e-test-report path: packages/e2e-assets/playwright-html \ No newline at end of file diff --git a/.github/workflows/pr-tests-e2e-crx-lock.yml b/.github/workflows/pr-tests-e2e-crx-lock.yml index 9db52bcda2..e3b42ad6a8 100644 --- a/.github/workflows/pr-tests-e2e-crx-lock.yml +++ b/.github/workflows/pr-tests-e2e-crx-lock.yml @@ -15,7 +15,7 @@ jobs: runs-on: buildjet-8vcpu-ubuntu-2204 timeout-minutes: 7 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: FuelLabs/github-actions/setups/node@master with: node-version: 20.11.0 diff --git a/.github/workflows/pr-tests-e2e.yml b/.github/workflows/pr-tests-e2e.yml index bf5860c45f..3656221179 100644 --- a/.github/workflows/pr-tests-e2e.yml +++ b/.github/workflows/pr-tests-e2e.yml @@ -15,7 +15,7 @@ jobs: timeout-minutes: 15 runs-on: buildjet-8vcpu-ubuntu-2204 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: FuelLabs/github-actions/setups/node@master with: node-version: 20.11.0 @@ -55,7 +55,7 @@ jobs: runs-on: buildjet-8vcpu-ubuntu-2204 continue-on-error: true steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: FuelLabs/github-actions/setups/node@master with: node-version: 20.11.0 diff --git a/.github/workflows/pr-tests-jest.yml b/.github/workflows/pr-tests-jest.yml index 1facc762af..52fd521c20 100644 --- a/.github/workflows/pr-tests-jest.yml +++ b/.github/workflows/pr-tests-jest.yml @@ -14,7 +14,7 @@ jobs: name: Test runs-on: buildjet-8vcpu-ubuntu-2204 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: FuelLabs/github-actions/setups/node@master with: node-version: 20.11.0 diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 411912f073..95609d5891 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -23,7 +23,7 @@ jobs: outputs: changed: ${{ steps.packages-changed.outputs.any_changed }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Check external packages changes id: packages-changed uses: tj-actions/changed-files@v22.2 @@ -40,7 +40,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 @@ -57,7 +57,7 @@ jobs: name: Audit runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: FuelLabs/github-actions/setups/node@master with: node-version: 20.11.0 @@ -83,7 +83,7 @@ jobs: name: Strict Audit runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: FuelLabs/github-actions/setups/node@master with: node-version: 20.11.0 @@ -99,7 +99,7 @@ jobs: contents: write steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Node uses: FuelLabs/github-actions/setups/node@master diff --git a/.github/workflows/release-npm-changeset.yaml b/.github/workflows/release-npm-changeset.yaml index 20eeaa09e2..11fe0427d9 100644 --- a/.github/workflows/release-npm-changeset.yaml +++ b/.github/workflows/release-npm-changeset.yaml @@ -17,7 +17,7 @@ jobs: name: Release master or rc runs-on: buildjet-4vcpu-ubuntu-2204 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: # need this to get full git-history/clone in order to build changelogs and check changesets fetch-depth: 0 diff --git a/.github/workflows/tests-devnet.yaml b/.github/workflows/tests-devnet.yaml index 69bd06d8ac..60f20e4317 100644 --- a/.github/workflows/tests-devnet.yaml +++ b/.github/workflows/tests-devnet.yaml @@ -19,7 +19,7 @@ jobs: name: E2E Contract Tests - Devnet runs-on: buildjet-4vcpu-ubuntu-2204 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: FuelLabs/github-actions/setups/node@master with: node-version: 20.11.0 diff --git a/.github/workflows/tests-testnet.yaml b/.github/workflows/tests-testnet.yaml index 2bbbded77e..4d5e1ffb1f 100644 --- a/.github/workflows/tests-testnet.yaml +++ b/.github/workflows/tests-testnet.yaml @@ -19,7 +19,7 @@ jobs: name: E2E Contract Tests - Testnet runs-on: buildjet-4vcpu-ubuntu-2204 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: FuelLabs/github-actions/setups/node@master with: node-version: 20.11.0 diff --git a/packages/app/src/systems/Network/hooks/index.ts b/packages/app/src/systems/Network/hooks/index.ts index b12a2206b8..a82b34452a 100644 --- a/packages/app/src/systems/Network/hooks/index.ts +++ b/packages/app/src/systems/Network/hooks/index.ts @@ -1,3 +1,2 @@ -export * from './useChainInfo'; export * from './useNetworkForm'; export * from './useNetworks'; diff --git a/packages/app/src/systems/Network/hooks/useChainInfo.ts b/packages/app/src/systems/Network/hooks/useChainInfo.ts deleted file mode 100644 index 1b06dddb8b..0000000000 --- a/packages/app/src/systems/Network/hooks/useChainInfo.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { useInterpret, useSelector } from '@xstate/react'; -import debounce from 'lodash.debounce'; -import { useCallback, useEffect } from 'react'; - -import type { ChainInfoMachineState } from '../machines/chainInfoMachine'; -import { chainInfoMachine } from '../machines/chainInfoMachine'; - -const selectors = { - context: (state: ChainInfoMachineState) => state.context, - loading: (state: ChainInfoMachineState) => state.hasTag('loading'), -}; - -export function useChainInfo(providerUrl?: string) { - const service = useInterpret(() => chainInfoMachine); - const { send } = service; - const context = useSelector(service, selectors.context); - const isLoading = useSelector(service, selectors.loading); - - const { chainInfo, error } = context; - - const fetchChainInfo = useCallback( - debounce((url: string) => { - send('FETCH_CHAIN_INFO', { input: { providerUrl: url } }); - }, 750), - [] - ); - - const clearChainInfo = useCallback( - debounce(() => { - send('CLEAR_CHAIN_INFO'); - }, 750), - [] - ); - - // biome-ignore lint/correctness/useExhaustiveDependencies: - useEffect(() => { - if (providerUrl) { - fetchChainInfo(providerUrl); - } else { - send('CLEAR_CHAIN_INFO'); - } - }, [providerUrl]); - - return { - chainInfo, - error, - isLoading, - handlers: { fetchChainInfo, clearChainInfo }, - }; -} diff --git a/packages/app/src/systems/Network/machines/chainInfoMachine.test.ts b/packages/app/src/systems/Network/machines/chainInfoMachine.test.ts deleted file mode 100644 index 6a68dbda9f..0000000000 --- a/packages/app/src/systems/Network/machines/chainInfoMachine.test.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { graphql } from 'msw'; -import { interpret } from 'xstate'; -import { waitFor } from 'xstate/lib/waitFor'; -import { VITE_FUEL_PROVIDER_URL } from '~/config'; -import { mockServer } from '~/mocks/server'; - -import { MOCK_CHAIN_INFO } from '../__mocks__/chainInfo'; - -import type { ChainInfoMachineService } from './chainInfoMachine'; -import { chainInfoMachine } from './chainInfoMachine'; - -mockServer([ - graphql.query('getChain', (_req, res, ctx) => { - return res(ctx.data(MOCK_CHAIN_INFO)); - }), -]); - -describe('chainInfoMachine', () => { - let service: ChainInfoMachineService; - - beforeEach(async () => { - service = interpret(chainInfoMachine.withContext({})).start(); - }); - - afterEach(() => { - service.stop(); - }); - - it('should fetch chainInfo', async () => { - await waitFor(service, (state) => state.matches('idle')); - - service.send('FETCH_CHAIN_INFO', { - input: { providerUrl: VITE_FUEL_PROVIDER_URL }, - }); - - await waitFor(service, (state) => state.matches('fetchingChainInfo')); - await waitFor(service, (state) => state.matches('idle')); - await waitFor(service, (state) => Boolean(state.context.chainInfo)); - }); -}); diff --git a/packages/app/src/systems/Network/machines/chainInfoMachine.ts b/packages/app/src/systems/Network/machines/chainInfoMachine.ts deleted file mode 100644 index eadea5e366..0000000000 --- a/packages/app/src/systems/Network/machines/chainInfoMachine.ts +++ /dev/null @@ -1,116 +0,0 @@ -import type { ChainInfo } from 'fuels'; -import { - type InterpreterFrom, - type StateFrom, - assign, - createMachine, -} from 'xstate'; -import type { FetchResponse } from '~/systems/Core'; -import { FetchMachine, delay } from '~/systems/Core'; - -import { type NetworkInputs, NetworkService } from '../services'; - -type MachineContext = { - chainInfo?: ChainInfo; - error?: string; -}; - -type MachineServices = { - fetchChainInfo: { - data: FetchResponse; - }; -}; - -type MachineEvents = - | { - type: 'FETCH_CHAIN_INFO'; - input: { providerUrl?: string }; - } - | { type: 'CLEAR_CHAIN_INFO'; input: null }; - -export const chainInfoMachine = createMachine( - { - predictableActionArguments: true, - tsTypes: {} as import('./chainInfoMachine.typegen').Typegen0, - schema: { - context: {} as MachineContext, - services: {} as MachineServices, - events: {} as MachineEvents, - }, - id: '(machine)', - initial: 'idle', - states: { - idle: { - on: { - FETCH_CHAIN_INFO: [ - { - target: 'fetchingChainInfo', - }, - ], - CLEAR_CHAIN_INFO: [ - { - actions: ['clearChainInfo'], - }, - ], - }, - }, - fetchingChainInfo: { - tags: ['loading'], - entry: ['clearChainInfo', 'clearError'], - invoke: { - src: 'fetchChainInfo', - data: { - input: (_: MachineContext, ev: MachineEvents) => ev.input, - }, - onDone: [ - { - actions: ['assignError'], - target: 'idle', - cond: FetchMachine.hasError, - }, - { - actions: ['assignChainInfo'], - target: 'idle', - }, - ], - }, - }, - }, - }, - { - actions: { - assignChainInfo: assign({ - chainInfo: (_ctx, ev) => ev.data, - }), - clearChainInfo: assign({ - chainInfo: undefined, - error: undefined, - }), - assignError: assign({ - error: (_, ev) => (ev.data.error as Error).message, - }), - clearError: assign({ - error: (_) => undefined, - }), - }, - services: { - fetchChainInfo: FetchMachine.create< - NetworkInputs['getChainInfo'], - ChainInfo - >({ - showError: false, - async fetch({ input }) { - if (!input?.providerUrl) { - throw new Error('No chain URL'); - } - - return NetworkService.getChainInfo(input); - }, - }), - }, - } -); - -export type ChainInfoMachine = typeof chainInfoMachine; -export type ChainInfoMachineService = InterpreterFrom; -export type ChainInfoMachineState = StateFrom;