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, didApproveMe: convoProps.didApproveMe || false,
activeAt: convoProps.activeAt || 0, activeAt: convoProps.activeAt || 0,
invitePending, invitePending,
priority: convoProps.priority,
}) })
); );
} }

@ -199,9 +199,8 @@ export async function declineConversationWithoutConfirm({
`declineConversationWithoutConfirm of ${ed25519Str(conversationId)}, alsoBlock:${alsoBlock}, conversationIdOrigin:${conversationIdOrigin ? ed25519Str(conversationIdOrigin) : '<none>'}` `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 // Note: declining a message request just hides it.
await conversationToDecline.setIsApproved(false, false); await conversationToDecline.setHidden(false);
await conversationToDecline.setDidApproveMe(false, false);
if (conversationToDecline.isClosedGroupV2()) { if (conversationToDecline.isClosedGroupV2()) {
// this can only be done for groupv2 convos // this can only be done for groupv2 convos

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

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

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

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

Loading…
Cancel
Save