Add lazy thread creation throughout in preparation for CFV2.

This commit is contained in:
Alex Hart
2023-07-12 15:33:34 -03:00
committed by Clark Chen
parent 6ca9cb6da1
commit 8f253ffc43
24 changed files with 176 additions and 82 deletions

View File

@@ -48,6 +48,7 @@ import org.thoughtcrime.securesms.util.views.SimpleProgressDialog;
import org.whispersystems.signalservice.api.push.ServiceId;
import java.io.IOException;
import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.TimeUnit;
@@ -142,13 +143,12 @@ public class CommunicationActions {
new AsyncTask<Void, Void, Long>() {
@Override
protected Long doInBackground(Void... voids) {
return SignalDatabase.threads().getThreadIdFor(recipient.getId());
return SignalDatabase.threads().getOrCreateThreadIdFor(recipient);
}
@Override
protected void onPostExecute(@Nullable Long threadId) {
// TODO [alex] -- ThreadID should *always* exist
ConversationIntents.Builder builder = ConversationIntents.createBuilder(context, recipient.getId(), threadId != null ? threadId : -1);
protected void onPostExecute(@NonNull Long threadId) {
ConversationIntents.Builder builder = ConversationIntents.createBuilderSync(context, recipient.getId(), Objects.requireNonNull(threadId));
if (!TextUtils.isEmpty(text)) {
builder.withDraftText(text);
}

View File

@@ -216,14 +216,14 @@ public final class ConversationUtil {
{
Recipient resolved = recipient.resolve();
Person[] persons = buildPersons(context, resolved);
Long threadId = SignalDatabase.threads().getThreadIdFor(resolved.getId());
long threadId = SignalDatabase.threads().getOrCreateThreadIdFor(resolved);
String shortName = resolved.isSelf() ? context.getString(R.string.note_to_self) : resolved.getShortDisplayName(context);
String longName = resolved.isSelf() ? context.getString(R.string.note_to_self) : resolved.getDisplayName(context);
String shortcutId = getShortcutId(resolved);
ShortcutInfoCompat.Builder builder = new ShortcutInfoCompat.Builder(context, shortcutId)
.setLongLived(true)
.setIntent(ConversationIntents.createBuilder(context, resolved.getId(), threadId != null ? threadId : -1).build())
.setIntent(ConversationIntents.createBuilderSync(context, resolved.getId(), threadId).build())
.setShortLabel(shortName)
.setLongLabel(longName)
.setIcon(AvatarUtil.getIconCompatForShortcut(context, resolved))