diff --git a/app/build.gradle b/app/build.gradle index 2055b4075e..bd077181af 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ android { applicationId 'com.discord' minSdkVersion 21 targetSdkVersion 29 - versionCode 82019 - versionName "82.19 - Stable" + versionCode 82020 + versionName "82.20 - Stable" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 288b691220..acbe222d68 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,5 +1,5 @@ - + diff --git a/app/src/main/java/com/discord/app/App.java b/app/src/main/java/com/discord/app/App.java index a8921c5534..f0322576a7 100644 --- a/app/src/main/java/com/discord/app/App.java +++ b/app/src/main/java/com/discord/app/App.java @@ -172,7 +172,7 @@ public class App extends Application { loggingProvider.init(appLog); c.i.c.c.e(this); String str = null; - if (BuildUtils.INSTANCE.isValidBuildVersionName("82.19 - Stable")) { + if (BuildUtils.INSTANCE.isValidBuildVersionName("82.20 - Stable")) { FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true); } else { FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(false); diff --git a/app/src/main/java/com/discord/stores/StoreClientVersion.java b/app/src/main/java/com/discord/stores/StoreClientVersion.java index e526eb5158..84f0c36e5e 100644 --- a/app/src/main/java/com/discord/stores/StoreClientVersion.java +++ b/app/src/main/java/com/discord/stores/StoreClientVersion.java @@ -15,7 +15,7 @@ public final class StoreClientVersion extends Store { private int clientMinVersion; private final String clientMinVersionKey = "CLIENT_OUTDATED_KEY"; private final SerializedSubject clientOutdatedSubject = new SerializedSubject<>(BehaviorSubject.l0(Boolean.FALSE)); - private final int clientVersion = 82019; + private final int clientVersion = 82020; public static final /* synthetic */ void access$setClientMinVersion(StoreClientVersion storeClientVersion, int i) { storeClientVersion.setClientMinVersion(i); diff --git a/app/src/main/java/com/discord/stores/StoreEmoji$getEmojiSet$4.java b/app/src/main/java/com/discord/stores/StoreEmoji$getEmojiSet$4.java index e3602673a5..72663babbc 100644 --- a/app/src/main/java/com/discord/stores/StoreEmoji$getEmojiSet$4.java +++ b/app/src/main/java/com/discord/stores/StoreEmoji$getEmojiSet$4.java @@ -5,6 +5,7 @@ import com.discord.models.domain.emoji.ModelEmojiCustom; import com.discord.stores.StoreEmoji; import com.discord.stores.StoreMediaFavorites; import com.discord.utilities.Quad; +import com.discord.utilities.rx.ObservableExtensionsKt; import d0.z.d.m; import j0.k.b; import java.util.List; @@ -71,6 +72,6 @@ public final class StoreEmoji$getEmojiSet$4 implements b call(Quad, ? extends Set> quad) { - return StoreEmoji.access$getCustomEmojiStore$p(this.this$0).observeAllowedGuildEmoji().F(new AnonymousClass1(this, (List) quad.component3(), quad.component1(), quad.component2(), (Set) quad.component4())); + return ObservableExtensionsKt.computationLatest(StoreEmoji.access$getCustomEmojiStore$p(this.this$0).observeAllowedGuildEmoji()).F(new AnonymousClass1(this, (List) quad.component3(), quad.component1(), quad.component2(), (Set) quad.component4())); } } diff --git a/app/src/main/java/com/discord/utilities/analytics/AnalyticSuperProperties.java b/app/src/main/java/com/discord/utilities/analytics/AnalyticSuperProperties.java index 5c21af5d23..a3ef2689af 100644 --- a/app/src/main/java/com/discord/utilities/analytics/AnalyticSuperProperties.java +++ b/app/src/main/java/com/discord/utilities/analytics/AnalyticSuperProperties.java @@ -77,7 +77,7 @@ public final class AnalyticSuperProperties { private final void setBaselineProperties() { String locale = Locale.getDefault().toString(); m.checkNotNullExpressionValue(locale, "Locale.getDefault().toString()"); - updateSuperProperties(h0.mapOf(o.to("browser", "Discord Android"), o.to("browser_user_agent", "Discord-Android/82019"), o.to("client_build_number", 82019), o.to("client_version", "82.19 - Stable"), o.to("device", Build.MODEL + ", " + Build.PRODUCT), o.to("os", "Android"), o.to("os_sdk_version", String.valueOf(Build.VERSION.SDK_INT)), o.to("os_version", Build.VERSION.RELEASE), o.to("system_locale", t.replace$default(locale, "_", "-", false, 4, (Object) null)))); + updateSuperProperties(h0.mapOf(o.to("browser", "Discord Android"), o.to("browser_user_agent", "Discord-Android/82020"), o.to("client_build_number", 82020), o.to("client_version", "82.20 - Stable"), o.to("device", Build.MODEL + ", " + Build.PRODUCT), o.to("os", "Android"), o.to("os_sdk_version", String.valueOf(Build.VERSION.SDK_INT)), o.to("os_version", Build.VERSION.RELEASE), o.to("system_locale", t.replace$default(locale, "_", "-", false, 4, (Object) null)))); } private final void setSuperProperties(Map map) { diff --git a/app/src/main/java/com/discord/utilities/rest/RestAPI.java b/app/src/main/java/com/discord/utilities/rest/RestAPI.java index 027ed800ff..691bf1672a 100644 --- a/app/src/main/java/com/discord/utilities/rest/RestAPI.java +++ b/app/src/main/java/com/discord/utilities/rest/RestAPI.java @@ -177,7 +177,7 @@ public final class RestAPI implements RestAPIInterface { @Override // com.discord.restapi.RequiredHeadersInterceptor.HeadersProvider public String getUserAgent() { - return "Discord-Android/82019"; + return "Discord-Android/82020"; } } diff --git a/app/src/main/java/com/discord/widgets/chat/input/autocomplete/ChatInputAutocompletables$observeChannelAutocompletables$1.java b/app/src/main/java/com/discord/widgets/chat/input/autocomplete/ChatInputAutocompletables$observeChannelAutocompletables$1.java index f24780bdff..45e53a8b8c 100644 --- a/app/src/main/java/com/discord/widgets/chat/input/autocomplete/ChatInputAutocompletables$observeChannelAutocompletables$1.java +++ b/app/src/main/java/com/discord/widgets/chat/input/autocomplete/ChatInputAutocompletables$observeChannelAutocompletables$1.java @@ -16,10 +16,10 @@ public final class ChatInputAutocompletables$observeChannelAutocompletables$1 implements Func4>, Map>, Map>, Map>, Map>> { + public static final class AnonymousClass1 implements Func4>, Map>, Map>, Map>, Map>> { public static final AnonymousClass1 INSTANCE = new AnonymousClass1(); - public final Map> call(Map> map, Map> map2, Map> map3, Map> map4) { + public final Map> call(Map> map, Map> map2, Map> map3, Map> map4) { LinkedHashMap linkedHashMap = new LinkedHashMap(); m.checkNotNullExpressionValue(map, "commands"); ChatInputAutocompletablesKt.access$merge(linkedHashMap, map); diff --git a/app/src/main/java/com/discord/widgets/chat/input/autocomplete/ChatInputAutocompletables.java b/app/src/main/java/com/discord/widgets/chat/input/autocomplete/ChatInputAutocompletables.java index f0023b9cf8..bbf5211a46 100644 --- a/app/src/main/java/com/discord/widgets/chat/input/autocomplete/ChatInputAutocompletables.java +++ b/app/src/main/java/com/discord/widgets/chat/input/autocomplete/ChatInputAutocompletables.java @@ -1,6 +1,7 @@ package com.discord.widgets.chat.input.autocomplete; import com.discord.stores.StoreStream; +import com.discord.utilities.rx.ObservableExtensionsKt; import com.discord.utilities.rx.ObservableExtensionsKt$filterNull$1; import com.discord.utilities.rx.ObservableExtensionsKt$filterNull$2; import com.discord.widgets.chat.input.autocomplete.sources.ApplicationCommandsAutocompletableSource; @@ -43,8 +44,8 @@ public final class ChatInputAutocompletables { public final Observable>> observeChannelAutocompletables() { Observable F = StoreStream.Companion.getChannelsSelected().observeSelectedChannel().x(ObservableExtensionsKt$filterNull$1.INSTANCE).F(ObservableExtensionsKt$filterNull$2.INSTANCE); m.checkNotNullExpressionValue(F, "filter { it != null }.map { it!! }"); - Observable>> Y = F.Y(ChatInputAutocompletables$observeChannelAutocompletables$1.INSTANCE); - m.checkNotNullExpressionValue(Y, "StoreStream.getChannelsS…les\n }\n }"); - return Y; + Observable Y = F.Y(ChatInputAutocompletables$observeChannelAutocompletables$1.INSTANCE); + m.checkNotNullExpressionValue(Y, "StoreStream.getChannelsS…e>>\n }\n }"); + return ObservableExtensionsKt.computationLatest(Y); } } diff --git a/app/src/main/java/com/discord/widgets/chat/input/autocomplete/sources/ApplicationCommandsAutocompletableSource.java b/app/src/main/java/com/discord/widgets/chat/input/autocomplete/sources/ApplicationCommandsAutocompletableSource.java index 6b7d58db31..914c905ac3 100644 --- a/app/src/main/java/com/discord/widgets/chat/input/autocomplete/sources/ApplicationCommandsAutocompletableSource.java +++ b/app/src/main/java/com/discord/widgets/chat/input/autocomplete/sources/ApplicationCommandsAutocompletableSource.java @@ -8,6 +8,7 @@ import com.discord.models.commands.ApplicationCommand; import com.discord.models.commands.ApplicationCommandOption; import com.discord.stores.StoreApplicationCommands; import com.discord.stores.StoreStream; +import com.discord.utilities.rx.ObservableExtensionsKt; import com.discord.widgets.chat.input.WidgetChatInputDiscoveryCommandsModel; import com.discord.widgets.chat.input.autocomplete.ApplicationCommandAutocompletable; import com.discord.widgets.chat.input.autocomplete.ApplicationCommandChoiceAutocompletable; @@ -93,8 +94,10 @@ public final class ApplicationCommandsAutocompletableSource { public final Observable>> observeApplicationCommandAutocompletables(Channel channel) { m.checkNotNullParameter(channel, "channel"); - Observable>> r = Observable.j(this.storeApplicationCommands.observeGuildApplications(channel.h()), this.storeApplicationCommands.observeQueryCommands(channel.h()), new ApplicationCommandsAutocompletableSource$observeApplicationCommandAutocompletables$1(this)).r(); - m.checkNotNullExpressionValue(r, "Observable.combineLatest… }.distinctUntilChanged()"); + Observable j = Observable.j(ObservableExtensionsKt.computationLatest(this.storeApplicationCommands.observeGuildApplications(channel.h())), ObservableExtensionsKt.computationLatest(this.storeApplicationCommands.observeQueryCommands(channel.h())), new ApplicationCommandsAutocompletableSource$observeApplicationCommandAutocompletables$1(this)); + m.checkNotNullExpressionValue(j, "Observable.combineLatest… TreeSet())\n }\n }"); + Observable>> r = ObservableExtensionsKt.computationLatest(j).r(); + m.checkNotNullExpressionValue(r, "Observable.combineLatest… .distinctUntilChanged()"); return r; } } diff --git a/app/src/main/java/com/discord/widgets/chat/input/autocomplete/sources/ChannelAutocompletableSource.java b/app/src/main/java/com/discord/widgets/chat/input/autocomplete/sources/ChannelAutocompletableSource.java index 2420e43694..961397eee4 100644 --- a/app/src/main/java/com/discord/widgets/chat/input/autocomplete/sources/ChannelAutocompletableSource.java +++ b/app/src/main/java/com/discord/widgets/chat/input/autocomplete/sources/ChannelAutocompletableSource.java @@ -31,7 +31,9 @@ public final class ChannelAutocompletableSource { } public final Observable>> observeChannelAutocompletables(long j) { - Observable r = Observable.j(StoreChannels.observeChannelsForGuild$default(this.storeChannels, j, null, 2, null), this.storePermissions.observePermissionsForAllChannels(), ChannelAutocompletableSource$observeChannelAutocompletables$1.INSTANCE).r(); + Observable j2 = Observable.j(ObservableExtensionsKt.computationLatest(StoreChannels.observeChannelsForGuild$default(this.storeChannels, j, null, 2, null)), ObservableExtensionsKt.computationLatest(this.storePermissions.observePermissionsForAllChannels()), ChannelAutocompletableSource$observeChannelAutocompletables$1.INSTANCE); + m.checkNotNullExpressionValue(j2, "Observable.combineLatest…ANNELS to channels)\n }"); + Observable r = ObservableExtensionsKt.computationLatest(j2).r(); m.checkNotNullExpressionValue(r, "Observable.combineLatest… .distinctUntilChanged()"); return ObservableExtensionsKt.leadingEdgeThrottle(r, 500, TimeUnit.MILLISECONDS); } diff --git a/app/src/main/java/com/discord/widgets/chat/input/autocomplete/sources/EmojiAutocompletableSource.java b/app/src/main/java/com/discord/widgets/chat/input/autocomplete/sources/EmojiAutocompletableSource.java index fd56038beb..61130f918c 100644 --- a/app/src/main/java/com/discord/widgets/chat/input/autocomplete/sources/EmojiAutocompletableSource.java +++ b/app/src/main/java/com/discord/widgets/chat/input/autocomplete/sources/EmojiAutocompletableSource.java @@ -6,6 +6,7 @@ import com.discord.models.domain.emoji.Emoji; import com.discord.models.domain.emoji.EmojiSet; import com.discord.stores.StoreEmoji; import com.discord.stores.StoreUserSettings; +import com.discord.utilities.rx.ObservableExtensionsKt; import com.discord.widgets.chat.input.autocomplete.Autocompletable; import com.discord.widgets.chat.input.autocomplete.AutocompletableComparator; import com.discord.widgets.chat.input.autocomplete.EmojiAutocompletable; @@ -68,8 +69,10 @@ public final class EmojiAutocompletableSource { public final Observable>> observeEmojiAutocompletables(Channel channel) { m.checkNotNullParameter(channel, "channel"); - Observable>> r = Observable.j(this.emojiStore.getEmojiSet(channel.f(), channel.h(), EmojiAutocompletePremiumUpsellFeatureFlag.Companion.getINSTANCE().isEnabled(), false), this.userSettingsStore.observeIsAnimatedEmojisEnabled(true), new EmojiAutocompletableSource$observeEmojiAutocompletables$1(this)).r(); - m.checkNotNullExpressionValue(r, "Observable.combineLatest… }.distinctUntilChanged()"); + Observable j = Observable.j(ObservableExtensionsKt.computationLatest(this.emojiStore.getEmojiSet(channel.f(), channel.h(), EmojiAutocompletePremiumUpsellFeatureFlag.Companion.getINSTANCE().isEnabled(), false)), ObservableExtensionsKt.computationLatest(this.userSettingsStore.observeIsAnimatedEmojisEnabled(true)), new EmojiAutocompletableSource$observeEmojiAutocompletables$1(this)); + m.checkNotNullExpressionValue(j, "Observable.combineLatest… animationsEnabled)\n }"); + Observable>> r = ObservableExtensionsKt.computationLatest(j).r(); + m.checkNotNullExpressionValue(r, "Observable.combineLatest… .distinctUntilChanged()"); return r; } } diff --git a/app/src/main/java/com/discord/widgets/chat/input/autocomplete/sources/UserAutocompletableSource.java b/app/src/main/java/com/discord/widgets/chat/input/autocomplete/sources/UserAutocompletableSource.java index 944e76a1dc..5655b0ebda 100644 --- a/app/src/main/java/com/discord/widgets/chat/input/autocomplete/sources/UserAutocompletableSource.java +++ b/app/src/main/java/com/discord/widgets/chat/input/autocomplete/sources/UserAutocompletableSource.java @@ -174,19 +174,30 @@ public final class UserAutocompletableSource { m.checkNotNullParameter(channel, "channel"); long f = channel.f(); if (UserMentionableSourceKt.access$isGuildChannelOrThread(channel)) { - Observable observeMeId = this.storeUsers.observeMeId(); + Observable computationLatest = ObservableExtensionsKt.computationLatest(this.storeUsers.observeMeId()); Observable F = this.storeGuilds.observeGuild(f).x(ObservableExtensionsKt$filterNull$1.INSTANCE).F(ObservableExtensionsKt$filterNull$2.INSTANCE); m.checkNotNullExpressionValue(F, "filter { it != null }.map { it!! }"); Observable r = F.F(UserAutocompletableSource$observeUserAutocompletables$1.INSTANCE).r(); - Observable> observeRoles = this.storeGuilds.observeRoles(f); + m.checkNotNullExpressionValue(r, "storeGuilds.observeGuild… }.distinctUntilChanged()"); + Observable computationLatest2 = ObservableExtensionsKt.computationLatest(r); + Observable computationLatest3 = ObservableExtensionsKt.computationLatest(this.storeGuilds.observeRoles(f)); Observable> observeComputed = this.storeGuilds.observeComputed(f); TimeUnit timeUnit = TimeUnit.SECONDS; - observable = Observable.d(observeMeId, r, observeRoles, ObservableExtensionsKt.leadingEdgeThrottle(observeComputed, 5, timeUnit), this.storeUsers.observeAllUsers(), ObservableExtensionsKt.leadingEdgeThrottle(this.storePresences.observeAllPresences(), 10, timeUnit), this.storePermissions.observePermissionsForChannel(channel.h()).r(), this.storeChannels.observeChannel(channel.r()).r(), new UserAutocompletableSource$observeUserAutocompletables$2(this, channel)); + Observable computationLatest4 = ObservableExtensionsKt.computationLatest(ObservableExtensionsKt.leadingEdgeThrottle(observeComputed, 5, timeUnit)); + Observable computationLatest5 = ObservableExtensionsKt.computationLatest(this.storeUsers.observeAllUsers()); + Observable computationLatest6 = ObservableExtensionsKt.computationLatest(ObservableExtensionsKt.leadingEdgeThrottle(this.storePresences.observeAllPresences(), 10, timeUnit)); + Observable r2 = this.storePermissions.observePermissionsForChannel(channel.h()).r(); + m.checkNotNullExpressionValue(r2, "storePermissions.observe…d).distinctUntilChanged()"); + Observable computationLatest7 = ObservableExtensionsKt.computationLatest(r2); + Observable r3 = this.storeChannels.observeChannel(channel.r()).r(); + m.checkNotNullExpressionValue(r3, "storeChannels.observeCha…d).distinctUntilChanged()"); + observable = Observable.d(computationLatest, computationLatest2, computationLatest3, computationLatest4, computationLatest5, computationLatest6, computationLatest7, ObservableExtensionsKt.computationLatest(r3), new UserAutocompletableSource$observeUserAutocompletables$2(this, channel)); } else { observable = UserMentionableSourceKt.access$isDmOrGroupDm(channel) ? Observable.A(AnimatableValueParser.G0(channel)).F(UserAutocompletableSource$observeUserAutocompletables$3.INSTANCE).f0().Y(new UserAutocompletableSource$observeUserAutocompletables$4(this, channel)) : new j(h0.emptyMap()); } - Observable>> r2 = observable.r(); - m.checkNotNullExpressionValue(r2, "when {\n // Guild Ch… .distinctUntilChanged()"); - return r2; + m.checkNotNullExpressionValue(observable, "when {\n // Guild Ch…vable.just(mapOf())\n }"); + Observable>> r4 = ObservableExtensionsKt.computationLatest(observable).r(); + m.checkNotNullExpressionValue(r4, "when {\n // Guild Ch… .distinctUntilChanged()"); + return r4; } } diff --git a/app/src/main/java/com/discord/widgets/debugging/WidgetFatalCrash.java b/app/src/main/java/com/discord/widgets/debugging/WidgetFatalCrash.java index bf88d764b1..b8ad18d1d6 100644 --- a/app/src/main/java/com/discord/widgets/debugging/WidgetFatalCrash.java +++ b/app/src/main/java/com/discord/widgets/debugging/WidgetFatalCrash.java @@ -100,7 +100,7 @@ public final class WidgetFatalCrash extends AppFragment { textView2.setText(b.j(this, 2131887892, objArr2, null, 4)); TextView textView3 = getBinding().b; m.checkNotNullExpressionValue(textView3, "binding.fatalCrashAppVersion"); - textView3.setText(b.j(this, 2131887885, new Object[]{"82.19 - Stable"}, null, 4)); + textView3.setText(b.j(this, 2131887885, new Object[]{"82.20 - Stable"}, null, 4)); TextView textView4 = getBinding().d; m.checkNotNullExpressionValue(textView4, "binding.fatalCrashOsVersion"); textView4.setText(b.j(this, 2131887888, new Object[]{String.valueOf(Build.VERSION.SDK_INT)}, null, 4)); diff --git a/app/src/main/java/com/discord/widgets/settings/WidgetSettings.java b/app/src/main/java/com/discord/widgets/settings/WidgetSettings.java index 01564868e4..84543b8514 100644 --- a/app/src/main/java/com/discord/widgets/settings/WidgetSettings.java +++ b/app/src/main/java/com/discord/widgets/settings/WidgetSettings.java @@ -332,7 +332,7 @@ public final class WidgetSettings extends AppFragment implements OnTabSelectedLi TextView textView = binding.f; m.checkNotNullExpressionValue(textView, "appInfoHeader"); String string = getString(2131886360); - textView.setText(string + " - 82.19 - Stable (82019)"); + textView.setText(string + " - 82.20 - Stable (82020)"); binding.f1921y.setOnClickListener(new WidgetSettings$onViewBound$$inlined$with$lambda$2(this)); binding.u.setOnClickListener(WidgetSettings$onViewBound$1$4.INSTANCE); binding.q.setOnClickListener(WidgetSettings$onViewBound$1$5.INSTANCE); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3b2c388455..2455bd9555 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1341,7 +1341,7 @@ Presets Select a color Transparency - df62e7a584c54bbbb7d0e1b9e39006d6 + 0a94dcbb480e438e83ac178feccc81ce Coming Soon Slash command application {applicationName} {applicationName} application