refactor(frontend): update legacy imports to use @/shared/

This commit is contained in:
Sergey Krylov 2026-06-20 13:35:58 +03:00
parent 9816bc6b96
commit d95b2df460
28 changed files with 40 additions and 35 deletions

View File

@ -1,4 +1,4 @@
import type { BondResponse } from '../api/responses'; import type { BondResponse } from '@/shared/api/responses';
interface BondDetailsProps { interface BondDetailsProps {
bond: BondResponse; bond: BondResponse;

View File

@ -1,4 +1,4 @@
import type { ShareResponse } from '../api/responses'; import type { ShareResponse } from '@/shared/api/responses';
interface StockDetailsProps { interface StockDetailsProps {
stock: ShareResponse; stock: ShareResponse;

View File

@ -1,4 +1,4 @@
import type { PositionWithPrice } from '../../api/responses'; import type { PositionWithPrice } from '@/shared/api/responses';
interface AllocationChartProps { interface AllocationChartProps {
positions: PositionWithPrice[]; positions: PositionWithPrice[];

View File

@ -1,4 +1,4 @@
import type { PortfolioSummary } from '../../api/responses'; import type { PortfolioSummary } from '@/shared/api/responses';
export function AnalyticsSummary({ summary }: { summary: PortfolioSummary }) { export function AnalyticsSummary({ summary }: { summary: PortfolioSummary }) {
const formatRub = (val: number | null) => const formatRub = (val: number | null) =>

View File

@ -1,6 +1,6 @@
import { useState } from 'react'; import { useState } from 'react';
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
import type { PositionWithPrice } from '../../api/responses'; import type { PositionWithPrice } from '@/shared/api/responses';
interface Props { interface Props {
position: PositionWithPrice; position: PositionWithPrice;

View File

@ -1,5 +1,5 @@
import { BondPositionRow } from './BondPositionRow'; import { BondPositionRow } from './BondPositionRow';
import type { PositionWithPrice } from '../../api/responses'; import type { PositionWithPrice } from '@/shared/api/responses';
interface Props { interface Props {
positions: PositionWithPrice[]; positions: PositionWithPrice[];

View File

@ -1,5 +1,5 @@
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
import type { Portfolio } from '../../api/responses'; import type { Portfolio } from '@/shared/api/responses';
export function PortfolioCard({ portfolio }: { portfolio: Portfolio }) { export function PortfolioCard({ portfolio }: { portfolio: Portfolio }) {
const chipStyle = (bg: string): React.CSSProperties => ({ const chipStyle = (bg: string): React.CSSProperties => ({

View File

@ -1,5 +1,5 @@
import { useState } from 'react'; import { useState } from 'react';
import type { Portfolio } from '../../api/responses'; import type { Portfolio } from '@/shared/api/responses';
interface Props { interface Props {
initial?: Portfolio; initial?: Portfolio;

View File

@ -1,5 +1,5 @@
import { AllocationChart } from './AllocationChart'; import { AllocationChart } from './AllocationChart';
import type { PortfolioDetail } from '../../api/responses'; import type { PortfolioDetail } from '@/shared/api/responses';
export function PortfolioSummary({ portfolio }: { portfolio: PortfolioDetail }) { export function PortfolioSummary({ portfolio }: { portfolio: PortfolioDetail }) {
return ( return (

View File

@ -1,6 +1,6 @@
import { useState } from 'react'; import { useState } from 'react';
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
import type { PositionWithPrice } from '../../api/responses'; import type { PositionWithPrice } from '@/shared/api/responses';
interface Props { interface Props {
position: PositionWithPrice; position: PositionWithPrice;

View File

@ -1,5 +1,5 @@
import { SharePositionRow } from './SharePositionRow'; import { SharePositionRow } from './SharePositionRow';
import type { PositionWithPrice } from '../../api/responses'; import type { PositionWithPrice } from '@/shared/api/responses';
interface Props { interface Props {
positions: PositionWithPrice[]; positions: PositionWithPrice[];

View File

@ -1,5 +1,5 @@
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
import type { ScreenerResult } from '../../api/responses'; import type { ScreenerResult } from '@/shared/api/responses';
interface Props { interface Props {
result: ScreenerResult; result: ScreenerResult;

View File

@ -1,7 +1,7 @@
import { createContext, useState, useEffect, useCallback, type ReactNode } from 'react'; import { createContext, useState, useEffect, useCallback, type ReactNode } from 'react';
import * as authApi from '../api/auth'; import * as authApi from '../api/auth';
import { setOnUnauthorized } from '../api/client'; import { setOnUnauthorized } from '@/shared/api/client';
import type { UserResponse } from '../api/responses'; import type { UserResponse } from '@/shared/api/responses';
export interface AuthContextValue { export interface AuthContextValue {
user: UserResponse | null; user: UserResponse | null;

View File

@ -1,6 +1,6 @@
import { useQuery } from '@tanstack/react-query'; import { useQuery } from '@tanstack/react-query';
import { getBond } from '../api/client'; import { getBond } from '@/shared/api/client';
import type { BondResponse } from '../api/responses'; import type { BondResponse } from '@/shared/api/responses';
export function useBond(secid: string) { export function useBond(secid: string) {
return useQuery<BondResponse>({ return useQuery<BondResponse>({

View File

@ -1,6 +1,6 @@
import { useQuery } from '@tanstack/react-query'; import { useQuery } from '@tanstack/react-query';
import { getBondCandles } from '../api/client'; import { getBondCandles } from '@/shared/api/client';
import type { CandleItem } from '../api/responses'; import type { CandleItem } from '@/shared/api/responses';
export function useBondCandles(secid: string, interval: '1h' | '24h', from: string, till: string) { export function useBondCandles(secid: string, interval: '1h' | '24h', from: string, till: string) {
return useQuery<CandleItem[]>({ return useQuery<CandleItem[]>({

View File

@ -3,7 +3,7 @@ import { renderHook, waitFor } from '@testing-library/react';
import { type ReactNode } from 'react'; import { type ReactNode } from 'react';
import { beforeEach, describe, expect, it, vi } from 'vitest'; import { beforeEach, describe, expect, it, vi } from 'vitest';
import { getBrokerPortfolio } from '../entities/broker-account/api/brokerAccountApi'; import { getBrokerPortfolio } from '../entities/broker-account/api/brokerAccountApi';
import type { BrokerAccount, BrokerPortfolio } from '../api/responses'; import type { BrokerAccount, BrokerPortfolio } from '@/shared/api/responses';
import { useBrokerAccountPortfolios } from './useBrokerAccountPortfolios'; import { useBrokerAccountPortfolios } from './useBrokerAccountPortfolios';
vi.mock('../entities/broker-account/api/brokerAccountApi', () => ({ vi.mock('../entities/broker-account/api/brokerAccountApi', () => ({

View File

@ -1,6 +1,6 @@
import { useQuery } from '@tanstack/react-query'; import { useQuery } from '@tanstack/react-query';
import { getPortfolio } from '../api/portfolio'; import { getPortfolio } from '../api/portfolio';
import type { PortfolioDetail } from '../api/responses'; import type { PortfolioDetail } from '@/shared/api/responses';
export function usePortfolio(id: number) { export function usePortfolio(id: number) {
return useQuery<PortfolioDetail>({ return useQuery<PortfolioDetail>({

View File

@ -1,6 +1,6 @@
import { useQuery } from '@tanstack/react-query'; import { useQuery } from '@tanstack/react-query';
import { getPortfolioAnalytics } from '../api/portfolio'; import { getPortfolioAnalytics } from '../api/portfolio';
import type { AnalyticsResponse } from '../api/responses'; import type { AnalyticsResponse } from '@/shared/api/responses';
export function usePortfolioAnalytics(portfolioId: number) { export function usePortfolioAnalytics(portfolioId: number) {
return useQuery<AnalyticsResponse>({ return useQuery<AnalyticsResponse>({

View File

@ -1,6 +1,6 @@
import { useQuery } from '@tanstack/react-query'; import { useQuery } from '@tanstack/react-query';
import { getPortfolios } from '../api/portfolio'; import { getPortfolios } from '../api/portfolio';
import type { Portfolio } from '../api/responses'; import type { Portfolio } from '@/shared/api/responses';
export function usePortfolios() { export function usePortfolios() {
return useQuery<Portfolio[]>({ return useQuery<Portfolio[]>({

View File

@ -1,6 +1,6 @@
import { useMutation, useQueryClient } from '@tanstack/react-query'; import { useMutation, useQueryClient } from '@tanstack/react-query';
import { addPosition, updatePosition, removePosition } from '../api/portfolio'; import { addPosition, updatePosition, removePosition } from '../api/portfolio';
import type { PortfolioDetail } from '../api/responses'; import type { PortfolioDetail } from '@/shared/api/responses';
export function usePositionMutations(portfolioId: number) { export function usePositionMutations(portfolioId: number) {
const queryClient = useQueryClient(); const queryClient = useQueryClient();

View File

@ -1,6 +1,6 @@
import { useQuery } from '@tanstack/react-query'; import { useQuery } from '@tanstack/react-query';
import { searchSecurities } from '../api/client'; import { searchSecurities } from '@/shared/api/client';
import type { SearchResultItem } from '../api/responses'; import type { SearchResultItem } from '@/shared/api/responses';
export function useSearch(query: string) { export function useSearch(query: string) {
return useQuery<SearchResultItem[]>({ return useQuery<SearchResultItem[]>({

View File

@ -1,6 +1,6 @@
import { useQuery } from '@tanstack/react-query'; import { useQuery } from '@tanstack/react-query';
import { getShare } from '../api/client'; import { getShare } from '@/shared/api/client';
import type { ShareResponse } from '../api/responses'; import type { ShareResponse } from '@/shared/api/responses';
export function useStock(secid: string) { export function useStock(secid: string) {
return useQuery<ShareResponse>({ return useQuery<ShareResponse>({

View File

@ -1,6 +1,6 @@
import { useQuery } from '@tanstack/react-query'; import { useQuery } from '@tanstack/react-query';
import { getShareCandles } from '../api/client'; import { getShareCandles } from '@/shared/api/client';
import type { CandleItem } from '../api/responses'; import type { CandleItem } from '@/shared/api/responses';
export function useStockCandles(secid: string, interval: '1h' | '24h', from: string, till: string) { export function useStockCandles(secid: string, interval: '1h' | '24h', from: string, till: string) {
return useQuery<CandleItem[]>({ return useQuery<CandleItem[]>({

View File

@ -1,6 +1,6 @@
import { useQuery } from '@tanstack/react-query'; import { useQuery } from '@tanstack/react-query';
import { getShareDividends } from '../api/client'; import { getShareDividends } from '@/shared/api/client';
import type { DividendItem } from '../api/responses'; import type { DividendItem } from '@/shared/api/responses';
export function useStockDividends(secid: string) { export function useStockDividends(secid: string) {
return useQuery<DividendItem[]>({ return useQuery<DividendItem[]>({

View File

@ -4,7 +4,7 @@ import userEvent from '@testing-library/user-event';
import { type ReactElement } from 'react'; import { type ReactElement } from 'react';
import { MemoryRouter } from 'react-router-dom'; import { MemoryRouter } from 'react-router-dom';
import { beforeEach, describe, expect, it, vi } from 'vitest'; import { beforeEach, describe, expect, it, vi } from 'vitest';
import type { BrokerAccount, BrokerPortfolio } from '../../api/responses'; import type { BrokerAccount, BrokerPortfolio } from '@/shared/api/responses';
import * as brokerAccountEntity from '../../entities/broker-account'; import * as brokerAccountEntity from '../../entities/broker-account';
import { BrokerAccountsPage } from './BrokerAccountsPage'; import { BrokerAccountsPage } from './BrokerAccountsPage';

View File

@ -8,7 +8,7 @@ import * as operationsHook from '../../entities/broker-operation';
import * as brokerAccountsHook from '../../hooks/useBrokerAccounts'; import * as brokerAccountsHook from '../../hooks/useBrokerAccounts';
import * as brokerAccountPortfoliosHook from '../../hooks/useBrokerAccountPortfolios'; import * as brokerAccountPortfoliosHook from '../../hooks/useBrokerAccountPortfolios';
import * as portfolioHook from '../../entities/broker-account/model/useBrokerPortfolio'; import * as portfolioHook from '../../entities/broker-account/model/useBrokerPortfolio';
import type { BrokerAccount, BrokerPortfolio, BrokerPosition } from '../../api/responses'; import type { BrokerAccount, BrokerPortfolio, BrokerPosition } from '@/shared/api/responses';
import * as positionsHook from '../../entities/broker-position'; import * as positionsHook from '../../entities/broker-position';
import { AppRoutes } from '../../routes'; import { AppRoutes } from '../../routes';
import { renderWithProviders } from '../../test/test-utils'; import { renderWithProviders } from '../../test/test-utils';

View File

@ -8,7 +8,7 @@ import type {
SearchResultItem, SearchResultItem,
UserResponse, UserResponse,
AuthResponse, AuthResponse,
} from '../api/responses'; } from '@/shared/api/responses';
export function createMockMarketData(overrides: Partial<StockMarketData> = {}): StockMarketData { export function createMockMarketData(overrides: Partial<StockMarketData> = {}): StockMarketData {
return { return {

View File

@ -1,5 +1,10 @@
import { http, HttpResponse } from 'msw'; import { http, HttpResponse } from 'msw';
import type { ShareResponse, BondResponse, CandleItem, SearchResultItem } from '../api/responses'; import type {
ShareResponse,
BondResponse,
CandleItem,
SearchResultItem,
} from '@/shared/api/responses';
const API = '/api/v1'; const API = '/api/v1';