mirror of
https://github.com/ArcaneChat/android.git
synced 2026-07-03 14:05:24 +02:00
fix some bugs
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user