🎉 first commit
This commit is contained in:
44
app/routes/chat.$id.tsx
Normal file
44
app/routes/chat.$id.tsx
Normal file
@@ -0,0 +1,44 @@
|
||||
import { data, type LoaderFunctionArgs, redirect } from '@remix-run/node';
|
||||
import { getUser, requireAuth } from '~/lib/.server/auth';
|
||||
import { getUserChatById } from '~/lib/.server/chat';
|
||||
import { getChatDeployments } from '~/lib/.server/deployment';
|
||||
import { default as IndexRoute } from './_index';
|
||||
|
||||
export async function loader(args: LoaderFunctionArgs) {
|
||||
// 添加权限验证
|
||||
const authResult = await requireAuth(args.request);
|
||||
|
||||
// 如果返回的是Response对象,说明验证失败并已重定向
|
||||
if (authResult instanceof Response) {
|
||||
return authResult;
|
||||
}
|
||||
|
||||
// 获取当前用户 id
|
||||
const authContext = await getUser(args.request);
|
||||
const userId = authContext.userInfo?.sub as string;
|
||||
|
||||
const { id } = args.params;
|
||||
if (!id || !userId) {
|
||||
return redirect('/');
|
||||
}
|
||||
const chat = await getUserChatById(id, userId);
|
||||
if (!chat) {
|
||||
return redirect('/');
|
||||
}
|
||||
|
||||
const url = new URL(args.request.url);
|
||||
const rewindTo = url.searchParams.get('rewindTo') || '';
|
||||
if (rewindTo) {
|
||||
chat.messages = chat.messages.slice(0, chat.messages.findIndex((message) => message.id === rewindTo) + 1);
|
||||
}
|
||||
|
||||
const deployments = await getChatDeployments(id);
|
||||
return data({
|
||||
id: args.params.id,
|
||||
chat,
|
||||
user: authResult.userInfo,
|
||||
deployments,
|
||||
});
|
||||
}
|
||||
|
||||
export default IndexRoute;
|
||||
Reference in New Issue
Block a user