mirror of
https://github.com/kremalicious/umami.git
synced 2025-02-14 21:10:34 +01:00
Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
0a9089a463
2
components/declarations.d.ts
vendored
Normal file
2
components/declarations.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
declare module '*.css';
|
||||||
|
declare module '*.svg';
|
@ -1,4 +1,3 @@
|
|||||||
import { useRef } from 'react';
|
|
||||||
import { useMutation } from '@tanstack/react-query';
|
import { useMutation } from '@tanstack/react-query';
|
||||||
import {
|
import {
|
||||||
Form,
|
Form,
|
||||||
@ -20,19 +19,15 @@ export default function LoginForm() {
|
|||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const { post } = useApi();
|
const { post } = useApi();
|
||||||
const { mutate, error, isLoading } = useMutation(data => post('/auth/login', data));
|
const { mutate, error, isLoading } = useMutation(data => post('/auth/login', data));
|
||||||
const ref = useRef();
|
|
||||||
|
|
||||||
const handleSubmit = async data => {
|
const handleSubmit = async data => {
|
||||||
mutate(data, {
|
mutate(data, {
|
||||||
onSuccess: async ({ token, account }) => {
|
onSuccess: async ({ token, user }) => {
|
||||||
setAuthToken(token);
|
setAuthToken(token);
|
||||||
setUser(account);
|
setUser(user);
|
||||||
|
|
||||||
await router.push('/websites');
|
await router.push('/websites');
|
||||||
},
|
},
|
||||||
onError: async () => {
|
|
||||||
ref.current.reset(undefined, { keepDirty: true, keepValues: true });
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -44,7 +39,7 @@ export default function LoginForm() {
|
|||||||
</Icon>
|
</Icon>
|
||||||
<p>umami</p>
|
<p>umami</p>
|
||||||
</div>
|
</div>
|
||||||
<Form ref={ref} className={styles.form} onSubmit={handleSubmit} error={error}>
|
<Form className={styles.form} onSubmit={handleSubmit} error={error}>
|
||||||
<FormInput name="username" label="Username" rules={{ required: 'Required' }}>
|
<FormInput name="username" label="Username" rules={{ required: 'Required' }}>
|
||||||
<TextField autoComplete="off" />
|
<TextField autoComplete="off" />
|
||||||
</FormInput>
|
</FormInput>
|
||||||
|
10
next-env.d.ts
vendored
10
next-env.d.ts
vendored
@ -1,5 +1,5 @@
|
|||||||
/// <reference types="next" />
|
/// <reference types="next" />
|
||||||
/// <reference types="next/image-types/global" />
|
/// <reference types="next/image-types/global" />
|
||||||
|
|
||||||
// NOTE: This file should not be edited
|
// NOTE: This file should not be edited
|
||||||
// see https://nextjs.org/docs/basic-features/typescript for more information.
|
// see https://nextjs.org/docs/basic-features/typescript for more information.
|
||||||
|
@ -49,7 +49,7 @@ module.exports = {
|
|||||||
webpack(config) {
|
webpack(config) {
|
||||||
config.module.rules.push({
|
config.module.rules.push({
|
||||||
test: /\.svg$/,
|
test: /\.svg$/,
|
||||||
issuer: /\.js$/,
|
issuer: /\.{js|jsx|ts|tsx}$/,
|
||||||
use: ['@svgr/webpack'],
|
use: ['@svgr/webpack'],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@ import Head from 'next/head';
|
|||||||
import { useRouter } from 'next/router';
|
import { useRouter } from 'next/router';
|
||||||
import { IntlProvider } from 'react-intl';
|
import { IntlProvider } from 'react-intl';
|
||||||
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
||||||
|
import { Container } from 'react-basics';
|
||||||
import useLocale from 'hooks/useLocale';
|
import useLocale from 'hooks/useLocale';
|
||||||
import useConfig from 'hooks/useConfig';
|
import useConfig from 'hooks/useConfig';
|
||||||
import 'react-basics/dist/styles.css';
|
import 'react-basics/dist/styles.css';
|
||||||
@ -12,9 +13,8 @@ import '@fontsource/inter/600.css';
|
|||||||
const client = new QueryClient();
|
const client = new QueryClient();
|
||||||
|
|
||||||
export default function App({ Component, pageProps }) {
|
export default function App({ Component, pageProps }) {
|
||||||
const { locale, messages } = useLocale();
|
const { locale, messages, dir } = useLocale();
|
||||||
const { basePath } = useRouter();
|
const { basePath } = useRouter();
|
||||||
const { dir } = useLocale();
|
|
||||||
useConfig();
|
useConfig();
|
||||||
|
|
||||||
const Wrapper = ({ children }) => <span className={locale}>{children}</span>;
|
const Wrapper = ({ children }) => <span className={locale}>{children}</span>;
|
||||||
@ -38,9 +38,9 @@ export default function App({ Component, pageProps }) {
|
|||||||
<meta name="theme-color" content="#2f2f2f" media="(prefers-color-scheme: dark)" />
|
<meta name="theme-color" content="#2f2f2f" media="(prefers-color-scheme: dark)" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
</Head>
|
</Head>
|
||||||
<div className="container" dir={dir}>
|
<Container dir={dir}>
|
||||||
<Component {...pageProps} />
|
<Component {...pageProps} />
|
||||||
</div>
|
</Container>
|
||||||
</IntlProvider>
|
</IntlProvider>
|
||||||
</QueryClientProvider>
|
</QueryClientProvider>
|
||||||
);
|
);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user