chore: latest crowdin fetch

pull/3052/head
Audric Ackermann 6 months ago
parent 02093fdfbf
commit 4c4806df47
No known key found for this signature in database

@ -148,6 +148,7 @@
"callsNotificationsRequired": "Voice and Video Calls require notifications to be enabled in your device system settings.", "callsNotificationsRequired": "Voice and Video Calls require notifications to be enabled in your device system settings.",
"callsPermissionsRequired": "Call Permissions Required", "callsPermissionsRequired": "Call Permissions Required",
"callsPermissionsRequiredDescription": "You can enable the \"Voice and Video Calls\" permission in Privacy Settings.", "callsPermissionsRequiredDescription": "You can enable the \"Voice and Video Calls\" permission in Privacy Settings.",
"callsPermissionsRequiredDescription1": "You can enable the \"Voice and Video Calls\" permission in Permissions Settings.",
"callsReconnecting": "Reconnecting…", "callsReconnecting": "Reconnecting…",
"callsRinging": "Ringing...", "callsRinging": "Ringing...",
"callsSessionCall": "{app_name} Call", "callsSessionCall": "{app_name} Call",
@ -379,6 +380,7 @@
"groupCreateErrorNoMembers": "Please pick at least one other group member.", "groupCreateErrorNoMembers": "Please pick at least one other group member.",
"groupDelete": "Delete Group", "groupDelete": "Delete Group",
"groupDeleteDescription": "Are you sure you want to delete <b>{group_name}</b>? This will remove all members and delete all group content.", "groupDeleteDescription": "Are you sure you want to delete <b>{group_name}</b>? This will remove all members and delete all group content.",
"groupDeletedMemberDescription": "{group_name} has been deleted by a group admin. You will not be able to send any more messages.",
"groupDescriptionEnter": "Enter a group description", "groupDescriptionEnter": "Enter a group description",
"groupDisplayPictureUpdated": "Group display picture updated.", "groupDisplayPictureUpdated": "Group display picture updated.",
"groupEdit": "Edit Group", "groupEdit": "Edit Group",

@ -279,6 +279,7 @@
"deleteMessageDevicesAll": "حذف از تمام دستگاه‌هایم", "deleteMessageDevicesAll": "حذف از تمام دستگاه‌هایم",
"deleteMessageEveryone": "حذف برای همه", "deleteMessageEveryone": "حذف برای همه",
"deleteMessageFailed": "{count, plural, one [خطا در حذف پیام] other [خطا در حذف پیام ها]}", "deleteMessageFailed": "{count, plural, one [خطا در حذف پیام] other [خطا در حذف پیام ها]}",
"deleteMessageWarning": "{count, plural, one [این پیام قابل حذف برای همه نیست] other [برخی از پیام هایی که انتخاب کرده اید را نمیتوان برای همه حذف کرد]}",
"deleteMessagesDescriptionEveryone": "آیا مطمئن هستید می‌خواهید این پیام‌ها را برای همه حذف کنید؟", "deleteMessagesDescriptionEveryone": "آیا مطمئن هستید می‌خواهید این پیام‌ها را برای همه حذف کنید؟",
"deleting": "در حال حذف", "deleting": "در حال حذف",
"developerToolsToggle": "تاگل ابزار های توسعه دهنده", "developerToolsToggle": "تاگل ابزار های توسعه دهنده",
@ -382,6 +383,7 @@
"groupInviteFailedMultiple": "دعوت از {name} و {count} نفر دیگر به {group_name} انجام نشد", "groupInviteFailedMultiple": "دعوت از {name} و {count} نفر دیگر به {group_name} انجام نشد",
"groupInviteFailedTwo": "دعوت از {name} و {other_name} به {group_name} انجام نشد", "groupInviteFailedTwo": "دعوت از {name} و {other_name} به {group_name} انجام نشد",
"groupInviteFailedUser": "دعوت از {name} به {group_name} انجام نشد", "groupInviteFailedUser": "دعوت از {name} به {group_name} انجام نشد",
"groupInviteSending": "{count, plural, one [ارسال دعوت نامه] other [ارسال دعوت نامه ها]}",
"groupInviteSent": "دعوت نامه ارسال شد", "groupInviteSent": "دعوت نامه ارسال شد",
"groupInviteSuccessful": "دعوت به گروه موفقیت‌آمیز بود", "groupInviteSuccessful": "دعوت به گروه موفقیت‌آمیز بود",
"groupInviteVersion": "کاربران باید آخرین نسخه را داشته باشند تا دعوت‌نامه دریافت کنند", "groupInviteVersion": "کاربران باید آخرین نسخه را داشته باشند تا دعوت‌نامه دریافت کنند",

@ -35,6 +35,7 @@
"adminRemovedUser": "<b>{name}</b> is verwijderd als Admin.", "adminRemovedUser": "<b>{name}</b> is verwijderd als Admin.",
"adminRemovedUserMultiple": "<b>{name}</b> en <b>{count} anderen</b> zijn verwijderd als beheerder.", "adminRemovedUserMultiple": "<b>{name}</b> en <b>{count} anderen</b> zijn verwijderd als beheerder.",
"adminRemovedUserOther": "<b>{name}</b> en <b>{other_name}</b> zijn verwijderd als beheerder.", "adminRemovedUserOther": "<b>{name}</b> en <b>{other_name}</b> zijn verwijderd als beheerder.",
"adminSendingPromotion": "{count, plural, one [Beheerder promotie versturen] other [Beheerder promoties versturen]}",
"adminSettings": "Admin instellingen", "adminSettings": "Admin instellingen",
"adminTwoPromotedToAdmin": "<b>{name}</b> en <b>{other_name}</b> zijn gepromoveerd tot Admin.", "adminTwoPromotedToAdmin": "<b>{name}</b> en <b>{other_name}</b> zijn gepromoveerd tot Admin.",
"andMore": "+{count}", "andMore": "+{count}",
@ -274,9 +275,11 @@
"deleteAfterLegacyGroupsGroupUpdateErrorTitle": "Het is mislukt om de groep bij te werken", "deleteAfterLegacyGroupsGroupUpdateErrorTitle": "Het is mislukt om de groep bij te werken",
"deleteAfterMessageDeletionStandardisationMessageDeletionForbidden": "Je hebt geen toestemming om andermans berichten te verwijderen", "deleteAfterMessageDeletionStandardisationMessageDeletionForbidden": "Je hebt geen toestemming om andermans berichten te verwijderen",
"deleteMessage": "{count, plural, one [Verwijder bericht] other [Verwijder berichten]}", "deleteMessage": "{count, plural, one [Verwijder bericht] other [Verwijder berichten]}",
"deleteMessageConfirm": "{count, plural, one [Weet u zeker dat u dit bericht wilt verwijderen?] other [Weet u zeker dat u deze berichten wilt verwijderen?]}",
"deleteMessageDeleted": "{count, plural, one [Bericht verwijderd] other [Berichten verwijderd]}", "deleteMessageDeleted": "{count, plural, one [Bericht verwijderd] other [Berichten verwijderd]}",
"deleteMessageDeletedGlobally": "Dit bericht is verwijderd", "deleteMessageDeletedGlobally": "Dit bericht is verwijderd",
"deleteMessageDeletedLocally": "Dit bericht is op dit apparaat verwijderd", "deleteMessageDeletedLocally": "Dit bericht is op dit apparaat verwijderd",
"deleteMessageDescriptionDevice": "{count, plural, one [Weet u zeker dat u dit bericht enkel van dit apparaat wilt verwijderen?] other [Weet u zeker dat u deze berichten enkel van dit apparaat wilt verwijderen?]}",
"deleteMessageDescriptionEveryone": "Weet u zeker dat u dit bericht voor iedereen wilt verwijderen?", "deleteMessageDescriptionEveryone": "Weet u zeker dat u dit bericht voor iedereen wilt verwijderen?",
"deleteMessageDeviceOnly": "Alleen verwijderen op dit apparaat", "deleteMessageDeviceOnly": "Alleen verwijderen op dit apparaat",
"deleteMessageDevicesAll": "Verwijder op al mijn apparaten", "deleteMessageDevicesAll": "Verwijder op al mijn apparaten",
@ -385,6 +388,7 @@
"groupInviteFailedMultiple": "Het uitnodigen van {name} en {count} anderen naar {group_name} is mislukt", "groupInviteFailedMultiple": "Het uitnodigen van {name} en {count} anderen naar {group_name} is mislukt",
"groupInviteFailedTwo": "Het uitnodigen van {name} en {other_name} naar {group_name} is mislukt", "groupInviteFailedTwo": "Het uitnodigen van {name} en {other_name} naar {group_name} is mislukt",
"groupInviteFailedUser": "Het uitnodigen van {name} naar {group_name} is mislukt", "groupInviteFailedUser": "Het uitnodigen van {name} naar {group_name} is mislukt",
"groupInviteSending": "{count, plural, one [Uitnodiging versturen] other [Uitnodigingen versturen]}",
"groupInviteSent": "Uitnodiging verzonden", "groupInviteSent": "Uitnodiging verzonden",
"groupInviteSuccessful": "Groepsuitnodiging succesvol", "groupInviteSuccessful": "Groepsuitnodiging succesvol",
"groupInviteVersion": "Gebruikers moeten de nieuwste versie hebben om uitnodigingen te ontvangen", "groupInviteVersion": "Gebruikers moeten de nieuwste versie hebben om uitnodigingen te ontvangen",

@ -274,9 +274,11 @@
"deleteAfterLegacyGroupsGroupUpdateErrorTitle": "Ошибка при обновлении группы", "deleteAfterLegacyGroupsGroupUpdateErrorTitle": "Ошибка при обновлении группы",
"deleteAfterMessageDeletionStandardisationMessageDeletionForbidden": "У вас недостаточно прав для удаления других сообщений", "deleteAfterMessageDeletionStandardisationMessageDeletionForbidden": "У вас недостаточно прав для удаления других сообщений",
"deleteMessage": "{count, plural, one [Удалить Сообщение] few [Удалить сообщения] many [Удалить сообщения] other [Удалить сообщения]}", "deleteMessage": "{count, plural, one [Удалить Сообщение] few [Удалить сообщения] many [Удалить сообщения] other [Удалить сообщения]}",
"deleteMessageConfirm": "{count, plural, one [Вы уверены, что хотите удалить это сообщение?] few [Вы уверены, что хотите удалить эти сообщения?] many [Вы уверены, что хотите удалить эти сообщения?] other [Вы уверены, что хотите удалить эти сообщения?]}",
"deleteMessageDeleted": "{count, plural, one [Сообщение удалено] few [Сообщения удалены] many [Сообщения удалены] other [Сообщения удалены]}", "deleteMessageDeleted": "{count, plural, one [Сообщение удалено] few [Сообщения удалены] many [Сообщения удалены] other [Сообщения удалены]}",
"deleteMessageDeletedGlobally": "Это сообщение было удалено", "deleteMessageDeletedGlobally": "Это сообщение было удалено",
"deleteMessageDeletedLocally": "Это сообщение было удалено на этом устройстве", "deleteMessageDeletedLocally": "Это сообщение было удалено на этом устройстве",
"deleteMessageDescriptionDevice": "{count, plural, one [Вы уверены, что хотите удалить это сообщение только с этого устройства?] few [Вы уверены, что хотите удалить эти сообщения только с этого устройства?] many [Вы уверены, что хотите удалить эти сообщения только с этого устройства?] other [Вы уверены, что хотите удалить эти сообщения только с этого устройства?]}",
"deleteMessageDescriptionEveryone": "Вы уверены, что хотите удалить это сообщение для всех?", "deleteMessageDescriptionEveryone": "Вы уверены, что хотите удалить это сообщение для всех?",
"deleteMessageDeviceOnly": "Удалить только на этом устройстве", "deleteMessageDeviceOnly": "Удалить только на этом устройстве",
"deleteMessageDevicesAll": "Удалить на всех моих устройствах", "deleteMessageDevicesAll": "Удалить на всех моих устройствах",
@ -385,6 +387,7 @@
"groupInviteFailedMultiple": "Не удалось пригласить {name} и {count} других в {group_name}", "groupInviteFailedMultiple": "Не удалось пригласить {name} и {count} других в {group_name}",
"groupInviteFailedTwo": "Не удалось пригласить {name} и {other_name} в {group_name}", "groupInviteFailedTwo": "Не удалось пригласить {name} и {other_name} в {group_name}",
"groupInviteFailedUser": "Не удалось пригласить {name} в {group_name}", "groupInviteFailedUser": "Не удалось пригласить {name} в {group_name}",
"groupInviteSending": "{count, plural, one [Отправка приглашения] few [Отправка приглашений] many [Отправка приглашений] other [Отправка приглашений]}",
"groupInviteSent": "Приглашение отправлено", "groupInviteSent": "Приглашение отправлено",
"groupInviteSuccessful": "Приглашение в группу успешно", "groupInviteSuccessful": "Приглашение в группу успешно",
"groupInviteVersion": "Пользователи должны иметь последнюю версию приложения для получения приглашений", "groupInviteVersion": "Пользователи должны иметь последнюю версию приложения для получения приглашений",

@ -220,7 +220,7 @@ const DestroyGroupForAllMembersButton = () => {
onClickOk: () => { onClickOk: () => {
void ConvoHub.use().deleteGroup(groupPk, { void ConvoHub.use().deleteGroup(groupPk, {
deleteAllMessagesOnSwarm: true, deleteAllMessagesOnSwarm: true,
emptyGroupButKeepAsKicked: false, deletionType: 'doNotKeep',
fromSyncMessage: false, fromSyncMessage: false,
sendLeaveMessage: false, sendLeaveMessage: false,
forceDestroyForAllMembers: true, forceDestroyForAllMembers: true,

@ -223,7 +223,7 @@ export async function declineConversationWithoutConfirm({
// when deleting a 03 group message request, we also need to remove the conversation altogether // when deleting a 03 group message request, we also need to remove the conversation altogether
await ConvoHub.use().deleteGroup(conversationId, { await ConvoHub.use().deleteGroup(conversationId, {
deleteAllMessagesOnSwarm: false, deleteAllMessagesOnSwarm: false,
emptyGroupButKeepAsKicked: false, deletionType: 'doNotKeep',
forceDestroyForAllMembers: false, forceDestroyForAllMembers: false,
fromSyncMessage: false, fromSyncMessage: false,
sendLeaveMessage: false, sendLeaveMessage: false,
@ -418,7 +418,7 @@ async function leaveGroupOrCommunityByConvoId({
fromSyncMessage: false, fromSyncMessage: false,
sendLeaveMessage, sendLeaveMessage,
deleteAllMessagesOnSwarm: false, deleteAllMessagesOnSwarm: false,
emptyGroupButKeepAsKicked: false, deletionType: 'doNotKeep',
forceDestroyForAllMembers: false, forceDestroyForAllMembers: false,
}); });
} }

@ -756,7 +756,7 @@ async function handleSingleGroupUpdateToLeave(toLeave: GroupPubkeyType) {
await ConvoHub.use().deleteGroup(toLeave, { await ConvoHub.use().deleteGroup(toLeave, {
fromSyncMessage: true, fromSyncMessage: true,
sendLeaveMessage: false, sendLeaveMessage: false,
emptyGroupButKeepAsKicked: false, deletionType: 'doNotKeep',
deleteAllMessagesOnSwarm: false, deleteAllMessagesOnSwarm: false,
forceDestroyForAllMembers: false, forceDestroyForAllMembers: false,
}); });

@ -76,6 +76,7 @@ async function getInitializedGroupObject({
secretKey: null, secretKey: null,
kicked: false, kicked: false,
invitePending: true, invitePending: true,
destroyed: false,
}; };
} }

@ -54,7 +54,7 @@ async function handleLibSessionKickedMessage({
await ConvoHub.use().deleteGroup(groupPk, { await ConvoHub.use().deleteGroup(groupPk, {
sendLeaveMessage: false, sendLeaveMessage: false,
fromSyncMessage: false, fromSyncMessage: false,
emptyGroupButKeepAsKicked: !inviteWasPending, deletionType: inviteWasPending ? 'doNotKeep' : 'keepAsKicked',
deleteAllMessagesOnSwarm: false, deleteAllMessagesOnSwarm: false,
forceDestroyForAllMembers: false, forceDestroyForAllMembers: false,
}); });

@ -681,7 +681,7 @@ export class SwarmPolling {
await ConvoHub.use().deleteGroup(pubkey, { await ConvoHub.use().deleteGroup(pubkey, {
fromSyncMessage: true, fromSyncMessage: true,
sendLeaveMessage: false, sendLeaveMessage: false,
emptyGroupButKeepAsKicked: false, deletionType: 'doNotKeep',
deleteAllMessagesOnSwarm: false, deleteAllMessagesOnSwarm: false,
forceDestroyForAllMembers: false, forceDestroyForAllMembers: false,
}); });

@ -44,7 +44,7 @@ async function handleMetaMergeResults(groupPk: GroupPubkeyType) {
await ConvoHub.use().deleteGroup(groupPk, { await ConvoHub.use().deleteGroup(groupPk, {
sendLeaveMessage: false, sendLeaveMessage: false,
fromSyncMessage: false, fromSyncMessage: false,
emptyGroupButKeepAsKicked: true, // we just got something from the group's swarm, so it is not pendingInvite deletionType: 'keepAsDestroyed', // we just got something from the group's swarm, so it is not pendingInvite
deleteAllMessagesOnSwarm: false, deleteAllMessagesOnSwarm: false,
forceDestroyForAllMembers: false, forceDestroyForAllMembers: false,
}); });

@ -253,12 +253,12 @@ class ConvoController {
{ {
sendLeaveMessage, sendLeaveMessage,
fromSyncMessage, fromSyncMessage,
emptyGroupButKeepAsKicked, deletionType,
deleteAllMessagesOnSwarm, deleteAllMessagesOnSwarm,
forceDestroyForAllMembers, forceDestroyForAllMembers,
}: DeleteOptions & { }: DeleteOptions & {
sendLeaveMessage: boolean; sendLeaveMessage: boolean;
emptyGroupButKeepAsKicked: boolean; deletionType: 'doNotKeep' | 'keepAsKicked' | 'keepAsDestroyed';
deleteAllMessagesOnSwarm: boolean; deleteAllMessagesOnSwarm: boolean;
forceDestroyForAllMembers: boolean; forceDestroyForAllMembers: boolean;
} }
@ -268,7 +268,7 @@ class ConvoController {
} }
window.log.info( window.log.info(
`deleteGroup: ${ed25519Str(groupPk)}, sendLeaveMessage:${sendLeaveMessage}, fromSyncMessage:${fromSyncMessage}, emptyGroupButKeepAsKicked:${emptyGroupButKeepAsKicked}, deleteAllMessagesOnSwarm:${deleteAllMessagesOnSwarm}, forceDestroyForAllMembers:${forceDestroyForAllMembers}` `deleteGroup: ${ed25519Str(groupPk)}, sendLeaveMessage:${sendLeaveMessage}, fromSyncMessage:${fromSyncMessage}, deletionType:${deletionType}, deleteAllMessagesOnSwarm:${deleteAllMessagesOnSwarm}, forceDestroyForAllMembers:${forceDestroyForAllMembers}`
); );
// this deletes all messages in the conversation // this deletes all messages in the conversation
@ -294,13 +294,13 @@ class ConvoController {
// when it was pendingInvite, we delete it fully, // when it was pendingInvite, we delete it fully,
// when it was not, we empty the group but keep it with the "you have been kicked" message // when it was not, we empty the group but keep it with the "you have been kicked" message
// Note: the pendingInvite=true case cannot really happen as we wouldn't be polling from that group (and so, not get the message kicking us) // Note: the pendingInvite=true case cannot really happen as we wouldn't be polling from that group (and so, not get the message kicking us)
if (emptyGroupButKeepAsKicked) { if (deletionType === 'keepAsKicked' || deletionType === 'keepAsDestroyed') {
// delete the secretKey/authData if we had it. If we need it for something, it has to be done before this call. // delete the secretKey/authData if we had it. If we need it for something, it has to be done before this call.
if (groupInUserGroup) { if (groupInUserGroup) {
groupInUserGroup.authData = null; groupInUserGroup.authData = null;
groupInUserGroup.secretKey = null; groupInUserGroup.secretKey = null;
groupInUserGroup.disappearingTimerSeconds = undefined; groupInUserGroup.disappearingTimerSeconds = undefined;
groupInUserGroup.kicked = true;
// we want to update the groupName in user group with whatever is in the groupInfo, // we want to update the groupName in user group with whatever is in the groupInfo,
// so even if the group is not polled anymore, we have an up to date name on restore. // so even if the group is not polled anymore, we have an up to date name on restore.
let nameInMetaGroup: string | undefined; let nameInMetaGroup: string | undefined;
@ -316,6 +316,11 @@ class ConvoController {
groupInUserGroup.name = nameInMetaGroup; groupInUserGroup.name = nameInMetaGroup;
} }
await UserGroupsWrapperActions.setGroup(groupInUserGroup); await UserGroupsWrapperActions.setGroup(groupInUserGroup);
if (deletionType === 'keepAsKicked') {
await UserGroupsWrapperActions.setGroupKicked(groupPk);
} else {
await UserGroupsWrapperActions.setGroupDestroyed(groupPk);
}
} }
} else { } else {
try { try {

@ -264,7 +264,7 @@ const initNewGroupInWrapper = createAsyncThunk(
await ConvoHub.use().deleteGroup(groupPk, { await ConvoHub.use().deleteGroup(groupPk, {
fromSyncMessage: false, fromSyncMessage: false,
sendLeaveMessage: false, sendLeaveMessage: false,
emptyGroupButKeepAsKicked: false, deletionType: 'doNotKeep',
deleteAllMessagesOnSwarm: false, deleteAllMessagesOnSwarm: false,
forceDestroyForAllMembers: false, forceDestroyForAllMembers: false,
}); });

@ -43,6 +43,7 @@ function getEmptyUserGroup() {
name: '1243', name: '1243',
priority: 0, priority: 0,
pubkeyHex: validGroupPk, pubkeyHex: validGroupPk,
destroyed: false,
} as UserGroupsGet; } as UserGroupsGet;
} }

@ -83,7 +83,6 @@ export const GenericWrapperActions: GenericWrapperActionsCalls = {
GenericWrapperActionsCalls['init'] GenericWrapperActionsCalls['init']
>, >,
/** This function is used to free wrappers from memory only. /** This function is used to free wrappers from memory only.
* *
* See freeUserWrapper() in libsession.worker.ts */ * See freeUserWrapper() in libsession.worker.ts */
@ -346,6 +345,28 @@ export const UserGroupsWrapperActions: UserGroupsWrapperActionsCalls & {
return cloneDeep(group); return cloneDeep(group);
}, },
setGroupKicked: async (pubkeyHex: GroupPubkeyType) => {
const group = (await callLibSessionWorker([
'UserGroupsConfig',
'setGroupKicked',
pubkeyHex,
])) as Awaited<ReturnType<UserGroupsWrapperActionsCalls['setGroupKicked']>>;
groups.set(group.pubkeyHex, group);
dispatchCachedGroupsToRedux();
return cloneDeep(group);
},
setGroupDestroyed: async (pubkeyHex: GroupPubkeyType) => {
const group = (await callLibSessionWorker([
'UserGroupsConfig',
'setGroupDestroyed',
pubkeyHex,
])) as Awaited<ReturnType<UserGroupsWrapperActionsCalls['setGroupDestroyed']>>;
groups.set(group.pubkeyHex, group);
dispatchCachedGroupsToRedux();
return cloneDeep(group);
},
eraseGroup: async (pubkeyHex: GroupPubkeyType) => { eraseGroup: async (pubkeyHex: GroupPubkeyType) => {
const ret = (await callLibSessionWorker([ const ret = (await callLibSessionWorker([
'UserGroupsConfig', 'UserGroupsConfig',

Loading…
Cancel
Save