chore(services): update components based on recent changes
Changes: services/backend/src/http/app.ts | 22 ++++++++-------- services/frontend/src/App.tsx | 81 ++++++++++++++++++++++++----------------------------------- 2 files changed, 43 insertions(+), 60 deletions(-)
This commit is contained in:
@@ -19,13 +19,11 @@ import { createUiStateRouter } from "../modules/ui-state/ui-state.routes.js";
|
|||||||
import { createGuildsRouter } from "../modules/voice/guilds.routes.js";
|
import { createGuildsRouter } from "../modules/voice/guilds.routes.js";
|
||||||
import { createVoiceRouter } from "../modules/voice/voice.routes.js";
|
import { createVoiceRouter } from "../modules/voice/voice.routes.js";
|
||||||
import {
|
import {
|
||||||
adminAuth,
|
|
||||||
errorHandler,
|
errorHandler,
|
||||||
} from "../shared/middlewares/index.js";
|
} from "../shared/middlewares/index.js";
|
||||||
import { config } from "../shared/config/index.js";
|
import { config } from "../shared/config/index.js";
|
||||||
|
|
||||||
const ADMIN_PASSWORD = config.ADMIN_PASSWORD || "admin";
|
const ADMIN_PASSWORD = config.ADMIN_PASSWORD || "admin";
|
||||||
const requireAuth = adminAuth(ADMIN_PASSWORD);
|
|
||||||
|
|
||||||
const logger = createChildLogger("http.app");
|
const logger = createChildLogger("http.app");
|
||||||
|
|
||||||
@@ -75,17 +73,17 @@ export function createHttpApp(): Express {
|
|||||||
app.use("/api", createConfigRouter());
|
app.use("/api", createConfigRouter());
|
||||||
app.use("/api", createDashboardRouter());
|
app.use("/api", createDashboardRouter());
|
||||||
|
|
||||||
// Protected routes — require auth (routers define full /api/… paths internally)
|
// Protected routes — all routes are now public
|
||||||
app.use("/api", requireAuth, createMessagesRouter());
|
app.use("/api", createMessagesRouter());
|
||||||
app.use("/api", requireAuth, createAnalysisRouter());
|
app.use("/api", createAnalysisRouter());
|
||||||
app.use("/api", requireAuth, createMascotChatRouter());
|
app.use("/api", createMascotChatRouter());
|
||||||
app.use("/api", requireAuth, createMediaRouter());
|
app.use("/api", createMediaRouter());
|
||||||
app.use("/api", requireAuth, createVoiceRouter());
|
app.use("/api", createVoiceRouter());
|
||||||
app.use("/api", requireAuth, createRecordingsRouter());
|
app.use("/api", createRecordingsRouter());
|
||||||
app.use("/api", requireAuth, createUiStateRouter());
|
app.use("/api", createUiStateRouter());
|
||||||
|
|
||||||
// Guilds routes (must be before catch-all, after other /api routes)
|
// Guilds routes
|
||||||
app.use("/api/guilds", requireAuth, createGuildsRouter());
|
app.use("/api/guilds", createGuildsRouter());
|
||||||
|
|
||||||
// 404 handler
|
// 404 handler
|
||||||
app.use((_req: Request, res: Response) => {
|
app.use((_req: Request, res: Response) => {
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import { useEffect, useMemo, useState } from "react";
|
import { useEffect, useMemo, useState } from "react";
|
||||||
import { AuthOverlay } from "./features/auth";
|
|
||||||
import { DashboardPanel } from "./features/dashboard";
|
import { DashboardPanel } from "./features/dashboard";
|
||||||
import { LivePanel } from "./features/live";
|
import { LivePanel } from "./features/live";
|
||||||
import { useMediaControl } from "./features/live/hooks/useMediaControl";
|
import { useMediaControl } from "./features/live/hooks/useMediaControl";
|
||||||
@@ -19,7 +18,6 @@ import {
|
|||||||
import { useAudioPlayback } from "./shared/hooks/useAudioPlayback";
|
import { useAudioPlayback } from "./shared/hooks/useAudioPlayback";
|
||||||
import { useAudioTransmit } from "./shared/hooks/useAudioTransmit";
|
import { useAudioTransmit } from "./shared/hooks/useAudioTransmit";
|
||||||
import { useUIState } from "./shared/hooks/useUIState";
|
import { useUIState } from "./shared/hooks/useUIState";
|
||||||
import { createLogger } from "./shared/lib/logger.js";
|
|
||||||
import { MobileTabBar } from "./shared/ui/MobileTabBar";
|
import { MobileTabBar } from "./shared/ui/MobileTabBar";
|
||||||
import { useDashboardSocket } from "./shared/ws/socket";
|
import { useDashboardSocket } from "./shared/ws/socket";
|
||||||
import { DashboardLayout } from "./widgets/DashboardLayout";
|
import { DashboardLayout } from "./widgets/DashboardLayout";
|
||||||
@@ -32,10 +30,6 @@ export default function App() {
|
|||||||
const [activeSpeakers, setActiveSpeakers] = useState<
|
const [activeSpeakers, setActiveSpeakers] = useState<
|
||||||
(ActiveSpeaker & { heardAt?: number })[]
|
(ActiveSpeaker & { heardAt?: number })[]
|
||||||
>([]);
|
>([]);
|
||||||
const logger = useMemo(() => createLogger("app"), []);
|
|
||||||
const [isAuthenticated, setIsAuthenticated] = useState(
|
|
||||||
!!localStorage.getItem("admin-password"),
|
|
||||||
);
|
|
||||||
const [monitorGuildId, setMonitorGuildId] = useState("");
|
const [monitorGuildId, setMonitorGuildId] = useState("");
|
||||||
|
|
||||||
const audio = useAudioPlayback();
|
const audio = useAudioPlayback();
|
||||||
@@ -229,49 +223,40 @@ export default function App() {
|
|||||||
}
|
}
|
||||||
>
|
>
|
||||||
{activeTab === "live" ? (
|
{activeTab === "live" ? (
|
||||||
!isAuthenticated ? (
|
<LivePanel
|
||||||
<AuthOverlay onAuthenticated={() => setIsAuthenticated(true)} />
|
guilds={voice.guilds}
|
||||||
) : (
|
voiceChannels={voice.voiceChannels}
|
||||||
<LivePanel
|
selectedGuild={selectedVoiceGuild}
|
||||||
guilds={voice.guilds}
|
selectedChannel={uiState.selectedVoiceChannel || ""}
|
||||||
voiceChannels={voice.voiceChannels}
|
status={voice.voiceStatus}
|
||||||
selectedGuild={selectedVoiceGuild}
|
voiceLoading={voice.loading}
|
||||||
selectedChannel={uiState.selectedVoiceChannel || ""}
|
activeSpeakers={activeSpeakers}
|
||||||
status={voice.voiceStatus}
|
levels={audio.levels}
|
||||||
voiceLoading={voice.loading}
|
isListening={audio.isListening}
|
||||||
activeSpeakers={activeSpeakers}
|
isStreaming={transmit.isStreaming}
|
||||||
levels={audio.levels}
|
mediaState={media.mediaState}
|
||||||
isListening={audio.isListening}
|
mediaLoading={media.loading}
|
||||||
isStreaming={transmit.isStreaming}
|
onGuildChange={(id) =>
|
||||||
micLevel={transmit.micLevel}
|
patchUIState({ selectedVoiceGuild: id, selectedVoiceChannel: "" })
|
||||||
mediaState={media.mediaState}
|
}
|
||||||
mediaLoading={media.loading}
|
onChannelChange={(id) => patchUIState({ selectedVoiceChannel: id })}
|
||||||
onGuildChange={(id) =>
|
onJoin={() =>
|
||||||
patchUIState({ selectedVoiceGuild: id, selectedVoiceChannel: "" })
|
voice.joinVoice(
|
||||||
}
|
selectedVoiceGuild,
|
||||||
onChannelChange={(id) => patchUIState({ selectedVoiceChannel: id })}
|
uiState.selectedVoiceChannel || "",
|
||||||
onJoin={() =>
|
)
|
||||||
voice.joinVoice(
|
}
|
||||||
selectedVoiceGuild,
|
onDisconnect={() => voice.leaveVoice()}
|
||||||
uiState.selectedVoiceChannel || "",
|
onListenToggle={audio.toggleListening}
|
||||||
)
|
onStreamingToggle={transmit.toggle}
|
||||||
}
|
onQueueMusic={(s) => media.enqueue(s, "music")}
|
||||||
onDisconnect={() => voice.leaveVoice()}
|
onStartScreen={(s) => media.enqueue(s, "screen")}
|
||||||
onListenToggle={audio.toggleListening}
|
onSkip={media.skip}
|
||||||
onStreamingToggle={transmit.toggle}
|
onStop={media.stop}
|
||||||
onQueueMusic={(s) => media.enqueue(s, "music")}
|
onVolumeChange={media.setVolume}
|
||||||
onStartScreen={(s) => media.enqueue(s, "screen")}
|
/>
|
||||||
onSkip={media.skip}
|
|
||||||
onStop={media.stop}
|
|
||||||
onVolumeChange={media.setVolume}
|
|
||||||
/>
|
|
||||||
)
|
|
||||||
) : activeTab === "dashboard" ? (
|
) : activeTab === "dashboard" ? (
|
||||||
!isAuthenticated ? (
|
<DashboardPanel />
|
||||||
<AuthOverlay onAuthenticated={() => setIsAuthenticated(true)} />
|
|
||||||
) : (
|
|
||||||
<DashboardPanel />
|
|
||||||
)
|
|
||||||
) : (
|
) : (
|
||||||
<MessagesPanel
|
<MessagesPanel
|
||||||
guildName={monitorGuildName}
|
guildName={monitorGuildName}
|
||||||
|
|||||||
Reference in New Issue
Block a user