Skip to content

Commit 59c0ff4

Browse files
authored
Fixed small issues (#510)
* fix: issue during merging updates * Enable payment manager in worker * Use correct network depending on context * Refactor layout components to streamline network context usage * Refactor layout file to simplify imports and enhance network context usage
1 parent c6fb8ce commit 59c0ff4

File tree

10 files changed

+99
-61
lines changed

10 files changed

+99
-61
lines changed

apps/backend/src/app/servers/frontendWorker.ts

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,27 @@
1616
)
1717
const logger = createLogger('servers:frontendWorker')
1818

19+
const { paymentManager } = await import(
20+
'../../infrastructure/services/paymentManager/index.js'
21+
)
22+
23+
let somethingActive = false
1924
if (config.featureFlags.flags.taskManager.active) {
2025
EventRouter.listenFrontendEvents()
26+
somethingActive = true
2127
}
2228
if (config.featureFlags.flags.objectMappingArchiver.active) {
2329
objectMappingArchiver.start()
30+
somethingActive = true
2431
}
2532
if (
26-
!config.featureFlags.flags.taskManager.active &&
27-
!config.featureFlags.flags.objectMappingArchiver.active
33+
config.featureFlags.flags.buyCredits.active ||
34+
config.featureFlags.flags.buyCredits.staffOnly
2835
) {
36+
paymentManager.start()
37+
somethingActive = true
38+
}
39+
if (!somethingActive) {
2940
logger.info('No services active, exiting')
3041
process.exit(1)
3142
}

apps/frontend/src/app/[chain]/drive/layout.tsx

Lines changed: 15 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
'use client';
22

33
import '../../globals.css';
4-
import { useMemo } from 'react';
54
import { SessionProvider } from 'next-auth/react';
6-
import { defaultNetworkId, NetworkId, networks } from '@auto-drive/ui';
7-
import { NetworkProvider } from 'contexts/network';
8-
import { useRouter } from 'next/navigation';
5+
import { useNetwork } from 'contexts/network';
96
import { TopNavbar } from '@/components/organisms/TopNavbar';
107
import { TableRouteChangeListener } from '@/components/organisms/FileTable/TableRouteChangeListener';
118
import { SidebarProvider } from '@/components/molecules/Sidebar';
@@ -15,41 +12,29 @@ import { AutomaticLoginWrapper } from '../../../components/atoms/AutomaticLoginW
1512

1613
export default function AppLayout({
1714
children,
18-
params,
1915
}: Readonly<{
2016
children: React.ReactNode;
21-
params: { chain: NetworkId };
2217
}>) {
23-
const router = useRouter();
24-
25-
const network = useMemo(() => {
26-
return networks[params.chain] || null;
27-
}, [params.chain]);
28-
if (!network) {
29-
router.replace(`/${defaultNetworkId}/drive`);
30-
return null;
31-
}
18+
const { network } = useNetwork();
3219

3320
return (
3421
<div className='flex min-h-screen bg-background'>
3522
<AutomaticLoginWrapper>
3623
<SessionProvider>
37-
<NetworkProvider network={network}>
38-
<SessionEnsurer>
39-
<SidebarProvider className='contents'>
40-
<SideNavbar networkId={params.chain} />
41-
<div className='flex h-screen flex-1 flex-col rounded-lg bg-background text-foreground'>
42-
<TopNavbar networkId={params.chain} />
43-
<div className='flex flex-1 overflow-hidden'>
44-
<main className='flex-1 overflow-auto px-6 pb-6'>
45-
<TableRouteChangeListener />
46-
{children}
47-
</main>
48-
</div>
24+
<SessionEnsurer>
25+
<SidebarProvider className='contents'>
26+
<SideNavbar networkId={network.id} />
27+
<div className='flex h-screen flex-1 flex-col rounded-lg bg-background text-foreground'>
28+
<TopNavbar networkId={network.id} />
29+
<div className='flex flex-1 overflow-hidden'>
30+
<main className='flex-1 overflow-auto px-6 pb-6'>
31+
<TableRouteChangeListener />
32+
{children}
33+
</main>
4934
</div>
50-
</SidebarProvider>
51-
</SessionEnsurer>
52-
</NetworkProvider>
35+
</div>
36+
</SidebarProvider>
37+
</SessionEnsurer>
5338
</SessionProvider>
5439
</AutomaticLoginWrapper>
5540
</div>
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
'use client';
2+
3+
import dynamic from 'next/dynamic';
4+
import { defaultNetworkId, NetworkId, networks } from '@auto-drive/ui';
5+
import { NetworkProvider } from '../../contexts/network';
6+
7+
const WalletProvider = dynamic(
8+
() => import('@/contexts/web3').then((mod) => mod.Web3Provider),
9+
{
10+
ssr: false,
11+
},
12+
);
13+
14+
export default function Layout({
15+
children,
16+
params,
17+
}: {
18+
children: React.ReactNode;
19+
params: { chain: NetworkId };
20+
}) {
21+
const network =
22+
params.chain in networks
23+
? networks[params.chain as NetworkId]!
24+
: networks[defaultNetworkId]!;
25+
26+
return (
27+
<NetworkProvider network={network}>
28+
<WalletProvider>{children}</WalletProvider>
29+
</NetworkProvider>
30+
);
31+
}

apps/frontend/src/app/layout.tsx

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import { Metadata, type Viewport } from 'next';
22
import localFont from 'next/font/local';
33
import './globals.css';
44
import { getNoFlashScript } from '@auto-drive/ui';
5-
import dynamic from 'next/dynamic';
65
import NextTopLoader from 'nextjs-toploader';
76
import { Toaster } from 'react-hot-toast';
87

@@ -83,13 +82,6 @@ export const viewport: Viewport = {
8382
],
8483
};
8584

86-
const WalletProvider = dynamic(
87-
() => import('@/contexts/web3').then((mod) => mod.Web3Provider),
88-
{
89-
ssr: false,
90-
},
91-
);
92-
9385
export default function RootLayout({
9486
children,
9587
}: Readonly<{
@@ -102,7 +94,7 @@ export default function RootLayout({
10294
>
10395
<script dangerouslySetInnerHTML={{ __html: getNoFlashScript() }} />
10496
<NextTopLoader color='#1949D2' height={2} showSpinner={false} />
105-
<WalletProvider>{children}</WalletProvider>
97+
{children}
10698
<Toaster position='top-center' />
10799
</body>
108100
</html>

apps/frontend/src/components/atoms/SessionEnsurer.tsx

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export const SessionEnsurer = ({ children }: { children: React.ReactNode }) => {
99
const router = useRouter();
1010
const session = useContext(SessionContext);
1111
const setUser = useUserStore(({ setUser }) => setUser);
12-
const user = useUserStore(({ user }) => user);
12+
const setFeatures = useUserStore(({ setFeatures }) => setFeatures);
1313
const setAccount = useUserStore((m) => m.setAccount);
1414
const { api } = useNetwork();
1515

@@ -37,12 +37,10 @@ export const SessionEnsurer = ({ children }: { children: React.ReactNode }) => {
3737
}, [api, setAccount]);
3838

3939
useEffect(() => {
40-
if (user) {
41-
api.getAccount().then((account) => {
42-
setAccount(account);
43-
});
44-
}
45-
}, [api, user, setAccount]);
40+
api.getFeatures().then((features) => {
41+
setFeatures(features);
42+
});
43+
}, [api, setFeatures]);
4644

4745
if (session === undefined) {
4846
// TODO: Add a loading state

apps/frontend/src/components/organisms/SideNavBar/index.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,15 @@ import { AuthModal } from '../../molecules/AuthModal';
1616
import { SIDEBAR_DEFINITION } from './items';
1717
import { SideNavBarContent } from './SideNavBarContent';
1818
import { AskForCreditsButton } from '../../atoms/AskForCredits';
19+
import { BuyMoreCreditsButton } from '../../atoms/BuyMoreCreditsButton';
1920

2021
export type SideNavbarProps = {
2122
networkId: NetworkId;
2223
};
2324

2425
export const SideNavbar = ({ networkId }: SideNavbarProps) => {
2526
const [isAuthModalOpen, setIsAuthModalOpen] = useState(false);
26-
const { user, account } = useUserStore();
27+
const { user, account, features } = useUserStore();
2728
const { state } = useSidebar();
2829

2930
const session = useContext(SessionContext);
@@ -85,7 +86,11 @@ export const SideNavbar = ({ networkId }: SideNavbarProps) => {
8586
/>
8687
)}
8788
{isLoggedIn && account ? (
88-
<AskForCreditsButton />
89+
features.buyCredits ? (
90+
<BuyMoreCreditsButton />
91+
) : (
92+
<AskForCreditsButton />
93+
)
8994
) : (
9095
<Button
9196
variant='outline'

apps/frontend/src/components/views/PurchaseCredits/steps/Step3_TransferTokens.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,9 @@ export const PurchaseStep3TransferTokens = ({
6565
const depositTransaction = await paymentIntent(
6666
formatCreditsInMbAsValue(Number(context.sizeMB)),
6767
);
68-
const hash = await writeContractAsync(depositTransaction);
68+
const hash = await writeContractAsync({
69+
...depositTransaction,
70+
});
6971
setIntentId(depositTransaction.intentId);
7072
setTxHash(hash);
7173
} catch (error) {

apps/frontend/src/contexts/web3.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,17 @@ import { createAsyncStoragePersister } from '@tanstack/query-async-storage-persi
1212
import { FC, ReactNode, useMemo, useState } from 'react';
1313
import { WagmiProvider } from 'wagmi';
1414
import { evmChains } from '@auto-drive/ui';
15+
import { useNetwork } from './network';
1516

1617
export const Web3Provider: FC<{ children: ReactNode }> = ({ children }) => {
1718
const [queryClient] = useState(() => new QueryClient({}));
19+
const { network } = useNetwork();
1820
const config = useMemo(
1921
() =>
2022
getDefaultConfig({
2123
appName: 'Auto Drive',
2224
projectId: process.env.NEXT_PUBLIC_PROJECT_ID || '',
23-
chains: [evmChains.local, evmChains.mainnet],
25+
chains: [evmChains[network.id]],
2426
ssr: false,
2527
}),
2628
[],

apps/frontend/src/services/api.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,26 @@ export const createApiService = ({
106106

107107
return response.json() as Promise<AccountInfo>;
108108
},
109+
getFeatures: async (): Promise<Record<string, boolean>> => {
110+
const session = await getAuthSession().catch(() => null);
111+
112+
const response = await fetch(`${apiBaseUrl}/features`, {
113+
headers: {
114+
...(session?.accessToken
115+
? {
116+
Authorization: `Bearer ${session?.accessToken}`,
117+
'X-Auth-Provider': session.authProvider,
118+
}
119+
: {}),
120+
},
121+
});
122+
123+
if (!response.ok) {
124+
throw new Error(`Failed to get features: ${response.statusText}`);
125+
}
126+
127+
return response.json();
128+
},
109129
getUserList: async (
110130
userPublicIds: string[],
111131
): Promise<Record<string, AccountInfo>> => {

packages/ui/src/constants/evm.ts

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
import { NetworkId } from './networks'
22
import { Chain } from 'wagmi/chains'
3-
import {
4-
getNetworkDomainRpcUrls,
5-
NetworkId as AutoUtilsNetworkId,
6-
DomainRuntime,
7-
} from '@autonomys/auto-utils'
83

94
export const evmChains: Record<NetworkId, Chain> = {
105
[NetworkId.MAINNET]: {
@@ -17,10 +12,7 @@ export const evmChains: Record<NetworkId, Chain> = {
1712
},
1813
rpcUrls: {
1914
default: {
20-
http: getNetworkDomainRpcUrls({
21-
networkId: AutoUtilsNetworkId.MAINNET,
22-
domainId: '0',
23-
}),
15+
http: ['https://auto-evm.mainnet.autonomys.xyz/ws'],
2416
},
2517
},
2618
},

0 commit comments

Comments
 (0)