52 lines
1.5 KiB
TypeScript
52 lines
1.5 KiB
TypeScript
import { useEffect, useState } from 'react';
|
|
|
|
import {
|
|
isMemberLogStreamUiEnabled,
|
|
MemberLogStreamSection,
|
|
} from '@features/member-log-stream/renderer';
|
|
|
|
import { MemberLogsTab } from './MemberLogsTab';
|
|
|
|
import type { ResolvedTeamMember } from '@shared/types';
|
|
|
|
interface MemberLogStreamWithLegacyFallbackProps {
|
|
teamName: string;
|
|
member: ResolvedTeamMember;
|
|
enabled?: boolean;
|
|
}
|
|
|
|
export const MemberLogStreamWithLegacyFallback = ({
|
|
teamName,
|
|
member,
|
|
enabled = true,
|
|
}: Readonly<MemberLogStreamWithLegacyFallbackProps>): React.JSX.Element => {
|
|
const streamUiEnabled = isMemberLogStreamUiEnabled();
|
|
const [showLegacyLogsFallback, setShowLegacyLogsFallback] = useState(false);
|
|
|
|
useEffect(() => {
|
|
setShowLegacyLogsFallback(false);
|
|
}, [member.name, streamUiEnabled, teamName]);
|
|
|
|
if (!streamUiEnabled) {
|
|
return <MemberLogsTab teamName={teamName} memberName={member.name} />;
|
|
}
|
|
|
|
return (
|
|
<div className="space-y-4">
|
|
<MemberLogStreamSection
|
|
teamName={teamName}
|
|
member={member}
|
|
enabled={enabled}
|
|
onInitialLoadErrorChange={setShowLegacyLogsFallback}
|
|
/>
|
|
{showLegacyLogsFallback ? (
|
|
<div className="rounded-md border border-[var(--color-border)] p-3">
|
|
<div className="mb-3 text-xs font-semibold uppercase text-[var(--color-text-muted)]">
|
|
Legacy Logs Fallback
|
|
</div>
|
|
<MemberLogsTab teamName={teamName} memberName={member.name} />
|
|
</div>
|
|
) : null}
|
|
</div>
|
|
);
|
|
};
|