Skip to content

Commit 1ae8c7c

Browse files
committed
add welcome page and move popup state to url
1 parent 2f09bd0 commit 1ae8c7c

File tree

4 files changed

+54
-4
lines changed

4 files changed

+54
-4
lines changed

frontend/src/App.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import { InAppDocsProvider } from './components/InAppDocsProvider';
2020
import { MantineThemeProvider } from './components/MantineThemeProvider';
2121
import { RouteWhenLoggedOut } from './components/RouteWhenLoggedOut';
2222
import { AdminPage } from './pages/admin/AdminPage';
23-
import { ChatPage } from './pages/chat/ChatPage';
23+
import { ChatOrWelcomePage } from './pages/chat/ChatOrWelcomePage';
2424
import { LoginPage } from './pages/login/LoginPage';
2525
import { i18next } from './texts/i18n';
2626

@@ -61,7 +61,7 @@ export function App() {
6161
path="/chat/*"
6262
element={
6363
<RouteWhenPrivate>
64-
<ChatPage />
64+
<ChatOrWelcomePage />
6565
</RouteWhenPrivate>
6666
}
6767
/>

frontend/src/pages/admin/extensions/ConfigurationPage.tsx

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { useMutation, useQuery } from '@tanstack/react-query';
22
import { useEffect, useState } from 'react';
33
import { useTranslation } from 'react-i18next';
4-
import { Route, Routes } from 'react-router-dom';
4+
import { Route, Routes, useSearchParams } from 'react-router-dom';
55
import { toast } from 'react-toastify';
66
import { ConfigurationDto, useApi } from 'src/api';
77
import { Icon, Page } from 'src/components';
@@ -19,7 +19,19 @@ export function ConfigurationPage() {
1919
const { i18n } = useTranslation();
2020

2121
const navigate = useTransientNavigate();
22-
const [toCreate, setToCreate] = useState<boolean>();
22+
const [searchParams, setSearchParams] = useSearchParams();
23+
24+
const setToCreate = (value: boolean) => {
25+
const newParams = new URLSearchParams(searchParams);
26+
if (value) {
27+
newParams.set('create', 'true');
28+
} else {
29+
newParams.delete('create');
30+
}
31+
setSearchParams(newParams);
32+
};
33+
const toCreate = searchParams.get('create') === 'true';
34+
2335
const [toUpdate, setToUpdate] = useState<ConfigurationDto | null>(null);
2436
const { configurations, removeConfiguration, setConfiguration, setConfigurations } = useConfigurationStore();
2537

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { useQuery } from '@tanstack/react-query';
2+
import { useApi } from 'src/api';
3+
import { ChatPage } from './ChatPage';
4+
import { WelcomePage } from './WelcomePage';
5+
6+
export const ChatOrWelcomePage = () => {
7+
const api = useApi();
8+
const { data: loadedConfigurations } = useQuery({
9+
queryKey: ['enabled-configurations'],
10+
queryFn: () => api.extensions.getConfigurations(true),
11+
});
12+
if (!loadedConfigurations) return <></>;
13+
return loadedConfigurations.items.length > 0 ? <ChatPage /> : <WelcomePage />;
14+
};
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { Button, Text, Title } from '@mantine/core';
2+
import { IconArrowRight } from '@tabler/icons-react';
3+
import { useProfile } from 'src/hooks';
4+
5+
export const WelcomePage = () => {
6+
const profile = useProfile();
7+
if (!profile) return <></>;
8+
return (
9+
<div className="flex h-screen items-center justify-center p-4">
10+
<div className="max-w-[500px] [&>*]:pb-2">
11+
<Title>Welcome to c4 GenAI Suite</Title>
12+
<Text c="dimmed">An AI chatbot with Model Context Provider (MCP) integration. Powered by Langchain.</Text>
13+
<br />
14+
{profile.isAdmin ? (
15+
<Button component="a" href="/admin/assistants?create=true" rightSection={<IconArrowRight className="w-4" />}>
16+
Setup an Assistent
17+
</Button>
18+
) : (
19+
<Text c="dimmed">No Assistent is set up yet. Ask your Admin to set up an Assistent get started.</Text>
20+
)}
21+
</div>
22+
</div>
23+
);
24+
};

0 commit comments

Comments
 (0)