From 6234f1b5b8e4552de5d62be817d88a51ef5eedb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marcin=20miko=C5=82ajczak?= Date: Thu, 6 Jun 2024 00:39:36 +0200 Subject: [PATCH] Optimistically increase quotes count MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: marcin mikołajczak --- src/reducers/statuses.ts | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/reducers/statuses.ts b/src/reducers/statuses.ts index dfeb869f7..d01a050b9 100644 --- a/src/reducers/statuses.ts +++ b/src/reducers/statuses.ts @@ -176,24 +176,36 @@ const deleteStatus = (state: State, id: string, references: Array) => { return state.delete(id); }; -const incrementReplyCount = (state: State, { in_reply_to_id }: APIEntity) => { +const incrementReplyCount = (state: State, { in_reply_to_id, quote_id }: APIEntity) => { if (in_reply_to_id) { - return state.updateIn([in_reply_to_id, 'replies_count'], 0, count => + state = state.updateIn([in_reply_to_id, 'replies_count'], 0, count => typeof count === 'number' ? count + 1 : 0, ); - } else { - return state; } + + if (quote_id) { + state = state.updateIn([quote_id, 'quotes_count'], 0, count => + typeof count === 'number' ? count + 1 : 0, + ); + } + + return state; }; -const decrementReplyCount = (state: State, { in_reply_to_id }: APIEntity) => { +const decrementReplyCount = (state: State, { in_reply_to_id, quote_id }: APIEntity) => { if (in_reply_to_id) { - return state.updateIn([in_reply_to_id, 'replies_count'], 0, count => + state = state.updateIn([in_reply_to_id, 'replies_count'], 0, count => typeof count === 'number' ? Math.max(0, count - 1) : 0, ); - } else { - return state; } + + if (quote_id) { + state = state.updateIn([quote_id, 'quotes_count'], 0, count => + typeof count === 'number' ? Math.max(0, count - 1) : 0, + ); + } + + return state; }; /** Simulate favourite/unfavourite of status for optimistic interactions */