fix: use correct formatting timestamp for readonly warning

pull/3281/head
Audric Ackermann 2 months ago
parent 17ad0e8535
commit d94f8952f1
No known key found for this signature in database

@ -72,7 +72,7 @@ import {
import { useSelectedDisableLegacyGroupDeprecatedActions } from '../../hooks/useRefreshReleasedFeaturesTimestamp';
import { useAreGroupsCreatedAsNewGroupsYet } from '../../state/selectors/releasedFeatures';
import { Constants } from '../../session';
import { formatDateWithDateAndTime } from '../../util/i18n/formatting/conversationItemTimestamp';
import { format } from 'date-fns';
const DEFAULT_JPEG_QUALITY = 0.85;
@ -695,6 +695,10 @@ function OutdatedLegacyGroupBanner() {
!isPrivate && !isPublic && selectedConversationKey && selectedConversationKey.startsWith('05');
const newGroupsCanBeCreated = useAreGroupsCreatedAsNewGroupsYet();
const date = format(
new Date(Constants.FEATURE_RELEASE_TIMESTAMPS.LEGACY_GROUP_READONLY),
'h:mm a, d MMM yyyy'
);
// FIXME change the date here. Remove after QA
const text = deprecatedLegacyGroups
@ -705,9 +709,7 @@ function OutdatedLegacyGroupBanner() {
weAreAdmin ? 'legacyGroupBeforeDeprecationAdmin' : 'legacyGroupBeforeDeprecationMember'
)
.withArgs({
date: formatDateWithDateAndTime(
new Date(Constants.FEATURE_RELEASE_TIMESTAMPS.LEGACY_GROUP_READONLY)
),
date,
})
.toString();

@ -24,8 +24,10 @@ import { localize } from '../../../localization/localeTools';
import { groupInfoActions } from '../../../state/ducks/metaGroups';
import { updateConfirmModal } from '../../../state/ducks/modalDialog';
import { setLeftOverlayMode } from '../../../state/ducks/section';
import { SessionButtonColor, SessionButton } from '../../basic/SessionButton';
import { SessionButtonColor, SessionButton, SessionButtonType } from '../../basic/SessionButton';
import { useAreGroupsCreatedAsNewGroupsYet } from '../../../state/selectors/releasedFeatures';
import { ConvoHub } from '../../../session/conversations';
import { ConversationTypeEnum } from '../../../models/types';
export const ConversationHeaderWithDetails = () => {
const isSelectionMode = useIsMessageSelectionMode();
@ -131,9 +133,16 @@ function RecreateGroupButton() {
return (
<RecreateGroupContainer>
<SessionButton
buttonColor={SessionButtonColor.Primary}
buttonType={SessionButtonType.Outline}
margin="var(--margins-sm)"
onClick={() => {
onClick={async () => {
try {
await Promise.all(
members.map(m => ConvoHub.use().getOrCreateAndWait(m, ConversationTypeEnum.PRIVATE))
);
} catch (e) {
window.log.warn('recreate group: failed to recreate a member convo', e.message);
}
showRecreateGroupModal(name || localize('groupUnknown').toString(), members);
}}
>

@ -14,22 +14,17 @@ import { Avatar, AvatarSize } from '../../avatar/Avatar';
import { SessionIconButton } from '../../icon';
import { useDisableLegacyGroupDeprecatedActions } from '../../../hooks/useRefreshReleasedFeaturesTimestamp';
export const AvatarHeader = (props: {
pubkey: string;
onAvatarClick?: (pubkey: string) => void;
}) => {
export const AvatarHeader = (props: { pubkey: string; onAvatarClick?: () => void }) => {
const { pubkey, onAvatarClick } = props;
const isDisabledLegacyGroupDeprecated = useDisableLegacyGroupDeprecatedActions(pubkey);
const optOnAvatarClick = !isDisabledLegacyGroupDeprecated ? onAvatarClick : undefined;
return (
<span className="module-conversation-header__avatar">
<Avatar
size={AvatarSize.S}
onAvatarClick={() => {
if (onAvatarClick && !isDisabledLegacyGroupDeprecated) {
onAvatarClick(pubkey);
}
}}
onAvatarClick={optOnAvatarClick}
pubkey={pubkey}
dataTestId="conversation-options-avatar"
/>

@ -442,8 +442,12 @@ const refreshGroupDetailsFromWrapper = createAsyncThunk(
const members = await MetaGroupWrapperActions.memberGetAll(groupPk);
if (window.sessionFeatureFlags.debug.debugLibsessionDumps) {
window.log.info(`groupInfo after refreshGroupDetailsFromWrapper: ${stringify(infos)}`);
window.log.info(`groupMembers after refreshGroupDetailsFromWrapper: ${stringify(members)}`);
window.log.info(
`groupInfo of ${ed25519Str(groupPk)} after refreshGroupDetailsFromWrapper: ${stringify(infos)}`
);
window.log.info(
`groupMembers of ${ed25519Str(groupPk)} after refreshGroupDetailsFromWrapper: ${stringify(members)}`
);
}
return { groupPk, infos, members };
} catch (e) {
@ -1365,8 +1369,10 @@ const metaGroupSlice = createSlice({
state.infos[groupPk] = infos;
state.members[groupPk] = members;
if (window.sessionFeatureFlags.debug.debugLibsessionDumps) {
window.log.info(`groupInfo after merge: ${stringify(infos)}`);
window.log.info(`groupMembers after merge: ${stringify(members)}`);
window.log.info(`groupInfo of ${ed25519Str(groupPk)} after merge: ${stringify(infos)}`);
window.log.info(
`groupMembers of ${ed25519Str(groupPk)} after merge: ${stringify(members)}`
);
}
refreshConvosModelProps([groupPk]);
} else {
@ -1389,8 +1395,12 @@ const metaGroupSlice = createSlice({
state.members[groupPk] = members;
refreshConvosModelProps([groupPk]);
if (window.sessionFeatureFlags.debug.debugLibsessionDumps) {
window.log.info(`groupInfo after handleUserGroupUpdate: ${stringify(infos)}`);
window.log.info(`groupMembers after handleUserGroupUpdate: ${stringify(members)}`);
window.log.info(
`groupInfo of ${ed25519Str(groupPk)} after handleUserGroupUpdate: ${stringify(infos)}`
);
window.log.info(
`groupMembers of ${ed25519Str(groupPk)} after handleUserGroupUpdate: ${stringify(members)}`
);
}
} else {
window.log.debug(
@ -1411,9 +1421,11 @@ const metaGroupSlice = createSlice({
state.members[groupPk] = members;
refreshConvosModelProps([groupPk]);
if (window.sessionFeatureFlags.debug.debugLibsessionDumps) {
window.log.info(`groupInfo after currentDeviceGroupMembersChange: ${stringify(infos)}`);
window.log.info(
`groupMembers after currentDeviceGroupMembersChange: ${stringify(members)}`
`groupInfo of ${ed25519Str(groupPk)} after currentDeviceGroupMembersChange: ${stringify(infos)}`
);
window.log.info(
`groupMembers of ${ed25519Str(groupPk)} after currentDeviceGroupMembersChange: ${stringify(members)}`
);
}
});
@ -1434,8 +1446,12 @@ const metaGroupSlice = createSlice({
state.members[groupPk] = members;
refreshConvosModelProps([groupPk]);
if (window.sessionFeatureFlags.debug.debugLibsessionDumps) {
window.log.info(`groupInfo after currentDeviceGroupNameChange: ${stringify(infos)}`);
window.log.info(`groupMembers after currentDeviceGroupNameChange: ${stringify(members)}`);
window.log.info(
`groupInfo of ${ed25519Str(groupPk)} after currentDeviceGroupNameChange: ${stringify(infos)}`
);
window.log.info(
`groupMembers of ${ed25519Str(groupPk)} after currentDeviceGroupNameChange: ${stringify(members)}`
);
}
});
builder.addCase(currentDeviceGroupNameChange.rejected, (state, action) => {
@ -1453,8 +1469,12 @@ const metaGroupSlice = createSlice({
state.members[groupPk] = members;
refreshConvosModelProps([groupPk]);
if (window.sessionFeatureFlags.debug.debugLibsessionDumps) {
window.log.info(`groupInfo after handleMemberLeftMessage: ${stringify(infos)}`);
window.log.info(`groupMembers after handleMemberLeftMessage: ${stringify(members)}`);
window.log.info(
`groupInfo of ${ed25519Str(groupPk)} after handleMemberLeftMessage: ${stringify(infos)}`
);
window.log.info(
`groupMembers of ${ed25519Str(groupPk)} after handleMemberLeftMessage: ${stringify(members)}`
);
}
});
builder.addCase(handleMemberLeftMessage.rejected, (_state, action) => {
@ -1467,8 +1487,12 @@ const metaGroupSlice = createSlice({
state.members[groupPk] = members;
refreshConvosModelProps([groupPk]);
if (window.sessionFeatureFlags.debug.debugLibsessionDumps) {
window.log.info(`groupInfo after inviteResponseReceived: ${stringify(infos)}`);
window.log.info(`groupMembers after inviteResponseReceived: ${stringify(members)}`);
window.log.info(
`groupInfo of ${ed25519Str(groupPk)} after inviteResponseReceived: ${stringify(infos)}`
);
window.log.info(
`groupMembers of ${ed25519Str(groupPk)} after inviteResponseReceived: ${stringify(members)}`
);
}
});
builder.addCase(inviteResponseReceived.rejected, (_state, action) => {

@ -40,22 +40,3 @@ export const getConversationItemString = (date: Date) => {
});
return formatter.format(date);
};
/**
* Returns a date like 11:00 am, 25 Jan 2026
*/
export function formatDateWithDateAndTime(date: Date) {
const dateFormatted = new Intl.DateTimeFormat(getBrowserLocale(), {
day: 'numeric',
month: 'short',
year: 'numeric',
}).format(date);
const timeFormatted = new Intl.DateTimeFormat(getBrowserLocale(), {
hour: 'numeric',
minute: '2-digit',
hour12: true,
}).format(date);
return [timeFormatted, dateFormatted].join(', ');
}

Loading…
Cancel
Save