mirror of
https://github.com/wanderer-industries/wanderer
synced 2025-12-05 15:25:34 +00:00
Some checks failed
Build Test / 🚀 Deploy to test env (fly.io) (push) Has been cancelled
Build Test / 🛠 Build (1.17, 18.x, 27) (push) Has been cancelled
Build Develop / 🛠 Build (1.17, 18.x, 27) (push) Has been cancelled
🧪 Test Suite / Test Suite (push) Has been cancelled
Build Develop / 🛠 Build Docker Images (linux/amd64) (push) Has been cancelled
Build Develop / 🛠 Build Docker Images (linux/arm64) (push) Has been cancelled
Build Develop / merge (push) Has been cancelled
Build Develop / 🏷 Notify about develop release (push) Has been cancelled
55 lines
1.7 KiB
TypeScript
55 lines
1.7 KiB
TypeScript
import { MarkdownComment } from '@/hooks/Mapper/components/mapInterface/components/Comments/components';
|
|
import { useMapRootState } from '@/hooks/Mapper/mapRootProvider';
|
|
import { CommentType } from '@/hooks/Mapper/types';
|
|
import { useEffect, useMemo, useRef, useState } from 'react';
|
|
|
|
export interface CommentsProps {}
|
|
|
|
// eslint-disable-next-line no-empty-pattern
|
|
export const Comments = ({}: CommentsProps) => {
|
|
const [commentsList, setCommentsList] = useState<CommentType[]>([]);
|
|
|
|
const {
|
|
data: { selectedSystems },
|
|
comments: { loadComments, comments, lastUpdateKey },
|
|
} = useMapRootState();
|
|
|
|
const systemId = useMemo(() => {
|
|
return +selectedSystems[0];
|
|
}, [selectedSystems]);
|
|
|
|
const ref = useRef({ loadComments, systemId });
|
|
ref.current = { loadComments, systemId };
|
|
|
|
useEffect(() => {
|
|
const commentsBySystem = comments.get(systemId);
|
|
if (!commentsBySystem) {
|
|
return;
|
|
}
|
|
|
|
const els = [...commentsBySystem.comments].sort((a, b) => +new Date(b.updated_at) - +new Date(a.updated_at));
|
|
|
|
setCommentsList(els);
|
|
}, [systemId, lastUpdateKey, comments]);
|
|
|
|
useEffect(() => {
|
|
ref.current.loadComments(systemId);
|
|
}, [systemId]);
|
|
|
|
if (commentsList.length === 0) {
|
|
return (
|
|
<div className="w-full h-full flex justify-center items-center select-none text-stone-400/80 text-sm">
|
|
Not comments found here
|
|
</div>
|
|
);
|
|
}
|
|
|
|
return (
|
|
<div className="flex flex-col gap-1 whitespace-nowrap overflow-auto text-ellipsis custom-scrollbar">
|
|
{commentsList.map(({ id, text, updated_at, characterEveId }) => (
|
|
<MarkdownComment key={id} text={text} time={updated_at} characterEveId={characterEveId} id={id} />
|
|
))}
|
|
</div>
|
|
);
|
|
};
|