diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/DatabaseFactory.java b/app/src/main/java/org/thoughtcrime/securesms/database/DatabaseFactory.java index c9f940641..1599a9ae9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/DatabaseFactory.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/DatabaseFactory.java @@ -182,7 +182,7 @@ public class DatabaseFactory { return getInstance(context).storageIdDatabase; } - static RemappedRecordsDatabase getRemappedRecordsDatabase(Context context) { + public static RemappedRecordsDatabase getRemappedRecordsDatabase(Context context) { return getInstance(context).remappedRecordsDatabase; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/RemappedRecordsDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/RemappedRecordsDatabase.java index 4dcdb8599..b3d5efba5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/RemappedRecordsDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/RemappedRecordsDatabase.java @@ -97,6 +97,14 @@ public class RemappedRecordsDatabase extends Database { addMapping(Threads.TABLE_NAME, new Mapping(oldId, newId)); } + public Cursor getAllRecipients() { + return databaseHelper.getSignalReadableDatabase().query(Recipients.TABLE_NAME, null, null, null, null, null, null); + } + + public Cursor getAllThreads() { + return databaseHelper.getSignalReadableDatabase().query(Threads.TABLE_NAME, null, null, null, null, null, null); + } + private @NonNull List getAllMappings(@NonNull String table) { List mappings = new LinkedList<>(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionRemappedRecords.java b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionRemappedRecords.java new file mode 100644 index 000000000..f5b03725a --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionRemappedRecords.java @@ -0,0 +1,37 @@ +package org.thoughtcrime.securesms.logsubmit; + +import android.content.Context; +import android.database.Cursor; + +import androidx.annotation.NonNull; + +import org.signal.core.util.AsciiArt; +import org.thoughtcrime.securesms.database.DatabaseFactory; + +/** + * Renders data pertaining to sender key. While all private info is obfuscated, this is still only intended to be printed for internal users. + */ +public class LogSectionRemappedRecords implements LogSection { + + @Override + public @NonNull String getTitle() { + return "REMAPPED RECORDS"; + } + + @Override + public @NonNull CharSequence getContent(@NonNull Context context) { + StringBuilder builder = new StringBuilder(); + + builder.append("--- Recipients").append("\n\n"); + try (Cursor cursor = DatabaseFactory.getRemappedRecordsDatabase(context).getAllRecipients()) { + builder.append(AsciiArt.tableFor(cursor)).append("\n\n"); + } + + builder.append("--- Threads").append("\n\n"); + try (Cursor cursor = DatabaseFactory.getRemappedRecordsDatabase(context).getAllThreads()) { + builder.append(AsciiArt.tableFor(cursor)).append("\n"); + } + + return builder; + } +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/logsubmit/SubmitDebugLogRepository.java b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/SubmitDebugLogRepository.java index f63605f01..ca27c64af 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/logsubmit/SubmitDebugLogRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/SubmitDebugLogRepository.java @@ -90,6 +90,7 @@ public class SubmitDebugLogRepository { if (FeatureFlags.internalUser()) { add(new LogSectionSenderKey()); } + add(new LogSectionRemappedRecords()); add(new LogSectionLogcat()); add(new LogSectionLoggerHeader()); }};