Binary files /dev/null and b/public/images/promo-cards/gpt.png differ @@ -29,7 +29,15 @@ export function useGlobalSettings() { makePrivateRequest(async (type: string, value: any) => { const option = settings.find((x) => x.type === type) - if (!option) return showMessage('Ошибка присвоения настроек') + if (!option) { + // Если настройки нет, создаём её + const { status, data: newSetting } = await postUserSettings({ device, type, value }) + + if (status !== 200) return showMessage('Ошибка создания настроек') + + setSettings((s) => [...s, newSetting]) + return + } const { status } = await updateUserSettings(option.id, value) @@ -37,7 +45,7 @@ export function useGlobalSettings() { setSettings((s) => [...s.filter((x) => x.type !== type), { ...option, value }]) }), - [settings, data] + [settings, data, device] ) const fetchUserSettings = makePrivateRequest(async () => { @@ -1,6 +1,6 @@ import SubscriptionPage from '#/views/subscription/ui/subscription' import { getDefaultLayout } from '#/widgets/layouts' -SubscriptionPage.getLayout = getDefaultLayout({titlePage: 'Подписка'}) +SubscriptionPage.getLayout = getDefaultLayout({ titlePage: 'Оплата' }) export default SubscriptionPage @@ -27,7 +27,8 @@ const Home: NextPageWithLayout = () => { { title: 'Flux 1.1', image: '/images/promo-cards/flux.png', - description: 'Современная нейросеть, способная анализировать данные, обрабатывать информацию и генерировать уникальный контент для различных задач.', + description: + 'Современная нейросеть, способная анализировать данные, обрабатывать информацию и генерировать уникальный контент для различных задач.', routerlink: '/images/flux', buttonText: 'Попробовать', }, @@ -39,10 +40,10 @@ const Home: NextPageWithLayout = () => { buttonText: 'Попробовать', }, { - title: 'Stable Diffusion', - image: '/images/promo-cards/stable-diff.png', - description: 'Превращайте текстовые описания в реалистичные или художественные изображения.', - routerlink: '/images/stablediffusion', + title: 'ChatGPT', + image: '/images/promo-cards/gpt.png', + description: 'Чат-бот, при помощи которого вы сможете найти любой ответ на ваш запрос.', + routerlink: '/chat-bot/chatgpt', buttonText: 'Попробовать', }, { @@ -82,4 +83,3 @@ const Home: NextPageWithLayout = () => { } export default Home - @@ -33,8 +33,11 @@ export const CurrentPlanAndBalance = ({ balance, planTokenLimit, planPrice, isIn return ( - - Моя подписка + + Последняя оплата @@ -42,9 +45,6 @@ export const CurrentPlanAndBalance = ({ balance, planTokenLimit, planPrice, isIn {formatterdPlanPrice} - {/* - {formatterdPlanPrice !== 'Стартовый тариф' && 'Следующее списание: отсутствует'} - */} @@ -58,7 +58,6 @@ export const CurrentPlanAndBalance = ({ balance, planTokenLimit, planPrice, isIn justifyContent='space-between' > {declineToken(balance.toString())} - {/* {balance >= 100 ? 100 : balance} % */} {Math.round(percentage)} % @@ -81,12 +81,10 @@ const Offer: React.FC = ({ uid, tokens_per_plan, price, grouped_fea className={`${styles.tarif_btn} ${isCurrentSubscription ? styles.tarif_btn_current : ''}`} onClick={(e) => { e.stopPropagation() - if (!isCurrentSubscription) { - pay(uid) - } + pay(uid) }} > - {isCurrentSubscription ? 'Текущая подписка' : 'Оплатить'} + Оплатить @@ -60,7 +60,7 @@ const SubscriptionPage: NextPageWithLayout = () => { return ( - Подписка + Оплата @@ -25,7 +25,7 @@ export const menuListTop = [ { title: 'Главная', link: '/', icon: '/svg/side-menu/home-page', activeList: [] }, { title: 'Дашборд', link: '/dashboard', icon: '/svg/side-menu/market', activeList: ['dashboard'] }, { - title: 'Подписка', + title: 'Оплата', link: '/subscription', icon: '/svg/side-menu/star', activeList: ['subscribe'], @@ -123,15 +123,11 @@ export const SideMenu = ({}) => { const business_error_report = getModalById(BUSINESS_ERROR_REPORT) const match = useMediaQuery('(min-height:800px)') - const open = useMemo(() => getOptionValue('sidemenu', { sidemenu_state: 'opened' }).sidemenu_state, [settings]) - - useEffect(() => { - if (isNextStepVisible) updateSettings('sidemenu', { sidemenu_state: 'closed' }) - }, [isNextStepVisible, updateSettings]) + const open = useMemo(() => getOptionValue('sidemenu', { sidemenu_state: 'closed' }).sidemenu_state, [settings]) const filteredMenuListTop = useMemo(() => { return menuListTop.filter((item) => { - if (item.title === 'Главная' || item.title === 'Подписка') { + if (item.title === 'Главная' || item.title === 'Оплата') { return ['business_host', 'regular'].includes(account_type) } @@ -177,58 +173,38 @@ export const SideMenu = ({}) => { anchor='left' open={open === 'opened'} > - - - Error + + Error - {' - - - {status === 'authenticated' && ( - - - - {filteredMenuListTop.map((el) => { - return ( - - ) - })} - - {menuListMiddle.map((el) => { + {' + + + {status === 'authenticated' && ( + + + + {filteredMenuListTop.map((el) => { return ( { /> ) })} - - - - { - error_report.setState(true) - }} - > - - - { - business_error_report.setState(true) - }} - > + + {menuListMiddle.map((el) => { + return ( + + ) + })} + + + + { + error_report.setState(true) + }} + > + + + { + business_error_report.setState(true) + }} + > + + - - + + + {open === 'opened' && ( + + + + Реквизиты + + + + )} - - {open === 'opened' && ( - - - - Реквизиты - - - - )} - - - )} + )} )