- 基于 openim-electron-demo 改造:工号+密码登录(自研账号服务)、会话列表/聊天窗/通讯录界面重做
- 文字/语音/文件/图片消息、文件拖拽发送、表情面板、一对一语音通话(LiveKit)
- RTC 令牌对接账号服务带鉴权版 /api/rtc_token(Bearer imToken + {room,identity})
- account-service: CORS Allow-Headers 补 authorization(浏览器/渲染进程跨域调 rtc_token 需要)
- 附本地 mock 账号服务(scripts/mock-account-server.js)与截图联调脚本
60 lines
1.5 KiB
TypeScript
60 lines
1.5 KiB
TypeScript
import { createHashRouter } from "react-router-dom";
|
|
|
|
import { MainContentLayout } from "@/layout/MainContentLayout";
|
|
import { MainContentWrap } from "@/layout/MainContentWrap";
|
|
import { EmptyChat } from "@/pages/chat/EmptyChat";
|
|
import { QueryChat } from "@/pages/chat/queryChat";
|
|
|
|
import contactRoutes from "./ContactRoutes";
|
|
import GlobalErrorElement from "./GlobalErrorElement";
|
|
|
|
const router = createHashRouter([
|
|
{
|
|
path: "/",
|
|
element: <MainContentWrap />,
|
|
errorElement: <GlobalErrorElement />,
|
|
children: [
|
|
{
|
|
path: "/",
|
|
element: <MainContentLayout />,
|
|
children: [
|
|
{
|
|
path: "/chat",
|
|
async lazy() {
|
|
const { Chat } = await import("@/pages/chat");
|
|
return { Component: Chat };
|
|
},
|
|
children: [
|
|
{
|
|
index: true,
|
|
element: <EmptyChat />,
|
|
},
|
|
{
|
|
path: ":conversationID",
|
|
element: <QueryChat />,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: "contact",
|
|
async lazy() {
|
|
const { Contact } = await import("@/pages/contact");
|
|
return { Component: Contact };
|
|
},
|
|
children: contactRoutes,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: "login",
|
|
async lazy() {
|
|
const { Login } = await import("@/pages/login");
|
|
return { Component: Login };
|
|
},
|
|
},
|
|
],
|
|
},
|
|
]);
|
|
|
|
export default router;
|