webapp/src/components/chat/ChatRoom.tsx
(开头部分) 4KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
// Copyright (c) Microsoft. All rights reserved.
import { useAccount, useMsal } from '@azure/msal-react';
import { makeStyles, shorthands, tokens } from '@fluentui/react-components';
import debug from 'debug';
import React from 'react';
import { Constants } from '../../Constants';
import { AuthorRoles } from '../../libs/models/ChatMessage';
import { useChat } from '../../libs/useChat';
import { useAppDispatch, useAppSelector } from '../../redux/app/hooks';
import { RootState } from '../../redux/app/store';
import { updateConversation } from '../../redux/features/conversations/conversationsSlice';
import { ChatHistory } from './ChatHistory';
import { ChatInput } from './ChatInput';
const log = debug(Constants.debug.root).extend('chat-room');
const useClasses = makeStyles({
root: {
height: '94.5%',
display: 'flex',
flexDirection: 'column',
justifyContent: 'space-between',
gridTemplateColumns: '1fr',
gridTemplateRows: '1fr auto',
gridTemplateAreas: "'history' 'input'",
},
history: {
...shorthands.gridArea('history'),
...shorthands.padding(tokens.spacingVerticalM),
overflowY: 'auto',
display: 'grid',
},
input: {
...shorthands.gridArea('input'),
...shorthands.padding(tokens.spacingVerticalM),
backgroundColor: tokens.colorNeutralBackground4,
},
});
export const ChatRoom: React.FC = () => {
const { conversations, selectedId } = useAppSelector((state: RootState) => state.conversations);
const { audience } = conversations[selectedId];
const messages = conversations[selectedId].messages;
const classes = useClasses();
const { accounts } = useMsal();
const account = useAccount(accounts[0] || {});
const dispatch = useAppDispatch();
const scrollViewTargetRef = React.useRef<HTMLDivElement>(null);
const scrollTargetRef = React.useRef<HTMLDivElement>(null);
const [shouldAutoScroll, setShouldAutoScroll] = React.useState(true);
// hardcode to care only about the bot typing for now.
const [isBotTyping, setIsBotTyping] = React.useState(false);
const chat = useChat();
React.useEffect(() => {
后面还有 64 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
