mirror of
https://github.com/kremalicious/umami.git
synced 2025-02-14 21:10:34 +01:00
Merge branch 'dev' into analytics
This commit is contained in:
commit
b1fbb20967
@ -3,11 +3,13 @@ import { useRouter } from 'next/router';
|
|||||||
import Icons from 'components/icons';
|
import Icons from 'components/icons';
|
||||||
import useMessages from 'hooks/useMessages';
|
import useMessages from 'hooks/useMessages';
|
||||||
import useUser from 'hooks/useUser';
|
import useUser from 'hooks/useUser';
|
||||||
|
import useConfig from 'hooks/useConfig';
|
||||||
import styles from './ProfileButton.module.css';
|
import styles from './ProfileButton.module.css';
|
||||||
|
|
||||||
export default function ProfileButton() {
|
export default function ProfileButton() {
|
||||||
const { formatMessage, labels } = useMessages();
|
const { formatMessage, labels } = useMessages();
|
||||||
const { user } = useUser();
|
const { user } = useUser();
|
||||||
|
const { cloudMode } = useConfig();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
const handleSelect = key => {
|
const handleSelect = key => {
|
||||||
@ -40,12 +42,14 @@ export default function ProfileButton() {
|
|||||||
</Icon>
|
</Icon>
|
||||||
<Text>{formatMessage(labels.profile)}</Text>
|
<Text>{formatMessage(labels.profile)}</Text>
|
||||||
</Item>
|
</Item>
|
||||||
<Item key="logout" className={styles.item}>
|
{!cloudMode && (
|
||||||
<Icon>
|
<Item key="logout" className={styles.item}>
|
||||||
<Icons.Logout />
|
<Icon>
|
||||||
</Icon>
|
<Icons.Logout />
|
||||||
<Text>{formatMessage(labels.logout)}</Text>
|
</Icon>
|
||||||
</Item>
|
<Text>{formatMessage(labels.logout)}</Text>
|
||||||
|
</Item>
|
||||||
|
)}
|
||||||
</Menu>
|
</Menu>
|
||||||
</Popup>
|
</Popup>
|
||||||
</PopupTrigger>
|
</PopupTrigger>
|
||||||
|
@ -50,7 +50,7 @@ export default function NavBar() {
|
|||||||
<div className={styles.actions}>
|
<div className={styles.actions}>
|
||||||
<ThemeButton />
|
<ThemeButton />
|
||||||
<LanguageButton />
|
<LanguageButton />
|
||||||
{!cloudMode && <ProfileButton />}
|
<ProfileButton />
|
||||||
</div>
|
</div>
|
||||||
</Column>
|
</Column>
|
||||||
</Row>
|
</Row>
|
||||||
|
@ -35,7 +35,10 @@ export default function MetricsTable({
|
|||||||
const { get, useQuery } = useApi();
|
const { get, useQuery } = useApi();
|
||||||
|
|
||||||
const { data, isLoading, isFetched, error } = useQuery(
|
const { data, isLoading, isFetched, error } = useQuery(
|
||||||
['websites:metrics', websiteId, type, modified, url, referrer, os, browser, device, country],
|
[
|
||||||
|
'websites:metrics',
|
||||||
|
{ websiteId, type, modified, url, referrer, os, browser, device, country },
|
||||||
|
],
|
||||||
() =>
|
() =>
|
||||||
get(`/websites/${websiteId}/metrics`, {
|
get(`/websites/${websiteId}/metrics`, {
|
||||||
type,
|
type,
|
||||||
|
@ -39,7 +39,7 @@ export default function WebsiteChart({
|
|||||||
const { ref, isSticky } = useSticky({ enabled: stickyHeader });
|
const { ref, isSticky } = useSticky({ enabled: stickyHeader });
|
||||||
|
|
||||||
const { data, isLoading, error } = useQuery(
|
const { data, isLoading, error } = useQuery(
|
||||||
['websites:pageviews', websiteId, modified, url, referrer, os, browser, device, country],
|
['websites:pageviews', { websiteId, modified, url, referrer, os, browser, device, country }],
|
||||||
() =>
|
() =>
|
||||||
get(`/websites/${websiteId}/pageviews`, {
|
get(`/websites/${websiteId}/pageviews`, {
|
||||||
startAt: +startDate,
|
startAt: +startDate,
|
||||||
|
@ -26,14 +26,20 @@ export default function WebsiteSettings({ websiteId }) {
|
|||||||
const [values, setValues] = useState(null);
|
const [values, setValues] = useState(null);
|
||||||
const [tab, setTab] = useState('details');
|
const [tab, setTab] = useState('details');
|
||||||
|
|
||||||
const handleSave = data => {
|
const showSuccess = () => {
|
||||||
showToast({ message: formatMessage(messages.saved), variant: 'success' });
|
showToast({ message: formatMessage(messages.saved), variant: 'success' });
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleSave = data => {
|
||||||
|
showSuccess();
|
||||||
setValues(state => ({ ...state, ...data }));
|
setValues(state => ({ ...state, ...data }));
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleReset = async value => {
|
const handleReset = async value => {
|
||||||
if (value === 'delete') {
|
if (value === 'delete') {
|
||||||
await router.push('/websites');
|
await router.push('/settings/websites');
|
||||||
|
} else if (value === 'reset') {
|
||||||
|
showSuccess();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
16
pages/sso.js
16
pages/sso.js
@ -2,30 +2,18 @@ import { useEffect } from 'react';
|
|||||||
import { Loading } from 'react-basics';
|
import { Loading } from 'react-basics';
|
||||||
import { useRouter } from 'next/router';
|
import { useRouter } from 'next/router';
|
||||||
import { setClientAuthToken } from 'lib/client';
|
import { setClientAuthToken } from 'lib/client';
|
||||||
import useApi from '../hooks/useApi';
|
|
||||||
|
|
||||||
export default function SingleSignOnPage() {
|
export default function SingleSignOnPage() {
|
||||||
const { post } = useApi();
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const { token, url } = router.query;
|
const { token, url } = router.query;
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const signOn = async token => {
|
|
||||||
setClientAuthToken(token);
|
|
||||||
|
|
||||||
const data = await post('/auth/sso');
|
|
||||||
|
|
||||||
setClientAuthToken(data.token);
|
|
||||||
|
|
||||||
await router.push(url);
|
|
||||||
};
|
|
||||||
|
|
||||||
if (url && token) {
|
if (url && token) {
|
||||||
setClientAuthToken(token);
|
setClientAuthToken(token);
|
||||||
|
|
||||||
signOn();
|
router.push(url);
|
||||||
}
|
}
|
||||||
}, [url, token]);
|
}, [router, url, token]);
|
||||||
|
|
||||||
return <Loading size="xl" />;
|
return <Loading size="xl" />;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user