fix: open url confirm is Primary color and not destructive

also delete all messages when reinvited to a group we were kicked from
pull/3052/head
Audric Ackermann 10 months ago
parent 522d82d764
commit 79aca9c231

@ -494,8 +494,9 @@
"device": "Device", "device": "Device",
"destination": "Destination", "destination": "Destination",
"learnMore": "Learn more", "learnMore": "Learn more",
"linkVisitWarningTitle": "Open this link in your browser?", "linkVisitWarningTitle": "Open URL",
"linkVisitWarningMessage": "Are you sure you want to open $url$ in your browser?", "linkVisitWarningMessage": "Are you sure you want to open $url$ in your browser?",
"copyUrl": "Copy URL",
"open": "Open", "open": "Open",
"audioMessageAutoplayTitle": "Autoplay Audio Messages", "audioMessageAutoplayTitle": "Autoplay Audio Messages",
"audioMessageAutoplayDescription": "Autoplay consecutive audio messages.", "audioMessageAutoplayDescription": "Autoplay consecutive audio messages.",

@ -59,6 +59,8 @@ import { NoticeBanner } from '../NoticeBanner';
import { SessionSpinner } from '../basic/SessionSpinner'; import { SessionSpinner } from '../basic/SessionSpinner';
import { ConversationMessageRequestButtons } from './MessageRequestButtons'; import { ConversationMessageRequestButtons } from './MessageRequestButtons';
import { RightPanel, StyledRightPanelContainer } from './right-panel/RightPanel'; import { RightPanel, StyledRightPanelContainer } from './right-panel/RightPanel';
import { showLinkVisitWarningDialog } from '../dialog/SessionConfirm';
import { useDispatch } from 'react-redux';
const DEFAULT_JPEG_QUALITY = 0.85; const DEFAULT_JPEG_QUALITY = 0.85;
interface State { interface State {
@ -671,7 +673,7 @@ function OutdatedLegacyGroupBanner(props: {
selectedConversation: Pick<ReduxConversationType, 'id' | 'isPrivate' | 'isPublic'>; selectedConversation: Pick<ReduxConversationType, 'id' | 'isPrivate' | 'isPublic'>;
}) { }) {
const { selectedConversation } = props; const { selectedConversation } = props;
// const dispatch = useDispatch(); const dispatch = useDispatch();
const isLegacyGroup = const isLegacyGroup =
!selectedConversation.isPrivate && !selectedConversation.isPrivate &&
@ -682,7 +684,7 @@ function OutdatedLegacyGroupBanner(props: {
<NoticeBanner <NoticeBanner
text={window.i18n('upgradeYourGroupBefore')} text={window.i18n('upgradeYourGroupBefore')}
onButtonClick={() => { onButtonClick={() => {
// showLinkVisitWarningDialog('', dispatch); showLinkVisitWarningDialog('', dispatch);
throw new Error('TODO'); // fixme audric throw new Error('TODO'); // fixme audric
}} }}
icon="externalLink" icon="externalLink"

@ -219,18 +219,24 @@ export const SessionConfirm = (props: SessionConfirmDialogProps) => {
); );
}; };
export const showLinkVisitWarningDialog = (urlToOpen: string, dispatch: Dispatch<any>) => { export const showLinkVisitWarningDialog = (urlToOpen: string, dispatch: Dispatch<any>) => {
function onClickOk() { function onClickOk() {
void shell.openExternal(urlToOpen); void shell.openExternal(urlToOpen);
} }
dispatch( dispatch(
updateConfirmModal({ updateConfirmModal({
title: window.i18n('linkVisitWarningTitle'), title: window.i18n('linkVisitWarningTitle'),
message: window.i18n('linkVisitWarningMessage', [urlToOpen]), message: window.i18n('linkVisitWarningMessage', [urlToOpen]),
okText: window.i18n('open'), okText: window.i18n('open'),
okTheme: SessionButtonColor.Primary, okTheme: SessionButtonColor.Primary,
cancelText: window.i18n('editMenuCopy'), cancelText: window.i18n('copyUrl'),
showExitIcon: true, showExitIcon: true,
onClickOk, onClickOk,
onClickClose: () => { onClickClose: () => {

@ -87,7 +87,7 @@ export async function unsendMessagesForEveryoneGroupV2({
await getMessageQueue().sendToGroupV2NonDurably({ await getMessageQueue().sendToGroupV2NonDurably({
message: new GroupUpdateDeleteMemberContentMessage({ message: new GroupUpdateDeleteMemberContentMessage({
createAtNetworkTimestamp: GetNetworkTime.now(), createAtNetworkTimestamp: GetNetworkTime.now(),
expirationType: 'unknown', // this is not displayed so not expiring. expirationType: 'unknown', // GroupUpdateDeleteMemberContentMessage is not displayed so not expiring.
expireTimer: 0, expireTimer: 0,
groupPk, groupPk,
memberSessionIds: allMessagesFrom, memberSessionIds: allMessagesFrom,

@ -1101,7 +1101,7 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
if (this.isClosedGroup()) { if (this.isClosedGroup()) {
if (this.isAdmin(UserUtils.getOurPubKeyStrFromCache())) { if (this.isAdmin(UserUtils.getOurPubKeyStrFromCache())) {
if (this.isClosedGroupV2()) { if (this.isClosedGroupV2()) {
if (!PubKey.is03Pubkey(this.id)) { if (!PubKey.is03Pubkey(this.id)) {
throw new Error('updateExpireTimer v2 group requires a 03 key'); throw new Error('updateExpireTimer v2 group requires a 03 key');
} }
const group = await UserGroupsWrapperActions.getGroup(this.id); const group = await UserGroupsWrapperActions.getGroup(this.id);

@ -357,7 +357,7 @@ export async function handleNewClosedGroup(
members, members,
admins, admins,
activeAt: envelopeTimestamp, activeAt: envelopeTimestamp,
expirationType: 'unknown', expirationType: 'unknown', // group creation message, is not expiring
expireTimer: 0, expireTimer: 0,
}; };

@ -30,6 +30,7 @@ import {
UserGroupsWrapperActions, UserGroupsWrapperActions,
} from '../../webworker/workers/browser/libsession_worker_interface'; } from '../../webworker/workers/browser/libsession_worker_interface';
import { WithMessageHash } from '../../session/types/with'; import { WithMessageHash } from '../../session/types/with';
import { deleteAllMessagesByConvoIdNoConfirmation } from '../../interactions/conversationInteractions';
type WithSignatureTimestamp = { signatureTimestamp: number }; type WithSignatureTimestamp = { signatureTimestamp: number };
type WithAuthor = { author: PubkeyType }; type WithAuthor = { author: PubkeyType };
@ -66,7 +67,7 @@ async function sendInviteResponseToGroup({ groupPk }: { groupPk: GroupPubkeyType
groupPk, groupPk,
isApproved: true, isApproved: true,
createAtNetworkTimestamp: GetNetworkTime.now(), createAtNetworkTimestamp: GetNetworkTime.now(),
expirationType: 'unknown', // an invite should not expire expirationType: 'unknown', // an invite response should not expire
expireTimer: 0, expireTimer: 0,
}), }),
}); });
@ -124,6 +125,7 @@ async function handleGroupInviteMessage({
const userEd25519Secretkey = (await UserUtils.getUserED25519KeyPairBytes()).privKeyBytes; const userEd25519Secretkey = (await UserUtils.getUserED25519KeyPairBytes()).privKeyBytes;
let found = await UserGroupsWrapperActions.getGroup(groupPk); let found = await UserGroupsWrapperActions.getGroup(groupPk);
const wasKicked = found?.kicked || false;
if (!found) { if (!found) {
found = { found = {
authData: null, authData: null,
@ -153,6 +155,12 @@ async function handleGroupInviteMessage({
await SessionUtilConvoInfoVolatile.insertConvoFromDBIntoWrapperAndRefresh(convo.id); await SessionUtilConvoInfoVolatile.insertConvoFromDBIntoWrapperAndRefresh(convo.id);
if (wasKicked && !found.kicked) {
// we have been reinvited to a group which we had been kicked from.
// Let's empty the conversation again to remove any "you were removed from the group" control message
await deleteAllMessagesByConvoIdNoConfirmation(groupPk);
}
await MetaGroupWrapperActions.init(groupPk, { await MetaGroupWrapperActions.init(groupPk, {
metaDumped: null, metaDumped: null,
groupEd25519Secretkey: null, groupEd25519Secretkey: null,

@ -173,7 +173,7 @@ class GroupPendingRemovalsJob extends PersistedJob<GroupPendingRemovalsPersisted
if (deleteMessagesOfMembers.length) { if (deleteMessagesOfMembers.length) {
const deleteContentMsg = new GroupUpdateDeleteMemberContentMessage({ const deleteContentMsg = new GroupUpdateDeleteMemberContentMessage({
createAtNetworkTimestamp: GetNetworkTime.now(), createAtNetworkTimestamp: GetNetworkTime.now(),
expirationType: 'unknown', // this is not displayed so not expiring. expirationType: 'unknown', // GroupUpdateDeleteMemberContentMessage this is not displayed so not expiring.
expireTimer: 0, expireTimer: 0,
groupPk, groupPk,
memberSessionIds: deleteMessagesOfMembers, memberSessionIds: deleteMessagesOfMembers,

@ -71,6 +71,7 @@ export type LocalizerKeys =
| 'clear' | 'clear'
| 'clearAll' | 'clearAll'
| 'clearAllConfirmationBody' | 'clearAllConfirmationBody'
| 'clearAllConfirmationTitle'
| 'clearAllData' | 'clearAllData'
| 'clearAllReactions' | 'clearAllReactions'
| 'clearDataSettingsTitle' | 'clearDataSettingsTitle'
@ -105,6 +106,7 @@ export type LocalizerKeys =
| 'copyMessage' | 'copyMessage'
| 'copyOpenGroupURL' | 'copyOpenGroupURL'
| 'copySessionID' | 'copySessionID'
| 'copyUrl'
| 'couldntFindServerMatching' | 'couldntFindServerMatching'
| 'create' | 'create'
| 'createAccount' | 'createAccount'

Loading…
Cancel
Save