({
messageId,
threadId,
}: {
messageId: string;
threadId: string;
})
| 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, |
no test coverage detected