Merge pull request #1363 from loki-project/clearnet

pull/1390/head
Audric Ackermann 5 years ago committed by GitHub
commit fa5abd8cf7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1441,9 +1441,6 @@
"displayNameEmpty": {
"message": "Bitte wählen Sie einen Anzeigenamen"
},
"newClosedGroupDescription": {
"message": "Geschlossene Gruppen unterstützen bis zu 10 Mitglieder und bieten den gleichen Schutz der Privatsphäre wie Einzelgespräche."
},
"openGroupURL": {
"message": "Gruppen-URL öffnen"
},
@ -1463,6 +1460,6 @@
"message": "Bitte wählen Sie mindestens zwei Gruppenmitglieder aus."
},
"closedGroupMaxSize": {
"message": "Eine geschlossene Gruppe kann maximal zehn Mitglieder haben."
"message": "Eine geschlossene Gruppe kann maximal zwanzig Mitglieder haben."
}
}

@ -2124,10 +2124,6 @@
"message": "New Closed Group",
"androidKey": "activity_create_closed_group_title"
},
"newClosedGroupDescription": {
"message": "Closed groups support up to 10 members and provide the same privacy protections as one-on-one sessions.",
"androidKey": "activity_create_closed_group_explanation"
},
"createClosedGroupNamePrompt": {
"message": "Group Name",
"androidKey": "GroupCreateActivity_group_name_hint",
@ -2178,7 +2174,7 @@
"androidKey": "activity_create_closed_group_not_enough_group_members_error"
},
"closedGroupMaxSize": {
"message": "A closed group cannot have more than 10 members",
"message": "A closed group cannot have more than 20 members",
"androidKey": "activity_create_closed_group_too_many_group_members_error"
},
"noBlockedContacts": {

@ -1378,9 +1378,6 @@
"newClosedGroup": {
"message": "Nuevo grupo cerrado"
},
"newClosedGroupDescription": {
"message": "Los grupos cerrados admiten hasta 10 miembros y brindan las mismas protecciones de privacidad que las sesiones individuales."
},
"createClosedGroupNamePrompt": {
"message": "Nombre Del Grupo"
},
@ -1409,6 +1406,6 @@
"message": "Por favor, elige al menos 2 miembros del grupo"
},
"closedGroupMaxSize": {
"message": "Un grupo cerrado no puede tener más de 10 miembros"
"message": "Un grupo cerrado no puede tener más de 20 miembros"
}
}

@ -1378,9 +1378,6 @@
"newClosedGroup": {
"message": "Nouveau groupe privé"
},
"newClosedGroupDescription": {
"message": "Les groupes privés prennent en charge jusqu'à 10 membres et offrent le même niveau de confidentialité que les sessions individuelles."
},
"createClosedGroupNamePrompt": {
"message": "Nom du groupe"
},
@ -1409,7 +1406,7 @@
"message": "Veuillez sélectionner au moins 2 membres"
},
"closedGroupMaxSize": {
"message": "Un groupe privé ne peut pas avoir plus de 10 membres"
"message": "Un groupe privé ne peut pas avoir plus de 20 membres"
},
"contextMenuNoSuggestions": {
"message": "Pas de suggestions",

@ -1372,9 +1372,6 @@
"newClosedGroup": {
"message": "Grup tertutup baru"
},
"newClosedGroupDescription": {
"message": "Grup tertutup maksimal berisi 10 anggota dan memiliki perlindungan privasi yang sama dengan Session antara dua pengguna"
},
"createClosedGroupNamePrompt": {
"message": "Nama grup"
},
@ -1403,7 +1400,7 @@
"message": "Pilih setidaknya 2 anggota grup"
},
"closedGroupMaxSize": {
"message": "Grup tertutup maksimal berisi 10 anggota"
"message": "Grup tertutup maksimal berisi 20 anggota"
},
"noBlockedContacts": {
"message": "Tidak ada kontak yang diblokir"

@ -1378,9 +1378,6 @@
"newClosedGroup": {
"message": "Nuovo gruppo chiuso"
},
"newClosedGroupDescription": {
"message": "I gruppi chiusi supportano fino a 10 membri e forniscono le stesse protezioni per la privacy delle sessioni one-to-one."
},
"createClosedGroupNamePrompt": {
"message": "Nome Del Gruppo"
},
@ -1409,6 +1406,6 @@
"message": "Scegli almeno 2 membri del gruppo"
},
"closedGroupMaxSize": {
"message": "Un gruppo chiuso non può avere più di 10 membri"
"message": "Un gruppo chiuso non può avere più di 20 membri"
}
}

@ -1378,9 +1378,6 @@
"newClosedGroup": {
"message": "新しいクローズドグループ"
},
"newClosedGroupDescription": {
"message": "クローズドグループは最大 10 人のメンバーをサポートし、1 対 1 の Session と同じプライバシー保護を提供します。"
},
"createClosedGroupNamePrompt": {
"message": "グループ名"
},
@ -1409,7 +1406,7 @@
"message": "グループメンバーを少なくとも 2 人選択してください"
},
"closedGroupMaxSize": {
"message": "閉じたグループは 10 人を超えるメンバーを抱えることはできません"
"message": "閉じたグループは 20 人を超えるメンバーを抱えることはできません"
},
"noBlockedContacts": {
"message": "ブロックしている連絡先はありません"

@ -1378,9 +1378,6 @@
"newClosedGroup": {
"message": "Nowa grupa zamknięta"
},
"newClosedGroupDescription": {
"message": "Grupy zamknięte obsługują do 10 członków i zapewniają taką samą ochronę prywatności jak sesje jeden na jednego."
},
"createClosedGroupNamePrompt": {
"message": "Nazwa grupy"
},
@ -1406,7 +1403,7 @@
"message": "Wprowadź krótszą nazwę grupy"
},
"closedGroupMaxSize": {
"message": "Grupa zamknięta nie może mieć więcej niż 10 członków"
"message": "Grupa zamknięta nie może mieć więcej niż 20 członków"
},
"noBlockedContacts": {
"message": "Brak zablokowanych kontaktów"

@ -1378,9 +1378,6 @@
"newClosedGroup": {
"message": "Novo grupo fechado"
},
"newClosedGroupDescription": {
"message": "Grupos fechados suportam até 10 membros e fornecem as mesmas proteções de privacidade que as sessões individuais."
},
"createClosedGroupNamePrompt": {
"message": "Nome Do Grupo"
},
@ -1409,6 +1406,6 @@
"message": "Escolha pelo menos 2 membros do grupo"
},
"closedGroupMaxSize": {
"message": "Um grupo fechado não pode ter mais de 10 membros"
"message": "Um grupo fechado não pode ter mais de 20 membros"
}
}

@ -1378,9 +1378,6 @@
"newClosedGroup": {
"message": "Новая закрытая группа"
},
"newClosedGroupDescription": {
"message": "Закрытые группы поддерживают до 10 участников и обеспечивают те же меры защиты конфиденциальности, что и сессии один-на-один."
},
"createClosedGroupNamePrompt": {
"message": "Название Группы"
},
@ -1409,7 +1406,7 @@
"message": "Пожалуйста, выберите как минимум 1 участников группы"
},
"closedGroupMaxSize": {
"message": "В закрытой группе не может быть больше 10 участников"
"message": "В закрытой группе не может быть больше 20 участников"
},
"contextMenuNoSuggestions": {
"message": "No Suggestions",

@ -1339,9 +1339,6 @@
"newClosedGroup": {
"message": "Nhóm kín mới"
},
"newClosedGroupDescription": {
"message": "Nhóm kín hỗ trợ tối đa 10 thành viên và cung cấp dịch vụ bảo mật giống như các session một-một"
},
"createClosedGroupNamePrompt": {
"message": "Tên nhóm"
},
@ -1367,6 +1364,6 @@
"message": "Vui lòng chọn ít nhất 2 thành viên trong nhóm"
},
"closedGroupMaxSize": {
"message": "Một nhóm kín không thể có nhiều hơn 10 thành viên"
"message": "Một nhóm kín không thể có nhiều hơn 20 thành viên"
}
}

@ -991,22 +991,21 @@
return;
}
const serverAPI = await window.lokiPublicChatAPI.findOrCreateServer(
sslServerUrl
);
if (!serverAPI) {
window.log.warn(`Could not connect to ${serverAddress}`);
return;
}
const conversation = await ConversationController.getOrCreateAndWait(
conversationId,
'group'
);
serverAPI.findOrCreateChannel(channelId, conversationId);
await conversation.setPublicSource(sslServerUrl, channelId);
const channelAPI = await window.lokiPublicChatAPI.findOrCreateChannel(
sslServerUrl,
channelId,
conversationId
);
if (!channelAPI) {
window.log.warn(`Could not connect to ${serverAddress}`);
return;
}
appView.openConversation(conversationId, {});
}
);

@ -270,7 +270,6 @@
};
};
const getGroupSettingsProps = () => {
const ourPK = window.textsecure.storage.user.getNumber();
const members = this.model.get('members') || [];
return {
@ -281,7 +280,7 @@
avatarPath: this.model.getAvatarPath(),
isGroup: !this.model.isPrivate(),
isPublic: this.model.isPublic(),
isAdmin: this.model.get('groupAdmins').includes(ourPK),
isAdmin: true, // allow closed group edits from anyone this.model.get('groupAdmins').includes(ourPK),
isRss: this.model.isRss(),
memberCount: members.length,
amMod: this.model.isModerator(

@ -21,9 +21,8 @@
this.members = groupConvo.get('members') || [];
this.avatarPath = groupConvo.getAvatarPath();
const ourPK = textsecure.storage.user.getNumber();
this.isAdmin = groupConvo.get('groupAdmins').includes(ourPK);
// any member can update a closed group name
this.isAdmin = true;
// public chat settings overrides
if (this.isPublic) {
@ -79,7 +78,6 @@
Whisper.UpdateGroupMembersDialogView = Whisper.View.extend({
className: 'loki-dialog modal',
initialize(groupConvo) {
const ourPK = textsecure.storage.user.getNumber();
this.groupName = groupConvo.get('name');
this.close = this.close.bind(this);
this.onSubmit = this.onSubmit.bind(this);
@ -99,7 +97,8 @@
this.existingMembers = [];
} else {
this.titleText = i18n('updateGroupDialogTitle', this.groupName);
this.isAdmin = groupConvo.get('groupAdmins').includes(ourPK);
// anybody can edit a closed group name or members
this.isAdmin = true;
const convos = window.getConversations().models.filter(d => !!d);
this.existingMembers = groupConvo.get('members') || [];

@ -80,12 +80,9 @@
// Do not trigger an update if there is too many members
if (
newMembers.length + existingMembers.length >
window.CONSTANTS.SMALL_GROUP_SIZE_LIMIT
window.CONSTANTS.MEDIUM_GROUP_SIZE_LIMIT
) {
const msg = window.i18n(
'closedGroupMaxSize',
window.CONSTANTS.SMALL_GROUP_SIZE_LIMIT
);
const msg = window.i18n('closedGroupMaxSize');
window.pushToast({
title: msg,

@ -2,7 +2,7 @@
"name": "session-messenger-desktop",
"productName": "Session",
"description": "Private messaging from your desktop",
"version": "1.3.1",
"version": "1.4.0",
"license": "GPL-3.0",
"author": {
"name": "Loki Project",

@ -86,7 +86,7 @@ window.CONSTANTS = new (function() {
this.MAX_CONNECTION_DURATION = 5000;
this.MAX_MESSAGE_BODY_LENGTH = 64 * 1024;
// Limited due to the proof-of-work requirement
this.SMALL_GROUP_SIZE_LIMIT = 10;
this.MEDIUM_GROUP_SIZE_LIMIT = 20;
// Number of seconds to turn on notifications after reconnect/start of app
this.NOTIFICATION_ENABLE_TIMEOUT_SECONDS = 10;
this.SESSION_ID_LENGTH = 66;
@ -451,7 +451,7 @@ window.lokiFeatureFlags = {
useSnodeProxy: !process.env.USE_STUBBED_NETWORK,
useOnionRequests: true,
useFileOnionRequests: true,
enableSenderKeys: false,
enableSenderKeys: true,
onionRequestHops: 3,
debugMessageLogs: process.env.ENABLE_MESSAGE_LOGS,
useMultiDevice: false,
@ -490,7 +490,7 @@ if (config.environment.includes('test-integration')) {
useOnionRequests: false,
useFileOnionRequests: false,
debugMessageLogs: true,
enableSenderKeys: false,
enableSenderKeys: true,
useMultiDevice: false,
};
/* eslint-disable global-require, import/no-extraneous-dependencies */

@ -656,6 +656,10 @@ label {
}
}
.group-member-list__selection {
overflow-y: auto;
}
&__centered {
display: flex;
flex-direction: column;
@ -1423,15 +1427,8 @@ input {
text-align: center;
padding: 20px;
}
// Height at which scroll bar appears on the group member list
@media (max-height: 804px) {
&__container {
overflow-y: visible;
max-height: none;
}
}
}
.create-group-name-input {
display: flex;
justify-content: center;

@ -83,7 +83,7 @@ async function createClosedGroup(
});
return;
} else if (groupMembers.length >= window.CONSTANTS.SMALL_GROUP_SIZE_LIMIT) {
} else if (groupMembers.length >= window.CONSTANTS.MEDIUM_GROUP_SIZE_LIMIT) {
ToastUtils.push({
title: window.i18n('closedGroupMaxSize'),
type: 'error',

@ -8,7 +8,7 @@ import { createLegacyGroup } from '../../session/medium_group';
declare global {
interface Window {
Lodash: any;
SMALL_GROUP_SIZE_LIMIT: number;
MEDIUM_GROUP_SIZE_LIMIT: number;
}
}
@ -200,11 +200,9 @@ export class CreateGroupDialog extends React.Component<Props, State> {
if (
updatedContacts.filter(d => d.checkmarked).length >
window.CONSTANTS.SMALL_GROUP_SIZE_LIMIT - 1
window.CONSTANTS.MEDIUM_GROUP_SIZE_LIMIT - 1
) {
const msg = `${this.props.i18n('closedGroupMaxSize')} ${
window.CONSTANTS.SMALL_GROUP_SIZE_LIMIT
}`;
const msg = this.props.i18n('closedGroupMaxSize');
this.onShowError(msg);
return;

@ -151,7 +151,6 @@ export class SessionClosableOverlay extends React.Component<Props, State> {
case 'closed-group':
title = window.i18n('newClosedGroup');
buttonText = window.i18n('done');
descriptionLong = window.i18n('newClosedGroupDescription');
subtitle = window.i18n('createClosedGroupNamePrompt');
placeholder = window.i18n('createClosedGroupPlaceholder');
break;

@ -245,7 +245,7 @@ class SessionGroupSettings extends React.Component<Props, any> {
const showUpdateGroupNameButton =
isPublic && !isKickedFromGroup
? amMod && !isBlocked
: isAdmin && !isBlocked;
: isAdmin && !isBlocked && !isKickedFromGroup;
const showUpdateGroupMembersButton =
!isPublic && !isKickedFromGroup && !isBlocked && isAdmin;

@ -85,9 +85,8 @@ export async function preprocessGroupMessage(
if (newGroup) {
conversation.updateGroupAdmins(group.admins);
} else {
// be sure to drop a message from a non admin if it tries to change group members
// or change the group name
const fromAdmin = conversation.get('groupAdmins').includes(primarySource);
// group members and names can be changed from any member
const fromAdmin = true;
if (!fromAdmin) {
// Make sure the message is not removing members / renaming the group

@ -308,7 +308,7 @@ async function handleMediumGroupChange(
}
// // Check that the sender is admin (make sure it words with multidevice)
const isAdmin = curAdmins.includes(senderIdentity);
const isAdmin = true;
if (!isAdmin) {
log.warn('Rejected attempt to update a group by non-admin');
@ -317,7 +317,7 @@ async function handleMediumGroupChange(
}
// NOTE: right now, we don't expect admins to change
const admins = adminsBinary.map(toHex);
// const admins = adminsBinary.map(toHex);
const members = membersBinary.map(toHex);
const diff = SenderKeyAPI.calculateGroupDiff(convo, { name, members });

@ -37,9 +37,13 @@ export class ExpirationTimerUpdateMessage extends DataMessage {
if (this.groupId) {
const groupMessage = new SignalService.GroupContext();
groupMessage.id = new Uint8Array(
StringUtils.encode(this.groupId.key, 'utf8')
);
let groupIdWithPrefix: string = this.groupId.key;
if (!this.groupId.key.startsWith(PubKey.PREFIX_GROUP_TEXTSECURE)) {
groupIdWithPrefix = PubKey.PREFIX_GROUP_TEXTSECURE + this.groupId.key;
}
const encoded = StringUtils.encode(groupIdWithPrefix, 'utf8');
const id = new Uint8Array(encoded);
groupMessage.id = id;
groupMessage.type = SignalService.GroupContext.Type.DELIVER;
data.group = groupMessage;

@ -327,6 +327,15 @@ export async function storeOnNode(
return false;
} else if (e instanceof textsecure.WrongDifficultyError) {
const { newDifficulty } = e;
// difficulty of 100 happens when a snode restarts. We have to exit the loop and markNodeUnreachable()
if (newDifficulty === 100) {
log.warn(
'loki_message:::storeOnNode - invalid new difficulty:100. Marking node as bad.'
);
successiveFailures = MAX_ACCEPTABLE_FAILURES;
continue;
}
if (!Number.isNaN(newDifficulty)) {
window.storage.put('PoWDifficulty', newDifficulty);
}

Loading…
Cancel
Save