kopia lustrzana https://github.com/ryukoposting/Signal-Android
Re-enable internal sharing to SMS users.
rodzic
f89daefd43
commit
56f7564ce4
|
@ -100,7 +100,8 @@ public class ShareActivity extends PassphraseRequiredActivity
|
||||||
private ShareSelectionAdapter adapter;
|
private ShareSelectionAdapter adapter;
|
||||||
private boolean disallowMultiShare;
|
private boolean disallowMultiShare;
|
||||||
|
|
||||||
private ShareViewModel viewModel;
|
private ShareIntents.Args args;
|
||||||
|
private ShareViewModel viewModel;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPreCreate() {
|
protected void onPreCreate() {
|
||||||
|
@ -112,6 +113,7 @@ public class ShareActivity extends PassphraseRequiredActivity
|
||||||
protected void onCreate(Bundle icicle, boolean ready) {
|
protected void onCreate(Bundle icicle, boolean ready) {
|
||||||
setContentView(R.layout.share_activity);
|
setContentView(R.layout.share_activity);
|
||||||
|
|
||||||
|
initializeArgs();
|
||||||
initializeViewModel();
|
initializeViewModel();
|
||||||
initializeMedia();
|
initializeMedia();
|
||||||
initializeIntent();
|
initializeIntent();
|
||||||
|
@ -211,7 +213,7 @@ public class ShareActivity extends PassphraseRequiredActivity
|
||||||
if (!getIntent().hasExtra(ContactSelectionListFragment.DISPLAY_MODE)) {
|
if (!getIntent().hasExtra(ContactSelectionListFragment.DISPLAY_MODE)) {
|
||||||
int mode = DisplayMode.FLAG_PUSH | DisplayMode.FLAG_ACTIVE_GROUPS | DisplayMode.FLAG_SELF | DisplayMode.FLAG_HIDE_NEW;
|
int mode = DisplayMode.FLAG_PUSH | DisplayMode.FLAG_ACTIVE_GROUPS | DisplayMode.FLAG_SELF | DisplayMode.FLAG_HIDE_NEW;
|
||||||
|
|
||||||
if (TextSecurePreferences.isSmsEnabled(this) && viewModel.isExternalShare()) {
|
if (TextSecurePreferences.isSmsEnabled(this)) {
|
||||||
mode |= DisplayMode.FLAG_SMS;
|
mode |= DisplayMode.FLAG_SMS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -289,7 +291,7 @@ public class ShareActivity extends PassphraseRequiredActivity
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TextSecurePreferences.isSmsEnabled(this) && viewModel.isExternalShare() && (displayMode & DisplayMode.FLAG_SMS) == 0) {
|
if (TextSecurePreferences.isSmsEnabled(this) && (displayMode & DisplayMode.FLAG_SMS) == 0) {
|
||||||
getIntent().putExtra(ContactSelectionListFragment.DISPLAY_MODE, displayMode | DisplayMode.FLAG_SMS);
|
getIntent().putExtra(ContactSelectionListFragment.DISPLAY_MODE, displayMode | DisplayMode.FLAG_SMS);
|
||||||
contactsFragment.setQueryFilter(null);
|
contactsFragment.setQueryFilter(null);
|
||||||
}
|
}
|
||||||
|
@ -310,9 +312,15 @@ public class ShareActivity extends PassphraseRequiredActivity
|
||||||
disallowMultiShare = true;
|
disallowMultiShare = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
validateAvailableRecipients();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void initializeArgs() {
|
||||||
|
this.args = ShareIntents.Args.from(getIntent());
|
||||||
|
}
|
||||||
|
|
||||||
private void initializeViewModel() {
|
private void initializeViewModel() {
|
||||||
this.viewModel = ViewModelProviders.of(this, new ShareViewModel.Factory()).get(ShareViewModel.class);
|
this.viewModel = ViewModelProviders.of(this, new ShareViewModel.Factory()).get(ShareViewModel.class);
|
||||||
}
|
}
|
||||||
|
@ -374,8 +382,6 @@ public class ShareActivity extends PassphraseRequiredActivity
|
||||||
contactsFragment.getView().setVisibility(View.GONE);
|
contactsFragment.getView().setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
onSingleDestinationChosen(threadId, recipientId);
|
onSingleDestinationChosen(threadId, recipientId);
|
||||||
} else if (viewModel.isExternalShare()) {
|
|
||||||
validateAvailableRecipients();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -430,7 +436,9 @@ public class ShareActivity extends PassphraseRequiredActivity
|
||||||
|
|
||||||
if (mode == -1) return;
|
if (mode == -1) return;
|
||||||
|
|
||||||
mode = data.isMmsOrSmsSupported() ? mode | DisplayMode.FLAG_SMS : mode & ~DisplayMode.FLAG_SMS;
|
boolean isMmsOrSmsSupported = data != null ? data.isMmsOrSmsSupported() : TextSecurePreferences.isSmsEnabled(this);
|
||||||
|
|
||||||
|
mode = isMmsOrSmsSupported ? mode | DisplayMode.FLAG_SMS : mode & ~DisplayMode.FLAG_SMS;
|
||||||
getIntent().putExtra(ContactSelectionListFragment.DISPLAY_MODE, mode);
|
getIntent().putExtra(ContactSelectionListFragment.DISPLAY_MODE, mode);
|
||||||
|
|
||||||
contactsFragment.reset();
|
contactsFragment.reset();
|
||||||
|
@ -452,14 +460,14 @@ public class ShareActivity extends PassphraseRequiredActivity
|
||||||
progressWheel.set(null);
|
progressWheel.set(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!data.isPresent()) {
|
if (!data.isPresent() && args.isEmpty()) {
|
||||||
Log.w(TAG, "No data to share!");
|
Log.w(TAG, "No data to share!");
|
||||||
Toast.makeText(this, R.string.ShareActivity_multiple_attachments_are_only_supported, Toast.LENGTH_LONG).show();
|
Toast.makeText(this, R.string.ShareActivity_multiple_attachments_are_only_supported, Toast.LENGTH_LONG).show();
|
||||||
finish();
|
finish();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
onResolved.accept(data.get());
|
onResolved.accept(data.orNull());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -482,7 +490,6 @@ public class ShareActivity extends PassphraseRequiredActivity
|
||||||
}
|
}
|
||||||
|
|
||||||
private void openConversation(long threadId, @NonNull RecipientId recipientId, @Nullable ShareData shareData) {
|
private void openConversation(long threadId, @NonNull RecipientId recipientId, @Nullable ShareData shareData) {
|
||||||
ShareIntents.Args args = ShareIntents.Args.from(getIntent());
|
|
||||||
ConversationIntents.Builder builder = ConversationIntents.createBuilder(this, recipientId, threadId)
|
ConversationIntents.Builder builder = ConversationIntents.createBuilder(this, recipientId, threadId)
|
||||||
.withMedia(args.getExtraMedia())
|
.withMedia(args.getExtraMedia())
|
||||||
.withDraftText(args.getExtraText() != null ? args.getExtraText().toString() : null)
|
.withDraftText(args.getExtraText() != null ? args.getExtraText().toString() : null)
|
||||||
|
@ -510,7 +517,6 @@ public class ShareActivity extends PassphraseRequiredActivity
|
||||||
}
|
}
|
||||||
|
|
||||||
private void openInterstitial(@NonNull Set<ShareContactAndThread> shareContactAndThreads, @Nullable ShareData shareData) {
|
private void openInterstitial(@NonNull Set<ShareContactAndThread> shareContactAndThreads, @Nullable ShareData shareData) {
|
||||||
ShareIntents.Args args = ShareIntents.Args.from(getIntent());
|
|
||||||
MultiShareArgs.Builder builder = new MultiShareArgs.Builder(shareContactAndThreads)
|
MultiShareArgs.Builder builder = new MultiShareArgs.Builder(shareContactAndThreads)
|
||||||
.withMedia(args.getExtraMedia())
|
.withMedia(args.getExtraMedia())
|
||||||
.withDraftText(args.getExtraText() != null ? args.getExtraText().toString() : null)
|
.withDraftText(args.getExtraText() != null ? args.getExtraText().toString() : null)
|
||||||
|
|
|
@ -2,6 +2,7 @@ package org.thoughtcrime.securesms.sharing;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.text.TextUtils;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
@ -63,6 +64,12 @@ public final class ShareIntents {
|
||||||
public boolean isBorderless() {
|
public boolean isBorderless() {
|
||||||
return isBorderless;
|
return isBorderless;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isEmpty() {
|
||||||
|
return extraSticker == null &&
|
||||||
|
(extraMedia == null || extraMedia.isEmpty()) &&
|
||||||
|
TextUtils.isEmpty(extraText);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final class Builder {
|
public static final class Builder {
|
||||||
|
|
|
@ -100,6 +100,7 @@ public class ShareViewModel extends ViewModel {
|
||||||
}
|
}
|
||||||
|
|
||||||
void onNonExternalShare() {
|
void onNonExternalShare() {
|
||||||
|
shareData.setValue(Optional.absent());
|
||||||
externalShare = false;
|
externalShare = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue