mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2025-12-21 04:39:06 +00:00
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:
@@ -1,7 +1,7 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import { Box, Stack, Link, Heading } from "@chakra-ui/react";
|
import { Box, Stack, Link, Heading } from "@chakra-ui/react";
|
||||||
import NextLink from "next/link";
|
import NextLink from "next/link";
|
||||||
import { Room, SourceKind } from "../../../api";
|
import { Room, SourceKind } from "../../../lib/api-types";
|
||||||
|
|
||||||
interface FilterSidebarProps {
|
interface FilterSidebarProps {
|
||||||
rooms: Room[];
|
rooms: Room[];
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ import {
|
|||||||
highlightMatches,
|
highlightMatches,
|
||||||
generateTextFragment,
|
generateTextFragment,
|
||||||
} from "../../../lib/textHighlight";
|
} from "../../../lib/textHighlight";
|
||||||
import { SearchResult } from "../../../api";
|
import { SearchResult } from "../../../lib/api-types";
|
||||||
|
|
||||||
interface TranscriptCardsProps {
|
interface TranscriptCardsProps {
|
||||||
results: SearchResult[];
|
results: SearchResult[];
|
||||||
|
|||||||
@@ -20,7 +20,12 @@ import {
|
|||||||
} from "nuqs";
|
} from "nuqs";
|
||||||
import { LuX } from "react-icons/lu";
|
import { LuX } from "react-icons/lu";
|
||||||
import useSessionUser from "../../lib/useSessionUser";
|
import useSessionUser from "../../lib/useSessionUser";
|
||||||
import { Room, SourceKind, SearchResult, $SourceKind } from "../../api";
|
import {
|
||||||
|
Room,
|
||||||
|
SourceKind,
|
||||||
|
SearchResult,
|
||||||
|
$SourceKind,
|
||||||
|
} from "../../lib/api-types";
|
||||||
import {
|
import {
|
||||||
useRoomsList,
|
useRoomsList,
|
||||||
useTranscriptsSearch,
|
useTranscriptsSearch,
|
||||||
@@ -38,7 +43,7 @@ import Pagination, {
|
|||||||
import TranscriptCards from "./_components/TranscriptCards";
|
import TranscriptCards from "./_components/TranscriptCards";
|
||||||
import DeleteTranscriptDialog from "./_components/DeleteTranscriptDialog";
|
import DeleteTranscriptDialog from "./_components/DeleteTranscriptDialog";
|
||||||
import { formatLocalDate } from "../../lib/time";
|
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;
|
const SEARCH_FORM_QUERY_INPUT_NAME = "query" as const;
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Image from "next/image";
|
|||||||
import About from "../(aboutAndPrivacy)/about";
|
import About from "../(aboutAndPrivacy)/about";
|
||||||
import Privacy from "../(aboutAndPrivacy)/privacy";
|
import Privacy from "../(aboutAndPrivacy)/privacy";
|
||||||
import UserInfo from "../(auth)/userInfo";
|
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({
|
export default async function AppLayout({
|
||||||
children,
|
children,
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import {
|
|||||||
HStack,
|
HStack,
|
||||||
} from "@chakra-ui/react";
|
} from "@chakra-ui/react";
|
||||||
import { LuLink } from "react-icons/lu";
|
import { LuLink } from "react-icons/lu";
|
||||||
import { Room } from "../../../api";
|
import { Room } from "../../../lib/api-types";
|
||||||
import { RoomActionsMenu } from "./RoomActionsMenu";
|
import { RoomActionsMenu } from "./RoomActionsMenu";
|
||||||
|
|
||||||
interface RoomCardsProps {
|
interface RoomCardsProps {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { Box, Heading, Text, VStack } from "@chakra-ui/react";
|
import { Box, Heading, Text, VStack } from "@chakra-ui/react";
|
||||||
import { Room } from "../../../api";
|
import { Room } from "../../../lib/api-types";
|
||||||
import { RoomTable } from "./RoomTable";
|
import { RoomTable } from "./RoomTable";
|
||||||
import { RoomCards } from "./RoomCards";
|
import { RoomCards } from "./RoomCards";
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import {
|
|||||||
Spinner,
|
Spinner,
|
||||||
} from "@chakra-ui/react";
|
} from "@chakra-ui/react";
|
||||||
import { LuLink } from "react-icons/lu";
|
import { LuLink } from "react-icons/lu";
|
||||||
import { Room } from "../../../api";
|
import { Room } from "../../../lib/api-types";
|
||||||
import { RoomActionsMenu } from "./RoomActionsMenu";
|
import { RoomActionsMenu } from "./RoomActionsMenu";
|
||||||
|
|
||||||
interface RoomTableProps {
|
interface RoomTableProps {
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import {
|
|||||||
import { useEffect, useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
import useApi from "../../lib/useApi";
|
import useApi from "../../lib/useApi";
|
||||||
import useRoomList from "./useRoomList";
|
import useRoomList from "./useRoomList";
|
||||||
import { ApiError, Room } from "../../api";
|
import { ApiError, Room } from "../../lib/api-types";
|
||||||
import { RoomList } from "./_components/RoomList";
|
import { RoomList } from "./_components/RoomList";
|
||||||
import { PaginationPage } from "../browse/_components/Pagination";
|
import { PaginationPage } from "../browse/_components/Pagination";
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { useRoomsList } from "../../lib/api-hooks";
|
import { useRoomsList } from "../../lib/api-hooks";
|
||||||
import { Page_Room_ } from "../../api";
|
import { Page_Room_ } from "../../lib/api-types";
|
||||||
import { PaginationPage } from "../browse/_components/Pagination";
|
import { PaginationPage } from "../browse/_components/Pagination";
|
||||||
|
|
||||||
type RoomList = {
|
type RoomList = {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import {
|
|||||||
GetTranscript,
|
GetTranscript,
|
||||||
GetTranscriptTopic,
|
GetTranscriptTopic,
|
||||||
UpdateTranscript,
|
UpdateTranscript,
|
||||||
} from "../../../api";
|
} from "../../../lib/api-types";
|
||||||
import useApi from "../../../lib/useApi";
|
import useApi from "../../../lib/useApi";
|
||||||
import {
|
import {
|
||||||
Flex,
|
Flex,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { useEffect, useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
|
|
||||||
import { useError } from "../../(errors)/errorContext";
|
import { useError } from "../../(errors)/errorContext";
|
||||||
import { CreateTranscript, GetTranscript } from "../../api";
|
import { CreateTranscript, GetTranscript } from "../../lib/api-types";
|
||||||
import useApi from "../../lib/useApi";
|
import useApi from "../../lib/useApi";
|
||||||
|
|
||||||
type UseCreateTranscript = {
|
type UseCreateTranscript = {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import RegionsPlugin from "wavesurfer.js/dist/plugins/regions.esm.js";
|
|||||||
|
|
||||||
import { formatTime, formatTimeMs } from "../../lib/time";
|
import { formatTime, formatTimeMs } from "../../lib/time";
|
||||||
import { Topic } from "./webSocketTypes";
|
import { Topic } from "./webSocketTypes";
|
||||||
import { AudioWaveform } from "../../api";
|
import { AudioWaveform } from "../../lib/api-types";
|
||||||
import { waveSurferStyles } from "../../styles/recorder";
|
import { waveSurferStyles } from "../../styles/recorder";
|
||||||
import { Box, Flex, IconButton } from "@chakra-ui/react";
|
import { Box, Flex, IconButton } from "@chakra-ui/react";
|
||||||
import { LuPause, LuPlay } from "react-icons/lu";
|
import { LuPause, LuPlay } from "react-icons/lu";
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import useWebRTC from "./useWebRTC";
|
|||||||
import useAudioDevice from "./useAudioDevice";
|
import useAudioDevice from "./useAudioDevice";
|
||||||
import { Box, Flex, IconButton, Menu, RadioGroup } from "@chakra-ui/react";
|
import { Box, Flex, IconButton, Menu, RadioGroup } from "@chakra-ui/react";
|
||||||
import { LuScreenShare, LuMic, LuPlay, LuCircleStop } from "react-icons/lu";
|
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 = {
|
type RecorderProps = {
|
||||||
transcriptId: string;
|
transcriptId: string;
|
||||||
|
|||||||
@@ -2,7 +2,11 @@ import { useEffect, useState } from "react";
|
|||||||
import { featureEnabled } from "../../domainContext";
|
import { featureEnabled } from "../../domainContext";
|
||||||
|
|
||||||
import { ShareMode, toShareMode } from "../../lib/shareMode";
|
import { ShareMode, toShareMode } from "../../lib/shareMode";
|
||||||
import { GetTranscript, GetTranscriptTopic, UpdateTranscript } from "../../api";
|
import {
|
||||||
|
GetTranscript,
|
||||||
|
GetTranscriptTopic,
|
||||||
|
UpdateTranscript,
|
||||||
|
} from "../../lib/api-types";
|
||||||
import {
|
import {
|
||||||
Box,
|
Box,
|
||||||
Flex,
|
Flex,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { useState } from "react";
|
import { useState } from "react";
|
||||||
import { GetTranscript, GetTranscriptTopic } from "../../api";
|
import { GetTranscript, GetTranscriptTopic } from "../../lib/api-types";
|
||||||
import { Button, BoxProps, Box } from "@chakra-ui/react";
|
import { Button, BoxProps, Box } from "@chakra-ui/react";
|
||||||
|
|
||||||
type ShareCopyProps = {
|
type ShareCopyProps = {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { useState, useEffect, useMemo } from "react";
|
import { useState, useEffect, useMemo } from "react";
|
||||||
import { featureEnabled } from "../../domainContext";
|
import { featureEnabled } from "../../domainContext";
|
||||||
import { GetTranscript, GetTranscriptTopic } from "../../api";
|
import { GetTranscript, GetTranscriptTopic } from "../../lib/api-types";
|
||||||
import {
|
import {
|
||||||
BoxProps,
|
BoxProps,
|
||||||
Button,
|
Button,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { useState } from "react";
|
import { useState } from "react";
|
||||||
import { UpdateTranscript } from "../../api";
|
import { UpdateTranscript } from "../../lib/api-types";
|
||||||
import useApi from "../../lib/useApi";
|
import useApi from "../../lib/useApi";
|
||||||
import { Heading, IconButton, Input, Flex, Spacer } from "@chakra-ui/react";
|
import { Heading, IconButton, Input, Flex, Spacer } from "@chakra-ui/react";
|
||||||
import { LuPen } from "react-icons/lu";
|
import { LuPen } from "react-icons/lu";
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { useEffect, useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
import { Participant } from "../../api";
|
import { Participant } from "../../lib/api-types";
|
||||||
import { useError } from "../../(errors)/errorContext";
|
import { useError } from "../../(errors)/errorContext";
|
||||||
import useApi from "../../lib/useApi";
|
import useApi from "../../lib/useApi";
|
||||||
import { shouldShowError } from "../../lib/errorUtils";
|
import { shouldShowError } from "../../lib/errorUtils";
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// Wrapper for backward compatibility
|
// Wrapper for backward compatibility
|
||||||
import { SearchResult, SourceKind } from "../../api";
|
import { SearchResult, SourceKind } from "../../lib/api-types";
|
||||||
import { useTranscriptsSearch } from "../../lib/api-hooks";
|
import { useTranscriptsSearch } from "../../lib/api-hooks";
|
||||||
import {
|
import {
|
||||||
PaginationPage,
|
PaginationPage,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { useEffect, useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
|
|
||||||
import { GetTranscriptTopicWithWordsPerSpeaker } from "../../api";
|
import { GetTranscriptTopicWithWordsPerSpeaker } from "../../lib/api-types";
|
||||||
import { useError } from "../../(errors)/errorContext";
|
import { useError } from "../../(errors)/errorContext";
|
||||||
import useApi from "../../lib/useApi";
|
import useApi from "../../lib/useApi";
|
||||||
import { shouldShowError } from "../../lib/errorUtils";
|
import { shouldShowError } from "../../lib/errorUtils";
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { useError } from "../../(errors)/errorContext";
|
|||||||
import { Topic } from "./webSocketTypes";
|
import { Topic } from "./webSocketTypes";
|
||||||
import useApi from "../../lib/useApi";
|
import useApi from "../../lib/useApi";
|
||||||
import { shouldShowError } from "../../lib/errorUtils";
|
import { shouldShowError } from "../../lib/errorUtils";
|
||||||
import { GetTranscriptTopic } from "../../api";
|
import { GetTranscriptTopic } from "../../lib/api-types";
|
||||||
|
|
||||||
type TranscriptTopics = {
|
type TranscriptTopics = {
|
||||||
topics: GetTranscriptTopic[] | null;
|
topics: GetTranscriptTopic[] | null;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { GetTranscript } from "../../api";
|
import { GetTranscript } from "../../lib/api-types";
|
||||||
import { useTranscriptGet } from "../../lib/api-hooks";
|
import { useTranscriptGet } from "../../lib/api-hooks";
|
||||||
|
|
||||||
type ErrorTranscript = {
|
type ErrorTranscript = {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { useEffect, useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
import { AudioWaveform } from "../../api";
|
import { AudioWaveform } from "../../lib/api-types";
|
||||||
import { useError } from "../../(errors)/errorContext";
|
import { useError } from "../../(errors)/errorContext";
|
||||||
import useApi from "../../lib/useApi";
|
import useApi from "../../lib/useApi";
|
||||||
import { shouldShowError } from "../../lib/errorUtils";
|
import { shouldShowError } from "../../lib/errorUtils";
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { useEffect, useState } from "react";
|
|||||||
import Peer from "simple-peer";
|
import Peer from "simple-peer";
|
||||||
import { useError } from "../../(errors)/errorContext";
|
import { useError } from "../../(errors)/errorContext";
|
||||||
import useApi from "../../lib/useApi";
|
import useApi from "../../lib/useApi";
|
||||||
import { RtcOffer } from "../../api";
|
import { RtcOffer } from "../../lib/api-types";
|
||||||
|
|
||||||
const useWebRTC = (
|
const useWebRTC = (
|
||||||
stream: MediaStream | null,
|
stream: MediaStream | null,
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { useContext, useEffect, useState } from "react";
|
|||||||
import { Topic, FinalSummary, Status } from "./webSocketTypes";
|
import { Topic, FinalSummary, Status } from "./webSocketTypes";
|
||||||
import { useError } from "../../(errors)/errorContext";
|
import { useError } from "../../(errors)/errorContext";
|
||||||
import { DomainContext } from "../../domainContext";
|
import { DomainContext } from "../../domainContext";
|
||||||
import { AudioWaveform, GetTranscriptSegmentTopic } from "../../api";
|
import { AudioWaveform, GetTranscriptSegmentTopic } from "../../lib/api-types";
|
||||||
import useApi from "../../lib/useApi";
|
import useApi from "../../lib/useApi";
|
||||||
|
|
||||||
export type UseWebSockets = {
|
export type UseWebSockets = {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { GetTranscriptTopic } from "../../api";
|
import { GetTranscriptTopic } from "../../lib/api-types";
|
||||||
|
|
||||||
export type Topic = GetTranscriptTopic;
|
export type Topic = GetTranscriptTopic;
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import { notFound } from "next/navigation";
|
|||||||
import useSessionStatus from "../lib/useSessionStatus";
|
import useSessionStatus from "../lib/useSessionStatus";
|
||||||
import { useRecordingConsent } from "../recordingConsentContext";
|
import { useRecordingConsent } from "../recordingConsentContext";
|
||||||
import useApi from "../lib/useApi";
|
import useApi from "../lib/useApi";
|
||||||
import { Meeting } from "../api";
|
import { Meeting } from "../lib/api-types";
|
||||||
import { FaBars } from "react-icons/fa6";
|
import { FaBars } from "react-icons/fa6";
|
||||||
|
|
||||||
export type RoomDetails = {
|
export type RoomDetails = {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { useEffect, useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
import { useError } from "../(errors)/errorContext";
|
import { useError } from "../(errors)/errorContext";
|
||||||
import { Meeting } from "../api";
|
import { Meeting } from "../lib/api-types";
|
||||||
import { shouldShowError } from "../lib/errorUtils";
|
import { shouldShowError } from "../lib/errorUtils";
|
||||||
import useApi from "../lib/useApi";
|
import useApi from "../lib/useApi";
|
||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
|
|||||||
@@ -108,3 +108,88 @@ export function useTranscriptGet(transcriptId: string | null) {
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Rooms mutations
|
||||||
|
export function useRoomCreate() {
|
||||||
|
const { setError } = useError();
|
||||||
|
const queryClient = useQueryClient();
|
||||||
|
|
||||||
|
return $api.useMutation("post", "/v1/rooms", {
|
||||||
|
onSuccess: () => {
|
||||||
|
queryClient.invalidateQueries({
|
||||||
|
queryKey: $api.queryOptions("get", "/v1/rooms").queryKey,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
onError: (error) => {
|
||||||
|
setError(error as Error, "There was an error creating the room");
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function useRoomUpdate() {
|
||||||
|
const { setError } = useError();
|
||||||
|
const queryClient = useQueryClient();
|
||||||
|
|
||||||
|
return $api.useMutation("patch", "/v1/rooms/{room_id}", {
|
||||||
|
onSuccess: () => {
|
||||||
|
queryClient.invalidateQueries({
|
||||||
|
queryKey: $api.queryOptions("get", "/v1/rooms").queryKey,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
onError: (error) => {
|
||||||
|
setError(error as Error, "There was an error updating the room");
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function useRoomDelete() {
|
||||||
|
const { setError } = useError();
|
||||||
|
const queryClient = useQueryClient();
|
||||||
|
|
||||||
|
return $api.useMutation("delete", "/v1/rooms/{room_id}", {
|
||||||
|
onSuccess: () => {
|
||||||
|
queryClient.invalidateQueries({
|
||||||
|
queryKey: $api.queryOptions("get", "/v1/rooms").queryKey,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
onError: (error) => {
|
||||||
|
setError(error as Error, "There was an error deleting the room");
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Zulip hooks
|
||||||
|
export function useZulipStreams() {
|
||||||
|
const { setError } = useError();
|
||||||
|
|
||||||
|
return $api.useQuery(
|
||||||
|
"get",
|
||||||
|
"/v1/zulip/get-streams",
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
onError: (error) => {
|
||||||
|
setError(error as Error, "There was an error fetching Zulip streams");
|
||||||
|
},
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function useZulipTopics(streamId: number | null) {
|
||||||
|
const { setError } = useError();
|
||||||
|
|
||||||
|
return $api.useQuery(
|
||||||
|
"get",
|
||||||
|
"/v1/zulip/get-topics",
|
||||||
|
{
|
||||||
|
params: {
|
||||||
|
query: { stream_id: streamId || 0 },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
enabled: !!streamId,
|
||||||
|
onError: (error) => {
|
||||||
|
setError(error as Error, "There was an error fetching Zulip topics");
|
||||||
|
},
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|||||||
28
www/app/lib/api-types.ts
Normal file
28
www/app/lib/api-types.ts
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
// Re-export types from generated OpenAPI schema for backward compatibility
|
||||||
|
import type { components } from "../reflector-api";
|
||||||
|
|
||||||
|
// Export types with their original names
|
||||||
|
export type Room = components["schemas"]["Room"];
|
||||||
|
export type Meeting = components["schemas"]["Meeting"];
|
||||||
|
export type SourceKind = components["schemas"]["SourceKind"];
|
||||||
|
export type SearchResult = components["schemas"]["SearchResult"];
|
||||||
|
export type GetTranscript = components["schemas"]["GetTranscript"];
|
||||||
|
export type GetTranscriptTopic = components["schemas"]["GetTranscriptTopic"];
|
||||||
|
export type UpdateTranscript = components["schemas"]["UpdateTranscript"];
|
||||||
|
export type AudioWaveform = components["schemas"]["AudioWaveform"];
|
||||||
|
export type Participant = components["schemas"]["Participant"];
|
||||||
|
export type CreateTranscript = components["schemas"]["CreateTranscript"];
|
||||||
|
export type RtcOffer = components["schemas"]["RtcOffer"];
|
||||||
|
export type GetTranscriptSegmentTopic =
|
||||||
|
components["schemas"]["GetTranscriptSegmentTopic"];
|
||||||
|
export type Page_Room_ = components["schemas"]["Page_Room_"];
|
||||||
|
export type ApiError = components["schemas"]["ApiError"];
|
||||||
|
export type GetTranscriptTopicWithWordsPerSpeaker =
|
||||||
|
components["schemas"]["GetTranscriptTopicWithWordsPerSpeaker"];
|
||||||
|
export type GetTranscriptMinimal =
|
||||||
|
components["schemas"]["GetTranscriptMinimal"];
|
||||||
|
|
||||||
|
// Export any enums or constants that were in the old API
|
||||||
|
export const $SourceKind = {
|
||||||
|
values: ["SINGLE", "CALL", "WHEREBY", "UPLOAD"] as const,
|
||||||
|
} as const;
|
||||||
2
www/app/lib/constants.ts
Normal file
2
www/app/lib/constants.ts
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
// Application-wide constants
|
||||||
|
export const RECORD_A_MEETING_URL = "/transcripts/new" as const;
|
||||||
13
www/app/lib/useApi.ts
Normal file
13
www/app/lib/useApi.ts
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
// Compatibility layer for direct API client usage
|
||||||
|
// Prefer using React Query hooks from api-hooks.ts instead
|
||||||
|
|
||||||
|
import { client } from "./apiClient";
|
||||||
|
|
||||||
|
// Returns the configured client for direct API calls
|
||||||
|
// This is a minimal compatibility layer for components that haven't been fully migrated
|
||||||
|
export default function useApi() {
|
||||||
|
return client;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Export the client directly for non-hook contexts
|
||||||
|
export { client };
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
"use client";
|
"use client";
|
||||||
import { redirect } from "next/navigation";
|
import { redirect } from "next/navigation";
|
||||||
import { RECORD_A_MEETING_URL } from "./api/urls";
|
import { RECORD_A_MEETING_URL } from "./lib/constants";
|
||||||
|
|
||||||
export default function Index() {
|
export default function Index() {
|
||||||
redirect(RECORD_A_MEETING_URL);
|
redirect(RECORD_A_MEETING_URL);
|
||||||
|
|||||||
Reference in New Issue
Block a user