fix: resolve import errors and add missing api hooks

- Create constants.ts for RECORD_A_MEETING_URL
- Add api-types.ts for backward compatible type exports
- Update all imports from deleted api folder to new locations
- Add missing React Query hooks for rooms and zulip operations
- Create useApi compatibility layer for unmigrated components
This commit is contained in:
2025-08-27 23:55:59 -06:00
parent e8afe82acd
commit 68c161ee7e
33 changed files with 167 additions and 30 deletions

View File

@@ -1,7 +1,7 @@
import React from "react";
import { Box, Stack, Link, Heading } from "@chakra-ui/react";
import NextLink from "next/link";
import { Room, SourceKind } from "../../../api";
import { Room, SourceKind } from "../../../lib/api-types";
interface FilterSidebarProps {
rooms: Room[];

View File

@@ -18,7 +18,7 @@ import {
highlightMatches,
generateTextFragment,
} from "../../../lib/textHighlight";
import { SearchResult } from "../../../api";
import { SearchResult } from "../../../lib/api-types";
interface TranscriptCardsProps {
results: SearchResult[];

View File

@@ -20,7 +20,12 @@ import {
} from "nuqs";
import { LuX } from "react-icons/lu";
import useSessionUser from "../../lib/useSessionUser";
import { Room, SourceKind, SearchResult, $SourceKind } from "../../api";
import {
Room,
SourceKind,
SearchResult,
$SourceKind,
} from "../../lib/api-types";
import {
useRoomsList,
useTranscriptsSearch,
@@ -38,7 +43,7 @@ import Pagination, {
import TranscriptCards from "./_components/TranscriptCards";
import DeleteTranscriptDialog from "./_components/DeleteTranscriptDialog";
import { formatLocalDate } from "../../lib/time";
import { RECORD_A_MEETING_URL } from "../../api/urls";
import { RECORD_A_MEETING_URL } from "../../lib/constants";
const SEARCH_FORM_QUERY_INPUT_NAME = "query" as const;

View File

@@ -5,7 +5,7 @@ import Image from "next/image";
import About from "../(aboutAndPrivacy)/about";
import Privacy from "../(aboutAndPrivacy)/privacy";
import UserInfo from "../(auth)/userInfo";
import { RECORD_A_MEETING_URL } from "../api/urls";
import { RECORD_A_MEETING_URL } from "../lib/constants";
export default async function AppLayout({
children,

View File

@@ -12,7 +12,7 @@ import {
HStack,
} from "@chakra-ui/react";
import { LuLink } from "react-icons/lu";
import { Room } from "../../../api";
import { Room } from "../../../lib/api-types";
import { RoomActionsMenu } from "./RoomActionsMenu";
interface RoomCardsProps {

View File

@@ -1,5 +1,5 @@
import { Box, Heading, Text, VStack } from "@chakra-ui/react";
import { Room } from "../../../api";
import { Room } from "../../../lib/api-types";
import { RoomTable } from "./RoomTable";
import { RoomCards } from "./RoomCards";

View File

@@ -9,7 +9,7 @@ import {
Spinner,
} from "@chakra-ui/react";
import { LuLink } from "react-icons/lu";
import { Room } from "../../../api";
import { Room } from "../../../lib/api-types";
import { RoomActionsMenu } from "./RoomActionsMenu";
interface RoomTableProps {

View File

@@ -17,7 +17,7 @@ import {
import { useEffect, useState } from "react";
import useApi from "../../lib/useApi";
import useRoomList from "./useRoomList";
import { ApiError, Room } from "../../api";
import { ApiError, Room } from "../../lib/api-types";
import { RoomList } from "./_components/RoomList";
import { PaginationPage } from "../browse/_components/Pagination";

View File

@@ -1,5 +1,5 @@
import { useRoomsList } from "../../lib/api-hooks";
import { Page_Room_ } from "../../api";
import { Page_Room_ } from "../../lib/api-types";
import { PaginationPage } from "../browse/_components/Pagination";
type RoomList = {

View File

@@ -6,7 +6,7 @@ import {
GetTranscript,
GetTranscriptTopic,
UpdateTranscript,
} from "../../../api";
} from "../../../lib/api-types";
import useApi from "../../../lib/useApi";
import {
Flex,

View File

@@ -1,7 +1,7 @@
import { useEffect, useState } from "react";
import { useError } from "../../(errors)/errorContext";
import { CreateTranscript, GetTranscript } from "../../api";
import { CreateTranscript, GetTranscript } from "../../lib/api-types";
import useApi from "../../lib/useApi";
type UseCreateTranscript = {

View File

@@ -5,7 +5,7 @@ import RegionsPlugin from "wavesurfer.js/dist/plugins/regions.esm.js";
import { formatTime, formatTimeMs } from "../../lib/time";
import { Topic } from "./webSocketTypes";
import { AudioWaveform } from "../../api";
import { AudioWaveform } from "../../lib/api-types";
import { waveSurferStyles } from "../../styles/recorder";
import { Box, Flex, IconButton } from "@chakra-ui/react";
import { LuPause, LuPlay } from "react-icons/lu";

View File

@@ -11,7 +11,7 @@ import useWebRTC from "./useWebRTC";
import useAudioDevice from "./useAudioDevice";
import { Box, Flex, IconButton, Menu, RadioGroup } from "@chakra-ui/react";
import { LuScreenShare, LuMic, LuPlay, LuCircleStop } from "react-icons/lu";
import { RECORD_A_MEETING_URL } from "../../api/urls";
import { RECORD_A_MEETING_URL } from "../../lib/constants";
type RecorderProps = {
transcriptId: string;

View File

@@ -2,7 +2,11 @@ import { useEffect, useState } from "react";
import { featureEnabled } from "../../domainContext";
import { ShareMode, toShareMode } from "../../lib/shareMode";
import { GetTranscript, GetTranscriptTopic, UpdateTranscript } from "../../api";
import {
GetTranscript,
GetTranscriptTopic,
UpdateTranscript,
} from "../../lib/api-types";
import {
Box,
Flex,

View File

@@ -1,5 +1,5 @@
import { useState } from "react";
import { GetTranscript, GetTranscriptTopic } from "../../api";
import { GetTranscript, GetTranscriptTopic } from "../../lib/api-types";
import { Button, BoxProps, Box } from "@chakra-ui/react";
type ShareCopyProps = {

View File

@@ -1,6 +1,6 @@
import { useState, useEffect, useMemo } from "react";
import { featureEnabled } from "../../domainContext";
import { GetTranscript, GetTranscriptTopic } from "../../api";
import { GetTranscript, GetTranscriptTopic } from "../../lib/api-types";
import {
BoxProps,
Button,

View File

@@ -1,5 +1,5 @@
import { useState } from "react";
import { UpdateTranscript } from "../../api";
import { UpdateTranscript } from "../../lib/api-types";
import useApi from "../../lib/useApi";
import { Heading, IconButton, Input, Flex, Spacer } from "@chakra-ui/react";
import { LuPen } from "react-icons/lu";

View File

@@ -1,5 +1,5 @@
import { useEffect, useState } from "react";
import { Participant } from "../../api";
import { Participant } from "../../lib/api-types";
import { useError } from "../../(errors)/errorContext";
import useApi from "../../lib/useApi";
import { shouldShowError } from "../../lib/errorUtils";

View File

@@ -1,5 +1,5 @@
// Wrapper for backward compatibility
import { SearchResult, SourceKind } from "../../api";
import { SearchResult, SourceKind } from "../../lib/api-types";
import { useTranscriptsSearch } from "../../lib/api-hooks";
import {
PaginationPage,

View File

@@ -1,6 +1,6 @@
import { useEffect, useState } from "react";
import { GetTranscriptTopicWithWordsPerSpeaker } from "../../api";
import { GetTranscriptTopicWithWordsPerSpeaker } from "../../lib/api-types";
import { useError } from "../../(errors)/errorContext";
import useApi from "../../lib/useApi";
import { shouldShowError } from "../../lib/errorUtils";

View File

@@ -4,7 +4,7 @@ import { useError } from "../../(errors)/errorContext";
import { Topic } from "./webSocketTypes";
import useApi from "../../lib/useApi";
import { shouldShowError } from "../../lib/errorUtils";
import { GetTranscriptTopic } from "../../api";
import { GetTranscriptTopic } from "../../lib/api-types";
type TranscriptTopics = {
topics: GetTranscriptTopic[] | null;

View File

@@ -1,4 +1,4 @@
import { GetTranscript } from "../../api";
import { GetTranscript } from "../../lib/api-types";
import { useTranscriptGet } from "../../lib/api-hooks";
type ErrorTranscript = {

View File

@@ -1,5 +1,5 @@
import { useEffect, useState } from "react";
import { AudioWaveform } from "../../api";
import { AudioWaveform } from "../../lib/api-types";
import { useError } from "../../(errors)/errorContext";
import useApi from "../../lib/useApi";
import { shouldShowError } from "../../lib/errorUtils";

View File

@@ -2,7 +2,7 @@ import { useEffect, useState } from "react";
import Peer from "simple-peer";
import { useError } from "../../(errors)/errorContext";
import useApi from "../../lib/useApi";
import { RtcOffer } from "../../api";
import { RtcOffer } from "../../lib/api-types";
const useWebRTC = (
stream: MediaStream | null,

View File

@@ -2,7 +2,7 @@ import { useContext, useEffect, useState } from "react";
import { Topic, FinalSummary, Status } from "./webSocketTypes";
import { useError } from "../../(errors)/errorContext";
import { DomainContext } from "../../domainContext";
import { AudioWaveform, GetTranscriptSegmentTopic } from "../../api";
import { AudioWaveform, GetTranscriptSegmentTopic } from "../../lib/api-types";
import useApi from "../../lib/useApi";
export type UseWebSockets = {

View File

@@ -1,4 +1,4 @@
import { GetTranscriptTopic } from "../../api";
import { GetTranscriptTopic } from "../../lib/api-types";
export type Topic = GetTranscriptTopic;