fix: declining convo mark it as hidden

pull/3281/head
Audric Ackermann 3 months ago
parent d59ecbb471
commit 2b26c65f5f
No known key found for this signature in database

@ -272,6 +272,7 @@ export function useIsIncomingRequest(convoId?: string) {
didApproveMe: convoProps.didApproveMe || false,
activeAt: convoProps.activeAt || 0,
invitePending,
priority: convoProps.priority,
})
);
}

@ -199,9 +199,8 @@ export async function declineConversationWithoutConfirm({
`declineConversationWithoutConfirm of ${ed25519Str(conversationId)}, alsoBlock:${alsoBlock}, conversationIdOrigin:${conversationIdOrigin ? ed25519Str(conversationIdOrigin) : '<none>'}`
);
// Note: do not set the active_at undefined as this would make that conversation not synced with the libsession wrapper
await conversationToDecline.setIsApproved(false, false);
await conversationToDecline.setDidApproveMe(false, false);
// Note: declining a message request just hides it.
await conversationToDecline.setHidden(false);
if (conversationToDecline.isClosedGroupV2()) {
// this can only be done for groupv2 convos

@ -727,6 +727,7 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
activeAt: this.getActiveAt(),
didApproveMe: this.didApproveMe(),
invitePending,
priority: this.getPriority(),
});
}
@ -2817,6 +2818,7 @@ export function hasValidIncomingRequestValues({
activeAt,
didApproveMe,
invitePending,
priority,
}: {
id: string;
isMe: boolean;
@ -2826,16 +2828,20 @@ export function hasValidIncomingRequestValues({
didApproveMe: boolean;
invitePending: boolean;
activeAt: number | undefined;
priority: number | undefined;
}): boolean {
// if a convo is not active, it means we didn't get any messages nor sent any.
const isActive = activeAt && isFinite(activeAt) && activeAt > 0;
const priorityWithDefault = priority ?? CONVERSATION_PRIORITIES.default;
const isHidden = priorityWithDefault < 0;
return Boolean(
(isPrivate || (PubKey.is03Pubkey(id) && invitePending)) &&
!isMe &&
!isApproved &&
!isBlocked &&
isActive &&
didApproveMe
didApproveMe &&
!isHidden
);
}

@ -3,7 +3,7 @@ import { isEmpty, isFinite, isNumber } from 'lodash';
import { Data } from '../../data/data';
import { deleteAllMessagesByConvoIdNoConfirmation } from '../../interactions/conversationInteractions';
import { deleteMessagesFromSwarmOnly } from '../../interactions/conversations/unsendingInteractions';
import { ConversationTypeEnum } from '../../models/types';
import { CONVERSATION_PRIORITIES, ConversationTypeEnum } from '../../models/types';
import { HexString } from '../../node/hexStrings';
import { SignalService } from '../../protobuf';
import { getSwarmPollingInstance } from '../../session/apis/snode_api';
@ -69,7 +69,7 @@ async function getInitializedGroupObject({
authData: null,
joinedAtSeconds: Math.floor(Date.now() / 1000),
name: groupName,
priority: 0,
priority: CONVERSATION_PRIORITIES.default,
pubkeyHex: groupPk,
secretKey: null,
kicked: false,

@ -213,8 +213,7 @@ class ConvoController {
// we remove the messages left in this convo. The caller has to merge them if needed
await deleteAllMessagesByConvoIdNoConfirmation(conversation.id);
await conversation.setIsApproved(false, false);
await conversation.setDidApproveMe(false, false);
await conversation.setHidden(false);
await conversation.commit();
}
@ -400,8 +399,7 @@ class ConvoController {
// We do this so that if we get reinvited to the group, we will
// fetch and display all the messages from the group's swarm again.
if (clearFetchedHashes) {
await getSwarmPollingInstance().resetLastHashesForConversation(groupPk);
await Data.emptySeenMessageHashesForConversation(groupPk);
await this.resetLastHashesForConversation(groupPk);
}
await LibSessionUtil.saveDumpsToDb(UserUtils.getOurPubKeyStrFromCache());
@ -417,6 +415,11 @@ class ConvoController {
window.inboxStore?.dispatch(groupInfoActions.removeGroupDetailsFromSlice({ groupPk }));
}
async resetLastHashesForConversation(groupPk: GroupPubkeyType) {
await getSwarmPollingInstance().resetLastHashesForConversation(groupPk);
await Data.emptySeenMessageHashesForConversation(groupPk);
}
public async deleteCommunity(convoId: string) {
const conversation = await this.deleteConvoInitialChecks(convoId, 'Community', false);
if (!conversation || !conversation.isPublic()) {
@ -455,8 +458,7 @@ class ConvoController {
} else {
window.log.info(`deleteContact isPrivate, reset fields and removing from wrapper: ${id}`);
await conversation.setIsApproved(false, false);
await conversation.setDidApproveMe(false, false);
await conversation.setHidden();
conversation.set('active_at', 0);
await BlockedNumberController.unblockAll([conversation.id]);
await conversation.commit(); // first commit to DB so the DB knows about the changes

@ -399,7 +399,8 @@ const _getConversationRequests = (
sortedConversations: Array<ReduxConversationType>
): Array<ReduxConversationType> => {
return filter(sortedConversations, conversation => {
const { isApproved, isBlocked, isPrivate, isMe, activeAt, didApproveMe, id } = conversation;
const { isApproved, isBlocked, isPrivate, isMe, activeAt, didApproveMe, id, priority } =
conversation;
const invitePending = PubKey.is03Pubkey(id)
? UserGroupsWrapperActions.getCachedGroup(id)?.invitePending || false
: false;
@ -412,6 +413,7 @@ const _getConversationRequests = (
activeAt: activeAt || 0,
didApproveMe: didApproveMe || false,
invitePending,
priority,
});
return isIncomingRequest;
});

Loading…
Cancel
Save