mirror of
https://github.com/oxen-io/session-android.git
synced 2024-11-27 12:05:22 +00:00
Improve default SMS subscription id intelligence
Fixes #5266 // FREEBIE
This commit is contained in:
parent
1b1470aae2
commit
acca4a72d3
@ -65,6 +65,9 @@ import android.widget.Toast;
|
||||
import com.google.android.gms.location.places.ui.PlacePicker;
|
||||
import com.google.protobuf.ByteString;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
import org.thoughtcrime.redphone.RedPhone;
|
||||
import org.thoughtcrime.redphone.RedPhoneService;
|
||||
import org.thoughtcrime.securesms.TransportOptions.OnTransportChangedListener;
|
||||
@ -98,6 +101,7 @@ import org.thoughtcrime.securesms.database.DraftDatabase.Drafts;
|
||||
import org.thoughtcrime.securesms.database.GroupDatabase;
|
||||
import org.thoughtcrime.securesms.database.MessagingDatabase.MarkedMessageInfo;
|
||||
import org.thoughtcrime.securesms.database.MmsSmsColumns.Types;
|
||||
import org.thoughtcrime.securesms.database.RecipientPreferenceDatabase.RecipientPreferenceEvent;
|
||||
import org.thoughtcrime.securesms.database.RecipientPreferenceDatabase.RecipientsPreferences;
|
||||
import org.thoughtcrime.securesms.database.ThreadDatabase;
|
||||
import org.thoughtcrime.securesms.jobs.MultiDeviceBlockedUpdateJob;
|
||||
@ -292,6 +296,12 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStart() {
|
||||
super.onStart();
|
||||
EventBus.getDefault().register(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
@ -325,6 +335,13 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
|
||||
fragment.setLastSeen(System.currentTimeMillis());
|
||||
markLastSeen();
|
||||
AudioSlidePlayer.stopAll();
|
||||
EventBus.getDefault().unregister(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStop() {
|
||||
super.onStop();
|
||||
EventBus.getDefault().unregister(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -1168,6 +1185,13 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
|
||||
});
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onRecipientPreferenceUpdate(final RecipientPreferenceEvent event) {
|
||||
if (event.getRecipients().getSortedIdsString().equals(this.recipients.getSortedIdsString())) {
|
||||
new RecipientPreferencesTask().execute(this.recipients);
|
||||
}
|
||||
}
|
||||
|
||||
private void initializeReceivers() {
|
||||
securityUpdateReceiver = new BroadcastReceiver() {
|
||||
@Override
|
||||
|
@ -30,8 +30,9 @@ public class TransportOptions {
|
||||
private Optional<TransportOption> selectedOption = Optional.absent();
|
||||
|
||||
public TransportOptions(Context context, boolean media) {
|
||||
this.context = context;
|
||||
this.enabledTransports = initializeAvailableTransports(media);
|
||||
this.context = context;
|
||||
this.enabledTransports = initializeAvailableTransports(media);
|
||||
this.defaultSubscriptionId = new SubscriptionManagerCompat(context).getPreferredSubscriptionId();
|
||||
}
|
||||
|
||||
public void reset(boolean media) {
|
||||
|
@ -10,6 +10,7 @@ import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.util.Log;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.thoughtcrime.securesms.color.MaterialColor;
|
||||
import org.thoughtcrime.securesms.recipients.RecipientFactory;
|
||||
import org.thoughtcrime.securesms.recipients.Recipients;
|
||||
@ -140,6 +141,7 @@ public class RecipientPreferenceDatabase extends Database {
|
||||
ContentValues values = new ContentValues();
|
||||
values.put(DEFAULT_SUBSCRIPTION_ID, defaultSubscriptionId);
|
||||
updateOrInsert(recipients, values);
|
||||
EventBus.getDefault().post(new RecipientPreferenceEvent(recipients));
|
||||
}
|
||||
|
||||
public void setBlocked(Recipients recipients, boolean blocked) {
|
||||
@ -284,4 +286,17 @@ public class RecipientPreferenceDatabase extends Database {
|
||||
return getCurrent();
|
||||
}
|
||||
}
|
||||
|
||||
public static class RecipientPreferenceEvent {
|
||||
|
||||
private final Recipients recipients;
|
||||
|
||||
public RecipientPreferenceEvent(Recipients recipients) {
|
||||
this.recipients = recipients;
|
||||
}
|
||||
|
||||
public Recipients getRecipients() {
|
||||
return recipients;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -567,6 +567,10 @@ public class SmsDatabase extends MessagingDatabase {
|
||||
DatabaseFactory.getThreadDatabase(context).update(threadId, true);
|
||||
}
|
||||
|
||||
if (message.getSubscriptionId() != -1) {
|
||||
DatabaseFactory.getRecipientPreferenceDatabase(context).setDefaultSubscriptionId(recipients, message.getSubscriptionId());
|
||||
}
|
||||
|
||||
notifyConversationListeners(threadId);
|
||||
jobManager.add(new TrimThreadJob(context, threadId));
|
||||
|
||||
|
@ -19,6 +19,14 @@ public class SubscriptionManagerCompat {
|
||||
this.context = context.getApplicationContext();
|
||||
}
|
||||
|
||||
public Optional<Integer> getPreferredSubscriptionId() {
|
||||
if (Build.VERSION.SDK_INT < 24) {
|
||||
return Optional.absent();
|
||||
}
|
||||
|
||||
return Optional.of(SubscriptionManager.getDefaultSmsSubscriptionId());
|
||||
}
|
||||
|
||||
public Optional<SubscriptionInfoCompat> getActiveSubscriptionInfo(int subscriptionId) {
|
||||
if (Build.VERSION.SDK_INT < 22) {
|
||||
return Optional.absent();
|
||||
|
Loading…
Reference in New Issue
Block a user