Make heatmaps report always available.
This commit is contained in:
@@ -1,12 +1,7 @@
|
|||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
import { notFound } from 'next/navigation';
|
|
||||||
import { HeatmapsPage } from './HeatmapsPage';
|
import { HeatmapsPage } from './HeatmapsPage';
|
||||||
|
|
||||||
export default async function ({ params }: { params: Promise<{ websiteId: string }> }) {
|
export default async function ({ params }: { params: Promise<{ websiteId: string }> }) {
|
||||||
if (!process.env.UMAMI_SELF_RECORD) {
|
|
||||||
notFound();
|
|
||||||
}
|
|
||||||
|
|
||||||
const { websiteId } = await params;
|
const { websiteId } = await params;
|
||||||
|
|
||||||
return <HeatmapsPage websiteId={websiteId} />;
|
return <HeatmapsPage websiteId={websiteId} />;
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ export async function GET(request: Request) {
|
|||||||
linksUrl: process.env.LINKS_URL,
|
linksUrl: process.env.LINKS_URL,
|
||||||
pixelsUrl: process.env.PIXELS_URL,
|
pixelsUrl: process.env.PIXELS_URL,
|
||||||
privateMode: !!process.env.PRIVATE_MODE,
|
privateMode: !!process.env.PRIVATE_MODE,
|
||||||
selfRecordEnabled: !!process.env.UMAMI_SELF_RECORD,
|
|
||||||
telemetryDisabled: !!process.env.DISABLE_TELEMETRY,
|
telemetryDisabled: !!process.env.DISABLE_TELEMETRY,
|
||||||
trackerScriptName: process.env.TRACKER_SCRIPT_NAME,
|
trackerScriptName: process.env.TRACKER_SCRIPT_NAME,
|
||||||
updatesDisabled: !!process.env.DISABLE_UPDATES,
|
updatesDisabled: !!process.env.DISABLE_UPDATES,
|
||||||
|
|||||||
@@ -1,14 +1,10 @@
|
|||||||
import { parseRequest, setWebsiteDate } from '@/lib/request';
|
import { parseRequest, setWebsiteDate } from '@/lib/request';
|
||||||
import { forbidden, json, unauthorized } from '@/lib/response';
|
import { json, unauthorized } from '@/lib/response';
|
||||||
import { reportResultSchema } from '@/lib/schema';
|
import { reportResultSchema } from '@/lib/schema';
|
||||||
import { canViewWebsite } from '@/permissions';
|
import { canViewWebsite } from '@/permissions';
|
||||||
import { getHeatmap, type HeatmapParameters } from '@/queries/sql';
|
import { getHeatmap, type HeatmapParameters } from '@/queries/sql';
|
||||||
|
|
||||||
export async function POST(request: Request) {
|
export async function POST(request: Request) {
|
||||||
if (!process.env.UMAMI_SELF_RECORD) {
|
|
||||||
return forbidden({ message: 'Heatmap recording is disabled.' });
|
|
||||||
}
|
|
||||||
|
|
||||||
const { auth, body, error } = await parseRequest(request, reportResultSchema);
|
const { auth, body, error } = await parseRequest(request, reportResultSchema);
|
||||||
|
|
||||||
if (error) {
|
if (error) {
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ export type Config = {
|
|||||||
linksUrl?: string;
|
linksUrl?: string;
|
||||||
pixelsUrl?: string;
|
pixelsUrl?: string;
|
||||||
privateMode: boolean;
|
privateMode: boolean;
|
||||||
selfRecordEnabled: boolean;
|
|
||||||
telemetryDisabled: boolean;
|
telemetryDisabled: boolean;
|
||||||
trackerScriptName?: string;
|
trackerScriptName?: string;
|
||||||
updatesDisabled: boolean;
|
updatesDisabled: boolean;
|
||||||
|
|||||||
@@ -11,14 +11,12 @@ import {
|
|||||||
Video,
|
Video,
|
||||||
} from '@/components/icons';
|
} from '@/components/icons';
|
||||||
import { Funnel, Gauge, Lightning, Magnet, Money, Network, Path, Target } from '@/components/svg';
|
import { Funnel, Gauge, Lightning, Magnet, Money, Network, Path, Target } from '@/components/svg';
|
||||||
import { useConfig } from './useConfig';
|
|
||||||
import { useMessages } from './useMessages';
|
import { useMessages } from './useMessages';
|
||||||
import { useNavigation } from './useNavigation';
|
import { useNavigation } from './useNavigation';
|
||||||
|
|
||||||
export function useWebsiteNavItems(websiteId: string) {
|
export function useWebsiteNavItems(websiteId: string) {
|
||||||
const { t, labels } = useMessages();
|
const { t, labels } = useMessages();
|
||||||
const { pathname, renderUrl } = useNavigation();
|
const { pathname, renderUrl } = useNavigation();
|
||||||
const config = useConfig();
|
|
||||||
|
|
||||||
const renderPath = (path: string) =>
|
const renderPath = (path: string) =>
|
||||||
renderUrl(`/websites/${websiteId}${path}`, {
|
renderUrl(`/websites/${websiteId}${path}`, {
|
||||||
@@ -110,16 +108,12 @@ export function useWebsiteNavItems(websiteId: string) {
|
|||||||
icon: <Video />,
|
icon: <Video />,
|
||||||
path: renderPath('/replays'),
|
path: renderPath('/replays'),
|
||||||
},
|
},
|
||||||
...(config?.selfRecordEnabled
|
{
|
||||||
? [
|
id: 'heatmaps',
|
||||||
{
|
label: t(labels.heatmaps),
|
||||||
id: 'heatmaps',
|
icon: <Flame />,
|
||||||
label: t(labels.heatmaps),
|
path: renderPath('/heatmaps'),
|
||||||
icon: <Flame />,
|
},
|
||||||
path: renderPath('/heatmaps'),
|
|
||||||
},
|
|
||||||
]
|
|
||||||
: []),
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user