This commit is contained in:
spaced4ndy
2026-05-04 15:26:48 +04:00
parent f7e9abda16
commit 1da2b02dd8
4 changed files with 18 additions and 18 deletions
@@ -156,6 +156,8 @@ fun ChatItemView(
fun showReactionsMenu() {
when (cInfo) {
is ChatInfo.Group -> {
val g = cInfo.groupInfo
if (g.useRelays && !g.isOwner) return
withBGApi {
try {
val members = controller.apiGetReactionMembers(rhId, cInfo.groupInfo.groupId, cItem.id, r.reaction)
+11 -14
View File
@@ -1924,10 +1924,12 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage =
groupMsgReaction :: GroupInfo -> Maybe GroupMember -> SharedMsgId -> Maybe MemberId -> Maybe MsgScope -> MsgReaction -> Bool -> RcvMessage -> UTCTime -> CM (Maybe DeliveryTaskContext)
groupMsgReaction g m_ sharedMsgId itemMemberId scope_ reaction add RcvMessage {msgId} brokerTs
| groupFeatureAllowed SGFReactions g = case m_ of
Nothing ->
updateChannelReaction `catchCINotFound` \_ ->
withStore' (\db -> setGroupReactionNoMember db g itemMemberId sharedMsgId reaction add msgId brokerTs)
$> Nothing
Nothing
| useRelays' g ->
updateChannelReaction `catchCINotFound` \_ ->
withStore' (\db -> setGroupReactionNoMember db g itemMemberId sharedMsgId reaction add msgId brokerTs)
$> Nothing
| otherwise -> pure Nothing
Just m -> do
rs <- withStore' $ \db -> getGroupReactions db g m itemMemberId sharedMsgId False
if reactionAllowed add reaction rs
@@ -3557,11 +3559,6 @@ runDeliveryTaskWorker a deliveryKey Worker {doWork} = do
forM_ taskIds $ \taskId -> updateDeliveryTaskStatus db taskId DTSProcessed
forM_ largeTaskIds $ \taskId -> setDeliveryTaskErrStatus db taskId "large"
lift . void $ getDeliveryJobWorker True deliveryKey
where
singleSenderGMId_ :: NonEmpty MessageDeliveryTask -> Maybe GroupMemberId
singleSenderGMId_ (MessageDeliveryTask {senderGMId = senderGMId'} :| ts)
| all (\MessageDeliveryTask {senderGMId} -> senderGMId == senderGMId') ts = Just senderGMId'
| otherwise = Nothing
DJReaction ->
withWorkItems a doWork (withStore' $ \db -> getNextDeliveryTasks db gInfo task) $ \nextTasks -> do
let (body, taskIds, largeTaskIds) = batchDeliveryTasks1 vr maxEncodedMsgLength nextTasks
@@ -3575,11 +3572,6 @@ runDeliveryTaskWorker a deliveryKey Worker {doWork} = do
forM_ taskIds $ \taskId -> updateDeliveryTaskStatus db taskId DTSProcessed
forM_ largeTaskIds $ \taskId -> setDeliveryTaskErrStatus db taskId "large"
lift . void $ getDeliveryJobWorker True deliveryKey
where
singleSenderGMId_ :: NonEmpty MessageDeliveryTask -> Maybe GroupMemberId
singleSenderGMId_ (MessageDeliveryTask {senderGMId = senderGMId'} :| ts)
| all (\MessageDeliveryTask {senderGMId} -> senderGMId == senderGMId') ts = Just senderGMId'
| otherwise = Nothing
DJRelayRemoved
| workerScope /= DWSGroup ->
throwChatError $ CEInternalError "delivery task worker: relay removed task in wrong worker scope"
@@ -3591,6 +3583,11 @@ runDeliveryTaskWorker a deliveryKey Worker {doWork} = do
createMsgDeliveryJob db gInfo jobScope (Just senderGMId) body Nothing
updateDeliveryTaskStatus db (deliveryTaskId task) DTSProcessed
lift . void $ getDeliveryJobWorker True deliveryKey
where
singleSenderGMId_ :: NonEmpty MessageDeliveryTask -> Maybe GroupMemberId
singleSenderGMId_ (MessageDeliveryTask {senderGMId = senderGMId'} :| ts)
| all (\MessageDeliveryTask {senderGMId} -> senderGMId == senderGMId') ts = Just senderGMId'
| otherwise = Nothing
startDeliveryJobWorkers :: CM ()
startDeliveryJobWorkers = do
+4 -4
View File
@@ -182,7 +182,7 @@ getNextDeliveryTasks db gInfo task =
MessageDeliveryTask {jobScope, senderGMId} = task
getTaskIds :: IO [Int64]
getTaskIds
| useRelays' gInfo, not (isSenderFiltered jobScope) =
| useRelays' gInfo, not (needsSenderFiltering jobScope) =
map fromOnly
<$> DB.query
db
@@ -221,9 +221,9 @@ getNextDeliveryTasks db gInfo task =
ORDER BY delivery_task_id ASC
|]
((Only groupId) :. jobScopeRow_ jobScope :. (senderGMId, DTSNew))
isSenderFiltered :: DeliveryJobScope -> Bool
isSenderFiltered (DJSGroup {jobSpec = DJReaction}) = True
isSenderFiltered _ = False
needsSenderFiltering :: DeliveryJobScope -> Bool
needsSenderFiltering (DJSGroup {jobSpec = DJReaction}) = True
needsSenderFiltering _ = False
updateDeliveryTaskStatus :: DB.Connection -> Int64 -> DeliveryTaskStatus -> IO ()
updateDeliveryTaskStatus db taskId status = updateDeliveryTaskStatus_ db taskId status Nothing
+1
View File
@@ -3478,6 +3478,7 @@ getReactionMembers db vr user groupId itemSharedMId reaction = do
SELECT group_member_id, reaction_ts
FROM chat_item_reactions
WHERE group_id = ? AND shared_msg_id = ? AND reaction = ?
AND group_member_id IS NOT NULL
|]
(groupId, itemSharedMId, reaction)
rights <$> mapM (runExceptT . toMemberReaction) reactions