MCPcopy Create free account
hub / github.com/Linen-dev/linen.dev / moveMessageToThread

Function moveMessageToThread

apps/web/ui/ChannelView/index.tsx:493–540  ·  view source on GitHub ↗
({
    messageId,
    threadId,
  }: {
    messageId: string;
    threadId: string;
  })

Source from the content-addressed store, hash-verified

491 };
492
493 const moveMessageToThread = ({
494 messageId,
495 threadId,
496 }: {
497 messageId: string;
498 threadId: string;
499 }) => {
500 const messages = [...threads.map((thread) => thread.messages)].flat();
501 const message = messages.find(({ id }) => id === messageId);
502
503 setThreads((threads) => {
504 if (!message) {
505 return threads;
506 }
507 return threads
508 .map((thread) => {
509 if (thread.id === threadId) {
510 const ids = thread.messages.map(({ id }) => id);
511 if (ids.includes(messageId)) {
512 return thread;
513 }
514 return {
515 ...thread,
516 messages: [...thread.messages, message].sort((a, b) => {
517 return (
518 new Date(a.sentAt).getTime() - new Date(b.sentAt).getTime()
519 );
520 }),
521 };
522 }
523 const ids = thread.messages.map(({ id }) => id);
524 if (ids.includes(messageId)) {
525 return {
526 ...thread,
527 messages: thread.messages.filter(({ id }) => id !== messageId),
528 };
529 }
530 return thread;
531 })
532 .filter(Boolean) as SerializedThread[];
533 });
534
535 return api.moveMessageToThreadRequest({
536 messageId,
537 threadId,
538 communityId: currentCommunity.id,
539 });
540 };
541
542 const moveMessageToChannel = ({
543 messageId,

Callers 1

onThreadDropFunction · 0.85

Calls 2

mapMethod · 0.80
findMethod · 0.45

Tested by

no test coverage detected