Handle drafts after security information has been resolved.

// FREEBIE
This commit is contained in:
Moxie Marlinspike 2015-10-01 17:46:47 -07:00
parent c0a26862f3
commit cbfd3af5c2

View File

@ -127,6 +127,7 @@ import java.io.IOException;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom; import java.security.SecureRandom;
import java.util.List; import java.util.List;
import java.util.concurrent.ExecutionException;
import static org.thoughtcrime.securesms.TransportOption.Type; import static org.thoughtcrime.securesms.TransportOption.Type;
import static org.thoughtcrime.securesms.database.GroupDatabase.GroupRecord; import static org.thoughtcrime.securesms.database.GroupDatabase.GroupRecord;
@ -216,8 +217,17 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
initializeActionBar(); initializeActionBar();
initializeViews(); initializeViews();
initializeResources(); initializeResources();
initializeSecurity(false, false); initializeSecurity(false, false).addListener(new ListenableFuture.Listener<Boolean>() {
initializeDraft(); @Override
public void onSuccess(Boolean result) {
initializeDraft();
}
@Override
public void onFailure(ExecutionException e) {
throw new AssertionError(e);
}
});
} }
@Override @Override
@ -232,8 +242,16 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
setIntent(intent); setIntent(intent);
initializeResources(); initializeResources();
initializeSecurity(false, false); initializeSecurity(false, false).addListener(new ListenableFuture.Listener<Boolean>() {
initializeDraft(); @Override
public void onSuccess(Boolean result) {
initializeDraft();
}
@Override
public void onFailure(ExecutionException e) {
throw new AssertionError(e);
}
});
if (fragment != null) { if (fragment != null) {
fragment.onNewIntent(); fragment.onNewIntent();
@ -752,9 +770,11 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
}.execute(); }.execute();
} }
private void initializeSecurity(final boolean currentSecureText, private ListenableFuture<Boolean> initializeSecurity(final boolean currentSecureText,
final boolean currentSecureVoice) final boolean currentSecureVoice)
{ {
final SettableFuture<Boolean> future = new SettableFuture<>();
handleSecurityChange(currentSecureText || isGroupConversation(), handleSecurityChange(currentSecureText || isGroupConversation(),
currentSecureVoice && !isGroupConversation()); currentSecureVoice && !isGroupConversation());
@ -786,8 +806,12 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
if (result.first != currentSecureText || result.second != currentSecureVoice) { if (result.first != currentSecureText || result.second != currentSecureVoice) {
handleSecurityChange(result.first, result.second); handleSecurityChange(result.first, result.second);
} }
future.set(true);
} }
}.execute(recipients); }.execute(recipients);
return future;
} }