fix some bugs

This commit is contained in:
adbenitez
2024-05-18 18:11:57 +02:00
parent 8cdc361ec1
commit 9fb5d11039
4 changed files with 24 additions and 15 deletions
@@ -16,13 +16,13 @@
*/
package org.thoughtcrime.securesms;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.graphics.PorterDuff;
import android.graphics.Rect;
import android.net.Uri;
import android.os.Build;
import android.text.Spannable;
import android.text.TextUtils;
@@ -57,6 +57,7 @@ import org.thoughtcrime.securesms.components.DocumentView;
import org.thoughtcrime.securesms.components.QuoteView;
import org.thoughtcrime.securesms.components.WebxdcView;
import org.thoughtcrime.securesms.components.emoji.EmojiTextView;
import org.thoughtcrime.securesms.connect.AccountManager;
import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.mms.AudioSlide;
import org.thoughtcrime.securesms.mms.DocumentSlide;
@@ -66,7 +67,6 @@ import org.thoughtcrime.securesms.mms.Slide;
import org.thoughtcrime.securesms.mms.SlideClickListener;
import org.thoughtcrime.securesms.mms.SlideDeck;
import org.thoughtcrime.securesms.mms.StickerSlide;
import org.thoughtcrime.securesms.providers.PersistentBlobProvider;
import org.thoughtcrime.securesms.reactions.ReactionsConversationView;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.util.JsonUtils;
@@ -642,21 +642,17 @@ public class ConversationItem extends BaseConversationItem
private void joinCommunity(DcMsg dcMsg) {
JSONObject info = dcMsg.getWebxdcInfo();
String name = JsonUtils.optString(info, "name");
new AlertDialog.Builder(getContext())
Context context = getContext();
new AlertDialog.Builder(context)
.setMessage(getContext().getString(R.string.ask_join_community, name))
.setPositiveButton(R.string.yes, (dialog, which) -> {
String filename = "backup.tar";
byte[] blob = dcMsg.getWebxdcBlob(filename);
if (blob == null) {
Toast.makeText(getContext(), "invalid community file", Toast.LENGTH_SHORT).show();
Toast.makeText(context, "invalid community file", Toast.LENGTH_SHORT).show();
return;
}
Intent intent = new Intent(getContext(), WelcomeActivity.class);
String mimeType = "application/octet-stream";
Uri uri = PersistentBlobProvider.getInstance().create(getContext(), blob, mimeType, filename);
intent.setType(mimeType);
intent.putExtra(WelcomeActivity.COMMUNITY_EXTRA, uri);
getContext().startActivity(intent);
AccountManager.getInstance().addAccountFromCommunity((Activity) getContext(), blob);
})
.setNegativeButton(R.string.no, null)
.show();
@@ -294,7 +294,7 @@ public class CreateProfileActivity extends BaseActionBarActivity implements Emoj
}
private void updateProfile() {
boolean isCommunity = DcHelper.getContext(context).isCommunity();
boolean isCommunity = DcHelper.getContext(this).isCommunity();
if (TextUtils.isEmpty(this.name.getText()) && !(isCommunity && fromWelcome)) {
Toast.makeText(this, R.string.please_enter_name, Toast.LENGTH_LONG).show();
return;
@@ -33,6 +33,7 @@ import org.thoughtcrime.securesms.connect.AccountManager;
import org.thoughtcrime.securesms.connect.DcEventCenter;
import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.mms.AttachmentManager;
import org.thoughtcrime.securesms.mms.PartAuthority;
import org.thoughtcrime.securesms.permissions.Permissions;
import org.thoughtcrime.securesms.qr.BackupTransferActivity;
import org.thoughtcrime.securesms.qr.RegistrationQrActivity;
@@ -300,7 +301,7 @@ public class WelcomeActivity extends BaseActionBarActivity implements DcEventCen
}
private File copyToCacheDir(Uri uri) throws IOException {
try (InputStream inputStream = getContentResolver().openInputStream(uri)) {
try (InputStream inputStream = PartAuthority.getAttachmentStream(this, uri)) {
File file = File.createTempFile(TMP_BACKUP_FILE, ".tmp", getCacheDir());
try (OutputStream outputStream = new FileOutputStream(file)) {
StreamUtil.copy(inputStream, outputStream);
@@ -5,6 +5,7 @@ import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_VERIFIED_ONE_ON
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.preference.PreferenceManager;
import android.util.Log;
@@ -21,6 +22,7 @@ import org.thoughtcrime.securesms.WelcomeActivity;
import org.thoughtcrime.securesms.accounts.AccountSelectionListFragment;
import org.thoughtcrime.securesms.crypto.DatabaseSecret;
import org.thoughtcrime.securesms.crypto.DatabaseSecretProvider;
import org.thoughtcrime.securesms.providers.PersistentBlobProvider;
import java.io.File;
@@ -117,10 +119,10 @@ public class AccountManager {
}
public void switchAccountAndStartActivity(Activity activity, int destAccountId) {
switchAccountAndStartActivity(activity, destAccountId, null);
switchAccountAndStartActivity(activity, destAccountId, null, null);
}
private void switchAccountAndStartActivity(Activity activity, int destAccountId, @Nullable String backupQr) {
private void switchAccountAndStartActivity(Activity activity, int destAccountId, @Nullable String backupQr, @Nullable byte[] communityBlob) {
if (destAccountId==0) {
beginAccountCreation(activity);
} else {
@@ -133,6 +135,12 @@ public class AccountManager {
if (backupQr != null) {
intent.putExtra(WelcomeActivity.BACKUP_QR_EXTRA, backupQr);
}
if (communityBlob != null) {
String mimeType = "application/octet-stream";
Uri uri = PersistentBlobProvider.getInstance().create(activity, communityBlob, mimeType, "backup.tar");
intent.setType(mimeType);
intent.putExtra(WelcomeActivity.COMMUNITY_EXTRA, uri);
}
activity.startActivity(intent);
} else {
activity.startActivity(new Intent(activity.getApplicationContext(), ConversationListActivity.class));
@@ -176,7 +184,11 @@ public class AccountManager {
activity.startActivity(intent);
}
public void addAccountFromCommunity(Activity activity, byte[] communityBlob) {
switchAccountAndStartActivity(activity, 0, null, communityBlob);
}
public void addAccountFromSecondDevice(Activity activity, String backupQr) {
switchAccountAndStartActivity(activity, 0, backupQr);
switchAccountAndStartActivity(activity, 0, backupQr, null);
}
}