(messageId: string)
| 232 | } |
| 233 | |
| 234 | async function deleteMessage(messageId: string) { |
| 235 | setThreads((threads) => { |
| 236 | return threads |
| 237 | .map((thread) => { |
| 238 | const message = thread.messages.find( |
| 239 | (message) => message.id === messageId |
| 240 | ); |
| 241 | if (message) { |
| 242 | const messages = thread.messages.filter( |
| 243 | (message) => message.id !== messageId |
| 244 | ); |
| 245 | if (messages.length === 0) { |
| 246 | return null; |
| 247 | } |
| 248 | return { |
| 249 | ...thread, |
| 250 | messages, |
| 251 | messageCount: thread.messageCount - 1, |
| 252 | }; |
| 253 | } |
| 254 | return thread; |
| 255 | }) |
| 256 | .filter(Boolean) as SerializedThread[]; |
| 257 | }); |
| 258 | |
| 259 | if (currentChannel.viewType === 'TOPIC') { |
| 260 | setTopics((topics) => { |
| 261 | return topics.filter((topic) => topic.messageId !== messageId); |
| 262 | }); |
| 263 | } |
| 264 | |
| 265 | return api |
| 266 | .deleteMessage({ id: messageId, accountId: currentCommunity.id }) |
| 267 | .then((response: any) => { |
| 268 | if (response.ok) { |
| 269 | return; |
| 270 | } |
| 271 | throw new Error('Failed to delete the message.'); |
| 272 | }) |
| 273 | |
| 274 | .catch((_) => { |
| 275 | Toast.error('Failed to delete the message.'); |
| 276 | }); |
| 277 | } |
| 278 | |
| 279 | function markUserThreadStatuses( |
| 280 | threadId: string, |
nothing calls this directly
no test coverage detected