Fix error joining communities (#836)

pull/1710/head
SessionHero01 10 months ago committed by GitHub
parent de01ee1a2c
commit 27bef85bf8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -1,6 +1,5 @@
package org.thoughtcrime.securesms.conversation.v2.dialogs package org.thoughtcrime.securesms.conversation.v2.dialogs
import org.thoughtcrime.securesms.createSessionDialog
import android.app.Dialog import android.app.Dialog
import android.graphics.Typeface import android.graphics.Typeface
import android.os.Bundle import android.os.Bundle
@ -9,9 +8,10 @@ import android.text.SpannableStringBuilder
import android.text.style.StyleSpan import android.text.style.StyleSpan
import android.widget.Toast import android.widget.Toast
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import androidx.lifecycle.lifecycleScope
import com.squareup.phrase.Phrase import com.squareup.phrase.Phrase
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import network.loki.messenger.R import network.loki.messenger.R
@ -19,11 +19,12 @@ import org.session.libsession.database.StorageProtocol
import org.session.libsession.utilities.OpenGroupUrlParser import org.session.libsession.utilities.OpenGroupUrlParser
import org.session.libsession.utilities.StringSubstitutionConstants.COMMUNITY_NAME_KEY import org.session.libsession.utilities.StringSubstitutionConstants.COMMUNITY_NAME_KEY
import org.session.libsignal.utilities.Log import org.session.libsignal.utilities.Log
import org.session.libsignal.utilities.ThreadUtils import org.thoughtcrime.securesms.createSessionDialog
import org.thoughtcrime.securesms.groups.OpenGroupManager import org.thoughtcrime.securesms.groups.OpenGroupManager
import javax.inject.Inject import javax.inject.Inject
/** Shown upon tapping an open group invitation. */ /** Shown upon tapping an open group invitation. */
@AndroidEntryPoint
class JoinOpenGroupDialog(private val name: String, private val url: String) : DialogFragment() { class JoinOpenGroupDialog(private val name: String, private val url: String) : DialogFragment() {
@Inject @Inject
@ -47,7 +48,9 @@ class JoinOpenGroupDialog(private val name: String, private val url: String) : D
private fun join() { private fun join() {
val openGroup = OpenGroupUrlParser.parseUrl(url) val openGroup = OpenGroupUrlParser.parseUrl(url)
val activity = requireActivity() val activity = requireActivity()
lifecycleScope.launch {
// Must run on a bigger scope, as we are dismissing the dialog right after
GlobalScope.launch(Dispatchers.Main) {
try { try {
withContext(Dispatchers.Default) { withContext(Dispatchers.Default) {
OpenGroupManager.add( OpenGroupManager.add(
@ -60,6 +63,7 @@ class JoinOpenGroupDialog(private val name: String, private val url: String) : D
storage.onOpenGroupAdded(openGroup.server, openGroup.room) storage.onOpenGroupAdded(openGroup.server, openGroup.room)
} }
} catch (e: Exception) { } catch (e: Exception) {
Log.e("JoinOpenGroupDialog", "Error joining community", e)
Toast.makeText(activity, R.string.communityErrorDescription, Toast.LENGTH_SHORT).show() Toast.makeText(activity, R.string.communityErrorDescription, Toast.LENGTH_SHORT).show()
} }
} }

Loading…
Cancel
Save