mirror of
https://github.com/oxen-io/session-android.git
synced 2024-11-28 04:25:18 +00:00
737810475e
This was a holdover from Signal's origins as a pure SMS app. It causes problems, depends on undefined device specific behavior, and should no longer be necessary now that we have all the information we need to E164 all numbers. // FREEBIE
63 lines
2.1 KiB
Java
63 lines
2.1 KiB
Java
package org.thoughtcrime.securesms.database;
|
|
|
|
|
|
import android.content.Context;
|
|
|
|
import org.thoughtcrime.securesms.crypto.MasterSecret;
|
|
import org.thoughtcrime.securesms.database.model.SmsMessageRecord;
|
|
import org.thoughtcrime.securesms.util.StorageUtil;
|
|
|
|
import java.io.File;
|
|
import java.io.IOException;
|
|
|
|
public class PlaintextBackupExporter {
|
|
|
|
private static final String FILENAME = "SignalPlaintextBackup.xml";
|
|
|
|
public static void exportPlaintextToSd(Context context, MasterSecret masterSecret)
|
|
throws NoExternalStorageException, IOException
|
|
{
|
|
exportPlaintext(context, masterSecret);
|
|
}
|
|
|
|
public static File getPlaintextExportFile() throws NoExternalStorageException {
|
|
return new File(StorageUtil.getBackupDir(), FILENAME);
|
|
}
|
|
|
|
private static void exportPlaintext(Context context, MasterSecret masterSecret)
|
|
throws NoExternalStorageException, IOException
|
|
{
|
|
int count = DatabaseFactory.getSmsDatabase(context).getMessageCount();
|
|
XmlBackup.Writer writer = new XmlBackup.Writer(getPlaintextExportFile().getAbsolutePath(), count);
|
|
|
|
|
|
SmsMessageRecord record;
|
|
EncryptingSmsDatabase.Reader reader = null;
|
|
int skip = 0;
|
|
int ROW_LIMIT = 500;
|
|
|
|
do {
|
|
if (reader != null)
|
|
reader.close();
|
|
|
|
reader = DatabaseFactory.getEncryptingSmsDatabase(context).getMessages(masterSecret, skip, ROW_LIMIT);
|
|
|
|
while ((record = reader.getNext()) != null) {
|
|
XmlBackup.XmlBackupItem item =
|
|
new XmlBackup.XmlBackupItem(0, record.getIndividualRecipient().getAddress().serialize(),
|
|
record.getIndividualRecipient().getName(),
|
|
record.getDateReceived(),
|
|
MmsSmsColumns.Types.translateToSystemBaseType(record.getType()),
|
|
null, record.getDisplayBody().toString(), null,
|
|
1, record.getDeliveryStatus());
|
|
|
|
writer.writeItem(item);
|
|
}
|
|
|
|
skip += ROW_LIMIT;
|
|
} while (reader.getCount() > 0);
|
|
|
|
writer.close();
|
|
}
|
|
}
|