feat: topic更新时自动变更列表

pull/56/head
moonrailgun 3 years ago
parent fe249db5dd
commit c2ba44186f

@ -44,6 +44,7 @@ export {
} from '@/components/Modal';
export { Loadable } from '@/components/Loadable';
export { Loading } from '@/components/Loading';
export { LoadingOnFirst } from '@/components/LoadingOnFirst';
export { SidebarView } from '@/components/SidebarView';
export { GroupPanelSelector } from '@/components/GroupPanelSelector';
export { Emoji } from '@/components/Emoji';

@ -332,7 +332,7 @@ declare module '@capital/component' {
export const PillTabPane: any;
export const LoadingSpinner: any;
export const LoadingSpinner: React.FC<{ tip?: string }>;
export const WebFastForm: any;
@ -382,7 +382,19 @@ declare module '@capital/component' {
export const Loadable: any;
export const Loading: any;
export const Loading: React.FC<{
spinning: boolean;
className?: string;
style?: React.CSSProperties;
children?: React.ReactNode;
}>;
export const LoadingOnFirst: React.FC<{
spinning: boolean;
className?: string;
style?: React.CSSProperties;
children?: React.ReactNode;
}>;
export const SidebarView: any;

@ -72,6 +72,7 @@ export const TopicCard: React.FC<{
});
setComment('');
toggleShowReply();
showSuccessToasts();
}, [topic.groupId, topic.panelId, topic._id, comment]);

@ -1,20 +1,24 @@
import React, { useCallback, useEffect } from 'react';
import { TopicCard } from '../components/TopicCard';
import { useAsyncRequest, useGroupPanelContext } from '@capital/common';
import {
useAsyncRequest,
useGlobalSocketEvent,
useGroupPanelContext,
} from '@capital/common';
import {
Button,
Empty,
IconBtn,
openModal,
closeModal,
LoadingSpinner,
LoadingOnFirst,
} from '@capital/component';
import { request } from '../request';
import { Translate } from '../translate';
import { TopicCreate } from '../components/modals/TopicCreate';
import styled from 'styled-components';
const Root = styled.div({
const Root = styled(LoadingOnFirst)({
display: 'flex',
flexDirection: 'column',
width: '100%',
@ -53,6 +57,14 @@ const GroupTopicPanelRender: React.FC = React.memo(() => {
fetch();
}, [fetch]);
useGlobalSocketEvent('plugin:com.msgbyte.topic.create', () => {
fetch();
});
useGlobalSocketEvent('plugin:com.msgbyte.topic.createComment', () => {
fetch();
});
const handleCreateTopic = useCallback(() => {
const key = openModal(
<TopicCreate
@ -71,12 +83,8 @@ const GroupTopicPanelRender: React.FC = React.memo(() => {
);
}, [panelInfo, fetch]);
if (loading) {
return <LoadingSpinner />;
}
return (
<Root>
<Root spinning={loading}>
{Array.isArray(list) && list.length > 0 ? (
list.map((item, i) => <TopicCard key={i} topic={item} />)
) : (

@ -72,6 +72,11 @@ declare module '@capital/common' {
export const getGlobalState: any;
export const useGlobalSocketEvent: <T>(
eventName: string,
callback: (data: T) => void
) => void;
export const getJWTUserInfo: () => Promise<{
_id?: string;
nickname?: string;

Loading…
Cancel
Save