HomeIcon.tsx 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import { LOCAL_STORAGE_KEYS } from 'common'
  2. import Link from 'next/link'
  3. import { useRouter } from 'next/router'
  4. import { cn } from 'ui'
  5. import { useOrganizationsQuery } from '@/data/organizations/organizations-query'
  6. import { useIsFeatureEnabled } from '@/hooks/misc/useIsFeatureEnabled'
  7. import { useLocalStorageQuery } from '@/hooks/misc/useLocalStorage'
  8. import { useSelectedOrganizationQuery } from '@/hooks/misc/useSelectedOrganization'
  9. import { IS_PLATFORM } from '@/lib/constants'
  10. import { useTrack } from '@/lib/telemetry/track'
  11. export const HomeIcon = ({ className }: { className?: string }) => {
  12. const { data: selectedOrganization } = useSelectedOrganizationQuery()
  13. const { data: organizations } = useOrganizationsQuery()
  14. const track = useTrack()
  15. const largeLogo = useIsFeatureEnabled('branding:large_logo')
  16. const router = useRouter()
  17. const [lastVisitedOrganization] = useLocalStorageQuery(
  18. LOCAL_STORAGE_KEYS.LAST_VISITED_ORGANIZATION,
  19. ''
  20. )
  21. const getDefaultOrgRedirect = () => {
  22. if (lastVisitedOrganization) return `/org/${lastVisitedOrganization}`
  23. if (selectedOrganization?.slug) return `/org/${selectedOrganization.slug}`
  24. if (organizations && organizations.length > 0) return `/org/${organizations[0].slug}`
  25. return '/organizations'
  26. }
  27. const href = IS_PLATFORM ? getDefaultOrgRedirect() : '/project/default'
  28. return (
  29. <Link
  30. href={href}
  31. onClick={() => track('header_home_logo_clicked')}
  32. className={cn('items-center justify-center shrink-0 flex', className)}
  33. >
  34. <img
  35. alt="Briven"
  36. src={`${router.basePath}/img/briven-logo.svg`}
  37. className={largeLogo ? 'h-[20px]' : 'h-[18px]'}
  38. />
  39. </Link>
  40. )
  41. }