diff --git a/src/app/(main)/admin/teams/AdminTeamsPage.tsx b/src/app/(main)/admin/teams/AdminTeamsPage.tsx index 7905f7f63..41e6f4afb 100644 --- a/src/app/(main)/admin/teams/AdminTeamsPage.tsx +++ b/src/app/(main)/admin/teams/AdminTeamsPage.tsx @@ -3,19 +3,14 @@ import { Column } from '@umami/react-zen'; import { PageHeader } from '@/components/common/PageHeader'; import { Panel } from '@/components/common/Panel'; import { useMessages } from '@/components/hooks'; -import { TeamsAddButton } from '../../teams/TeamsAddButton'; import { AdminTeamsDataTable } from './AdminTeamsDataTable'; export function AdminTeamsPage() { const { formatMessage, labels } = useMessages(); - const handleSave = () => {}; - return ( - - - + diff --git a/src/app/(main)/teams/TeamAddForm.tsx b/src/app/(main)/teams/TeamAddForm.tsx index 3b827776b..c95259f47 100644 --- a/src/app/(main)/teams/TeamAddForm.tsx +++ b/src/app/(main)/teams/TeamAddForm.tsx @@ -7,17 +7,8 @@ import { TextField, } from '@umami/react-zen'; import { useMessages, useUpdateQuery } from '@/components/hooks'; -import { UserSelect } from '@/components/input/UserSelect'; -export function TeamAddForm({ - onSave, - onClose, - isAdmin, -}: { - onSave: () => void; - onClose: () => void; - isAdmin: boolean; -}) { +export function TeamAddForm({ onSave, onClose }: { onSave: () => void; onClose: () => void }) { const { formatMessage, labels, getErrorMessage } = useMessages(); const { mutateAsync, error, isPending } = useUpdateQuery('/teams'); @@ -35,11 +26,6 @@ export function TeamAddForm({ - {isAdmin && ( - - - - )} - - {formatMessage(labels.save)} - - - - ); -} diff --git a/src/app/(main)/teams/TeamsAddButton.tsx b/src/app/(main)/teams/TeamsAddButton.tsx index 138730887..578a273a1 100644 --- a/src/app/(main)/teams/TeamsAddButton.tsx +++ b/src/app/(main)/teams/TeamsAddButton.tsx @@ -4,13 +4,7 @@ import { Plus } from '@/components/icons'; import { messages } from '@/components/messages'; import { TeamAddForm } from './TeamAddForm'; -export function TeamsAddButton({ - onSave, - isAdmin = false, -}: { - onSave?: () => void; - isAdmin?: boolean; -}) { +export function TeamsAddButton({ onSave }: { onSave?: () => void }) { const { formatMessage, labels } = useMessages(); const { toast } = useToast(); const { touch } = useModified(); @@ -31,7 +25,7 @@ export function TeamsAddButton({ - {({ close }) => } + {({ close }) => } diff --git a/src/app/(main)/teams/TeamsMemberAddButton.tsx b/src/app/(main)/teams/TeamsMemberAddButton.tsx deleted file mode 100644 index f1bbf2586..000000000 --- a/src/app/(main)/teams/TeamsMemberAddButton.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import { Button, Dialog, DialogTrigger, Icon, Modal, Text, useToast } from '@umami/react-zen'; -import { useMessages, useModified } from '@/components/hooks'; -import { Plus } from '@/components/icons'; -import { messages } from '@/components/messages'; -import { TeamMemberAddForm } from './TeamMemberAddForm'; - -export function TeamsMemberAddButton({ - teamId, - onSave, -}: { - teamId: string; - onSave?: () => void; - isAdmin?: boolean; -}) { - const { formatMessage, labels } = useMessages(); - const { toast } = useToast(); - const { touch } = useModified(); - - const handleSave = async () => { - toast(formatMessage(messages.saved)); - touch('teams:members'); - onSave?.(); - }; - - return ( - - - - - {({ close }) => } - - - - ); -} diff --git a/src/app/(main)/teams/[teamId]/TeamSettings.tsx b/src/app/(main)/teams/[teamId]/TeamSettings.tsx index 4bbb8905a..3ddbe000b 100644 --- a/src/app/(main)/teams/[teamId]/TeamSettings.tsx +++ b/src/app/(main)/teams/[teamId]/TeamSettings.tsx @@ -1,12 +1,10 @@ -import { Column, Heading, Row } from '@umami/react-zen'; +import { Column } from '@umami/react-zen'; import { TeamLeaveButton } from '@/app/(main)/teams/TeamLeaveButton'; import { PageHeader } from '@/components/common/PageHeader'; import { Panel } from '@/components/common/Panel'; -import { useLoginQuery, useMessages, useNavigation, useTeam } from '@/components/hooks'; +import { useLoginQuery, useNavigation, useTeam } from '@/components/hooks'; import { Users } from '@/components/icons'; -import { labels } from '@/components/messages'; import { ROLES } from '@/lib/constants'; -import { TeamsMemberAddButton } from '../TeamsMemberAddButton'; import { TeamEditForm } from './TeamEditForm'; import { TeamManage } from './TeamManage'; import { TeamMembersDataTable } from './TeamMembersDataTable'; @@ -15,7 +13,6 @@ export function TeamSettings({ teamId }: { teamId: string }) { const team: any = useTeam(); const { user } = useLoginQuery(); const { pathname } = useNavigation(); - const { formatMessage } = useMessages(); const isAdmin = pathname.includes('/admin'); @@ -40,10 +37,6 @@ export function TeamSettings({ teamId }: { teamId: string }) { - - {formatMessage(labels.members)} - {isAdmin && } - {isTeamOwner && ( diff --git a/src/app/(main)/websites/[websiteId]/(reports)/journeys/JourneysPage.tsx b/src/app/(main)/websites/[websiteId]/(reports)/journeys/JourneysPage.tsx index f1a8976f6..c2dd83493 100644 --- a/src/app/(main)/websites/[websiteId]/(reports)/journeys/JourneysPage.tsx +++ b/src/app/(main)/websites/[websiteId]/(reports)/journeys/JourneysPage.tsx @@ -1,10 +1,10 @@ 'use client'; import { Column, Grid, ListItem, Row, SearchField, Select } from '@umami/react-zen'; +import { FilterButtons } from 'dist'; import { useState } from 'react'; import { WebsiteControls } from '@/app/(main)/websites/[websiteId]/WebsiteControls'; import { Panel } from '@/components/common/Panel'; import { useDateRange, useMessages } from '@/components/hooks'; -import { FilterButtons } from '@/components/input/FilterButtons'; import { Journey } from './Journey'; const JOURNEY_STEPS = [2, 3, 4, 5, 6, 7]; diff --git a/src/app/(main)/websites/[websiteId]/WebsiteExpandedMenu.tsx b/src/app/(main)/websites/[websiteId]/WebsiteExpandedMenu.tsx index 4bac4ff6f..29c3954f2 100644 --- a/src/app/(main)/websites/[websiteId]/WebsiteExpandedMenu.tsx +++ b/src/app/(main)/websites/[websiteId]/WebsiteExpandedMenu.tsx @@ -169,12 +169,6 @@ export function WebsiteExpandedMenu({ path: updateParams({ view: 'hostname' }), icon: , }, - { - id: 'distinctId', - label: formatMessage(labels.distinctId), - path: updateParams({ view: 'distinctId' }), - icon: , - }, { id: 'tag', label: formatMessage(labels.tag), diff --git a/src/app/(main)/websites/[websiteId]/compare/CompareTables.tsx b/src/app/(main)/websites/[websiteId]/compare/CompareTables.tsx index 4daf17fc6..13c05160a 100644 --- a/src/app/(main)/websites/[websiteId]/compare/CompareTables.tsx +++ b/src/app/(main)/websites/[websiteId]/compare/CompareTables.tsx @@ -93,11 +93,6 @@ export function CompareTables({ websiteId }: { websiteId: string }) { label: formatMessage(labels.hostname), path: renderPath('hostname'), }, - { - id: 'distinctId', - label: formatMessage(labels.distinctId), - path: renderPath('distinctId'), - }, { id: 'tag', label: formatMessage(labels.tags), diff --git a/src/app/api/teams/route.ts b/src/app/api/teams/route.ts index c571f4055..53ef59239 100644 --- a/src/app/api/teams/route.ts +++ b/src/app/api/teams/route.ts @@ -28,7 +28,6 @@ export async function GET(request: Request) { export async function POST(request: Request) { const schema = z.object({ name: z.string().max(50), - ownerId: z.uuid().optional(), }); const { auth, body, error } = await parseRequest(request, schema); @@ -41,7 +40,7 @@ export async function POST(request: Request) { return unauthorized(); } - const { name, ownerId } = body; + const { name } = body; const team = await createTeam( { @@ -49,7 +48,7 @@ export async function POST(request: Request) { name, accessCode: `team_${getRandomChars(16)}`, }, - ownerId ?? auth.user.id, + auth.user.id, ); return json(team); diff --git a/src/components/hooks/useFields.ts b/src/components/hooks/useFields.ts index 039b71573..22a1dcf30 100644 --- a/src/components/hooks/useFields.ts +++ b/src/components/hooks/useFields.ts @@ -15,7 +15,6 @@ export function useFields() { { name: 'region', type: 'string', label: formatMessage(labels.region) }, { name: 'city', type: 'string', label: formatMessage(labels.city) }, { name: 'hostname', type: 'string', label: formatMessage(labels.hostname) }, - { name: 'distinctId', type: 'string', label: formatMessage(labels.distinctId) }, { name: 'tag', type: 'string', label: formatMessage(labels.tag) }, { name: 'event', type: 'string', label: formatMessage(labels.event) }, ]; diff --git a/src/components/hooks/useFilterParameters.ts b/src/components/hooks/useFilterParameters.ts index c141a3be8..540321203 100644 --- a/src/components/hooks/useFilterParameters.ts +++ b/src/components/hooks/useFilterParameters.ts @@ -18,7 +18,6 @@ export function useFilterParameters() { event, tag, hostname, - distinctId, page, pageSize, search, @@ -43,7 +42,6 @@ export function useFilterParameters() { event, tag, hostname, - distinctId, search, segment, cohort, @@ -63,7 +61,6 @@ export function useFilterParameters() { event, tag, hostname, - distinctId, page, pageSize, search, diff --git a/src/components/input/FilterEditForm.tsx b/src/components/input/FilterEditForm.tsx index 9221e3a2a..44f43844a 100644 --- a/src/components/input/FilterEditForm.tsx +++ b/src/components/input/FilterEditForm.tsx @@ -61,9 +61,7 @@ export function FilterEditForm({ websiteId, onChange, onClose }: FilterEditFormP websiteId={websiteId} value={currentFilters} onChange={setCurrentFilters} - exclude={ - excludeFilters ? ['path', 'title', 'hostname', 'distinctId', 'tag', 'event'] : [] - } + exclude={excludeFilters ? ['path', 'title', 'hostname', 'tag', 'event'] : []} /> diff --git a/src/components/input/UserSelect.tsx b/src/components/input/UserSelect.tsx deleted file mode 100644 index ccb3d4325..000000000 --- a/src/components/input/UserSelect.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import { ListItem, Row, Select, type SelectProps, Text } from '@umami/react-zen'; -import { useMemo, useState } from 'react'; -import { Empty } from '@/components/common/Empty'; -import { useMessages, useTeamMembersQuery, useUsersQuery } from '@/components/hooks'; - -export function UserSelect({ - teamId, - onChange, - ...props -}: { - teamId?: string; -} & SelectProps) { - const { formatMessage, messages } = useMessages(); - const { data: users, isLoading: usersLoading } = useUsersQuery(); - const { data: teamMembers, isLoading: teamMembersLoading } = useTeamMembersQuery(teamId); - const [username, setUsername] = useState(); - const [search, setSearch] = useState(''); - - const listItems = useMemo(() => { - if (!users) { - return []; - } - if (!teamId || !teamMembers) { - return users.data; - } - const teamMemberIds = teamMembers.data.map(({ userId }) => userId); - return users.data.filter(({ id }) => !teamMemberIds.includes(id)); - }, [users, teamMembers, teamId]); - - const handleSearch = (value: string) => { - setSearch(value); - }; - - const handleOpenChange = () => { - setSearch(''); - }; - - const handleChange = (id: string) => { - setUsername(listItems.find(item => item.id === id)?.username); - onChange(id); - }; - - const renderValue = () => { - return ( - - {username} - - ); - }; - - return ( - - ); -} diff --git a/src/index.ts b/src/index.ts index df164b9d0..907c5623b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -19,13 +19,11 @@ export * from '@/app/(main)/teams/TeamAddForm'; export * from '@/app/(main)/teams/TeamJoinForm'; export * from '@/app/(main)/teams/TeamLeaveButton'; export * from '@/app/(main)/teams/TeamLeaveForm'; -export * from '@/app/(main)/teams/TeamMemberAddForm'; export * from '@/app/(main)/teams/TeamProvider'; export * from '@/app/(main)/teams/TeamsAddButton'; export * from '@/app/(main)/teams/TeamsDataTable'; export * from '@/app/(main)/teams/TeamsHeader'; export * from '@/app/(main)/teams/TeamsJoinButton'; -export * from '@/app/(main)/teams/TeamsMemberAddButton'; export * from '@/app/(main)/teams/TeamsTable'; export * from '@/app/(main)/websites/[websiteId]/settings/WebsiteData'; export * from '@/app/(main)/websites/[websiteId]/settings/WebsiteDeleteForm'; diff --git a/src/lib/constants.ts b/src/lib/constants.ts index 3da177c00..bfc80a136 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -55,7 +55,6 @@ export const SESSION_COLUMNS = [ 'country', 'city', 'region', - 'distinctId', ]; export const SEGMENT_TYPES = { @@ -70,7 +69,6 @@ export const FILTER_COLUMNS = { referrer: 'referrer_domain', domain: 'referrer_domain', hostname: 'hostname', - distinctId: 'distinct_id', title: 'page_title', query: 'url_query', os: 'os', diff --git a/src/lib/schema.ts b/src/lib/schema.ts index a3c56a0f1..247a89ae6 100644 --- a/src/lib/schema.ts +++ b/src/lib/schema.ts @@ -36,7 +36,6 @@ export const filterParams = { city: z.string().optional(), tag: z.string().optional(), hostname: z.string().optional(), - distinctId: z.string().optional(), language: z.string().optional(), event: z.string().optional(), segment: z.uuid().optional(), @@ -90,7 +89,6 @@ export const fieldsParam = z.enum([ 'city', 'tag', 'hostname', - 'distinctId', 'language', 'event', ]); diff --git a/src/queries/sql/events/getEventExpandedMetrics.ts b/src/queries/sql/events/getEventExpandedMetrics.ts index 86bda8509..dec444e8e 100644 --- a/src/queries/sql/events/getEventExpandedMetrics.ts +++ b/src/queries/sql/events/getEventExpandedMetrics.ts @@ -72,7 +72,6 @@ async function relationalQuery( ${filterQuery} group by name, website_event.session_id, website_event.visit_id ) as t - where name != '' group by name order by visitors desc, visits desc limit ${limit} diff --git a/src/queries/sql/reports/getBreakdown.ts b/src/queries/sql/reports/getBreakdown.ts index c84db7697..51773d864 100644 --- a/src/queries/sql/reports/getBreakdown.ts +++ b/src/queries/sql/reports/getBreakdown.ts @@ -131,5 +131,5 @@ function parseFields(fields: string[]) { } function parseFieldsByName(fields: string[]) { - return `${fields.map(name => `"${name}"`).join(',')}`; + return `${fields.map(name => name).join(',')}`; } diff --git a/src/queries/sql/sessions/getSessionExpandedMetrics.ts b/src/queries/sql/sessions/getSessionExpandedMetrics.ts index 6b85cd452..c8d20d84b 100644 --- a/src/queries/sql/sessions/getSessionExpandedMetrics.ts +++ b/src/queries/sql/sessions/getSessionExpandedMetrics.ts @@ -82,7 +82,6 @@ async function relationalQuery( group by name, website_event.session_id, website_event.visit_id ${includeCountry ? ', country' : ''} ) as t - where name != '' group by name ${includeCountry ? ', country' : ''} order by visitors desc, visits desc