join open group from received invitation

This commit is contained in:
Brice-W
2021-05-13 14:29:29 +10:00
parent f51268b587
commit 2f0509a03b
6 changed files with 57 additions and 21 deletions

View File

@@ -643,7 +643,7 @@ public class ConversationItem extends LinearLayout
if (updateMessageData.getKind() instanceof UpdateMessageData.Kind.OpenGroupInvitation) {
UpdateMessageData.Kind.OpenGroupInvitation data = (UpdateMessageData.Kind.OpenGroupInvitation)updateMessageData.getKind();
name = data.getGroupName();
url = OpenGroupUrlParser.INSTANCE.trimParameter(data.getGroupUrl());
url = data.getGroupUrl();
}
openGroupInvitationViewStub.get().setOpenGroup(name, url, messageRecord.isOutgoing());

View File

@@ -1,17 +1,20 @@
package org.thoughtcrime.securesms.loki.views
import android.content.Context
import android.graphics.Color
import android.util.AttributeSet
import android.view.View
import android.widget.FrameLayout
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import androidx.core.content.ContextCompat
import android.widget.Toast
import androidx.appcompat.app.AlertDialog
import network.loki.messenger.R
import org.session.libsession.utilities.GroupUtil
import org.session.libsession.utilities.OpenGroupUrlParser
import org.session.libsignal.utilities.logging.Log
import java.io.IOException
import org.thoughtcrime.securesms.groups.GroupManager
import org.thoughtcrime.securesms.loki.protocol.MultiDeviceProtocol
import org.thoughtcrime.securesms.loki.utilities.OpenGroupUtilities
class OpenGroupInvitationView : FrameLayout {
@@ -22,7 +25,9 @@ class OpenGroupInvitationView : FrameLayout {
private val joinButton: ImageView
private val openGroupIcon: ImageView
private val groupName: TextView
private val groupUrl: TextView
private val displayedUrl: TextView
private var groupUrl: String = ""
constructor(context: Context): this(context, null)
@@ -33,14 +38,15 @@ class OpenGroupInvitationView : FrameLayout {
joinButton = findViewById(R.id.join_open_group)
openGroupIcon = findViewById(R.id.open_group_icon)
groupName = findViewById(R.id.group_name)
groupUrl = findViewById(R.id.group_url)
displayedUrl = findViewById(R.id.group_url)
joinButton.setOnClickListener { }
joinButton.setOnClickListener { joinPublicGroup(groupUrl) }
}
fun setOpenGroup(name: String, url: String, isOutgoing: Boolean = false) {
groupName.text = name
groupUrl.text = url
displayedUrl.text = OpenGroupUrlParser.trimParameter(url)
groupUrl = url
if(isOutgoing) {
joinButton.visibility = View.GONE
@@ -51,8 +57,32 @@ class OpenGroupInvitationView : FrameLayout {
}
}
fun joinPublicGroup(url: String) {
private fun joinPublicGroup(url: String) {
val openGroup = OpenGroupUrlParser.parseUrl(url)
val builder = AlertDialog.Builder(context)
builder.setTitle(context.getString(R.string.ConversationActivity_join_open_group, groupName.text.toString()))
builder.setIconAttribute(R.attr.dialog_info_icon)
builder.setCancelable(true)
var message: String =
context.getString(R.string.ConversationActivity_join_open_group_confirmation_message, groupName.text.toString())
builder.setMessage(message)
builder.setPositiveButton(R.string.yes) { dialog, which ->
try {
val group = OpenGroupUtilities.addGroup(context, openGroup.server, openGroup.room, openGroup.serverPublicKey)
val threadID = GroupManager.getOpenGroupThreadID(group.id, context)
val groupID = GroupUtil.getEncodedOpenGroupID(group.id.toByteArray())
MultiDeviceProtocol.forceSyncConfigurationNowIfNeeded(context)
} catch (e: Exception) {
Log.e("JoinPublicChatActivity", "Failed to join open group.", e)
Toast.makeText(context, R.string.activity_join_public_chat_error, Toast.LENGTH_SHORT).show()
}
}
builder.setNegativeButton(R.string.no, null)
builder.show()
}
}

View File

@@ -152,6 +152,9 @@
<string name="ConversationActivity_quick_camera_unavailable">Lappareil photo nest pas disponible</string>
<string name="ConversationActivity_unable_to_record_audio">Impossible denregistrer laudio !</string>
<string name="ConversationActivity_invite_to_open_group">Ajouter des membres</string>
<string name="ConversationActivity_join_open_group">Rejoindre %s</string>
<string name="ConversationActivity_join_open_group_confirmation_message">Êtes-vous sûr de vouloir rejoindre le group public <b>%s</b>?</string>
<string name="ConversationActivity_there_is_no_app_available_to_handle_this_link_on_your_device">Il ny a aucune appli pour gérer ce lien sur votre appareil.</string>
<string name="ConversationActivity_to_send_audio_messages_allow_signal_access_to_your_microphone">Pour envoyer des messages audio, autorisez Session à accéder à votre microphone.</string>
<string name="ConversationActivity_signal_requires_the_microphone_permission_in_order_to_send_audio_messages">Session exige lautorisation Microphone afin denvoyer des messages audio, mais elle a été refusée définitivement. Veuillez accéder au menu des paramètres des applis, sélectionner « Autorisations » et activer « Microphone ».</string>

View File

@@ -176,6 +176,8 @@
<string name="ConversationActivity_unable_to_record_audio">Unable to record audio!</string>
<string name="ConversationActivity_there_is_no_app_available_to_handle_this_link_on_your_device">There is no app available to handle this link on your device.</string>
<string name="ConversationActivity_invite_to_open_group">Add members</string>
<string name="ConversationActivity_join_open_group">Join %s</string>
<string name="ConversationActivity_join_open_group_confirmation_message">Are you sure you want to join the <b>%s</b> open group?</string>
<string name="ConversationActivity_to_send_audio_messages_allow_signal_access_to_your_microphone">Session needs microphone access to send audio messages.</string>
<string name="ConversationActivity_signal_requires_the_microphone_permission_in_order_to_send_audio_messages">Session needs microphone access to send audio messages, but it has been permanently denied. Please continue to app settings, select \"Permissions\", and enable \"Microphone\".</string>