mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-05-15 21:06:43 +00:00
update
This commit is contained in:
+2
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user