Add contact support capability to regV5.

This commit is contained in:
Greyson Parrelli
2026-07-01 13:11:57 -04:00
committed by Michelle Tang
parent 99b89743a7
commit db899e92f5
11 changed files with 63 additions and 19 deletions
@@ -119,6 +119,7 @@ import org.thoughtcrime.securesms.service.webrtc.AndroidTelecomUtil;
import org.thoughtcrime.securesms.storage.StorageSyncHelper;
import org.thoughtcrime.securesms.util.AppStartup;
import org.thoughtcrime.securesms.util.BatterySnapshotTracker;
import org.thoughtcrime.securesms.util.CommunicationActions;
import org.thoughtcrime.securesms.util.DeviceProperties;
import org.thoughtcrime.securesms.util.DynamicTheme;
import org.thoughtcrime.securesms.util.Environment;
@@ -127,6 +128,7 @@ import org.thoughtcrime.securesms.util.RemoteConfig;
import org.thoughtcrime.securesms.util.SignalLocalMetrics;
import org.thoughtcrime.securesms.util.SignalUncaughtExceptionHandler;
import org.thoughtcrime.securesms.util.SqlCipherLogTarget;
import org.thoughtcrime.securesms.util.SupportEmailUtil;
import org.thoughtcrime.securesms.util.TextSecurePreferences;
import org.thoughtcrime.securesms.util.VersionTracker;
import org.thoughtcrime.securesms.util.dynamiclanguage.DynamicLanguageContextWrapper;
@@ -438,6 +440,11 @@ public class ApplicationContext extends Application implements AppForegroundObse
context -> {
context.startActivity(AppSettingsActivity.proxy(context));
return Unit.INSTANCE;
},
(context, subject) -> {
String body = SupportEmailUtil.generateSupportEmailBody(context, subject, null, null);
CommunicationActions.openEmail(context, SupportEmailUtil.getSupportEmailAddress(context), subject, body);
return Unit.INSTANCE;
}
)
);
@@ -1,7 +1,6 @@
package org.thoughtcrime.securesms.util;
import android.content.Context;
import android.content.res.Resources;
import android.os.Build;
import androidx.annotation.NonNull;
@@ -48,18 +47,28 @@ public final class SupportEmailUtil {
@Nullable String suffix)
{
filterSuffix = Util.emptyIfNull(filterSuffix);
prefix = Util.emptyIfNull(prefix);
suffix = Util.emptyIfNull(suffix);
return String.format("%s\n%s\n%s", prefix, buildSystemInfo(context, filter, filterSuffix), suffix);
return generateSupportEmailBody(context, ResourceUtil.getEnglishResources(context).getString(filter) + filterSuffix, prefix, suffix);
}
private static @NonNull String buildSystemInfo(@NonNull Context context, @StringRes int filter, @NonNull String filterSuffix) {
Resources englishResources = ResourceUtil.getEnglishResources(context);
/**
* Generates a support email body with system info near the top, using the given already-resolved filter text.
*/
public static @NonNull String generateSupportEmailBody(@NonNull Context context,
@NonNull String filter,
@Nullable String prefix,
@Nullable String suffix)
{
prefix = Util.emptyIfNull(prefix);
suffix = Util.emptyIfNull(suffix);
return String.format("%s\n%s\n%s", prefix, buildSystemInfo(context, filter), suffix);
}
private static @NonNull String buildSystemInfo(@NonNull Context context, @NonNull String filter) {
return "--- " + context.getString(R.string.HelpFragment__support_info) + " ---" +
"\n" +
context.getString(R.string.SupportEmailUtil_filter) + " " + englishResources.getString(filter) + filterSuffix +
context.getString(R.string.SupportEmailUtil_filter) + " " + filter +
"\n" +
context.getString(R.string.SupportEmailUtil_device_info) + " " + getDeviceInfo() +
"\n" +