Skip to content

Commit 65d45da

Browse files
committed
Merge remote-tracking branch 'upstream/master' into cust_remove_call_confirm
2 parents 0dad625 + 9099969 commit 65d45da

25 files changed

Lines changed: 394 additions & 196 deletions

File tree

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@ protobuf {
6161
}
6262
}
6363

64-
def canonicalVersionCode = 778
65-
def canonicalVersionName = "5.3.5"
64+
def canonicalVersionCode = 779
65+
def canonicalVersionName = "5.3.6"
6666

6767
def postFixSize = 100
6868
def abiPostFix = ['universal' : 0,

app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2950,6 +2950,7 @@ public void onRecorderStarted() {
29502950
@Override
29512951
public void onRecorderLocked() {
29522952
updateToggleButtonState();
2953+
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
29532954
}
29542955

29552956
@Override
@@ -3014,6 +3015,7 @@ public void onRecorderCanceled() {
30143015
vibrator.vibrate(50);
30153016

30163017
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
3018+
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
30173019

30183020
ListenableFuture<Pair<Uri, Long>> future = audioRecorder.stopRecording();
30193021
future.addListener(new ListenableFuture.Listener<Pair<Uri, Long>>() {

app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationUpdateItem.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -171,9 +171,7 @@ private static boolean shouldCollapse(@NonNull MessageRecord current, @NonNull O
171171

172172
/** After a short delay, if the main data hasn't shown yet, then a loading message is displayed. */
173173
private @NonNull LiveData<Spannable> loading(@NonNull LiveData<Spannable> string) {
174-
// TODO [greyson] This sometimes isn't working and can instead get stuck on 'loading'.
175-
return string;
176-
// return LiveDataUtil.until(string, LiveDataUtil.delay(250, new SpannableString(getContext().getString(R.string.ConversationUpdateItem_loading))));
174+
return LiveDataUtil.until(string, LiveDataUtil.delay(250, new SpannableString(getContext().getString(R.string.ConversationUpdateItem_loading))));
177175
}
178176

179177
@Override

app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionSystemInfo.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import org.thoughtcrime.securesms.util.AppSignatureUtil;
1818
import org.thoughtcrime.securesms.util.ByteUnit;
1919
import org.thoughtcrime.securesms.util.CensorshipUtil;
20+
import org.thoughtcrime.securesms.util.DeviceProperties;
2021
import org.thoughtcrime.securesms.util.ServiceUtil;
2122
import org.thoughtcrime.securesms.util.TextSecurePreferences;
2223
import org.thoughtcrime.securesms.util.Util;
@@ -54,6 +55,7 @@ public class LogSectionSystemInfo implements LogSection {
5455
builder.append("ABIs : ").append(TextUtils.join(", ", getSupportedAbis())).append("\n");
5556
builder.append("Memory : ").append(getMemoryUsage()).append("\n");
5657
builder.append("Memclass : ").append(getMemoryClass(context)).append("\n");
58+
builder.append("MemInfo : ").append(getMemoryInfo(context)).append("\n");
5759
builder.append("OS Host : ").append(Build.HOST).append("\n");
5860
builder.append("Censored : ").append(CensorshipUtil.isCensored(context)).append("\n");
5961
builder.append("Play Services : ").append(getPlayServicesString(context)).append("\n");
@@ -102,6 +104,12 @@ public class LogSectionSystemInfo implements LogSection {
102104
return activityManager.getMemoryClass() + lowMem;
103105
}
104106

107+
private static @NonNull String getMemoryInfo(Context context) {
108+
ActivityManager.MemoryInfo info = DeviceProperties.getMemoryInfo(context);
109+
return String.format(Locale.US, "availMem: %d mb, totalMem: %d mb, threshold: %d mb, lowMemory: %b",
110+
ByteUnit.BYTES.toMegabytes(info.availMem), ByteUnit.BYTES.toMegabytes(info.totalMem), ByteUnit.BYTES.toMegabytes(info.threshold), info.lowMemory);
111+
}
112+
105113
private static @NonNull Iterable<String> getSupportedAbis() {
106114
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
107115
return Arrays.asList(Build.SUPPORTED_ABIS);

app/src/main/java/org/thoughtcrime/securesms/recipients/LiveRecipient.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@ public final class LiveRecipient {
4141
private final GroupDatabase groupDatabase;
4242
private final MutableLiveData<Object> refreshForceNotify;
4343

44-
LiveRecipient(@NonNull Context context, @NonNull MutableLiveData<Recipient> liveData, @NonNull Recipient defaultRecipient) {
44+
LiveRecipient(@NonNull Context context, @NonNull Recipient defaultRecipient) {
4545
this.context = context.getApplicationContext();
46-
this.liveData = liveData;
46+
this.liveData = new MutableLiveData<>(defaultRecipient);
4747
this.recipient = new AtomicReference<>(defaultRecipient);
4848
this.recipientDatabase = DatabaseFactory.getRecipientDatabase(context);
4949
this.groupDatabase = DatabaseFactory.getGroupDatabase(context);

app/src/main/java/org/thoughtcrime/securesms/recipients/LiveRecipientCache.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@
66
import androidx.annotation.AnyThread;
77
import androidx.annotation.GuardedBy;
88
import androidx.annotation.NonNull;
9-
import androidx.lifecycle.MutableLiveData;
10-
11-
import com.annimon.stream.Stream;
129

1310
import org.signal.core.util.concurrent.SignalExecutors;
1411
import org.signal.core.util.logging.Log;
@@ -22,7 +19,6 @@
2219

2320
import java.util.ArrayList;
2421
import java.util.Collection;
25-
import java.util.Collections;
2622
import java.util.List;
2723
import java.util.Map;
2824
import java.util.UUID;
@@ -50,7 +46,7 @@ public LiveRecipientCache(@NonNull Context context) {
5046
this.context = context.getApplicationContext();
5147
this.recipientDatabase = DatabaseFactory.getRecipientDatabase(context);
5248
this.recipients = new LRUCache<>(CACHE_MAX);
53-
this.unknown = new LiveRecipient(context, new MutableLiveData<>(), Recipient.UNKNOWN);
49+
this.unknown = new LiveRecipient(context, Recipient.UNKNOWN);
5450
}
5551

5652
@AnyThread
@@ -60,7 +56,7 @@ public LiveRecipientCache(@NonNull Context context) {
6056
LiveRecipient live = recipients.get(id);
6157

6258
if (live == null) {
63-
final LiveRecipient newLive = new LiveRecipient(context, new MutableLiveData<>(), new Recipient(id));
59+
final LiveRecipient newLive = new LiveRecipient(context, new Recipient(id));
6460

6561
recipients.put(id, newLive);
6662

@@ -93,7 +89,7 @@ public synchronized void addToCache(@NonNull Collection<Recipient> newRecipients
9389
boolean needsResolve = false;
9490

9591
if (live == null) {
96-
live = new LiveRecipient(context, new MutableLiveData<>(), recipient);
92+
live = new LiveRecipient(context, recipient);
9793
recipients.put(recipient.getId(), live);
9894
needsResolve = recipient.isResolving();
9995
} else if (live.get().isResolving() || !recipient.isResolving()) {

app/src/main/java/org/thoughtcrime/securesms/util/DeviceProperties.java

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package org.thoughtcrime.securesms.util;
22

33
import android.app.ActivityManager;
4+
import android.app.ActivityManager.MemoryInfo;
45
import android.content.Context;
6+
import android.os.Build;
57

68
import androidx.annotation.NonNull;
79

@@ -15,7 +17,17 @@ public final class DeviceProperties {
1517
* large numbers of APNGs simultaneously.
1618
*/
1719
public static boolean shouldAllowApngStickerAnimation(@NonNull Context context) {
18-
return !isLowMemoryDevice(context) && getMemoryClass(context) >= FeatureFlags.animatedStickerMinimumMemory();
20+
if (Build.VERSION.SDK_INT < 26) {
21+
return false;
22+
}
23+
24+
MemoryInfo memoryInfo = getMemoryInfo(context);
25+
int memoryMb = (int) ByteUnit.BYTES.toMegabytes(memoryInfo.totalMem);
26+
27+
return !isLowMemoryDevice(context) &&
28+
!memoryInfo.lowMemory &&
29+
(memoryMb >= FeatureFlags.animatedStickerMinimumTotalMemoryMb() ||
30+
getMemoryClass(context) >= FeatureFlags.animatedStickerMinimumMemoryClass());
1931
}
2032

2133
public static boolean isLowMemoryDevice(@NonNull Context context) {
@@ -27,4 +39,13 @@ public static int getMemoryClass(@NonNull Context context) {
2739
ActivityManager activityManager = ServiceUtil.getActivityManager(context);
2840
return activityManager.getMemoryClass();
2941
}
42+
43+
public static @NonNull MemoryInfo getMemoryInfo(@NonNull Context context) {
44+
MemoryInfo info = new MemoryInfo();
45+
ActivityManager activityManager = ServiceUtil.getActivityManager(context);
46+
47+
activityManager.getMemoryInfo(info);
48+
49+
return info;
50+
}
3051
}

app/src/main/java/org/thoughtcrime/securesms/util/FeatureFlags.java

Lines changed: 36 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -49,30 +49,31 @@ public final class FeatureFlags {
4949

5050
private static final long FETCH_INTERVAL = TimeUnit.HOURS.toMillis(2);
5151

52-
private static final String USERNAMES = "android.usernames";
53-
private static final String GROUPS_V2_RECOMMENDED_LIMIT = "global.groupsv2.maxGroupSize";
54-
private static final String GROUPS_V2_HARD_LIMIT = "global.groupsv2.groupSizeHardLimit";
55-
private static final String GROUP_NAME_MAX_LENGTH = "global.groupsv2.maxNameLength";
56-
private static final String INTERNAL_USER = "android.internalUser";
57-
private static final String VERIFY_V2 = "android.verifyV2";
58-
private static final String PHONE_NUMBER_PRIVACY_VERSION = "android.phoneNumberPrivacyVersion";
59-
private static final String CLIENT_EXPIRATION = "android.clientExpiration";
60-
public static final String RESEARCH_MEGAPHONE_1 = "research.megaphone.1";
61-
public static final String DONATE_MEGAPHONE = "android.donate";
62-
private static final String VIEWED_RECEIPTS = "android.viewed.receipts";
63-
private static final String GROUP_CALLING = "android.groupsv2.calling.2";
64-
private static final String GV1_MANUAL_MIGRATE = "android.groupsV1Migration.manual";
65-
private static final String GV1_FORCED_MIGRATE = "android.groupsV1Migration.forced";
66-
private static final String GV1_MIGRATION_JOB = "android.groupsV1Migration.job";
67-
private static final String SEND_VIEWED_RECEIPTS = "android.sendViewedReceipts";
68-
private static final String CUSTOM_VIDEO_MUXER = "android.customVideoMuxer";
69-
private static final String CDS_REFRESH_INTERVAL = "cds.syncInterval.seconds";
70-
private static final String AUTOMATIC_SESSION_RESET = "android.automaticSessionReset.2";
71-
private static final String AUTOMATIC_SESSION_INTERVAL = "android.automaticSessionResetInterval";
72-
private static final String DEFAULT_MAX_BACKOFF = "android.defaultMaxBackoff";
73-
private static final String OKHTTP_AUTOMATIC_RETRY = "android.okhttpAutomaticRetry";
74-
private static final String SHARE_SELECTION_LIMIT = "android.share.limit";
75-
private static final String ANIMATED_STICKER_MIN_MEMORY = "android.animatedStickerMinMemory";
52+
private static final String USERNAMES = "android.usernames";
53+
private static final String GROUPS_V2_RECOMMENDED_LIMIT = "global.groupsv2.maxGroupSize";
54+
private static final String GROUPS_V2_HARD_LIMIT = "global.groupsv2.groupSizeHardLimit";
55+
private static final String GROUP_NAME_MAX_LENGTH = "global.groupsv2.maxNameLength";
56+
private static final String INTERNAL_USER = "android.internalUser";
57+
private static final String VERIFY_V2 = "android.verifyV2";
58+
private static final String PHONE_NUMBER_PRIVACY_VERSION = "android.phoneNumberPrivacyVersion";
59+
private static final String CLIENT_EXPIRATION = "android.clientExpiration";
60+
public static final String RESEARCH_MEGAPHONE_1 = "research.megaphone.1";
61+
public static final String DONATE_MEGAPHONE = "android.donate";
62+
private static final String VIEWED_RECEIPTS = "android.viewed.receipts";
63+
private static final String GROUP_CALLING = "android.groupsv2.calling.2";
64+
private static final String GV1_MANUAL_MIGRATE = "android.groupsV1Migration.manual";
65+
private static final String GV1_FORCED_MIGRATE = "android.groupsV1Migration.forced";
66+
private static final String GV1_MIGRATION_JOB = "android.groupsV1Migration.job";
67+
private static final String SEND_VIEWED_RECEIPTS = "android.sendViewedReceipts";
68+
private static final String CUSTOM_VIDEO_MUXER = "android.customVideoMuxer";
69+
private static final String CDS_REFRESH_INTERVAL = "cds.syncInterval.seconds";
70+
private static final String AUTOMATIC_SESSION_RESET = "android.automaticSessionReset.2";
71+
private static final String AUTOMATIC_SESSION_INTERVAL = "android.automaticSessionResetInterval";
72+
private static final String DEFAULT_MAX_BACKOFF = "android.defaultMaxBackoff";
73+
private static final String OKHTTP_AUTOMATIC_RETRY = "android.okhttpAutomaticRetry";
74+
private static final String SHARE_SELECTION_LIMIT = "android.share.limit";
75+
private static final String ANIMATED_STICKER_MIN_MEMORY = "android.animatedStickerMinMemory";
76+
private static final String ANIMATED_STICKER_MIN_TOTAL_MEMORY = "android.animatedStickerMinTotalMemory";
7677

7778
/**
7879
* We will only store remote values for flags in this set. If you want a flag to be controllable
@@ -102,7 +103,8 @@ public final class FeatureFlags {
102103
DEFAULT_MAX_BACKOFF,
103104
OKHTTP_AUTOMATIC_RETRY,
104105
SHARE_SELECTION_LIMIT,
105-
ANIMATED_STICKER_MIN_MEMORY
106+
ANIMATED_STICKER_MIN_MEMORY,
107+
ANIMATED_STICKER_MIN_TOTAL_MEMORY
106108
);
107109

108110
@VisibleForTesting
@@ -142,7 +144,8 @@ public final class FeatureFlags {
142144
DEFAULT_MAX_BACKOFF,
143145
OKHTTP_AUTOMATIC_RETRY,
144146
SHARE_SELECTION_LIMIT,
145-
ANIMATED_STICKER_MIN_MEMORY
147+
ANIMATED_STICKER_MIN_MEMORY,
148+
ANIMATED_STICKER_MIN_TOTAL_MEMORY
146149
);
147150

148151
/**
@@ -327,11 +330,16 @@ public static boolean okHttpAutomaticRetry() {
327330
return getBoolean(OKHTTP_AUTOMATIC_RETRY, false);
328331
}
329332

330-
/** The minimum amount of memory required for rendering animated stickers in the keyboard and such */
331-
public static int animatedStickerMinimumMemory() {
333+
/** The minimum memory class required for rendering animated stickers in the keyboard and such */
334+
public static int animatedStickerMinimumMemoryClass() {
332335
return getInteger(ANIMATED_STICKER_MIN_MEMORY, 193);
333336
}
334337

338+
/** The minimum total memory for rendering animated stickers in the keyboard and such */
339+
public static int animatedStickerMinimumTotalMemoryMb() {
340+
return getInteger(ANIMATED_STICKER_MIN_TOTAL_MEMORY, (int) ByteUnit.GIGABYTES.toMegabytes(3));
341+
}
342+
335343
/** Only for rendering debug info. */
336344
public static synchronized @NonNull Map<String, Object> getMemoryValues() {
337345
return new TreeMap<>(REMOTE_VALUES);

app/src/main/res/values-ar/strings.xml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1308,7 +1308,7 @@
13081308
<string name="DeviceProvisioningActivity_content_progress_key_error">الرمز باطل.</string>
13091309
<string name="DeviceProvisioningActivity_sorry_you_have_too_many_devices_linked_already">عذرا، لديك عدة أجهزة مرتبطة. يرجى إزالة بعضها</string>
13101310
<string name="DeviceActivity_sorry_this_is_not_a_valid_device_link_qr_code">عذرا، الرابط غير صحيح.</string>
1311-
<string name="DeviceProvisioningActivity_link_a_signal_device">الربط بجهاز Signal؟</string>
1311+
<string name="DeviceProvisioningActivity_link_a_signal_device">ربط جهاز Signal آخر ؟</string>
13121312
<string name="DeviceProvisioningActivity_it_looks_like_youre_trying_to_link_a_signal_device_using_a_3rd_party_scanner">يبدو أنك تحاول ربط جهاز Signal باستخدام ماسح ضوئي من طرف ثالث. الرجاء مسح الرمز مرّة أخرى باستخدام Signal من أجل حمايتك.</string>
13131313
<string name="DeviceActivity_signal_needs_the_camera_permission_in_order_to_scan_a_qr_code">يحتاج Signal إلى إذن الوصول إلى الكاميرا من أجل مسح الرمز المربع ضوئيا ولكن رُفض الإذن على نحو دائم، الرجاء زيارة إعدادات التطبيق، ثم اختيار « الصلاحيات »، ثم تفعيل « الكاميرا ».</string>
13141314
<string name="DeviceActivity_unable_to_scan_a_qr_code_without_the_camera_permission">لا يمكن مسح رمز الاستجابة السريع بدون منح إذن الوصول إلى الكاميرا</string>
@@ -1753,7 +1753,7 @@
17531753
<string name="WebRtcCallScreen__answer_without_video">أجب بدون فيديو</string>
17541754
<!--WebRtcAudioOutputToggle-->
17551755
<string name="WebRtcAudioOutputToggle__audio_output">مخرج الصوت</string>
1756-
<string name="WebRtcAudioOutputToggle__phone_earpiece">سماعة الهاتف الأذنية</string>
1756+
<string name="WebRtcAudioOutputToggle__phone_earpiece">سماعة أذن الهاتف</string>
17571757
<string name="WebRtcAudioOutputToggle__speaker">مكبر الصوت</string>
17581758
<string name="WebRtcAudioOutputToggle__bluetooth">بلوتوث</string>
17591759
<string name="WebRtcCallControls_answer_call_description">الرد على المكالمة</string>
@@ -1989,11 +1989,11 @@
19891989
<string name="EditAboutFragment_count">%d/%d</string>
19901990
<string name="EditAboutFragment_speak_freely">ما عليك إلا التحدث بكل حرية</string>
19911991
<string name="EditAboutFragment_encrypted">مُعمَّى</string>
1992-
<string name="EditAboutFragment_be_kind">كن لطيفاً</string>
1993-
<string name="EditAboutFragment_coffee_lover">محب للقهوة</string>
1994-
<string name="EditAboutFragment_free_to_chat">لديّ وقت للتحدث</string>
1995-
<string name="EditAboutFragment_taking_a_break">آخذ استراحة</string>
1996-
<string name="EditAboutFragment_working_on_something_new">أعمل على شيء جديد</string>
1992+
<string name="EditAboutFragment_be_kind">كن لطيفا</string>
1993+
<string name="EditAboutFragment_coffee_lover">من عشاق القهوة</string>
1994+
<string name="EditAboutFragment_free_to_chat">لدي الوقت للتحدث</string>
1995+
<string name="EditAboutFragment_taking_a_break">أنا في استراحة</string>
1996+
<string name="EditAboutFragment_working_on_something_new">أعمل حاليا على شيء جديد</string>
19971997
<!--EditProfileFragment-->
19981998
<string name="EditProfileFragment__edit_group_name_and_photo">عدّل اسم المجموعة وصورتها</string>
19991999
<string name="EditProfileFragment__group_name">اسم المجموعة</string>
@@ -2725,10 +2725,10 @@
27252725
<string name="ChatWallpaperFragment__set_wallpaper">ضبط الخلفية</string>
27262726
<string name="ChatWallpaperFragment__dark_theme_dims_wallpaper">إن النمط الداكن يجعل الخلفية معتمة</string>
27272727
<string name="ChatWallpaperFragment__clear_wallpaper">محو الخلفية</string>
2728-
<string name="ChatWallpaperFragment__clear_wallpaper_for_this_chat">مسح الخلفية لهذه المُحادثة؟</string>
2729-
<string name="ChatWallpaperFragment__clear_wallpaper_this_will_not">مسح الخلفية؟ هذا لن يؤدي إلى مسح الخلفيات المُخصصة التي قد قمت بتعيينها لمُحادثاتك.</string>
2728+
<string name="ChatWallpaperFragment__clear_wallpaper_for_this_chat">محو الخلفية لهذه المُحادثة ؟</string>
2729+
<string name="ChatWallpaperFragment__clear_wallpaper_this_will_not">أأمحو الخلفية ؟ لن يؤدي هذا إلى محو الخلفيات المخصصة التي قد قمت بضبطها لمحادثاتك.</string>
27302730
<string name="ChatWallpaperFragment__reset_all_wallpapers">إعادة التعيين كل الخلفيات</string>
2731-
<string name="ChatWallpaperFragment__reset_all_wallpapers_including_custom">إعادة تعيين جميع الخلفيات، بما في ذلك الخلفيات المُخصصة التي قد قمت بتعيينها لمُحادثاتك؟</string>
2731+
<string name="ChatWallpaperFragment__reset_all_wallpapers_including_custom">أأعيد تعيين جميع الخلفيات، بما في ذلك الخلفيات المخصصة التي قد قمت بضبطها لمحادثاتك ؟</string>
27322732
<string name="ChatWallpaperFragment__contact_name">اسم جهة الاتصال</string>
27332733
<string name="ChatWallpaperFragment__reset">إعادة التعيين</string>
27342734
<string name="ChatWallpaperFragment__clear">محو</string>

app/src/main/res/values-cy/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1848,6 +1848,7 @@ Send neges heb ei ddiogelu?</string>
18481848
<string name="EditAboutFragment_about">Ynghylch</string>
18491849
<string name="EditAboutFragment_write_a_few_words_about_yourself">Ysgrifennwch ychydig o eiriau amdanoch…</string>
18501850
<string name="EditAboutFragment_count">%d/%d</string>
1851+
<string name="EditAboutFragment_encrypted">Amgryptiedig</string>
18511852
<string name="EditAboutFragment_be_kind">Byddwch yn garedig</string>
18521853
<string name="EditAboutFragment_coffee_lover">Carwr Coffi</string>
18531854
<string name="EditAboutFragment_free_to_chat">Ar gael i sgwrsio</string>

0 commit comments

Comments
 (0)