From 149bb0ac2441902ebd0dc793358942f5b9204f8f Mon Sep 17 00:00:00 2001 From: Juby210 Date: Sat, 14 Aug 2021 08:40:53 +0200 Subject: [PATCH] 88.5 - Alpha (88205) --- app/build.gradle | 4 +- app/src/main/AndroidManifest.xml | 4 +- app/src/main/java/c/a/q/k0/a.java | 20 +- app/src/main/java/c/a/q/k0/c.java | 16 +- app/src/main/java/c/a/q/k0/f.java | 35 +- app/src/main/java/c/a/q/k0/g.java | 18 +- app/src/main/java/c/a/q/k0/h.java | 19 + app/src/main/java/c/a/q/m0/c/e.java | 3 +- .../TrackImpressionGuildInvite.java | 72 + .../TrackImpressionGuildInviteReceiver.java | 4 + ...rackImpressionHubCreateGuildCustomize.java | 27 + ...essionHubCreateGuildCustomizeReceiver.java | 4 + ...TrackImpressionHubCreateGuildTemplate.java | 27 + ...ressionHubCreateGuildTemplateReceiver.java | 4 + .../TrackImpressionHubEmailSignup.java | 27 + ...TrackImpressionHubEmailSignupReceiver.java | 4 + ...ackImpressionHubEmailVerificationPage.java | 27 + ...ssionHubEmailVerificationPageReceiver.java | 4 + ...TrackImpressionHubExistingGuildChoose.java | 27 + ...ressionHubExistingGuildChooseReceiver.java | 4 + ...ckImpressionHubExistingGuildCustomize.java | 27 + ...sionHubExistingGuildCustomizeReceiver.java | 4 + ...etworkActionDirectoryGuildEntryCreate.java | 78 + ...tionDirectoryGuildEntryCreateReceiver.java | 6 + ...etworkActionDirectoryGuildEntryDelete.java | 71 + ...tionDirectoryGuildEntryDeleteReceiver.java | 6 + .../TrackNetworkActionHubEmailVerifySend.java | 61 + ...tworkActionHubEmailVerifySendReceiver.java | 6 + .../TrackNetworkActionHubWaitlistSignup.java | 3 +- .../GuildScheduledEventItemViewBinding.java | 15 +- .../com/discord/restapi/RestAPIInterface.java | 4 +- .../audio/DiscordAudioManager.java | 250 +- .../stores/StoreAudioManagerV2$init$1.java | 51 +- ...reAudioManagerV2$selectOutputDevice$1.java | 8 +- ...oreAudioManagerV2$updateMediaVolume$1.java | 30 + .../discord/stores/StoreAudioManagerV2.java | 48 +- ...rectories$removeServerFromDirectory$1.java | 64 +- ...rectories$removeServerFromDirectory$2.java | 75 + .../com/discord/stores/StoreDirectories.java | 2 +- ...fetchGuildScheduledEventUserCounts$1.java} | 12 +- ...vents$fetchUserGuildScheduledEvents$1.java | 63 + ...dEvents$observeGuildScheduledEvents$1.java | 51 +- ...nts$observeUserGuildScheduledEvents$1.java | 105 - .../stores/StoreGuildScheduledEvents.java | 105 +- .../java/com/discord/stores/StoreStream.java | 2 +- .../RestCallStateKt$logNetworkAction$1.java | 18 +- .../RestCallStateKt$logNetworkAction$2.java | 19 +- .../stores/utilities/RestCallStateKt.java | 6 +- .../DirectoryUtilsKt$showServerOptions$1.java | 2 +- .../experiments/ExperimentRegistry.java | 2 +- .../utilities/fcm/NotificationData.java | 69 +- .../utilities/fcm/NotificationRenderer.java | 8 +- .../com/discord/utilities/icon/IconUtils.java | 34 +- ...atarsFeatureFlag$Companion$INSTANCE$2.java | 18 - .../GuildMemberAvatarsFeatureFlag.java | 54 - .../com/discord/utilities/rest/RestAPI.java | 4 +- .../WidgetChatListAdapterItemInvite.java | 53 +- .../chat/list/entries/ChatListEntry.java | 3 +- ...idgetGuildInviteShare$loggingConfig$1.java | 20 + .../guilds/invite/WidgetGuildInviteShare.java | 8 + .../guildscheduledevent/DescriptionCache.java | 140 + ...escriptionParser$Companion$INSTANCE$2.java | 18 + ...DescriptionParser$descriptionParser$2.java | 23 + .../GuildScheduledEventDescriptionParser.java | 55 + ...uildScheduledEventDescriptionParserKt.java | 4 + ...onfigureDescription$1$renderContext$1.java | 26 + .../GuildScheduledEventItemView.java | 121 +- ...stViewModel$Companion$observeStores$1.java | 4 +- .../GuildScheduledEventListViewModel.java | 3 +- ...ordHubEmailViewModel$onGuildClicked$1.java | 23 - .../widgets/hubs/HubDescriptionArgs.java | 55 +- .../discord/widgets/hubs/HubEmailArgs.java | 2 +- ...> HubEmailState$hasMultipleDomains$2.java} | 10 +- ...dHubEmailState.java => HubEmailState.java} | 36 +- .../hubs/WidgetHubAddServer$adapter$1.java | 8 +- .../WidgetHubAddServer$configureUI$1.java | 4 +- .../hubs/WidgetHubAddServer$launcher$1.java | 2 +- .../WidgetHubAddServer$loggingConfig$1.java | 20 + .../widgets/hubs/WidgetHubAddServer.java | 25 +- .../WidgetHubDescription$loggingConfig$1.java | 23 + .../WidgetHubDescription$viewModel$2.java | 2 +- .../widgets/hubs/WidgetHubDescription.java | 16 +- ...nViewModel$Companion$observeStores$1.java} | 4 +- ...etHubDescriptionViewModel$addServer$1.java | 26 + ...tHubDescriptionViewModel$addServer$2.java} | 10 +- ...ava => WidgetHubDescriptionViewModel.java} | 24 +- .../WidgetHubEmailFlow$loggingConfig$1.java | 4 +- ...tHubEmailFlow$onViewBoundOrOnResume$1.java | 12 +- .../hubs/WidgetHubEmailFlow$updateView$4.java | 6 +- .../hubs/WidgetHubEmailFlow$viewModel$2.java | 6 +- .../widgets/hubs/WidgetHubEmailFlow.java | 30 +- ...getHubEmailViewModel$onGuildClicked$1.java | 22 + ...etHubEmailViewModel$onGuildClicked$2.java} | 14 +- ...idgetHubEmailViewModel$submitEmail$1.java} | 8 +- ...idgetHubEmailViewModel$submitEmail$2.java} | 14 +- ...odel.java => WidgetHubEmailViewModel.java} | 32 +- .../widgets/nux/WidgetGuildTemplates.java | 2 +- ...dgetHubGuildTemplates$loggingConfig$1.java | 20 + .../widgets/nux/WidgetHubGuildTemplates.java | 12 + .../widgets/settings/WidgetSettings.java | 2 +- .../user/profile/UserProfileHeaderView.java | 15 +- .../profile/UserProfileHeaderViewModel.java | 5 +- .../WidgetCallFullscreen$viewModel$2.java | 2 +- .../WidgetCallFullscreenViewModel.java | 10 +- .../hammerandchisel/libdiscord/Discord.java | 2 +- .../guild_scheduled_event_item_view.xml | 2 +- .../guild_scheduled_event_item_view.xml | 2 +- app/src/main/res/values-ar-rXB/plurals.xml | 8 + app/src/main/res/values-ar-rXB/strings.xml | 34 +- app/src/main/res/values-bg/strings.xml | 1 - app/src/main/res/values-cs/strings.xml | 3 +- app/src/main/res/values-da/strings.xml | 1 - app/src/main/res/values-de/strings.xml | 1 - app/src/main/res/values-el/strings.xml | 1 - app/src/main/res/values-en-rXA/plurals.xml | 8 + app/src/main/res/values-en-rXA/strings.xml | 34 +- app/src/main/res/values-es-rES/strings.xml | 1 - app/src/main/res/values-fi/strings.xml | 1 - app/src/main/res/values-fr/strings.xml | 1 - app/src/main/res/values-hi/strings.xml | 1 - app/src/main/res/values-hr/strings.xml | 3 +- app/src/main/res/values-hu/strings.xml | 1 - app/src/main/res/values-it/strings.xml | 1 - app/src/main/res/values-ja/strings.xml | 1 - app/src/main/res/values-ko/strings.xml | 5 +- app/src/main/res/values-lt/strings.xml | 7 +- app/src/main/res/values-nl/strings.xml | 1 - app/src/main/res/values-no/strings.xml | 1 - app/src/main/res/values-pl/strings.xml | 5 +- app/src/main/res/values-pt-rBR/strings.xml | 1 - app/src/main/res/values-ro/strings.xml | 1 - app/src/main/res/values-ru/strings.xml | 1 - app/src/main/res/values-sv-rSE/strings.xml | 1 - app/src/main/res/values-th/strings.xml | 1 - app/src/main/res/values-tr/strings.xml | 1 - app/src/main/res/values-uk/strings.xml | 1 - app/src/main/res/values-vi/strings.xml | 1 - app/src/main/res/values-zh-rCN/strings.xml | 1 - app/src/main/res/values-zh-rTW/strings.xml | 23 +- app/src/main/res/values/plurals.xml | 8 + app/src/main/res/values/public.xml | 12428 ++++++++-------- app/src/main/res/values/strings.xml | 36 +- 142 files changed, 8249 insertions(+), 7096 deletions(-) create mode 100644 app/src/main/java/c/a/q/k0/h.java create mode 100644 app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionGuildInvite.java create mode 100644 app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionGuildInviteReceiver.java create mode 100644 app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubCreateGuildCustomize.java create mode 100644 app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubCreateGuildCustomizeReceiver.java create mode 100644 app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubCreateGuildTemplate.java create mode 100644 app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubCreateGuildTemplateReceiver.java create mode 100644 app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubEmailSignup.java create mode 100644 app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubEmailSignupReceiver.java create mode 100644 app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubEmailVerificationPage.java create mode 100644 app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubEmailVerificationPageReceiver.java create mode 100644 app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubExistingGuildChoose.java create mode 100644 app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubExistingGuildChooseReceiver.java create mode 100644 app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubExistingGuildCustomize.java create mode 100644 app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubExistingGuildCustomizeReceiver.java create mode 100644 app/src/main/java/com/discord/analytics/generated/events/network_action/TrackNetworkActionDirectoryGuildEntryCreate.java create mode 100644 app/src/main/java/com/discord/analytics/generated/events/network_action/TrackNetworkActionDirectoryGuildEntryCreateReceiver.java create mode 100644 app/src/main/java/com/discord/analytics/generated/events/network_action/TrackNetworkActionDirectoryGuildEntryDelete.java create mode 100644 app/src/main/java/com/discord/analytics/generated/events/network_action/TrackNetworkActionDirectoryGuildEntryDeleteReceiver.java create mode 100644 app/src/main/java/com/discord/analytics/generated/events/network_action/TrackNetworkActionHubEmailVerifySend.java create mode 100644 app/src/main/java/com/discord/analytics/generated/events/network_action/TrackNetworkActionHubEmailVerifySendReceiver.java create mode 100644 app/src/main/java/com/discord/stores/StoreAudioManagerV2$updateMediaVolume$1.java create mode 100644 app/src/main/java/com/discord/stores/StoreDirectories$removeServerFromDirectory$2.java rename app/src/main/java/com/discord/stores/{StoreGuildScheduledEvents$getGuildScheduledEventUserCounts$1.java => StoreGuildScheduledEvents$fetchGuildScheduledEventUserCounts$1.java} (73%) create mode 100644 app/src/main/java/com/discord/stores/StoreGuildScheduledEvents$fetchUserGuildScheduledEvents$1.java delete mode 100644 app/src/main/java/com/discord/stores/StoreGuildScheduledEvents$observeUserGuildScheduledEvents$1.java delete mode 100644 app/src/main/java/com/discord/utilities/premium/GuildMemberAvatarsFeatureFlag$Companion$INSTANCE$2.java delete mode 100644 app/src/main/java/com/discord/utilities/premium/GuildMemberAvatarsFeatureFlag.java create mode 100644 app/src/main/java/com/discord/widgets/guilds/invite/WidgetGuildInviteShare$loggingConfig$1.java create mode 100644 app/src/main/java/com/discord/widgets/guildscheduledevent/DescriptionCache.java create mode 100644 app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventDescriptionParser$Companion$INSTANCE$2.java create mode 100644 app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventDescriptionParser$descriptionParser$2.java create mode 100644 app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventDescriptionParser.java create mode 100644 app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventDescriptionParserKt.java create mode 100644 app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventItemView$configureDescription$1$renderContext$1.java delete mode 100644 app/src/main/java/com/discord/widgets/hubs/DiscordHubEmailViewModel$onGuildClicked$1.java rename app/src/main/java/com/discord/widgets/hubs/{DiscordHubEmailState$hasMultipleDomains$2.java => HubEmailState$hasMultipleDomains$2.java} (66%) rename app/src/main/java/com/discord/widgets/hubs/{DiscordHubEmailState.java => HubEmailState.java} (63%) create mode 100644 app/src/main/java/com/discord/widgets/hubs/WidgetHubAddServer$loggingConfig$1.java create mode 100644 app/src/main/java/com/discord/widgets/hubs/WidgetHubDescription$loggingConfig$1.java rename app/src/main/java/com/discord/widgets/hubs/{WidgetDiscordHubsDescriptionViewModel$Companion$observeStores$1.java => WidgetHubDescriptionViewModel$Companion$observeStores$1.java} (78%) create mode 100644 app/src/main/java/com/discord/widgets/hubs/WidgetHubDescriptionViewModel$addServer$1.java rename app/src/main/java/com/discord/widgets/hubs/{WidgetDiscordHubsDescriptionViewModel$addServer$1.java => WidgetHubDescriptionViewModel$addServer$2.java} (62%) rename app/src/main/java/com/discord/widgets/hubs/{WidgetDiscordHubsDescriptionViewModel.java => WidgetHubDescriptionViewModel.java} (74%) create mode 100644 app/src/main/java/com/discord/widgets/hubs/WidgetHubEmailViewModel$onGuildClicked$1.java rename app/src/main/java/com/discord/widgets/hubs/{DiscordHubEmailViewModel$submitEmail$2.java => WidgetHubEmailViewModel$onGuildClicked$2.java} (56%) rename app/src/main/java/com/discord/widgets/hubs/{DiscordHubEmailViewModel$submitEmail$1.java => WidgetHubEmailViewModel$submitEmail$1.java} (63%) rename app/src/main/java/com/discord/widgets/hubs/{DiscordHubEmailViewModel$onGuildClicked$2.java => WidgetHubEmailViewModel$submitEmail$2.java} (56%) rename app/src/main/java/com/discord/widgets/hubs/{DiscordHubEmailViewModel.java => WidgetHubEmailViewModel.java} (59%) create mode 100644 app/src/main/java/com/discord/widgets/nux/WidgetHubGuildTemplates$loggingConfig$1.java create mode 100644 app/src/main/java/com/discord/widgets/nux/WidgetHubGuildTemplates.java diff --git a/app/build.gradle b/app/build.gradle index f96117f6a9..0b026f2891 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ android { applicationId 'com.discord' minSdkVersion 21 targetSdkVersion 29 - versionCode 88204 - versionName "88.4 - Alpha" + versionCode 88205 + versionName "88.5 - Alpha" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index cfd1def56f..7499ab5d00 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,5 +1,5 @@ - + @@ -174,7 +174,7 @@ - + diff --git a/app/src/main/java/c/a/q/k0/a.java b/app/src/main/java/c/a/q/k0/a.java index b6a0969802..1c312549cd 100644 --- a/app/src/main/java/c/a/q/k0/a.java +++ b/app/src/main/java/c/a/q/k0/a.java @@ -22,7 +22,7 @@ public final class a extends BroadcastReceiver { public final Context b; /* renamed from: c reason: collision with root package name */ - public final f f210c; + public final g f210c; /* compiled from: AudioManagerBroadcastReceiver.kt */ /* renamed from: c.a.q.k0.a$a reason: collision with other inner class name */ @@ -31,11 +31,11 @@ public final class a extends BroadcastReceiver { } } - public a(Context context, f fVar) { + public a(Context context, g gVar) { m.checkNotNullParameter(context, "context"); - m.checkNotNullParameter(fVar, "listener"); + m.checkNotNullParameter(gVar, "listener"); this.b = context; - this.f210c = fVar; + this.f210c = gVar; } @Override // android.content.BroadcastReceiver @@ -74,10 +74,10 @@ public final class a extends BroadcastReceiver { } AnimatableValueParser.G1("AudioManagerBroadcastReceiver", "onReceive: action = " + audioManagerBroadcastAction); try { - f fVar = this.f210c; + g gVar = this.f210c; int ordinal = audioManagerBroadcastAction.ordinal(); if (ordinal == 0) { - fVar.c(context); + gVar.c(context); } else if (ordinal == 1) { m.checkNotNullParameter(intent, "intent"); if (m.areEqual(intent.getAction(), "android.intent.action.HEADSET_PLUG")) { @@ -94,24 +94,24 @@ public final class a extends BroadcastReceiver { } aVar = new a.C0036a(stringExtra, z2); } - fVar.e(context, aVar); + gVar.e(context, aVar); return; } throw new IllegalArgumentException("Failed requirement.".toString()); } else if (ordinal == 2) { - fVar.b(context, ScoAudioState.Companion.b(intent)); + gVar.b(context, ScoAudioState.Companion.b(intent)); } else if (ordinal == 3) { m.checkNotNullParameter(context, "$this$isMicrophoneMute"); m.checkNotNullParameter(context, "$this$getAudioManager"); Object systemService = context.getSystemService(MediaStreamTrack.AUDIO_TRACK_KIND); Objects.requireNonNull(systemService, "null cannot be cast to non-null type android.media.AudioManager"); - fVar.a(context, ((AudioManager) systemService).isMicrophoneMute()); + gVar.a(context, ((AudioManager) systemService).isMicrophoneMute()); } else if (ordinal == 4) { m.checkNotNullParameter(context, "$this$isSpeakerphoneOn"); m.checkNotNullParameter(context, "$this$getAudioManager"); Object systemService2 = context.getSystemService(MediaStreamTrack.AUDIO_TRACK_KIND); Objects.requireNonNull(systemService2, "null cannot be cast to non-null type android.media.AudioManager"); - fVar.d(context, ((AudioManager) systemService2).isSpeakerphoneOn()); + gVar.d(context, ((AudioManager) systemService2).isSpeakerphoneOn()); } } catch (Throwable th) { AnimatableValueParser.E1("AudioManagerBroadcastReceiver", "error handling " + audioManagerBroadcastAction, th); diff --git a/app/src/main/java/c/a/q/k0/c.java b/app/src/main/java/c/a/q/k0/c.java index f97340a845..35efa28f27 100644 --- a/app/src/main/java/c/a/q/k0/c.java +++ b/app/src/main/java/c/a/q/k0/c.java @@ -24,7 +24,7 @@ public final class c extends BroadcastReceiver implements BluetoothProfile.Servi public boolean k; public BluetoothHeadset l; public final Context m; - public final g n; + public final h n; /* compiled from: BluetoothBroadcastReceiver.kt */ public static final class a { @@ -32,11 +32,11 @@ public final class c extends BroadcastReceiver implements BluetoothProfile.Servi } } - public c(Context context, g gVar) { + public c(Context context, h hVar) { m.checkNotNullParameter(context, "context"); - m.checkNotNullParameter(gVar, "listener"); + m.checkNotNullParameter(hVar, "listener"); this.m = context; - this.n = gVar; + this.n = hVar; } @Override // android.content.BroadcastReceiver @@ -73,17 +73,17 @@ public final class c extends BroadcastReceiver implements BluetoothProfile.Servi } AnimatableValueParser.G1("BluetoothBroadcastReceiver", "onReceive: action = " + bluetoothBroadcastAction); try { - g gVar = this.n; + h hVar = this.n; int ordinal = bluetoothBroadcastAction.ordinal(); if (ordinal == 0) { - gVar.d(context, BluetoothProfileConnectionState.Companion.b(intent)); + hVar.d(context, BluetoothProfileConnectionState.Companion.b(intent)); } else if (ordinal == 1) { - gVar.a(context, BluetoothHeadsetAudioState.Companion.b(intent)); + hVar.a(context, BluetoothHeadsetAudioState.Companion.b(intent)); } else if (ordinal != 4) { AnimatableValueParser.H1("BluetoothBroadcastReceiver", "unexpected " + bluetoothBroadcastAction); } else { m.checkNotNullParameter(intent, "$this$getBluetoothDeviceExtra"); - gVar.b((BluetoothDevice) intent.getParcelableExtra("android.bluetooth.device.extra.DEVICE")); + hVar.b((BluetoothDevice) intent.getParcelableExtra("android.bluetooth.device.extra.DEVICE")); } } catch (Throwable th) { AnimatableValueParser.E1("BluetoothBroadcastReceiver", "error handling " + bluetoothBroadcastAction, th); diff --git a/app/src/main/java/c/a/q/k0/f.java b/app/src/main/java/c/a/q/k0/f.java index d4ad574844..eafabe0d6c 100644 --- a/app/src/main/java/c/a/q/k0/f.java +++ b/app/src/main/java/c/a/q/k0/f.java @@ -1,19 +1,26 @@ package c.a.q.k0; -import android.content.Context; -import androidx.annotation.MainThread; -import c.a.q.l0.a; -import com.discord.rtcconnection.enums.ScoAudioState; -/* compiled from: OnAudioManagerBroadcastListener.kt */ -@MainThread -public interface f { - void a(Context context, boolean z2); +import android.database.ContentObserver; +import android.os.Handler; +import com.discord.rtcconnection.audio.DiscordAudioManager; +import rx.subjects.SerializedSubject; +/* compiled from: DiscordAudioManager.kt */ +public final class f extends ContentObserver { + public final /* synthetic */ DiscordAudioManager a; - void b(Context context, ScoAudioState.b bVar); + /* JADX INFO: super call moved to the top of the method (can break code semantics) */ + public f(DiscordAudioManager discordAudioManager, Handler handler) { + super(handler); + this.a = discordAudioManager; + } - void c(Context context); - - void d(Context context, boolean z2); - - void e(Context context, a aVar); + @Override // android.database.ContentObserver + public void onChange(boolean z2) { + super.onChange(z2); + DiscordAudioManager discordAudioManager = this.a; + int streamVolume = discordAudioManager.e.getStreamVolume(3); + discordAudioManager.w = streamVolume; + SerializedSubject serializedSubject = discordAudioManager.f2130y; + serializedSubject.j.onNext(Integer.valueOf(streamVolume)); + } } diff --git a/app/src/main/java/c/a/q/k0/g.java b/app/src/main/java/c/a/q/k0/g.java index 7506f21066..da793b1e90 100644 --- a/app/src/main/java/c/a/q/k0/g.java +++ b/app/src/main/java/c/a/q/k0/g.java @@ -1,19 +1,19 @@ package c.a.q.k0; -import android.bluetooth.BluetoothDevice; -import android.bluetooth.BluetoothHeadset; import android.content.Context; import androidx.annotation.MainThread; -import com.discord.rtcconnection.enums.BluetoothHeadsetAudioState; -import com.discord.rtcconnection.enums.BluetoothProfileConnectionState; -/* compiled from: OnBluetoothBroadcastListener.kt */ +import c.a.q.l0.a; +import com.discord.rtcconnection.enums.ScoAudioState; +/* compiled from: OnAudioManagerBroadcastListener.kt */ @MainThread public interface g { - void a(Context context, BluetoothHeadsetAudioState.b bVar); + void a(Context context, boolean z2); - void b(BluetoothDevice bluetoothDevice); + void b(Context context, ScoAudioState.b bVar); - void c(BluetoothHeadset bluetoothHeadset); + void c(Context context); - void d(Context context, BluetoothProfileConnectionState.b bVar); + void d(Context context, boolean z2); + + void e(Context context, a aVar); } diff --git a/app/src/main/java/c/a/q/k0/h.java b/app/src/main/java/c/a/q/k0/h.java new file mode 100644 index 0000000000..0ef14298cd --- /dev/null +++ b/app/src/main/java/c/a/q/k0/h.java @@ -0,0 +1,19 @@ +package c.a.q.k0; + +import android.bluetooth.BluetoothDevice; +import android.bluetooth.BluetoothHeadset; +import android.content.Context; +import androidx.annotation.MainThread; +import com.discord.rtcconnection.enums.BluetoothHeadsetAudioState; +import com.discord.rtcconnection.enums.BluetoothProfileConnectionState; +/* compiled from: OnBluetoothBroadcastListener.kt */ +@MainThread +public interface h { + void a(Context context, BluetoothHeadsetAudioState.b bVar); + + void b(BluetoothDevice bluetoothDevice); + + void c(BluetoothHeadset bluetoothHeadset); + + void d(Context context, BluetoothProfileConnectionState.b bVar); +} diff --git a/app/src/main/java/c/a/q/m0/c/e.java b/app/src/main/java/c/a/q/m0/c/e.java index a1356acd22..f9391663a9 100644 --- a/app/src/main/java/c/a/q/m0/c/e.java +++ b/app/src/main/java/c/a/q/m0/c/e.java @@ -569,13 +569,12 @@ public final class e implements MediaEngineConnection { MediaEngineConnection.ConnectionState connectionState = MediaEngineConnection.ConnectionState.CONNECTING; this.f216c = connectionState; this.e = h0.mutableMapOf(d0.o.to(Long.valueOf(j2), Integer.valueOf(aVar.a))); - boolean z2 = type == MediaEngineConnection.Type.STREAM; int i2 = aVar.a; String str = aVar.b; int i3 = aVar.f2136c; Object[] array = aVar.d.toArray(new StreamParameters[0]); Objects.requireNonNull(array, "null cannot be cast to non-null type kotlin.Array"); - Connection connectToServer = discord.connectToServer(i2, j2, str, i3, (StreamParameters[]) array, z2, new d(this)); + Connection connectToServer = discord.connectToServer(i2, j2, str, i3, (StreamParameters[]) array, new d(this)); d0.z.d.m.checkNotNullExpressionValue(connectToServer, "voiceEngineLegacy.connec…fo, errorMessage) }\n }"); connectToServer.setOnVideoCallback(new b(this)); connectToServer.setUserSpeakingStatusChangedCallback(new c(this)); diff --git a/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionGuildInvite.java b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionGuildInvite.java new file mode 100644 index 0000000000..4babe352f3 --- /dev/null +++ b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionGuildInvite.java @@ -0,0 +1,72 @@ +package com.discord.analytics.generated.events.impression; + +import c.d.b.a.a; +import com.discord.analytics.generated.traits.TrackBase; +import com.discord.analytics.generated.traits.TrackBaseReceiver; +import com.discord.analytics.generated.traits.TrackChannel; +import com.discord.analytics.generated.traits.TrackChannelReceiver; +import com.discord.analytics.generated.traits.TrackGuild; +import com.discord.analytics.generated.traits.TrackGuildReceiver; +import com.discord.analytics.generated.traits.TrackImpressionMetadata; +import com.discord.analytics.generated.traits.TrackImpressionMetadataReceiver; +import com.discord.analytics.generated.traits.TrackLocationMetadata; +import com.discord.analytics.generated.traits.TrackLocationMetadataReceiver; +import com.discord.api.science.AnalyticsSchema; +import d0.z.d.m; +/* compiled from: TrackImpressionGuildInvite.kt */ +public final class TrackImpressionGuildInvite implements AnalyticsSchema, TrackBaseReceiver, TrackGuildReceiver, TrackChannelReceiver, TrackLocationMetadataReceiver, TrackImpressionMetadataReceiver { + private final Long inviteChannelId; + private final Long inviteGuildId; + private TrackBase trackBase; + private TrackChannel trackChannel; + private TrackGuild trackGuild; + private TrackImpressionMetadata trackImpressionMetadata; + private TrackLocationMetadata trackLocationMetadata; + private final transient String type; + + public TrackImpressionGuildInvite() { + this(null, null, 3); + } + + public TrackImpressionGuildInvite(Long l, Long l2, int i) { + int i2 = i & 1; + int i3 = i & 2; + this.inviteGuildId = null; + this.inviteChannelId = null; + this.type = "impression_guild_invite"; + } + + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof TrackImpressionGuildInvite)) { + return false; + } + TrackImpressionGuildInvite trackImpressionGuildInvite = (TrackImpressionGuildInvite) obj; + return m.areEqual(this.inviteGuildId, trackImpressionGuildInvite.inviteGuildId) && m.areEqual(this.inviteChannelId, trackImpressionGuildInvite.inviteChannelId); + } + + @Override // com.discord.api.science.AnalyticsSchema + public String getType() { + return this.type; + } + + public int hashCode() { + Long l = this.inviteGuildId; + int i = 0; + int hashCode = (l != null ? l.hashCode() : 0) * 31; + Long l2 = this.inviteChannelId; + if (l2 != null) { + i = l2.hashCode(); + } + return hashCode + i; + } + + public String toString() { + StringBuilder L = a.L("TrackImpressionGuildInvite(inviteGuildId="); + L.append(this.inviteGuildId); + L.append(", inviteChannelId="); + return a.B(L, this.inviteChannelId, ")"); + } +} diff --git a/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionGuildInviteReceiver.java b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionGuildInviteReceiver.java new file mode 100644 index 0000000000..0c17ce6201 --- /dev/null +++ b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionGuildInviteReceiver.java @@ -0,0 +1,4 @@ +package com.discord.analytics.generated.events.impression; +/* compiled from: TrackImpressionGuildInvite.kt */ +public interface TrackImpressionGuildInviteReceiver { +} diff --git a/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubCreateGuildCustomize.java b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubCreateGuildCustomize.java new file mode 100644 index 0000000000..6449a445c6 --- /dev/null +++ b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubCreateGuildCustomize.java @@ -0,0 +1,27 @@ +package com.discord.analytics.generated.events.impression; + +import com.discord.analytics.generated.traits.TrackBase; +import com.discord.analytics.generated.traits.TrackBaseReceiver; +import com.discord.analytics.generated.traits.TrackChannel; +import com.discord.analytics.generated.traits.TrackChannelReceiver; +import com.discord.analytics.generated.traits.TrackGuild; +import com.discord.analytics.generated.traits.TrackGuildReceiver; +import com.discord.analytics.generated.traits.TrackImpressionMetadata; +import com.discord.analytics.generated.traits.TrackImpressionMetadataReceiver; +import com.discord.analytics.generated.traits.TrackLocationMetadata; +import com.discord.analytics.generated.traits.TrackLocationMetadataReceiver; +import com.discord.api.science.AnalyticsSchema; +/* compiled from: TrackImpressionHubCreateGuildCustomize.kt */ +public final class TrackImpressionHubCreateGuildCustomize implements AnalyticsSchema, TrackBaseReceiver, TrackGuildReceiver, TrackChannelReceiver, TrackLocationMetadataReceiver, TrackImpressionMetadataReceiver { + private TrackBase trackBase; + private TrackChannel trackChannel; + private TrackGuild trackGuild; + private TrackImpressionMetadata trackImpressionMetadata; + private TrackLocationMetadata trackLocationMetadata; + private final transient String type = "impression_hub_create_guild_customize"; + + @Override // com.discord.api.science.AnalyticsSchema + public String getType() { + return this.type; + } +} diff --git a/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubCreateGuildCustomizeReceiver.java b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubCreateGuildCustomizeReceiver.java new file mode 100644 index 0000000000..591e1d974e --- /dev/null +++ b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubCreateGuildCustomizeReceiver.java @@ -0,0 +1,4 @@ +package com.discord.analytics.generated.events.impression; +/* compiled from: TrackImpressionHubCreateGuildCustomize.kt */ +public interface TrackImpressionHubCreateGuildCustomizeReceiver { +} diff --git a/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubCreateGuildTemplate.java b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubCreateGuildTemplate.java new file mode 100644 index 0000000000..e7b41279e2 --- /dev/null +++ b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubCreateGuildTemplate.java @@ -0,0 +1,27 @@ +package com.discord.analytics.generated.events.impression; + +import com.discord.analytics.generated.traits.TrackBase; +import com.discord.analytics.generated.traits.TrackBaseReceiver; +import com.discord.analytics.generated.traits.TrackChannel; +import com.discord.analytics.generated.traits.TrackChannelReceiver; +import com.discord.analytics.generated.traits.TrackGuild; +import com.discord.analytics.generated.traits.TrackGuildReceiver; +import com.discord.analytics.generated.traits.TrackImpressionMetadata; +import com.discord.analytics.generated.traits.TrackImpressionMetadataReceiver; +import com.discord.analytics.generated.traits.TrackLocationMetadata; +import com.discord.analytics.generated.traits.TrackLocationMetadataReceiver; +import com.discord.api.science.AnalyticsSchema; +/* compiled from: TrackImpressionHubCreateGuildTemplate.kt */ +public final class TrackImpressionHubCreateGuildTemplate implements AnalyticsSchema, TrackBaseReceiver, TrackGuildReceiver, TrackChannelReceiver, TrackLocationMetadataReceiver, TrackImpressionMetadataReceiver { + private TrackBase trackBase; + private TrackChannel trackChannel; + private TrackGuild trackGuild; + private TrackImpressionMetadata trackImpressionMetadata; + private TrackLocationMetadata trackLocationMetadata; + private final transient String type = "impression_hub_create_guild_template"; + + @Override // com.discord.api.science.AnalyticsSchema + public String getType() { + return this.type; + } +} diff --git a/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubCreateGuildTemplateReceiver.java b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubCreateGuildTemplateReceiver.java new file mode 100644 index 0000000000..397d318108 --- /dev/null +++ b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubCreateGuildTemplateReceiver.java @@ -0,0 +1,4 @@ +package com.discord.analytics.generated.events.impression; +/* compiled from: TrackImpressionHubCreateGuildTemplate.kt */ +public interface TrackImpressionHubCreateGuildTemplateReceiver { +} diff --git a/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubEmailSignup.java b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubEmailSignup.java new file mode 100644 index 0000000000..8bce8b63a4 --- /dev/null +++ b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubEmailSignup.java @@ -0,0 +1,27 @@ +package com.discord.analytics.generated.events.impression; + +import com.discord.analytics.generated.traits.TrackBase; +import com.discord.analytics.generated.traits.TrackBaseReceiver; +import com.discord.analytics.generated.traits.TrackChannel; +import com.discord.analytics.generated.traits.TrackChannelReceiver; +import com.discord.analytics.generated.traits.TrackGuild; +import com.discord.analytics.generated.traits.TrackGuildReceiver; +import com.discord.analytics.generated.traits.TrackImpressionMetadata; +import com.discord.analytics.generated.traits.TrackImpressionMetadataReceiver; +import com.discord.analytics.generated.traits.TrackLocationMetadata; +import com.discord.analytics.generated.traits.TrackLocationMetadataReceiver; +import com.discord.api.science.AnalyticsSchema; +/* compiled from: TrackImpressionHubEmailSignup.kt */ +public final class TrackImpressionHubEmailSignup implements AnalyticsSchema, TrackBaseReceiver, TrackGuildReceiver, TrackChannelReceiver, TrackLocationMetadataReceiver, TrackImpressionMetadataReceiver { + private TrackBase trackBase; + private TrackChannel trackChannel; + private TrackGuild trackGuild; + private TrackImpressionMetadata trackImpressionMetadata; + private TrackLocationMetadata trackLocationMetadata; + private final transient String type = "impression_hub_email_signup"; + + @Override // com.discord.api.science.AnalyticsSchema + public String getType() { + return this.type; + } +} diff --git a/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubEmailSignupReceiver.java b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubEmailSignupReceiver.java new file mode 100644 index 0000000000..12e3cd651e --- /dev/null +++ b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubEmailSignupReceiver.java @@ -0,0 +1,4 @@ +package com.discord.analytics.generated.events.impression; +/* compiled from: TrackImpressionHubEmailSignup.kt */ +public interface TrackImpressionHubEmailSignupReceiver { +} diff --git a/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubEmailVerificationPage.java b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubEmailVerificationPage.java new file mode 100644 index 0000000000..12984e84e9 --- /dev/null +++ b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubEmailVerificationPage.java @@ -0,0 +1,27 @@ +package com.discord.analytics.generated.events.impression; + +import com.discord.analytics.generated.traits.TrackBase; +import com.discord.analytics.generated.traits.TrackBaseReceiver; +import com.discord.analytics.generated.traits.TrackChannel; +import com.discord.analytics.generated.traits.TrackChannelReceiver; +import com.discord.analytics.generated.traits.TrackGuild; +import com.discord.analytics.generated.traits.TrackGuildReceiver; +import com.discord.analytics.generated.traits.TrackImpressionMetadata; +import com.discord.analytics.generated.traits.TrackImpressionMetadataReceiver; +import com.discord.analytics.generated.traits.TrackLocationMetadata; +import com.discord.analytics.generated.traits.TrackLocationMetadataReceiver; +import com.discord.api.science.AnalyticsSchema; +/* compiled from: TrackImpressionHubEmailVerificationPage.kt */ +public final class TrackImpressionHubEmailVerificationPage implements AnalyticsSchema, TrackBaseReceiver, TrackGuildReceiver, TrackChannelReceiver, TrackLocationMetadataReceiver, TrackImpressionMetadataReceiver { + private TrackBase trackBase; + private TrackChannel trackChannel; + private TrackGuild trackGuild; + private TrackImpressionMetadata trackImpressionMetadata; + private TrackLocationMetadata trackLocationMetadata; + private final transient String type = "impression_hub_email_verification_page"; + + @Override // com.discord.api.science.AnalyticsSchema + public String getType() { + return this.type; + } +} diff --git a/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubEmailVerificationPageReceiver.java b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubEmailVerificationPageReceiver.java new file mode 100644 index 0000000000..36ba8ce90a --- /dev/null +++ b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubEmailVerificationPageReceiver.java @@ -0,0 +1,4 @@ +package com.discord.analytics.generated.events.impression; +/* compiled from: TrackImpressionHubEmailVerificationPage.kt */ +public interface TrackImpressionHubEmailVerificationPageReceiver { +} diff --git a/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubExistingGuildChoose.java b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubExistingGuildChoose.java new file mode 100644 index 0000000000..50f559d4ca --- /dev/null +++ b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubExistingGuildChoose.java @@ -0,0 +1,27 @@ +package com.discord.analytics.generated.events.impression; + +import com.discord.analytics.generated.traits.TrackBase; +import com.discord.analytics.generated.traits.TrackBaseReceiver; +import com.discord.analytics.generated.traits.TrackChannel; +import com.discord.analytics.generated.traits.TrackChannelReceiver; +import com.discord.analytics.generated.traits.TrackGuild; +import com.discord.analytics.generated.traits.TrackGuildReceiver; +import com.discord.analytics.generated.traits.TrackImpressionMetadata; +import com.discord.analytics.generated.traits.TrackImpressionMetadataReceiver; +import com.discord.analytics.generated.traits.TrackLocationMetadata; +import com.discord.analytics.generated.traits.TrackLocationMetadataReceiver; +import com.discord.api.science.AnalyticsSchema; +/* compiled from: TrackImpressionHubExistingGuildChoose.kt */ +public final class TrackImpressionHubExistingGuildChoose implements AnalyticsSchema, TrackBaseReceiver, TrackGuildReceiver, TrackChannelReceiver, TrackLocationMetadataReceiver, TrackImpressionMetadataReceiver { + private TrackBase trackBase; + private TrackChannel trackChannel; + private TrackGuild trackGuild; + private TrackImpressionMetadata trackImpressionMetadata; + private TrackLocationMetadata trackLocationMetadata; + private final transient String type = "impression_hub_existing_guild_choose"; + + @Override // com.discord.api.science.AnalyticsSchema + public String getType() { + return this.type; + } +} diff --git a/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubExistingGuildChooseReceiver.java b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubExistingGuildChooseReceiver.java new file mode 100644 index 0000000000..90900aaf2b --- /dev/null +++ b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubExistingGuildChooseReceiver.java @@ -0,0 +1,4 @@ +package com.discord.analytics.generated.events.impression; +/* compiled from: TrackImpressionHubExistingGuildChoose.kt */ +public interface TrackImpressionHubExistingGuildChooseReceiver { +} diff --git a/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubExistingGuildCustomize.java b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubExistingGuildCustomize.java new file mode 100644 index 0000000000..ed0430164a --- /dev/null +++ b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubExistingGuildCustomize.java @@ -0,0 +1,27 @@ +package com.discord.analytics.generated.events.impression; + +import com.discord.analytics.generated.traits.TrackBase; +import com.discord.analytics.generated.traits.TrackBaseReceiver; +import com.discord.analytics.generated.traits.TrackChannel; +import com.discord.analytics.generated.traits.TrackChannelReceiver; +import com.discord.analytics.generated.traits.TrackGuild; +import com.discord.analytics.generated.traits.TrackGuildReceiver; +import com.discord.analytics.generated.traits.TrackImpressionMetadata; +import com.discord.analytics.generated.traits.TrackImpressionMetadataReceiver; +import com.discord.analytics.generated.traits.TrackLocationMetadata; +import com.discord.analytics.generated.traits.TrackLocationMetadataReceiver; +import com.discord.api.science.AnalyticsSchema; +/* compiled from: TrackImpressionHubExistingGuildCustomize.kt */ +public final class TrackImpressionHubExistingGuildCustomize implements AnalyticsSchema, TrackBaseReceiver, TrackGuildReceiver, TrackChannelReceiver, TrackLocationMetadataReceiver, TrackImpressionMetadataReceiver { + private TrackBase trackBase; + private TrackChannel trackChannel; + private TrackGuild trackGuild; + private TrackImpressionMetadata trackImpressionMetadata; + private TrackLocationMetadata trackLocationMetadata; + private final transient String type = "impression_hub_existing_guild_customize"; + + @Override // com.discord.api.science.AnalyticsSchema + public String getType() { + return this.type; + } +} diff --git a/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubExistingGuildCustomizeReceiver.java b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubExistingGuildCustomizeReceiver.java new file mode 100644 index 0000000000..bf6671a89f --- /dev/null +++ b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionHubExistingGuildCustomizeReceiver.java @@ -0,0 +1,4 @@ +package com.discord.analytics.generated.events.impression; +/* compiled from: TrackImpressionHubExistingGuildCustomize.kt */ +public interface TrackImpressionHubExistingGuildCustomizeReceiver { +} diff --git a/app/src/main/java/com/discord/analytics/generated/events/network_action/TrackNetworkActionDirectoryGuildEntryCreate.java b/app/src/main/java/com/discord/analytics/generated/events/network_action/TrackNetworkActionDirectoryGuildEntryCreate.java new file mode 100644 index 0000000000..217583100c --- /dev/null +++ b/app/src/main/java/com/discord/analytics/generated/events/network_action/TrackNetworkActionDirectoryGuildEntryCreate.java @@ -0,0 +1,78 @@ +package com.discord.analytics.generated.events.network_action; + +import c.d.b.a.a; +import com.discord.analytics.generated.traits.TrackBase; +import com.discord.analytics.generated.traits.TrackBaseReceiver; +import com.discord.analytics.generated.traits.TrackLocationMetadata; +import com.discord.analytics.generated.traits.TrackLocationMetadataReceiver; +import com.discord.analytics.generated.traits.TrackNetworkMetadata; +import com.discord.analytics.generated.traits.TrackNetworkMetadataReceiver; +import com.discord.api.science.AnalyticsSchema; +import d0.z.d.m; +/* compiled from: TrackNetworkActionDirectoryGuildEntryCreate.kt */ +public final class TrackNetworkActionDirectoryGuildEntryCreate implements AnalyticsSchema, TrackBaseReceiver, TrackLocationMetadataReceiver, TrackNetworkMetadataReceiver { + private final Long directoryChannelId; + private final Long guildId; + private final Integer primaryCategoryId; + private TrackBase trackBase; + private TrackLocationMetadata trackLocationMetadata; + private TrackNetworkMetadata trackNetworkMetadata; + private final transient String type; + + public TrackNetworkActionDirectoryGuildEntryCreate() { + this.directoryChannelId = null; + this.guildId = null; + this.primaryCategoryId = null; + this.type = "network_action_directory_guild_entry_create"; + } + + public TrackNetworkActionDirectoryGuildEntryCreate(Long l, Long l2, Integer num) { + this.directoryChannelId = l; + this.guildId = l2; + this.primaryCategoryId = num; + this.type = "network_action_directory_guild_entry_create"; + } + + @Override // com.discord.analytics.generated.traits.TrackNetworkMetadataReceiver + public void a(TrackNetworkMetadata trackNetworkMetadata) { + this.trackNetworkMetadata = trackNetworkMetadata; + } + + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof TrackNetworkActionDirectoryGuildEntryCreate)) { + return false; + } + TrackNetworkActionDirectoryGuildEntryCreate trackNetworkActionDirectoryGuildEntryCreate = (TrackNetworkActionDirectoryGuildEntryCreate) obj; + return m.areEqual(this.directoryChannelId, trackNetworkActionDirectoryGuildEntryCreate.directoryChannelId) && m.areEqual(this.guildId, trackNetworkActionDirectoryGuildEntryCreate.guildId) && m.areEqual(this.primaryCategoryId, trackNetworkActionDirectoryGuildEntryCreate.primaryCategoryId); + } + + @Override // com.discord.api.science.AnalyticsSchema + public String getType() { + return this.type; + } + + public int hashCode() { + Long l = this.directoryChannelId; + int i = 0; + int hashCode = (l != null ? l.hashCode() : 0) * 31; + Long l2 = this.guildId; + int hashCode2 = (hashCode + (l2 != null ? l2.hashCode() : 0)) * 31; + Integer num = this.primaryCategoryId; + if (num != null) { + i = num.hashCode(); + } + return hashCode2 + i; + } + + public String toString() { + StringBuilder L = a.L("TrackNetworkActionDirectoryGuildEntryCreate(directoryChannelId="); + L.append(this.directoryChannelId); + L.append(", guildId="); + L.append(this.guildId); + L.append(", primaryCategoryId="); + return a.A(L, this.primaryCategoryId, ")"); + } +} diff --git a/app/src/main/java/com/discord/analytics/generated/events/network_action/TrackNetworkActionDirectoryGuildEntryCreateReceiver.java b/app/src/main/java/com/discord/analytics/generated/events/network_action/TrackNetworkActionDirectoryGuildEntryCreateReceiver.java new file mode 100644 index 0000000000..b59ff60674 --- /dev/null +++ b/app/src/main/java/com/discord/analytics/generated/events/network_action/TrackNetworkActionDirectoryGuildEntryCreateReceiver.java @@ -0,0 +1,6 @@ +package com.discord.analytics.generated.events.network_action; + +import com.discord.api.science.AnalyticsSchema; +/* compiled from: TrackNetworkActionDirectoryGuildEntryCreate.kt */ +public interface TrackNetworkActionDirectoryGuildEntryCreateReceiver extends AnalyticsSchema { +} diff --git a/app/src/main/java/com/discord/analytics/generated/events/network_action/TrackNetworkActionDirectoryGuildEntryDelete.java b/app/src/main/java/com/discord/analytics/generated/events/network_action/TrackNetworkActionDirectoryGuildEntryDelete.java new file mode 100644 index 0000000000..871466d938 --- /dev/null +++ b/app/src/main/java/com/discord/analytics/generated/events/network_action/TrackNetworkActionDirectoryGuildEntryDelete.java @@ -0,0 +1,71 @@ +package com.discord.analytics.generated.events.network_action; + +import c.d.b.a.a; +import com.discord.analytics.generated.traits.TrackBase; +import com.discord.analytics.generated.traits.TrackBaseReceiver; +import com.discord.analytics.generated.traits.TrackLocationMetadata; +import com.discord.analytics.generated.traits.TrackLocationMetadataReceiver; +import com.discord.analytics.generated.traits.TrackNetworkMetadata; +import com.discord.analytics.generated.traits.TrackNetworkMetadataReceiver; +import com.discord.api.science.AnalyticsSchema; +import d0.z.d.m; +/* compiled from: TrackNetworkActionDirectoryGuildEntryDelete.kt */ +public final class TrackNetworkActionDirectoryGuildEntryDelete implements AnalyticsSchema, TrackBaseReceiver, TrackLocationMetadataReceiver, TrackNetworkMetadataReceiver { + private final Long directoryChannelId; + private final Long guildId; + private TrackBase trackBase; + private TrackLocationMetadata trackLocationMetadata; + private TrackNetworkMetadata trackNetworkMetadata; + private final transient String type; + + public TrackNetworkActionDirectoryGuildEntryDelete() { + this.directoryChannelId = null; + this.guildId = null; + this.type = "network_action_directory_guild_entry_delete"; + } + + public TrackNetworkActionDirectoryGuildEntryDelete(Long l, Long l2) { + this.directoryChannelId = l; + this.guildId = l2; + this.type = "network_action_directory_guild_entry_delete"; + } + + @Override // com.discord.analytics.generated.traits.TrackNetworkMetadataReceiver + public void a(TrackNetworkMetadata trackNetworkMetadata) { + this.trackNetworkMetadata = trackNetworkMetadata; + } + + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof TrackNetworkActionDirectoryGuildEntryDelete)) { + return false; + } + TrackNetworkActionDirectoryGuildEntryDelete trackNetworkActionDirectoryGuildEntryDelete = (TrackNetworkActionDirectoryGuildEntryDelete) obj; + return m.areEqual(this.directoryChannelId, trackNetworkActionDirectoryGuildEntryDelete.directoryChannelId) && m.areEqual(this.guildId, trackNetworkActionDirectoryGuildEntryDelete.guildId); + } + + @Override // com.discord.api.science.AnalyticsSchema + public String getType() { + return this.type; + } + + public int hashCode() { + Long l = this.directoryChannelId; + int i = 0; + int hashCode = (l != null ? l.hashCode() : 0) * 31; + Long l2 = this.guildId; + if (l2 != null) { + i = l2.hashCode(); + } + return hashCode + i; + } + + public String toString() { + StringBuilder L = a.L("TrackNetworkActionDirectoryGuildEntryDelete(directoryChannelId="); + L.append(this.directoryChannelId); + L.append(", guildId="); + return a.B(L, this.guildId, ")"); + } +} diff --git a/app/src/main/java/com/discord/analytics/generated/events/network_action/TrackNetworkActionDirectoryGuildEntryDeleteReceiver.java b/app/src/main/java/com/discord/analytics/generated/events/network_action/TrackNetworkActionDirectoryGuildEntryDeleteReceiver.java new file mode 100644 index 0000000000..48aeab0ee1 --- /dev/null +++ b/app/src/main/java/com/discord/analytics/generated/events/network_action/TrackNetworkActionDirectoryGuildEntryDeleteReceiver.java @@ -0,0 +1,6 @@ +package com.discord.analytics.generated.events.network_action; + +import com.discord.api.science.AnalyticsSchema; +/* compiled from: TrackNetworkActionDirectoryGuildEntryDelete.kt */ +public interface TrackNetworkActionDirectoryGuildEntryDeleteReceiver extends AnalyticsSchema { +} diff --git a/app/src/main/java/com/discord/analytics/generated/events/network_action/TrackNetworkActionHubEmailVerifySend.java b/app/src/main/java/com/discord/analytics/generated/events/network_action/TrackNetworkActionHubEmailVerifySend.java new file mode 100644 index 0000000000..9060f67e38 --- /dev/null +++ b/app/src/main/java/com/discord/analytics/generated/events/network_action/TrackNetworkActionHubEmailVerifySend.java @@ -0,0 +1,61 @@ +package com.discord.analytics.generated.events.network_action; + +import c.d.b.a.a; +import com.discord.analytics.generated.traits.TrackBase; +import com.discord.analytics.generated.traits.TrackBaseReceiver; +import com.discord.analytics.generated.traits.TrackLocationMetadata; +import com.discord.analytics.generated.traits.TrackLocationMetadataReceiver; +import com.discord.analytics.generated.traits.TrackNetworkMetadata; +import com.discord.analytics.generated.traits.TrackNetworkMetadataReceiver; +import com.discord.api.science.AnalyticsSchema; +import d0.z.d.m; +/* compiled from: TrackNetworkActionHubEmailVerifySend.kt */ +public final class TrackNetworkActionHubEmailVerifySend implements AnalyticsSchema, TrackBaseReceiver, TrackLocationMetadataReceiver, TrackNetworkMetadataReceiver { + private final Boolean hasMatchingGuild; + private TrackBase trackBase; + private TrackLocationMetadata trackLocationMetadata; + private TrackNetworkMetadata trackNetworkMetadata; + private final transient String type; + + public TrackNetworkActionHubEmailVerifySend() { + this.hasMatchingGuild = null; + this.type = "network_action_hub_email_verify_send"; + } + + public TrackNetworkActionHubEmailVerifySend(Boolean bool) { + this.hasMatchingGuild = bool; + this.type = "network_action_hub_email_verify_send"; + } + + @Override // com.discord.analytics.generated.traits.TrackNetworkMetadataReceiver + public void a(TrackNetworkMetadata trackNetworkMetadata) { + this.trackNetworkMetadata = trackNetworkMetadata; + } + + public boolean equals(Object obj) { + if (this != obj) { + return (obj instanceof TrackNetworkActionHubEmailVerifySend) && m.areEqual(this.hasMatchingGuild, ((TrackNetworkActionHubEmailVerifySend) obj).hasMatchingGuild); + } + return true; + } + + @Override // com.discord.api.science.AnalyticsSchema + public String getType() { + return this.type; + } + + public int hashCode() { + Boolean bool = this.hasMatchingGuild; + if (bool != null) { + return bool.hashCode(); + } + return 0; + } + + public String toString() { + StringBuilder L = a.L("TrackNetworkActionHubEmailVerifySend(hasMatchingGuild="); + L.append(this.hasMatchingGuild); + L.append(")"); + return L.toString(); + } +} diff --git a/app/src/main/java/com/discord/analytics/generated/events/network_action/TrackNetworkActionHubEmailVerifySendReceiver.java b/app/src/main/java/com/discord/analytics/generated/events/network_action/TrackNetworkActionHubEmailVerifySendReceiver.java new file mode 100644 index 0000000000..c5206e2cc3 --- /dev/null +++ b/app/src/main/java/com/discord/analytics/generated/events/network_action/TrackNetworkActionHubEmailVerifySendReceiver.java @@ -0,0 +1,6 @@ +package com.discord.analytics.generated.events.network_action; + +import com.discord.api.science.AnalyticsSchema; +/* compiled from: TrackNetworkActionHubEmailVerifySend.kt */ +public interface TrackNetworkActionHubEmailVerifySendReceiver extends AnalyticsSchema { +} diff --git a/app/src/main/java/com/discord/analytics/generated/events/network_action/TrackNetworkActionHubWaitlistSignup.java b/app/src/main/java/com/discord/analytics/generated/events/network_action/TrackNetworkActionHubWaitlistSignup.java index fe3da8c521..f0c6b27f3e 100644 --- a/app/src/main/java/com/discord/analytics/generated/events/network_action/TrackNetworkActionHubWaitlistSignup.java +++ b/app/src/main/java/com/discord/analytics/generated/events/network_action/TrackNetworkActionHubWaitlistSignup.java @@ -18,7 +18,8 @@ public final class TrackNetworkActionHubWaitlistSignup implements AnalyticsSchem private final transient String type; public TrackNetworkActionHubWaitlistSignup() { - this(null); + this.isEduEmail = null; + this.type = "network_action_hub_waitlist_signup"; } public TrackNetworkActionHubWaitlistSignup(Boolean bool) { diff --git a/app/src/main/java/com/discord/databinding/GuildScheduledEventItemViewBinding.java b/app/src/main/java/com/discord/databinding/GuildScheduledEventItemViewBinding.java index 7ac23d14d6..ab8d421692 100644 --- a/app/src/main/java/com/discord/databinding/GuildScheduledEventItemViewBinding.java +++ b/app/src/main/java/com/discord/databinding/GuildScheduledEventItemViewBinding.java @@ -6,6 +6,7 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.constraintlayout.widget.ConstraintLayout; import androidx.viewbinding.ViewBinding; +import com.discord.utilities.view.text.LinkifiedTextView; public final class GuildScheduledEventItemViewBinding implements ViewBinding { @NonNull public final ConstraintLayout a; @@ -18,7 +19,7 @@ public final class GuildScheduledEventItemViewBinding implements ViewBinding { @NonNull public final TextView d; @NonNull - public final TextView e; + public final LinkifiedTextView e; @NonNull public final ImageView f; @NonNull @@ -36,20 +37,20 @@ public final class GuildScheduledEventItemViewBinding implements ViewBinding { @NonNull public final TextView m; - public GuildScheduledEventItemViewBinding(@NonNull ConstraintLayout constraintLayout, @NonNull ImageView imageView, @NonNull TextView textView, @NonNull TextView textView2, @NonNull TextView textView3, @NonNull ImageView imageView2, @NonNull TextView textView4, @NonNull TextView textView5, @NonNull ImageView imageView3, @NonNull ImageView imageView4, @NonNull TextView textView6, @NonNull ImageView imageView5, @NonNull TextView textView7) { + public GuildScheduledEventItemViewBinding(@NonNull ConstraintLayout constraintLayout, @NonNull ImageView imageView, @NonNull TextView textView, @NonNull TextView textView2, @NonNull LinkifiedTextView linkifiedTextView, @NonNull ImageView imageView2, @NonNull TextView textView3, @NonNull TextView textView4, @NonNull ImageView imageView3, @NonNull ImageView imageView4, @NonNull TextView textView5, @NonNull ImageView imageView5, @NonNull TextView textView6) { this.a = constraintLayout; this.b = imageView; this.f1612c = textView; this.d = textView2; - this.e = textView3; + this.e = linkifiedTextView; this.f = imageView2; - this.g = textView4; - this.h = textView5; + this.g = textView3; + this.h = textView4; this.i = imageView3; this.j = imageView4; - this.k = textView6; + this.k = textView5; this.l = imageView5; - this.m = textView7; + this.m = textView6; } @Override // androidx.viewbinding.ViewBinding diff --git a/app/src/main/java/com/discord/restapi/RestAPIInterface.java b/app/src/main/java/com/discord/restapi/RestAPIInterface.java index 0e3177aac9..b89f7d57d7 100644 --- a/app/src/main/java/com/discord/restapi/RestAPIInterface.java +++ b/app/src/main/java/com/discord/restapi/RestAPIInterface.java @@ -244,7 +244,7 @@ public interface RestAPIInterface { Observable addRelationship(@s("userId") long j, @a RestAPIParams.UserRelationship userRelationship, @i("X-Context-Properties") String str); @i0.f0.o("channels/{channelId}/directory-entry/{guildId}") - Observable addServerToHub(@s("channelId") long j, @s("guildId") long j2, @a RestAPIParams.AddServerBody addServerBody); + Observable> addServerToHub(@s("channelId") long j, @s("guildId") long j2, @a RestAPIParams.AddServerBody addServerBody); @f("connections/{connection}/authorize") Observable authorizeConnection(@s("connection") String str); @@ -754,7 +754,7 @@ public interface RestAPIInterface { Observable removeSelfReaction(@s("channelId") long j, @s("messageId") long j2, @s(encoded = true, value = "reaction") String str); @b("channels/{channelId}/directory-entry/{guildId}") - Observable removeServerFromHub(@s("channelId") long j, @s("guildId") long j2); + Observable> removeServerFromHub(@s("channelId") long j, @s("guildId") long j2); @n("guilds/{guildId}/channels") Observable reorderChannels(@s("guildId") long j, @a List list); diff --git a/app/src/main/java/com/discord/rtcconnection/audio/DiscordAudioManager.java b/app/src/main/java/com/discord/rtcconnection/audio/DiscordAudioManager.java index 8ddcc323e5..a60f88a4cc 100644 --- a/app/src/main/java/com/discord/rtcconnection/audio/DiscordAudioManager.java +++ b/app/src/main/java/com/discord/rtcconnection/audio/DiscordAudioManager.java @@ -4,16 +4,20 @@ import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothHeadset; import android.bluetooth.BluetoothManager; +import android.content.ContentResolver; import android.content.Context; import android.content.IntentFilter; +import android.database.ContentObserver; import android.media.AudioAttributes; import android.media.AudioFocusRequest; import android.media.AudioManager; import android.os.Build; import android.os.Handler; import android.os.Looper; +import android.provider.Settings; import androidx.annotation.MainThread; import c.a.q.k0.f; +import c.a.q.k0.h; import c.a.q.l0.a; import com.airbnb.lottie.parser.AnimatableValueParser; import com.discord.rtcconnection.enums.AudioManagerBroadcastAction; @@ -48,36 +52,41 @@ public final class DiscordAudioManager { /* renamed from: c reason: collision with root package name */ public static final List f2127c = n.listOf((Object[]) new DeviceTypes[]{DeviceTypes.EARPIECE, DeviceTypes.SPEAKERPHONE, DeviceTypes.BLUETOOTH_HEADSET, DeviceTypes.WIRED_HEADSET}); public static final DiscordAudioManager d = null; + public boolean A; + public boolean B; + public boolean C; + public List D; + public boolean E; public final AudioManager e; public final BluetoothManager f; public final Lazy g; public final boolean h; public final Object i = this; public final long j; - public final c.a.q.k0.c k; - public final c.a.q.k0.a l; - public BluetoothHeadset m; - public BluetoothScoState n; - public AudioManager.OnAudioFocusChangeListener o; - public AudioFocusRequest p; - public List q; - public final SerializedSubject, List> r; + public final ContentResolver k; + public final c.a.q.k0.c l; + public final c.a.q.k0.a m; + public BluetoothHeadset n; + public BluetoothScoState o; + public AudioManager.OnAudioFocusChangeListener p; + public AudioFocusRequest q; + public List r; /* renamed from: s reason: collision with root package name */ - public DeviceTypes f2128s; - public final SerializedSubject t; - public DeviceTypes u; - public boolean v; - public boolean w; + public final SerializedSubject, List> f2128s; + public DeviceTypes t; + public final SerializedSubject u; + public ContentObserver v; + public int w; /* renamed from: x reason: collision with root package name */ - public boolean f2129x; + public final int f2129x; /* renamed from: y reason: collision with root package name */ - public List f2130y; + public final SerializedSubject f2130y; /* renamed from: z reason: collision with root package name */ - public boolean f2131z; + public DeviceTypes f2131z; /* compiled from: DiscordAudioManager.kt */ public static final class AudioDevice { @@ -222,7 +231,7 @@ public final class DiscordAudioManager { @Override // java.lang.Runnable public final void run() { DiscordAudioManager discordAudioManager = this.i; - c.a.q.k0.a aVar = discordAudioManager.l; + c.a.q.k0.a aVar = discordAudioManager.m; Objects.requireNonNull(aVar); ThreadUtils.checkIsOnMainThread(); boolean z2 = false; @@ -233,7 +242,7 @@ public final class DiscordAudioManager { intentFilter.addAction(audioManagerBroadcastAction.getAction()); } aVar.b.registerReceiver(aVar, intentFilter); - c.a.q.k0.c cVar = discordAudioManager.k; + c.a.q.k0.c cVar = discordAudioManager.l; Objects.requireNonNull(cVar); ThreadUtils.checkIsOnMainThread(); if (!cVar.k) { @@ -277,23 +286,23 @@ public final class DiscordAudioManager { } c.a.q.k0.e eVar = new c.a.q.k0.e(discordAudioManager); synchronized (discordAudioManager.i) { - discordAudioManager.o = eVar; + discordAudioManager.p = eVar; } } } /* compiled from: DiscordAudioManager.kt */ - public final class b implements f { + public final class b implements c.a.q.k0.g { public b() { } - @Override // c.a.q.k0.f + @Override // c.a.q.k0.g public void a(Context context, boolean z2) { m.checkNotNullParameter(context, "context"); m.checkNotNullParameter(context, "context"); } - @Override // c.a.q.k0.f + @Override // c.a.q.k0.g @MainThread public void b(Context context, ScoAudioState.b bVar) { boolean z2; @@ -303,12 +312,12 @@ public final class DiscordAudioManager { if (ordinal == 0) { AnimatableValueParser.D1("DiscordAudioManager", "[onScoAudioStateUpdate] scoAudioStateUpdate = " + bVar); DiscordAudioManager discordAudioManager = DiscordAudioManager.this; - BluetoothScoState bluetoothScoState = discordAudioManager.n; + BluetoothScoState bluetoothScoState = discordAudioManager.o; discordAudioManager.k(); int ordinal2 = bluetoothScoState.ordinal(); if (ordinal2 == 2) { synchronized (DiscordAudioManager.this.i) { - z2 = DiscordAudioManager.this.f2131z; + z2 = DiscordAudioManager.this.E; } if (z2) { AnimatableValueParser.D1("DiscordAudioManager", "SCO off detected directly from ON. Refreshing Bluetooth device"); @@ -321,16 +330,16 @@ public final class DiscordAudioManager { AnimatableValueParser.D1("DiscordAudioManager", L.toString()); synchronized (DiscordAudioManager.this.i) { DiscordAudioManager discordAudioManager2 = DiscordAudioManager.this; - List list = discordAudioManager2.q; + List list = discordAudioManager2.r; ArrayList arrayList = new ArrayList(o.collectionSizeOrDefault(list, 10)); for (AudioDevice audioDevice : list) { arrayList.add(audioDevice.a.ordinal() != 5 ? AudioDevice.a(audioDevice, null, false, null, null, 15) : AudioDevice.a(audioDevice, null, false, null, null, 1)); } - discordAudioManager2.q = arrayList; - discordAudioManager2.r.j.onNext(arrayList); + discordAudioManager2.r = arrayList; + discordAudioManager2.f2128s.j.onNext(arrayList); } DiscordAudioManager discordAudioManager3 = DiscordAudioManager.this; - discordAudioManager3.a(discordAudioManager3.q); + discordAudioManager3.a(discordAudioManager3.r); } } else if (ordinal == 1) { AnimatableValueParser.D1("DiscordAudioManager", "[onScoAudioStateUpdate] scoAudioStateUpdate = " + bVar); @@ -338,19 +347,19 @@ public final class DiscordAudioManager { } } - @Override // c.a.q.k0.f + @Override // c.a.q.k0.g public void c(Context context) { m.checkNotNullParameter(context, "context"); m.checkNotNullParameter(context, "context"); } - @Override // c.a.q.k0.f + @Override // c.a.q.k0.g public void d(Context context, boolean z2) { m.checkNotNullParameter(context, "context"); m.checkNotNullParameter(context, "context"); } - @Override // c.a.q.k0.f + @Override // c.a.q.k0.g @MainThread public void e(Context context, c.a.q.l0.a aVar) { m.checkNotNullParameter(context, "context"); @@ -359,26 +368,26 @@ public final class DiscordAudioManager { if (m.areEqual(aVar, a.b.a)) { synchronized (DiscordAudioManager.this.i) { DiscordAudioManager discordAudioManager = DiscordAudioManager.this; - List list = discordAudioManager.q; + List list = discordAudioManager.r; ArrayList arrayList = new ArrayList(o.collectionSizeOrDefault(list, 10)); for (AudioDevice audioDevice : list) { int ordinal = audioDevice.a.ordinal(); arrayList.add(ordinal != 3 ? ordinal != 4 ? AudioDevice.a(audioDevice, null, false, null, null, 15) : AudioDevice.a(audioDevice, null, DiscordAudioManager.this.h, null, null, 13) : AudioDevice.a(audioDevice, null, false, null, null, 13)); } - discordAudioManager.q = arrayList; - discordAudioManager.r.j.onNext(arrayList); + discordAudioManager.r = arrayList; + discordAudioManager.f2128s.j.onNext(arrayList); } } else if (aVar instanceof a.C0036a) { synchronized (DiscordAudioManager.this.i) { DiscordAudioManager discordAudioManager2 = DiscordAudioManager.this; - List list2 = discordAudioManager2.q; + List list2 = discordAudioManager2.r; ArrayList arrayList2 = new ArrayList(o.collectionSizeOrDefault(list2, 10)); for (AudioDevice audioDevice2 : list2) { int ordinal2 = audioDevice2.a.ordinal(); arrayList2.add(ordinal2 != 3 ? ordinal2 != 4 ? AudioDevice.a(audioDevice2, null, false, null, null, 15) : AudioDevice.a(audioDevice2, null, false, null, null, 13) : AudioDevice.a(audioDevice2, null, true, null, null, 13)); } - discordAudioManager2.q = arrayList2; - discordAudioManager2.r.j.onNext(arrayList2); + discordAudioManager2.r = arrayList2; + discordAudioManager2.f2128s.j.onNext(arrayList2); } } DiscordAudioManager.this.l(); @@ -386,11 +395,11 @@ public final class DiscordAudioManager { } /* compiled from: DiscordAudioManager.kt */ - public final class c implements c.a.q.k0.g { + public final class c implements h { public c() { } - @Override // c.a.q.k0.g + @Override // c.a.q.k0.h @MainThread public void a(Context context, BluetoothHeadsetAudioState.b bVar) { m.checkNotNullParameter(context, "context"); @@ -412,18 +421,18 @@ public final class DiscordAudioManager { } else if (ordinal == 2) { synchronized (DiscordAudioManager.this.i) { DiscordAudioManager discordAudioManager = DiscordAudioManager.this; - List list = discordAudioManager.q; + List list = discordAudioManager.r; ArrayList arrayList = new ArrayList(o.collectionSizeOrDefault(list, 10)); for (AudioDevice audioDevice : list) { arrayList.add(audioDevice.a.ordinal() != 5 ? AudioDevice.a(audioDevice, null, false, null, null, 15) : AudioDevice.a(audioDevice, null, true, bluetoothDevice != null ? bluetoothDevice.getAddress() : null, bluetoothDevice != null ? bluetoothDevice.getName() : null, 1)); } - discordAudioManager.q = arrayList; - discordAudioManager.r.j.onNext(arrayList); + discordAudioManager.r = arrayList; + discordAudioManager.f2128s.j.onNext(arrayList); } } } - @Override // c.a.q.k0.g + @Override // c.a.q.k0.h @MainThread public void b(BluetoothDevice bluetoothDevice) { c.a.q.k0.d dVar = c.a.q.k0.d.f212c; @@ -434,13 +443,13 @@ public final class DiscordAudioManager { } } - @Override // c.a.q.k0.g + @Override // c.a.q.k0.h @MainThread public void c(BluetoothHeadset bluetoothHeadset) { - DiscordAudioManager.this.m = bluetoothHeadset; + DiscordAudioManager.this.n = bluetoothHeadset; } - @Override // c.a.q.k0.g + @Override // c.a.q.k0.h @MainThread public void d(Context context, BluetoothProfileConnectionState.b bVar) { ArrayList arrayList; @@ -466,7 +475,7 @@ public final class DiscordAudioManager { if (ordinal == 2) { synchronized (DiscordAudioManager.this.i) { discordAudioManager = DiscordAudioManager.this; - deviceTypes = discordAudioManager.f2128s; + deviceTypes = discordAudioManager.t; } if (deviceTypes == DeviceTypes.BLUETOOTH_HEADSET) { discordAudioManager.g(); @@ -483,7 +492,7 @@ public final class DiscordAudioManager { return; } synchronized (DiscordAudioManager.this.i) { - List list = DiscordAudioManager.this.q; + List list = DiscordAudioManager.this.r; arrayList = new ArrayList(o.collectionSizeOrDefault(list, 10)); for (AudioDevice audioDevice : list) { arrayList.add(AudioDevice.a(audioDevice, null, false, null, null, 15)); @@ -549,10 +558,13 @@ public final class DiscordAudioManager { Thread currentThread = Thread.currentThread(); m.checkNotNullExpressionValue(currentThread, "Thread.currentThread()"); this.j = currentThread.getId(); - this.k = new c.a.q.k0.c(context, new c()); - this.l = new c.a.q.k0.a(context, new b()); + ContentResolver contentResolver = context.getContentResolver(); + m.checkNotNullExpressionValue(contentResolver, "context.contentResolver"); + this.k = contentResolver; + this.l = new c.a.q.k0.c(context, new c()); + this.m = new c.a.q.k0.a(context, new b()); new Handler(Looper.getMainLooper()).post(new a(this)); - this.n = BluetoothScoState.INVALID; + this.o = BluetoothScoState.INVALID; List listOf = n.listOf((Object[]) new AudioDevice[]{new AudioDevice(DeviceTypes.SPEAKERPHONE, false, null, null, 14), new AudioDevice(DeviceTypes.WIRED_HEADSET, false, null, null, 14), new AudioDevice(DeviceTypes.EARPIECE, false, null, null, 14), new AudioDevice(DeviceTypes.BLUETOOTH_HEADSET, false, null, null, 14)}); ArrayList arrayList = new ArrayList(); for (AudioDevice audioDevice2 : listOf) { @@ -574,13 +586,15 @@ public final class DiscordAudioManager { arrayList.add(audioDevice); } } - this.q = arrayList; - this.r = new SerializedSubject<>(BehaviorSubject.l0(arrayList)); + this.r = arrayList; + this.f2128s = new SerializedSubject<>(BehaviorSubject.l0(arrayList)); DeviceTypes deviceTypes = DeviceTypes.INVALID; - this.f2128s = deviceTypes; - this.t = new SerializedSubject<>(BehaviorSubject.l0(deviceTypes)); - this.u = DeviceTypes.DEFAULT; - this.f2130y = f2127c; + this.t = deviceTypes; + this.u = new SerializedSubject<>(BehaviorSubject.l0(deviceTypes)); + this.f2129x = this.e.getStreamMaxVolume(3); + this.f2130y = new SerializedSubject<>(BehaviorSubject.l0(Integer.valueOf(this.w))); + this.f2131z = DeviceTypes.DEFAULT; + this.D = f2127c; } public static final DiscordAudioManager d() { @@ -595,7 +609,7 @@ public final class DiscordAudioManager { Object obj; DeviceTypes deviceTypes; synchronized (this.i) { - List list2 = this.f2130y; + List list2 = this.D; ListIterator listIterator = list2.listIterator(list2.size()); while (true) { if (!listIterator.hasPrevious()) { @@ -621,7 +635,7 @@ public final class DiscordAudioManager { boolean z3; synchronized (this.i) { z2 = true; - z3 = !this.f2131z; + z3 = !this.E; } if (z3) { AnimatableValueParser.H1("DiscordAudioManager", "Unable to activate audio output outside Discord-requested communication mode"); @@ -639,8 +653,8 @@ public final class DiscordAudioManager { this.e.setSpeakerphoneOn(z2); } synchronized (this.i) { - this.f2128s = deviceTypes; - this.t.j.onNext(deviceTypes); + this.t = deviceTypes; + this.u.j.onNext(deviceTypes); } AnimatableValueParser.D1("DiscordAudioManager", "Activated device: " + deviceTypes); } @@ -671,7 +685,7 @@ public final class DiscordAudioManager { AnimatableValueParser.H1("DiscordAudioManager", "refreshBluetoothHeadset() requires BLUETOOTH permission"); return; } - BluetoothHeadset bluetoothHeadset = this.m; + BluetoothHeadset bluetoothHeadset = this.n; if (bluetoothHeadset == null || (list = bluetoothHeadset.getConnectedDevices()) == null) { list = n.emptyList(); } @@ -683,7 +697,7 @@ public final class DiscordAudioManager { } obj = it.next(); BluetoothDevice bluetoothDevice2 = (BluetoothDevice) obj; - BluetoothHeadset bluetoothHeadset2 = this.m; + BluetoothHeadset bluetoothHeadset2 = this.n; if (bluetoothHeadset2 != null) { z3 = bluetoothHeadset2.isAudioConnected(bluetoothDevice2); continue; @@ -696,7 +710,7 @@ public final class DiscordAudioManager { } } BluetoothDevice bluetoothDevice3 = (BluetoothDevice) obj; - BluetoothHeadset bluetoothHeadset3 = this.m; + BluetoothHeadset bluetoothHeadset3 = this.n; if (bluetoothHeadset3 != null) { c.a.q.k0.d dVar = c.a.q.k0.d.f212c; m.checkNotNullParameter(bluetoothHeadset3, "headsetProfile"); @@ -721,13 +735,13 @@ public final class DiscordAudioManager { if (adapter.isEnabled() && profileConnectionState == 2) { z2 = true; synchronized (this.i) { - List list2 = this.q; + List list2 = this.r; ArrayList arrayList = new ArrayList(o.collectionSizeOrDefault(list2, 10)); for (AudioDevice audioDevice : list2) { - arrayList.add(audioDevice.a.ordinal() != 5 ? AudioDevice.a(audioDevice, null, false, null, null, 15) : AudioDevice.a(audioDevice, null, (!this.f2131z || this.f2128s != DeviceTypes.BLUETOOTH_HEADSET) ? z2 : bluetoothDevice3 != null, bluetoothDevice3 != null ? bluetoothDevice3.getAddress() : null, bluetoothDevice3 != null ? bluetoothDevice3.getName() : null, 1)); + arrayList.add(audioDevice.a.ordinal() != 5 ? AudioDevice.a(audioDevice, null, false, null, null, 15) : AudioDevice.a(audioDevice, null, (!this.E || this.t != DeviceTypes.BLUETOOTH_HEADSET) ? z2 : bluetoothDevice3 != null, bluetoothDevice3 != null ? bluetoothDevice3.getAddress() : null, bluetoothDevice3 != null ? bluetoothDevice3.getName() : null, 1)); } - this.q = arrayList; - this.r.j.onNext(arrayList); + this.r = arrayList; + this.f2128s.j.onNext(arrayList); } return; } @@ -747,41 +761,50 @@ public final class DiscordAudioManager { } } - /* JADX WARNING: Code restructure failed: missing block: B:15:0x0076, code lost: - if (r6.e.requestAudioFocus(r7) == 1) goto L_0x0081; + /* JADX WARNING: Code restructure failed: missing block: B:18:0x0090, code lost: + if (r6.e.requestAudioFocus(r7) == 1) goto L_0x009b; */ - /* JADX WARNING: Code restructure failed: missing block: B:17:0x007f, code lost: - if (r6.e.requestAudioFocus(r3, 0, 1) == 1) goto L_0x0081; + /* JADX WARNING: Code restructure failed: missing block: B:20:0x0099, code lost: + if (r6.e.requestAudioFocus(r1, 0, 1) == 1) goto L_0x009b; */ - /* JADX WARNING: Code restructure failed: missing block: B:41:0x00bf, code lost: - if (r6.e.abandonAudioFocusRequest(r0) == 1) goto L_0x00d5; + /* JADX WARNING: Code restructure failed: missing block: B:49:0x00e6, code lost: + if (r6.e.abandonAudioFocusRequest(r0) == 1) goto L_0x00fc; */ - /* JADX WARNING: Code restructure failed: missing block: B:52:0x00d3, code lost: - if (r6.e.abandonAudioFocus(r0) == 1) goto L_0x00d5; + /* JADX WARNING: Code restructure failed: missing block: B:60:0x00fa, code lost: + if (r6.e.abandonAudioFocus(r0) == 1) goto L_0x00fc; */ - /* JADX WARNING: Removed duplicated region for block: B:55:0x00d8 */ - /* JADX WARNING: Removed duplicated region for block: B:56:0x00e0 */ - /* JADX WARNING: Removed duplicated region for block: B:60:0x00f4 */ - /* JADX WARNING: Removed duplicated region for block: B:63:0x0104 */ - /* JADX WARNING: Removed duplicated region for block: B:66:0x010d */ - /* JADX WARNING: Removed duplicated region for block: B:75:? A[RETURN, SYNTHETIC] */ + /* JADX WARNING: Removed duplicated region for block: B:63:0x00ff */ + /* JADX WARNING: Removed duplicated region for block: B:64:0x0107 */ + /* JADX WARNING: Removed duplicated region for block: B:68:0x011b */ + /* JADX WARNING: Removed duplicated region for block: B:71:0x012b */ + /* JADX WARNING: Removed duplicated region for block: B:74:0x0134 */ + /* JADX WARNING: Removed duplicated region for block: B:83:? A[RETURN, SYNTHETIC] */ public final void h(boolean z2) { boolean z3; boolean z4; AudioFocusRequest audioFocusRequest; + ContentResolver contentResolver; c(); if (!e().b) { AnimatableValueParser.H1("DiscordAudioManager", "MODIFY_AUDIO_SETTINGS is missing. Client will run with reduced functionality"); return; } + Handler handler = null; boolean z5 = false; if (z2) { - this.v = this.e.isSpeakerphoneOn(); - this.w = this.e.isMicrophoneMute(); - this.f2129x = this.e.isBluetoothScoOn(); + Looper myLooper = Looper.myLooper(); + if (myLooper != null) { + handler = new Handler(myLooper); + } + f fVar = new f(this, handler); + this.k.registerContentObserver(Settings.System.CONTENT_URI, true, fVar); + this.v = fVar; + this.A = this.e.isSpeakerphoneOn(); + this.B = this.e.isMicrophoneMute(); + this.C = this.e.isBluetoothScoOn(); i(true); synchronized (this.i) { - AudioManager.OnAudioFocusChangeListener onAudioFocusChangeListener = this.o; + AudioManager.OnAudioFocusChangeListener onAudioFocusChangeListener = this.p; if (onAudioFocusChangeListener != null) { if (Build.VERSION.SDK_INT >= 26) { AudioFocusRequest.Builder builder = new AudioFocusRequest.Builder(1); @@ -789,12 +812,12 @@ public final class DiscordAudioManager { builder2.setUsage(2); builder2.setContentType(1); builder.setAcceptsDelayedFocusGain(true); - Looper myLooper = Looper.myLooper(); - m.checkNotNull(myLooper); - builder.setOnAudioFocusChangeListener(onAudioFocusChangeListener, new Handler(myLooper)); + Looper myLooper2 = Looper.myLooper(); + m.checkNotNull(myLooper2); + builder.setOnAudioFocusChangeListener(onAudioFocusChangeListener, new Handler(myLooper2)); builder.setAudioAttributes(builder2.build()); AudioFocusRequest build = builder.build(); - this.p = build; + this.q = build; } z5 = true; if (z5) { @@ -807,14 +830,19 @@ public final class DiscordAudioManager { l(); return; } + ContentObserver contentObserver = this.v; + if (!(contentObserver == null || (contentResolver = this.k) == null)) { + contentResolver.unregisterContentObserver(contentObserver); + } + this.v = null; b(DeviceTypes.INVALID); synchronized (this.i) { - this.u = DeviceTypes.DEFAULT; + this.f2131z = DeviceTypes.DEFAULT; } i(false); if (Build.VERSION.SDK_INT >= 26) { synchronized (this.i) { - audioFocusRequest = this.p; + audioFocusRequest = this.q; } if (audioFocusRequest != null) { } @@ -823,43 +851,43 @@ public final class DiscordAudioManager { } else { AnimatableValueParser.H1("DiscordAudioManager", "Unable to releaseAudioFocus()"); } - z3 = this.w; + z3 = this.B; if (this.e.isMicrophoneMute() != z3) { this.e.setMicrophoneMute(z3); } - z4 = this.v; + z4 = this.A; if (this.e.isSpeakerphoneOn() != z4) { this.e.setSpeakerphoneOn(z4); } - if (this.f2129x) { + if (this.C) { j(); return; } return; } synchronized (this.i) { - AudioManager.OnAudioFocusChangeListener onAudioFocusChangeListener2 = this.o; + AudioManager.OnAudioFocusChangeListener onAudioFocusChangeListener2 = this.p; if (onAudioFocusChangeListener2 != null) { } } - z3 = this.w; + z3 = this.B; if (this.e.isMicrophoneMute() != z3) { } - z4 = this.v; + z4 = this.A; if (this.e.isSpeakerphoneOn() != z4) { } - if (this.f2129x) { + if (this.C) { } z5 = true; if (!z5) { } - z3 = this.w; + z3 = this.B; if (this.e.isMicrophoneMute() != z3) { } - z4 = this.v; + z4 = this.A; if (this.e.isSpeakerphoneOn() != z4) { } - if (this.f2129x) { + if (this.C) { } } @@ -869,36 +897,36 @@ public final class DiscordAudioManager { } catch (SecurityException unused) { } synchronized (this.i) { - this.f2131z = z2; + this.E = z2; } } public final synchronized void j() { - BluetoothScoState bluetoothScoState = this.n; + BluetoothScoState bluetoothScoState = this.o; BluetoothScoState bluetoothScoState2 = BluetoothScoState.ON; if (bluetoothScoState != bluetoothScoState2) { BluetoothScoState bluetoothScoState3 = BluetoothScoState.TURNING_ON; if (bluetoothScoState != bluetoothScoState3) { if (this.e.isBluetoothScoOn()) { - this.n = bluetoothScoState2; + this.o = bluetoothScoState2; return; } - this.n = bluetoothScoState3; + this.o = bluetoothScoState3; this.e.startBluetoothSco(); } } } public final synchronized void k() { - BluetoothScoState bluetoothScoState = this.n; + BluetoothScoState bluetoothScoState = this.o; if (bluetoothScoState != BluetoothScoState.ON && bluetoothScoState != BluetoothScoState.TURNING_ON) { return; } if (!this.e.isBluetoothScoOn()) { - this.n = BluetoothScoState.OFF; + this.o = BluetoothScoState.OFF; return; } - this.n = BluetoothScoState.TURNING_OFF; + this.o = BluetoothScoState.TURNING_OFF; this.e.stopBluetoothSco(); } @@ -906,11 +934,11 @@ public final class DiscordAudioManager { DeviceTypes deviceTypes; ArrayList arrayList; synchronized (this.i) { - deviceTypes = this.u; + deviceTypes = this.f2131z; } g(); synchronized (this.i) { - List list = this.q; + List list = this.r; arrayList = new ArrayList(o.collectionSizeOrDefault(list, 10)); for (AudioDevice audioDevice : list) { arrayList.add(AudioDevice.a(audioDevice, null, false, null, null, 15)); diff --git a/app/src/main/java/com/discord/stores/StoreAudioManagerV2$init$1.java b/app/src/main/java/com/discord/stores/StoreAudioManagerV2$init$1.java index 4e947ac127..b97c9a5330 100644 --- a/app/src/main/java/com/discord/stores/StoreAudioManagerV2$init$1.java +++ b/app/src/main/java/com/discord/stores/StoreAudioManagerV2$init$1.java @@ -104,6 +104,50 @@ public final class StoreAudioManagerV2$init$1 implements Runnable { } } + /* compiled from: StoreAudioManagerV2.kt */ + /* renamed from: com.discord.stores.StoreAudioManagerV2$init$1$3 reason: invalid class name */ + public static final class AnonymousClass3 extends o implements Function1 { + public final /* synthetic */ StoreAudioManagerV2$init$1 this$0; + + /* compiled from: StoreAudioManagerV2.kt */ + /* renamed from: com.discord.stores.StoreAudioManagerV2$init$1$3$1 reason: invalid class name */ + public static final class AnonymousClass1 extends o implements Function0 { + public final /* synthetic */ int $it; + public final /* synthetic */ AnonymousClass3 this$0; + + /* JADX INFO: super call moved to the top of the method (can break code semantics) */ + public AnonymousClass1(AnonymousClass3 r1, int i) { + super(0); + this.this$0 = r1; + this.$it = i; + } + + @Override // kotlin.jvm.functions.Function0 + /* renamed from: invoke */ + public final void mo1invoke() { + StoreAudioManagerV2.access$updateCurrentMediaVolume(this.this$0.this$0.this$0, this.$it); + } + } + + /* JADX INFO: super call moved to the top of the method (can break code semantics) */ + public AnonymousClass3(StoreAudioManagerV2$init$1 storeAudioManagerV2$init$1) { + super(1); + this.this$0 = storeAudioManagerV2$init$1; + } + + /* Return type fixed from 'java.lang.Object' to match base method */ + /* JADX DEBUG: Method arguments types fixed to match base method, original types: [java.lang.Object] */ + @Override // kotlin.jvm.functions.Function1 + public /* bridge */ /* synthetic */ Unit invoke(Integer num) { + invoke(num.intValue()); + return Unit.a; + } + + public final void invoke(int i) { + StoreAudioManagerV2.access$getDispatcher$p(this.this$0.this$0).schedule(new AnonymousClass1(this, i)); + } + } + public StoreAudioManagerV2$init$1(StoreAudioManagerV2 storeAudioManagerV2) { this.this$0 = storeAudioManagerV2; } @@ -111,11 +155,14 @@ public final class StoreAudioManagerV2$init$1 implements Runnable { @Override // java.lang.Runnable public final void run() { DiscordAudioManager discordAudioManager = DiscordAudioManager.d; - Observable> r = DiscordAudioManager.d().r.r(); + Observable> r = DiscordAudioManager.d().f2128s.r(); m.checkNotNullExpressionValue(r, "audioDevicesSubject.distinctUntilChanged()"); ObservableExtensionsKt.appSubscribe$default(r, this.this$0.getClass(), (Context) null, (Function1) null, (Function1) null, (Function0) null, (Function0) null, new AnonymousClass1(this), 62, (Object) null); - Observable r2 = DiscordAudioManager.d().t.r(); + Observable r2 = DiscordAudioManager.d().u.r(); m.checkNotNullExpressionValue(r2, "activeAudioDeviceSubject.distinctUntilChanged()"); ObservableExtensionsKt.appSubscribe$default(r2, this.this$0.getClass(), (Context) null, (Function1) null, (Function1) null, (Function0) null, (Function0) null, new AnonymousClass2(this), 62, (Object) null); + Observable r3 = DiscordAudioManager.d().f2130y.r(); + m.checkNotNullExpressionValue(r3, "currentMediaVolumeSubject.distinctUntilChanged()"); + ObservableExtensionsKt.appSubscribe$default(r3, this.this$0.getClass(), (Context) null, (Function1) null, (Function1) null, (Function0) null, (Function0) null, new AnonymousClass3(this), 62, (Object) null); } } diff --git a/app/src/main/java/com/discord/stores/StoreAudioManagerV2$selectOutputDevice$1.java b/app/src/main/java/com/discord/stores/StoreAudioManagerV2$selectOutputDevice$1.java index 5a327d3330..d826d7e5ad 100644 --- a/app/src/main/java/com/discord/stores/StoreAudioManagerV2$selectOutputDevice$1.java +++ b/app/src/main/java/com/discord/stores/StoreAudioManagerV2$selectOutputDevice$1.java @@ -33,7 +33,7 @@ public final class StoreAudioManagerV2$selectOutputDevice$1 implements Runnable } AnimatableValueParser.D1("DiscordAudioManager", "setDevice(deviceType=" + deviceTypes + ')'); synchronized (d.i) { - List list = d.q; + List list = d.r; arrayList = new ArrayList(o.collectionSizeOrDefault(list, 10)); for (DiscordAudioManager.AudioDevice audioDevice : list) { arrayList.add(DiscordAudioManager.AudioDevice.a(audioDevice, null, false, null, null, 15)); @@ -42,7 +42,7 @@ public final class StoreAudioManagerV2$selectOutputDevice$1 implements Runnable DiscordAudioManager.DeviceTypes deviceTypes2 = DiscordAudioManager.DeviceTypes.DEFAULT; if (deviceTypes == deviceTypes2) { synchronized (d.i) { - d.u = deviceTypes2; + d.f2131z = deviceTypes2; } d.a(arrayList); return; @@ -57,11 +57,11 @@ public final class StoreAudioManagerV2$selectOutputDevice$1 implements Runnable } if (z2) { synchronized (d.i) { - z3 = true ^ d.q.get(deviceTypes.getValue()).b; + z3 = true ^ d.r.get(deviceTypes.getValue()).b; } if (!z3) { synchronized (d.i) { - d.u = deviceTypes; + d.f2131z = deviceTypes; } d.b(deviceTypes); } diff --git a/app/src/main/java/com/discord/stores/StoreAudioManagerV2$updateMediaVolume$1.java b/app/src/main/java/com/discord/stores/StoreAudioManagerV2$updateMediaVolume$1.java new file mode 100644 index 0000000000..a312a562ba --- /dev/null +++ b/app/src/main/java/com/discord/stores/StoreAudioManagerV2$updateMediaVolume$1.java @@ -0,0 +1,30 @@ +package com.discord.stores; + +import com.airbnb.lottie.parser.AnimatableValueParser; +import com.discord.rtcconnection.audio.DiscordAudioManager; +import d0.a0.a; +/* compiled from: StoreAudioManagerV2.kt */ +public final class StoreAudioManagerV2$updateMediaVolume$1 implements Runnable { + public final /* synthetic */ float $ratio; + + public StoreAudioManagerV2$updateMediaVolume$1(float f) { + this.$ratio = f; + } + + @Override // java.lang.Runnable + public final void run() { + DiscordAudioManager discordAudioManager = DiscordAudioManager.d; + DiscordAudioManager d = DiscordAudioManager.d(); + float f = this.$ratio; + d.c(); + if (f < 0.0f || f > 1.0f) { + AnimatableValueParser.H1("DiscordAudioManager", "Unexpected media volume ratio: " + f); + return; + } + try { + d.e.setStreamVolume(3, a.roundToInt(f * ((float) d.f2129x)), 0); + } catch (SecurityException e) { + AnimatableValueParser.H1("DiscordAudioManager", "Failed to set stream volume: " + e); + } + } +} diff --git a/app/src/main/java/com/discord/stores/StoreAudioManagerV2.java b/app/src/main/java/com/discord/stores/StoreAudioManagerV2.java index 1535a87ca7..3ac6841f43 100644 --- a/app/src/main/java/com/discord/stores/StoreAudioManagerV2.java +++ b/app/src/main/java/com/discord/stores/StoreAudioManagerV2.java @@ -12,6 +12,7 @@ import com.discord.api.voice.state.VoiceState; import com.discord.rtcconnection.RtcConnection; import com.discord.rtcconnection.audio.DiscordAudioManager; import com.discord.stores.updates.ObservationDeck; +import com.discord.utilities.voice.PerceptualVolumeUtils; import d0.t.h0; import d0.t.n; import d0.t.o; @@ -38,6 +39,7 @@ public final class StoreAudioManagerV2 extends StoreV2 { private boolean prevMyVideoOn; private State state; private State stateSnapshot; + private final StoreStreamRtcConnection streamRtcConnectionStore; private final VideoUseDetector videoUseDetector; private final StoreVoiceChannelSelected voiceChannelSelectedStore; @@ -239,16 +241,18 @@ public final class StoreAudioManagerV2 extends StoreV2 { VOICE_ONLY_DEVICE_PRIORITIZATION = n.listOf((Object[]) new DiscordAudioManager.DeviceTypes[]{DiscordAudioManager.DeviceTypes.SPEAKERPHONE, deviceTypes, DiscordAudioManager.DeviceTypes.BLUETOOTH_HEADSET, DiscordAudioManager.DeviceTypes.WIRED_HEADSET}); } - public StoreAudioManagerV2(ObservationDeck observationDeck, Dispatcher dispatcher, StoreVoiceChannelSelected storeVoiceChannelSelected, StoreChannels storeChannels, VideoUseDetector videoUseDetector) { + public StoreAudioManagerV2(ObservationDeck observationDeck, Dispatcher dispatcher, StoreVoiceChannelSelected storeVoiceChannelSelected, StoreChannels storeChannels, StoreStreamRtcConnection storeStreamRtcConnection, VideoUseDetector videoUseDetector) { m.checkNotNullParameter(observationDeck, "observationDeck"); m.checkNotNullParameter(dispatcher, "dispatcher"); m.checkNotNullParameter(storeVoiceChannelSelected, "voiceChannelSelectedStore"); m.checkNotNullParameter(storeChannels, "channelsStore"); + m.checkNotNullParameter(storeStreamRtcConnection, "streamRtcConnectionStore"); m.checkNotNullParameter(videoUseDetector, "videoUseDetector"); this.observationDeck = observationDeck; this.dispatcher = dispatcher; this.voiceChannelSelectedStore = storeVoiceChannelSelected; this.channelsStore = storeChannels; + this.streamRtcConnectionStore = storeStreamRtcConnection; this.videoUseDetector = videoUseDetector; State state = new State(null, null, 3, null); this.state = state; @@ -280,6 +284,10 @@ public final class StoreAudioManagerV2 extends StoreV2 { storeAudioManagerV2.updateAudioDevices(list); } + public static final /* synthetic */ void access$updateCurrentMediaVolume(StoreAudioManagerV2 storeAudioManagerV2, int i) { + storeAudioManagerV2.updateCurrentMediaVolume(i); + } + private final State getAudioManagerState() { return this.stateSnapshot; } @@ -307,6 +315,12 @@ public final class StoreAudioManagerV2 extends StoreV2 { markChanged(); } + @StoreThread + private final void updateCurrentMediaVolume(int i) { + DiscordAudioManager discordAudioManager = DiscordAudioManager.d; + this.streamRtcConnectionStore.updateStreamVolume(PerceptualVolumeUtils.INSTANCE.perceptualToAmplitude((((float) i) / ((float) DiscordAudioManager.d().f2129x)) * 300.0f, 300.0f)); + } + public final DiscordAudioManager.AudioDevice getLastActiveAudioDevice$app_productionCanaryRelease() { return this.lastActiveAudioDevice; } @@ -325,8 +339,8 @@ public final class StoreAudioManagerV2 extends StoreV2 { List list = VOICE_ONLY_DEVICE_PRIORITIZATION; synchronized (d) { m.checkNotNullParameter(list, "newPrioritization"); - if (!m.areEqual(list, d.f2130y)) { - d.f2130y = list; + if (!m.areEqual(list, d.D)) { + d.D = list; d.l(); } } @@ -334,10 +348,10 @@ public final class StoreAudioManagerV2 extends StoreV2 { DiscordAudioManager discordAudioManager2 = DiscordAudioManager.d; DiscordAudioManager d2 = DiscordAudioManager.d(); synchronized (d2) { - List list2 = d2.f2130y; + List list2 = d2.D; List list3 = DiscordAudioManager.f2127c; if (!m.areEqual(list2, list3)) { - d2.f2130y = list3; + d2.D = list3; d2.l(); } } @@ -364,14 +378,14 @@ public final class StoreAudioManagerV2 extends StoreV2 { DiscordAudioManager discordAudioManager = DiscordAudioManager.d; DiscordAudioManager d = DiscordAudioManager.d(); synchronized (d) { - if (d.q.get(DiscordAudioManager.DeviceTypes.EARPIECE.getValue()).b) { - List list = d.q; + if (d.r.get(DiscordAudioManager.DeviceTypes.EARPIECE.getValue()).b) { + List list = d.r; ArrayList arrayList = new ArrayList(o.collectionSizeOrDefault(list, 10)); for (DiscordAudioManager.AudioDevice audioDevice : list) { arrayList.add(audioDevice.a.ordinal() != 4 ? DiscordAudioManager.AudioDevice.a(audioDevice, null, false, null, null, 15) : DiscordAudioManager.AudioDevice.a(audioDevice, null, false, null, null, 13)); } - d.q = arrayList; - d.r.j.onNext(arrayList); + d.r = arrayList; + d.f2128s.j.onNext(arrayList); d.l(); } } @@ -379,14 +393,14 @@ public final class StoreAudioManagerV2 extends StoreV2 { DiscordAudioManager discordAudioManager2 = DiscordAudioManager.d; DiscordAudioManager d2 = DiscordAudioManager.d(); synchronized (d2) { - if (d2.q.get(DiscordAudioManager.DeviceTypes.EARPIECE.getValue()).b != d2.h) { - List list2 = d2.q; + if (d2.r.get(DiscordAudioManager.DeviceTypes.EARPIECE.getValue()).b != d2.h) { + List list2 = d2.r; ArrayList arrayList2 = new ArrayList(o.collectionSizeOrDefault(list2, 10)); for (DiscordAudioManager.AudioDevice audioDevice2 : list2) { arrayList2.add(audioDevice2.a.ordinal() != 4 ? DiscordAudioManager.AudioDevice.a(audioDevice2, null, false, null, null, 15) : DiscordAudioManager.AudioDevice.a(audioDevice2, null, d2.h, null, null, 13)); } - d2.q = arrayList2; - d2.r.j.onNext(arrayList2); + d2.r = arrayList2; + d2.f2128s.j.onNext(arrayList2); d2.l(); } } @@ -441,4 +455,12 @@ public final class StoreAudioManagerV2 extends StoreV2 { public final void toggleSpeakerOutput() { this.dispatcher.schedule(new StoreAudioManagerV2$toggleSpeakerOutput$1(this)); } + + public final void updateMediaVolume(float f) { + Handler handler = this.audioManagerHandler; + if (handler == null) { + m.throwUninitializedPropertyAccessException("audioManagerHandler"); + } + handler.post(new StoreAudioManagerV2$updateMediaVolume$1(f)); + } } diff --git a/app/src/main/java/com/discord/stores/StoreDirectories$removeServerFromDirectory$1.java b/app/src/main/java/com/discord/stores/StoreDirectories$removeServerFromDirectory$1.java index 5909fbe1b2..e20045d820 100644 --- a/app/src/main/java/com/discord/stores/StoreDirectories$removeServerFromDirectory$1.java +++ b/app/src/main/java/com/discord/stores/StoreDirectories$removeServerFromDirectory$1.java @@ -1,75 +1,23 @@ package com.discord.stores; +import com.discord.analytics.generated.events.network_action.TrackNetworkActionDirectoryGuildEntryDelete; +import com.discord.analytics.generated.traits.TrackNetworkMetadataReceiver; import com.discord.api.directory.DirectoryEntry; -import com.discord.stores.utilities.RestCallState; -import com.discord.stores.utilities.Success; -import d0.t.n; -import d0.z.d.m; import d0.z.d.o; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import kotlin.Unit; -import kotlin.jvm.functions.Function0; import kotlin.jvm.functions.Function1; /* compiled from: StoreDirectories.kt */ -public final class StoreDirectories$removeServerFromDirectory$1 extends o implements Function1, Unit> { +public final class StoreDirectories$removeServerFromDirectory$1 extends o implements Function1 { public final /* synthetic */ long $channelId; public final /* synthetic */ long $guildId; - public final /* synthetic */ StoreDirectories this$0; - - /* compiled from: StoreDirectories.kt */ - /* renamed from: com.discord.stores.StoreDirectories$removeServerFromDirectory$1$1 reason: invalid class name */ - public static final class AnonymousClass1 extends o implements Function0 { - public final /* synthetic */ StoreDirectories$removeServerFromDirectory$1 this$0; - - /* JADX INFO: super call moved to the top of the method (can break code semantics) */ - public AnonymousClass1(StoreDirectories$removeServerFromDirectory$1 storeDirectories$removeServerFromDirectory$1) { - super(0); - this.this$0 = storeDirectories$removeServerFromDirectory$1; - } - - @Override // kotlin.jvm.functions.Function0 - /* renamed from: invoke */ - public final void mo1invoke() { - Map access$getDirectoriesMap$p = StoreDirectories.access$getDirectoriesMap$p(this.this$0.this$0); - Long valueOf = Long.valueOf(this.this$0.$channelId); - RestCallState restCallState = (RestCallState) StoreDirectories.access$getDirectoriesMap$p(this.this$0.this$0).get(Long.valueOf(this.this$0.$channelId)); - List list = restCallState != null ? (List) restCallState.invoke() : null; - if (list == null) { - list = n.emptyList(); - } - ArrayList arrayList = new ArrayList(); - for (Object obj : list) { - if (((DirectoryEntry) obj).c().g() != this.this$0.$guildId) { - arrayList.add(obj); - } - } - access$getDirectoriesMap$p.put(valueOf, new Success(arrayList)); - this.this$0.this$0.markChanged(); - } - } /* JADX INFO: super call moved to the top of the method (can break code semantics) */ - public StoreDirectories$removeServerFromDirectory$1(StoreDirectories storeDirectories, long j, long j2) { + public StoreDirectories$removeServerFromDirectory$1(long j, long j2) { super(1); - this.this$0 = storeDirectories; this.$channelId = j; this.$guildId = j2; } - /* Return type fixed from 'java.lang.Object' to match base method */ - /* JADX DEBUG: Method arguments types fixed to match base method, original types: [java.lang.Object] */ - @Override // kotlin.jvm.functions.Function1 - public /* bridge */ /* synthetic */ Unit invoke(RestCallState restCallState) { - invoke((RestCallState) restCallState); - return Unit.a; - } - - public final void invoke(RestCallState restCallState) { - m.checkNotNullParameter(restCallState, "it"); - if (restCallState instanceof Success) { - StoreDirectories.access$getDispatcher$p(this.this$0).schedule(new AnonymousClass1(this)); - } + public final TrackNetworkMetadataReceiver invoke(DirectoryEntry directoryEntry) { + return new TrackNetworkActionDirectoryGuildEntryDelete(Long.valueOf(this.$channelId), Long.valueOf(this.$guildId)); } } diff --git a/app/src/main/java/com/discord/stores/StoreDirectories$removeServerFromDirectory$2.java b/app/src/main/java/com/discord/stores/StoreDirectories$removeServerFromDirectory$2.java new file mode 100644 index 0000000000..faa64b7f23 --- /dev/null +++ b/app/src/main/java/com/discord/stores/StoreDirectories$removeServerFromDirectory$2.java @@ -0,0 +1,75 @@ +package com.discord.stores; + +import com.discord.api.directory.DirectoryEntry; +import com.discord.stores.utilities.RestCallState; +import com.discord.stores.utilities.Success; +import d0.t.n; +import d0.z.d.m; +import d0.z.d.o; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import kotlin.Unit; +import kotlin.jvm.functions.Function0; +import kotlin.jvm.functions.Function1; +/* compiled from: StoreDirectories.kt */ +public final class StoreDirectories$removeServerFromDirectory$2 extends o implements Function1, Unit> { + public final /* synthetic */ long $channelId; + public final /* synthetic */ long $guildId; + public final /* synthetic */ StoreDirectories this$0; + + /* compiled from: StoreDirectories.kt */ + /* renamed from: com.discord.stores.StoreDirectories$removeServerFromDirectory$2$1 reason: invalid class name */ + public static final class AnonymousClass1 extends o implements Function0 { + public final /* synthetic */ StoreDirectories$removeServerFromDirectory$2 this$0; + + /* JADX INFO: super call moved to the top of the method (can break code semantics) */ + public AnonymousClass1(StoreDirectories$removeServerFromDirectory$2 storeDirectories$removeServerFromDirectory$2) { + super(0); + this.this$0 = storeDirectories$removeServerFromDirectory$2; + } + + @Override // kotlin.jvm.functions.Function0 + /* renamed from: invoke */ + public final void mo1invoke() { + Map access$getDirectoriesMap$p = StoreDirectories.access$getDirectoriesMap$p(this.this$0.this$0); + Long valueOf = Long.valueOf(this.this$0.$channelId); + RestCallState restCallState = (RestCallState) StoreDirectories.access$getDirectoriesMap$p(this.this$0.this$0).get(Long.valueOf(this.this$0.$channelId)); + List list = restCallState != null ? (List) restCallState.invoke() : null; + if (list == null) { + list = n.emptyList(); + } + ArrayList arrayList = new ArrayList(); + for (Object obj : list) { + if (((DirectoryEntry) obj).c().g() != this.this$0.$guildId) { + arrayList.add(obj); + } + } + access$getDirectoriesMap$p.put(valueOf, new Success(arrayList)); + this.this$0.this$0.markChanged(); + } + } + + /* JADX INFO: super call moved to the top of the method (can break code semantics) */ + public StoreDirectories$removeServerFromDirectory$2(StoreDirectories storeDirectories, long j, long j2) { + super(1); + this.this$0 = storeDirectories; + this.$channelId = j; + this.$guildId = j2; + } + + /* Return type fixed from 'java.lang.Object' to match base method */ + /* JADX DEBUG: Method arguments types fixed to match base method, original types: [java.lang.Object] */ + @Override // kotlin.jvm.functions.Function1 + public /* bridge */ /* synthetic */ Unit invoke(RestCallState restCallState) { + invoke((RestCallState) restCallState); + return Unit.a; + } + + public final void invoke(RestCallState restCallState) { + m.checkNotNullParameter(restCallState, "it"); + if (restCallState instanceof Success) { + StoreDirectories.access$getDispatcher$p(this.this$0).schedule(new AnonymousClass1(this)); + } + } +} diff --git a/app/src/main/java/com/discord/stores/StoreDirectories.java b/app/src/main/java/com/discord/stores/StoreDirectories.java index 1968dd5132..f708e83225 100644 --- a/app/src/main/java/com/discord/stores/StoreDirectories.java +++ b/app/src/main/java/com/discord/stores/StoreDirectories.java @@ -134,7 +134,7 @@ public final class StoreDirectories extends StoreV2 { } public final void removeServerFromDirectory(long j, long j2) { - RestCallStateKt.executeRequest(this.restApi.removeServerFromHub(j, j2), new StoreDirectories$removeServerFromDirectory$1(this, j, j2)); + RestCallStateKt.executeRequest(RestCallStateKt.logNetworkAction(this.restApi.removeServerFromHub(j, j2), StoreDirectories.class, new StoreDirectories$removeServerFromDirectory$1(j, j2)), new StoreDirectories$removeServerFromDirectory$2(this, j, j2)); } @Override // com.discord.stores.StoreV2 diff --git a/app/src/main/java/com/discord/stores/StoreGuildScheduledEvents$getGuildScheduledEventUserCounts$1.java b/app/src/main/java/com/discord/stores/StoreGuildScheduledEvents$fetchGuildScheduledEventUserCounts$1.java similarity index 73% rename from app/src/main/java/com/discord/stores/StoreGuildScheduledEvents$getGuildScheduledEventUserCounts$1.java rename to app/src/main/java/com/discord/stores/StoreGuildScheduledEvents$fetchGuildScheduledEventUserCounts$1.java index b97dbccfdf..0057859132 100644 --- a/app/src/main/java/com/discord/stores/StoreGuildScheduledEvents$getGuildScheduledEventUserCounts$1.java +++ b/app/src/main/java/com/discord/stores/StoreGuildScheduledEvents$fetchGuildScheduledEventUserCounts$1.java @@ -10,20 +10,20 @@ import kotlin.Unit; import kotlin.jvm.functions.Function0; import kotlin.jvm.functions.Function1; /* compiled from: StoreGuildScheduledEvents.kt */ -public final class StoreGuildScheduledEvents$getGuildScheduledEventUserCounts$1 extends o implements Function1, Unit> { +public final class StoreGuildScheduledEvents$fetchGuildScheduledEventUserCounts$1 extends o implements Function1, Unit> { public final /* synthetic */ long $guildId; public final /* synthetic */ StoreGuildScheduledEvents this$0; /* compiled from: StoreGuildScheduledEvents.kt */ - /* renamed from: com.discord.stores.StoreGuildScheduledEvents$getGuildScheduledEventUserCounts$1$1 reason: invalid class name */ + /* renamed from: com.discord.stores.StoreGuildScheduledEvents$fetchGuildScheduledEventUserCounts$1$1 reason: invalid class name */ public static final class AnonymousClass1 extends o implements Function0 { public final /* synthetic */ List $events; - public final /* synthetic */ StoreGuildScheduledEvents$getGuildScheduledEventUserCounts$1 this$0; + public final /* synthetic */ StoreGuildScheduledEvents$fetchGuildScheduledEventUserCounts$1 this$0; /* JADX INFO: super call moved to the top of the method (can break code semantics) */ - public AnonymousClass1(StoreGuildScheduledEvents$getGuildScheduledEventUserCounts$1 storeGuildScheduledEvents$getGuildScheduledEventUserCounts$1, List list) { + public AnonymousClass1(StoreGuildScheduledEvents$fetchGuildScheduledEventUserCounts$1 storeGuildScheduledEvents$fetchGuildScheduledEventUserCounts$1, List list) { super(0); - this.this$0 = storeGuildScheduledEvents$getGuildScheduledEventUserCounts$1; + this.this$0 = storeGuildScheduledEvents$fetchGuildScheduledEventUserCounts$1; this.$events = list; } @@ -36,7 +36,7 @@ public final class StoreGuildScheduledEvents$getGuildScheduledEventUserCounts$1 } /* JADX INFO: super call moved to the top of the method (can break code semantics) */ - public StoreGuildScheduledEvents$getGuildScheduledEventUserCounts$1(StoreGuildScheduledEvents storeGuildScheduledEvents, long j) { + public StoreGuildScheduledEvents$fetchGuildScheduledEventUserCounts$1(StoreGuildScheduledEvents storeGuildScheduledEvents, long j) { super(1); this.this$0 = storeGuildScheduledEvents; this.$guildId = j; diff --git a/app/src/main/java/com/discord/stores/StoreGuildScheduledEvents$fetchUserGuildScheduledEvents$1.java b/app/src/main/java/com/discord/stores/StoreGuildScheduledEvents$fetchUserGuildScheduledEvents$1.java new file mode 100644 index 0000000000..f9d3295da2 --- /dev/null +++ b/app/src/main/java/com/discord/stores/StoreGuildScheduledEvents$fetchUserGuildScheduledEvents$1.java @@ -0,0 +1,63 @@ +package com.discord.stores; + +import com.discord.api.guildscheduledevent.GuildScheduledEvent; +import d0.t.h0; +import d0.z.d.m; +import d0.z.d.o; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import kotlin.Unit; +import kotlin.jvm.functions.Function0; +import kotlin.jvm.functions.Function1; +/* compiled from: StoreGuildScheduledEvents.kt */ +public final class StoreGuildScheduledEvents$fetchUserGuildScheduledEvents$1 extends o implements Function1, Unit> { + public final /* synthetic */ StoreGuildScheduledEvents this$0; + + /* compiled from: StoreGuildScheduledEvents.kt */ + /* renamed from: com.discord.stores.StoreGuildScheduledEvents$fetchUserGuildScheduledEvents$1$1 reason: invalid class name */ + public static final class AnonymousClass1 extends o implements Function0 { + public final /* synthetic */ List $events; + public final /* synthetic */ StoreGuildScheduledEvents$fetchUserGuildScheduledEvents$1 this$0; + + /* JADX INFO: super call moved to the top of the method (can break code semantics) */ + public AnonymousClass1(StoreGuildScheduledEvents$fetchUserGuildScheduledEvents$1 storeGuildScheduledEvents$fetchUserGuildScheduledEvents$1, List list) { + super(0); + this.this$0 = storeGuildScheduledEvents$fetchUserGuildScheduledEvents$1; + this.$events = list; + } + + @Override // kotlin.jvm.functions.Function0 + /* renamed from: invoke */ + public final void mo1invoke() { + StoreGuildScheduledEvents.access$getUserGuildScheduledEvents$p(this.this$0.this$0).clear(); + HashMap access$getUserGuildScheduledEvents$p = StoreGuildScheduledEvents.access$getUserGuildScheduledEvents$p(this.this$0.this$0); + List list = this.$events; + ArrayList arrayList = new ArrayList(d0.t.o.collectionSizeOrDefault(list, 10)); + for (GuildScheduledEvent guildScheduledEvent : list) { + arrayList.add(d0.o.to(Long.valueOf(guildScheduledEvent.e()), guildScheduledEvent)); + } + h0.putAll(access$getUserGuildScheduledEvents$p, arrayList); + this.this$0.this$0.markChanged(); + } + } + + /* JADX INFO: super call moved to the top of the method (can break code semantics) */ + public StoreGuildScheduledEvents$fetchUserGuildScheduledEvents$1(StoreGuildScheduledEvents storeGuildScheduledEvents) { + super(1); + this.this$0 = storeGuildScheduledEvents; + } + + /* Return type fixed from 'java.lang.Object' to match base method */ + /* JADX DEBUG: Method arguments types fixed to match base method, original types: [java.lang.Object] */ + @Override // kotlin.jvm.functions.Function1 + public /* bridge */ /* synthetic */ Unit invoke(List list) { + invoke((List) list); + return Unit.a; + } + + public final void invoke(List list) { + m.checkNotNullParameter(list, "events"); + StoreGuildScheduledEvents.access$getDispatcher$p(this.this$0).schedule(new AnonymousClass1(this, list)); + } +} diff --git a/app/src/main/java/com/discord/stores/StoreGuildScheduledEvents$observeGuildScheduledEvents$1.java b/app/src/main/java/com/discord/stores/StoreGuildScheduledEvents$observeGuildScheduledEvents$1.java index fabf55a1bc..2fcd4befda 100644 --- a/app/src/main/java/com/discord/stores/StoreGuildScheduledEvents$observeGuildScheduledEvents$1.java +++ b/app/src/main/java/com/discord/stores/StoreGuildScheduledEvents$observeGuildScheduledEvents$1.java @@ -1,17 +1,8 @@ package com.discord.stores; import com.discord.api.guildscheduledevent.GuildScheduledEvent; -import com.discord.api.guildscheduledevent.GuildScheduledEventStatus; -import com.discord.api.permission.Permission; -import com.discord.utilities.guildscheduledevent.GuildScheduledEventTiming; -import com.discord.utilities.guildscheduledevent.GuildScheduledEventUtilitiesKt; -import com.discord.utilities.permissions.PermissionUtils; -import d0.t.n; import d0.z.d.o; -import java.util.ArrayList; -import java.util.Iterator; import java.util.List; -import java.util.Map; import kotlin.jvm.functions.Function0; /* compiled from: StoreGuildScheduledEvents.kt */ public final class StoreGuildScheduledEvents$observeGuildScheduledEvents$1 extends o implements Function0> { @@ -30,49 +21,9 @@ public final class StoreGuildScheduledEvents$observeGuildScheduledEvents$1 exten } /* Return type fixed from 'java.util.List' to match base method */ - /* JADX WARNING: Removed duplicated region for block: B:34:0x0094 A[SYNTHETIC] */ - /* JADX WARNING: Removed duplicated region for block: B:37:0x005b A[SYNTHETIC] */ @Override // kotlin.jvm.functions.Function0 /* renamed from: invoke */ public final List mo1invoke() { - boolean z2; - Map permissionsByChannel = StoreGuildScheduledEvents.access$getPermissionsStore$p(this.this$0).getPermissionsByChannel(); - List list = (List) StoreGuildScheduledEvents.access$getGuildScheduledEventsSnapshot$p(this.this$0).get(Long.valueOf(this.$guildId)); - if (list == null) { - return n.emptyList(); - } - ArrayList arrayList = new ArrayList(); - Iterator it = list.iterator(); - while (true) { - boolean z3 = true; - if (!it.hasNext()) { - break; - } - Object next = it.next(); - GuildScheduledEvent guildScheduledEvent = (GuildScheduledEvent) next; - if (this.$filterExpired && GuildScheduledEventUtilitiesKt.getEventTiming(guildScheduledEvent) == GuildScheduledEventTiming.EXPIRED && guildScheduledEvent.h() != GuildScheduledEventStatus.ACTIVE) { - z3 = false; - } - if (z3) { - arrayList.add(next); - } - } - ArrayList arrayList2 = new ArrayList(); - for (Object obj : arrayList) { - GuildScheduledEvent guildScheduledEvent2 = (GuildScheduledEvent) obj; - if (this.$filterInaccessible) { - Long l = permissionsByChannel.get(Long.valueOf(guildScheduledEvent2.b())); - if (!(l != null ? PermissionUtils.can(Permission.VIEW_CHANNEL, Long.valueOf(l.longValue())) : false)) { - z2 = false; - if (!z2) { - arrayList2.add(obj); - } - } - } - z2 = true; - if (!z2) { - } - } - return arrayList2; + return this.this$0.getGuildScheduledEvents(this.$guildId, this.$filterExpired, this.$filterInaccessible); } } diff --git a/app/src/main/java/com/discord/stores/StoreGuildScheduledEvents$observeUserGuildScheduledEvents$1.java b/app/src/main/java/com/discord/stores/StoreGuildScheduledEvents$observeUserGuildScheduledEvents$1.java deleted file mode 100644 index 60386aaabf..0000000000 --- a/app/src/main/java/com/discord/stores/StoreGuildScheduledEvents$observeUserGuildScheduledEvents$1.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.discord.stores; - -import android.content.Context; -import com.discord.api.guildscheduledevent.GuildScheduledEvent; -import com.discord.stores.updates.ObservationDeck; -import com.discord.utilities.rest.RestAPI; -import com.discord.utilities.rx.ObservableExtensionsKt; -import d0.t.h0; -import d0.z.d.m; -import d0.z.d.o; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import kotlin.Unit; -import kotlin.jvm.functions.Function0; -import kotlin.jvm.functions.Function1; -import rx.Observable; -import rx.functions.Func0; -/* compiled from: StoreGuildScheduledEvents.kt */ -public final class StoreGuildScheduledEvents$observeUserGuildScheduledEvents$1 implements Func0>> { - public final /* synthetic */ StoreGuildScheduledEvents this$0; - - /* compiled from: StoreGuildScheduledEvents.kt */ - /* renamed from: com.discord.stores.StoreGuildScheduledEvents$observeUserGuildScheduledEvents$1$1 reason: invalid class name */ - public static final class AnonymousClass1 extends o implements Function1, Unit> { - public final /* synthetic */ StoreGuildScheduledEvents$observeUserGuildScheduledEvents$1 this$0; - - /* compiled from: StoreGuildScheduledEvents.kt */ - /* renamed from: com.discord.stores.StoreGuildScheduledEvents$observeUserGuildScheduledEvents$1$1$1 reason: invalid class name */ - public static final class AnonymousClass1 extends o implements Function0 { - public final /* synthetic */ List $events; - public final /* synthetic */ AnonymousClass1 this$0; - - /* JADX INFO: super call moved to the top of the method (can break code semantics) */ - public AnonymousClass1(AnonymousClass1 r1, List list) { - super(0); - this.this$0 = r1; - this.$events = list; - } - - @Override // kotlin.jvm.functions.Function0 - /* renamed from: invoke */ - public final void mo1invoke() { - StoreGuildScheduledEvents.access$getUserGuildScheduledEvents$p(this.this$0.this$0.this$0).clear(); - HashMap access$getUserGuildScheduledEvents$p = StoreGuildScheduledEvents.access$getUserGuildScheduledEvents$p(this.this$0.this$0.this$0); - List list = this.$events; - ArrayList arrayList = new ArrayList(d0.t.o.collectionSizeOrDefault(list, 10)); - for (GuildScheduledEvent guildScheduledEvent : list) { - arrayList.add(d0.o.to(Long.valueOf(guildScheduledEvent.e()), guildScheduledEvent)); - } - h0.putAll(access$getUserGuildScheduledEvents$p, arrayList); - this.this$0.this$0.this$0.markChanged(); - } - } - - /* JADX INFO: super call moved to the top of the method (can break code semantics) */ - public AnonymousClass1(StoreGuildScheduledEvents$observeUserGuildScheduledEvents$1 storeGuildScheduledEvents$observeUserGuildScheduledEvents$1) { - super(1); - this.this$0 = storeGuildScheduledEvents$observeUserGuildScheduledEvents$1; - } - - /* Return type fixed from 'java.lang.Object' to match base method */ - /* JADX DEBUG: Method arguments types fixed to match base method, original types: [java.lang.Object] */ - @Override // kotlin.jvm.functions.Function1 - public /* bridge */ /* synthetic */ Unit invoke(List list) { - invoke((List) list); - return Unit.a; - } - - public final void invoke(List list) { - m.checkNotNullParameter(list, "events"); - StoreGuildScheduledEvents.access$getDispatcher$p(this.this$0.this$0).schedule(new AnonymousClass1(this, list)); - } - } - - /* compiled from: StoreGuildScheduledEvents.kt */ - /* renamed from: com.discord.stores.StoreGuildScheduledEvents$observeUserGuildScheduledEvents$1$2 reason: invalid class name */ - public static final class AnonymousClass2 extends o implements Function0> { - public final /* synthetic */ StoreGuildScheduledEvents$observeUserGuildScheduledEvents$1 this$0; - - /* JADX INFO: super call moved to the top of the method (can break code semantics) */ - public AnonymousClass2(StoreGuildScheduledEvents$observeUserGuildScheduledEvents$1 storeGuildScheduledEvents$observeUserGuildScheduledEvents$1) { - super(0); - this.this$0 = storeGuildScheduledEvents$observeUserGuildScheduledEvents$1; - } - - /* Return type fixed from 'java.util.Map' to match base method */ - @Override // kotlin.jvm.functions.Function0 - /* renamed from: invoke */ - public final Map mo1invoke() { - return StoreGuildScheduledEvents.access$getUserGuildScheduledEventsSnapshot$p(this.this$0.this$0); - } - } - - public StoreGuildScheduledEvents$observeUserGuildScheduledEvents$1(StoreGuildScheduledEvents storeGuildScheduledEvents) { - this.this$0 = storeGuildScheduledEvents; - } - - @Override // rx.functions.Func0, java.util.concurrent.Callable - public final Observable> call() { - ObservableExtensionsKt.appSubscribe$default(ObservableExtensionsKt.restSubscribeOn$default(RestAPI.Companion.getApi().getUserGuildScheduledEvents(), false, 1, null), this.this$0.getClass(), (Context) null, (Function1) null, (Function1) null, (Function0) null, (Function0) null, new AnonymousClass1(this), 62, (Object) null); - return ObservationDeck.connectRx$default(StoreGuildScheduledEvents.access$getObservationDeck$p(this.this$0), new ObservationDeck.UpdateSource[]{this.this$0}, false, null, null, new AnonymousClass2(this), 14, null); - } -} diff --git a/app/src/main/java/com/discord/stores/StoreGuildScheduledEvents.java b/app/src/main/java/com/discord/stores/StoreGuildScheduledEvents.java index 9e16b8a19e..6d2d34b7bb 100644 --- a/app/src/main/java/com/discord/stores/StoreGuildScheduledEvents.java +++ b/app/src/main/java/com/discord/stores/StoreGuildScheduledEvents.java @@ -3,15 +3,21 @@ package com.discord.stores; import android.content.Context; import com.discord.api.guild.Guild; import com.discord.api.guildscheduledevent.GuildScheduledEvent; +import com.discord.api.guildscheduledevent.GuildScheduledEventStatus; import com.discord.api.guildscheduledevent.GuildScheduledEventUserUpdate; +import com.discord.api.permission.Permission; import com.discord.models.domain.ModelPayload; import com.discord.stores.updates.ObservationDeck; +import com.discord.utilities.guildscheduledevent.GuildScheduledEventTiming; +import com.discord.utilities.guildscheduledevent.GuildScheduledEventUtilitiesKt; +import com.discord.utilities.permissions.PermissionUtils; import com.discord.utilities.rest.RestAPI; import com.discord.utilities.rx.ObservableExtensionsKt; import d0.t.h0; import d0.t.n; import d0.t.o; import d0.z.d.m; +import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; @@ -56,18 +62,6 @@ public final class StoreGuildScheduledEvents extends StoreV2 { return storeGuildScheduledEvents.guildScheduledEvents; } - public static final /* synthetic */ Map access$getGuildScheduledEventsSnapshot$p(StoreGuildScheduledEvents storeGuildScheduledEvents) { - return storeGuildScheduledEvents.guildScheduledEventsSnapshot; - } - - public static final /* synthetic */ ObservationDeck access$getObservationDeck$p(StoreGuildScheduledEvents storeGuildScheduledEvents) { - return storeGuildScheduledEvents.observationDeck; - } - - public static final /* synthetic */ StorePermissions access$getPermissionsStore$p(StoreGuildScheduledEvents storeGuildScheduledEvents) { - return storeGuildScheduledEvents.permissionsStore; - } - public static final /* synthetic */ HashSet access$getRsvpsAwaitingNetwork$p(StoreGuildScheduledEvents storeGuildScheduledEvents) { return storeGuildScheduledEvents.rsvpsAwaitingNetwork; } @@ -76,18 +70,6 @@ public final class StoreGuildScheduledEvents extends StoreV2 { return storeGuildScheduledEvents.userGuildScheduledEvents; } - public static final /* synthetic */ Map access$getUserGuildScheduledEventsSnapshot$p(StoreGuildScheduledEvents storeGuildScheduledEvents) { - return storeGuildScheduledEvents.userGuildScheduledEventsSnapshot; - } - - public static final /* synthetic */ void access$setGuildScheduledEventsSnapshot$p(StoreGuildScheduledEvents storeGuildScheduledEvents, Map map) { - storeGuildScheduledEvents.guildScheduledEventsSnapshot = map; - } - - public static final /* synthetic */ void access$setUserGuildScheduledEventsSnapshot$p(StoreGuildScheduledEvents storeGuildScheduledEvents, Map map) { - storeGuildScheduledEvents.userGuildScheduledEventsSnapshot = map; - } - private final GuildScheduledEvent findEventFromStore(GuildScheduledEvent guildScheduledEvent) { GuildScheduledEvent findEventFromStore = findEventFromStore(guildScheduledEvent.e(), Long.valueOf(guildScheduledEvent.d())); return findEventFromStore != null ? findEventFromStore : guildScheduledEvent; @@ -100,6 +82,16 @@ public final class StoreGuildScheduledEvents extends StoreV2 { return storeGuildScheduledEvents.findEventFromStore(j, l); } + public static /* synthetic */ List getGuildScheduledEvents$default(StoreGuildScheduledEvents storeGuildScheduledEvents, long j, boolean z2, boolean z3, int i, Object obj) { + if ((i & 2) != 0) { + z2 = true; + } + if ((i & 4) != 0) { + z3 = true; + } + return storeGuildScheduledEvents.getGuildScheduledEvents(j, z2, z3); + } + public static /* synthetic */ Observable observeGuildScheduledEvents$default(StoreGuildScheduledEvents storeGuildScheduledEvents, long j, boolean z2, boolean z3, int i, Object obj) { if ((i & 2) != 0) { z2 = true; @@ -274,6 +266,17 @@ public final class StoreGuildScheduledEvents extends StoreV2 { markChanged(); } + public final void fetchGuildScheduledEventUserCounts(long j) { + List list = (List) this.guildScheduledEventsSnapshot.get(Long.valueOf(j)); + if (list != null && (!list.isEmpty())) { + ObservableExtensionsKt.appSubscribe$default(ObservableExtensionsKt.restSubscribeOn$default(RestAPI.Companion.getApi().getGuildScheduledEvents(j, true), false, 1, null), StoreGuildScheduledEvents.class, (Context) null, (Function1) null, (Function1) null, (Function0) null, (Function0) null, new StoreGuildScheduledEvents$fetchGuildScheduledEventUserCounts$1(this, j), 62, (Object) null); + } + } + + public final void fetchUserGuildScheduledEvents() { + ObservableExtensionsKt.appSubscribe$default(ObservableExtensionsKt.restSubscribeOn$default(RestAPI.Companion.getApi().getUserGuildScheduledEvents(), false, 1, null), StoreGuildScheduledEvents.class, (Context) null, (Function1) null, (Function1) null, (Function0) null, (Function0) null, new StoreGuildScheduledEvents$fetchUserGuildScheduledEvents$1(this), 62, (Object) null); + } + /* JADX WARNING: Code restructure failed: missing block: B:15:0x003b, code lost: if (r3 != null) goto L_0x006a; */ @@ -331,16 +334,48 @@ public final class StoreGuildScheduledEvents extends StoreV2 { return guildScheduledEvent != null ? guildScheduledEvent : this.userGuildScheduledEvents.get(Long.valueOf(j)); } - public final void getGuildScheduledEventUserCounts(long j) { + /* JADX WARNING: Removed duplicated region for block: B:35:0x0086 A[SYNTHETIC] */ + /* JADX WARNING: Removed duplicated region for block: B:37:0x004f A[SYNTHETIC] */ + public final List getGuildScheduledEvents(long j, boolean z2, boolean z3) { + boolean z4; + Map permissionsByChannel = this.permissionsStore.getPermissionsByChannel(); List list = (List) this.guildScheduledEventsSnapshot.get(Long.valueOf(j)); - if (list != null && (!list.isEmpty())) { - ObservableExtensionsKt.appSubscribe$default(ObservableExtensionsKt.restSubscribeOn$default(RestAPI.Companion.getApi().getGuildScheduledEvents(j, true), false, 1, null), StoreGuildScheduledEvents.class, (Context) null, (Function1) null, (Function1) null, (Function0) null, (Function0) null, new StoreGuildScheduledEvents$getGuildScheduledEventUserCounts$1(this, j), 62, (Object) null); + if (list == null) { + return n.emptyList(); } - } - - public final List getGuildScheduledEvents(long j) { - List list = (List) this.guildScheduledEventsSnapshot.get(Long.valueOf(j)); - return list != null ? list : n.emptyList(); + ArrayList arrayList = new ArrayList(); + Iterator it = list.iterator(); + while (true) { + boolean z5 = true; + if (!it.hasNext()) { + break; + } + Object next = it.next(); + GuildScheduledEvent guildScheduledEvent = (GuildScheduledEvent) next; + if (z2 && GuildScheduledEventUtilitiesKt.getEventTiming(guildScheduledEvent) == GuildScheduledEventTiming.EXPIRED && guildScheduledEvent.h() != GuildScheduledEventStatus.ACTIVE) { + z5 = false; + } + if (z5) { + arrayList.add(next); + } + } + ArrayList arrayList2 = new ArrayList(); + for (Object obj : arrayList) { + GuildScheduledEvent guildScheduledEvent2 = (GuildScheduledEvent) obj; + if (z3) { + Long l = permissionsByChannel.get(Long.valueOf(guildScheduledEvent2.b())); + if (!(l != null ? PermissionUtils.can(Permission.VIEW_CHANNEL, Long.valueOf(l.longValue())) : false)) { + z4 = false; + if (!z4) { + arrayList2.add(obj); + } + } + } + z4 = true; + if (!z4) { + } + } + return arrayList2; } public final Map getUserGuildScheduledEvents() { @@ -441,12 +476,6 @@ public final class StoreGuildScheduledEvents extends StoreV2 { return ObservationDeck.connectRx$default(this.observationDeck, new ObservationDeck.UpdateSource[]{this}, false, null, null, new StoreGuildScheduledEvents$observeGuildScheduledEvents$1(this, j, z2, z3), 14, null); } - public final Observable> observeUserGuildScheduledEvents() { - Observable> p = Observable.p(new StoreGuildScheduledEvents$observeUserGuildScheduledEvents$1(this)); - m.checkNotNullExpressionValue(p, "Observable.defer {\n …ntsSnapshot\n }\n }"); - return p; - } - @Override // com.discord.stores.StoreV2 public void snapshotData() { super.snapshotData(); diff --git a/app/src/main/java/com/discord/stores/StoreStream.java b/app/src/main/java/com/discord/stores/StoreStream.java index 6d9f5e5a63..12cec68b73 100644 --- a/app/src/main/java/com/discord/stores/StoreStream.java +++ b/app/src/main/java/com/discord/stores/StoreStream.java @@ -923,7 +923,7 @@ public final class StoreStream { this.mfa = new StoreMFA(this, this.dispatcher, ObservationDeckProvider.get()); StoreStreamRtcConnection storeStreamRtcConnection = new StoreStreamRtcConnection(storeMediaEngine, this.users, this, this.dispatcher, this.clock, this.analytics, storeRtcConnection, null, null, null, 896, null); this.streamRtcConnection = storeStreamRtcConnection; - StoreAudioManagerV2 storeAudioManagerV2 = new StoreAudioManagerV2(ObservationDeckProvider.get(), this.dispatcher, storeVoiceChannelSelected, this.channels, videoUseDetector); + StoreAudioManagerV2 storeAudioManagerV2 = new StoreAudioManagerV2(ObservationDeckProvider.get(), this.dispatcher, storeVoiceChannelSelected, this.channels, storeStreamRtcConnection, videoUseDetector); this.audioManagerV2 = storeAudioManagerV2; StoreApplicationStreamPreviews storeApplicationStreamPreviews = new StoreApplicationStreamPreviews(this.dispatcher, this.clock, null, null, 12, null); this.applicationStreamPreviews = storeApplicationStreamPreviews; diff --git a/app/src/main/java/com/discord/stores/utilities/RestCallStateKt$logNetworkAction$1.java b/app/src/main/java/com/discord/stores/utilities/RestCallStateKt$logNetworkAction$1.java index 95fcec6641..a5e6e8ecfd 100644 --- a/app/src/main/java/com/discord/stores/utilities/RestCallStateKt$logNetworkAction$1.java +++ b/app/src/main/java/com/discord/stores/utilities/RestCallStateKt$logNetworkAction$1.java @@ -1,11 +1,13 @@ package com.discord.stores.utilities; import com.discord.analytics.generated.traits.TrackNetworkMetadata; +import com.discord.analytics.generated.traits.TrackNetworkMetadataReceiver; import com.discord.utilities.analytics.AnalyticsUtils; import com.discord.utilities.features.GrowthTeamFeatures; import d0.z.d.m; import kotlin.jvm.functions.Function1; import okhttp3.Request; +import retrofit2.HttpException; import retrofit2.Response; import rx.functions.Action1; /* compiled from: RestCallState.kt */ @@ -13,9 +15,9 @@ public final class RestCallStateKt$logNetworkAction$1 implements Action1 implements Action1 response) { + TrackNetworkMetadataReceiver schema; m.checkNotNullExpressionValue(response, "response"); - Request request = RestCallStateKt.getRequest(response); - if (GrowthTeamFeatures.INSTANCE.isNetworkActionLoggingEnabled()) { - this.$tracker.track(RestCallStateKt.getSchema(this.$networkActionProvider, new TrackNetworkMetadata(request.b.l, request.f2908c, Integer.valueOf(response.a.l), null, null, 24), response.b)); + if (response.a()) { + Request request = RestCallStateKt.getRequest(response); + if (GrowthTeamFeatures.INSTANCE.isNetworkActionLoggingEnabled() && (schema = RestCallStateKt.getSchema(this.$networkActionProvider, new TrackNetworkMetadata(request.b.l, request.f2908c, Integer.valueOf(response.a.l), null, null, 24), response.b)) != null) { + this.$tracker.track(schema); + return; + } + return; } + throw new HttpException(response); } } diff --git a/app/src/main/java/com/discord/stores/utilities/RestCallStateKt$logNetworkAction$2.java b/app/src/main/java/com/discord/stores/utilities/RestCallStateKt$logNetworkAction$2.java index 1f55581687..f043ed563a 100644 --- a/app/src/main/java/com/discord/stores/utilities/RestCallStateKt$logNetworkAction$2.java +++ b/app/src/main/java/com/discord/stores/utilities/RestCallStateKt$logNetworkAction$2.java @@ -1,6 +1,7 @@ package com.discord.stores.utilities; import com.discord.analytics.generated.traits.TrackNetworkMetadata; +import com.discord.analytics.generated.traits.TrackNetworkMetadataReceiver; import com.discord.utilities.analytics.AnalyticsUtils; import com.discord.utilities.error.Error; import com.discord.utilities.features.GrowthTeamFeatures; @@ -29,9 +30,10 @@ public final class RestCallStateKt$logNetworkAction$2 implements Action1 implements Action1 TrackNetworkMetadataReceiver getSchema(Function1 function1, TrackNetworkMetadata trackNetworkMetadata, T t) { m.checkNotNullParameter(function1, "networkActionProvider"); TrackNetworkMetadataReceiver trackNetworkMetadataReceiver = (TrackNetworkMetadataReceiver) function1.invoke(t); - trackNetworkMetadataReceiver.a(trackNetworkMetadata); + if (trackNetworkMetadataReceiver != null) { + trackNetworkMetadataReceiver.a(trackNetworkMetadata); + } return trackNetworkMetadataReceiver; } @@ -77,7 +79,7 @@ public final class RestCallStateKt { m.checkNotNullParameter(cls, "errorClass"); m.checkNotNullParameter(function1, "networkActionProvider"); AnalyticsUtils.Tracker tracker = AnalyticsTracker.INSTANCE.getTracker(); - Observable observable2 = (Observable) observable.t(new RestCallStateKt$logNetworkAction$1(tracker, function1)).s(new RestCallStateKt$logNetworkAction$2(cls, tracker, function1)).F(RestCallStateKt$logNetworkAction$3.INSTANCE); + Observable observable2 = (Observable) observable.t(new RestCallStateKt$logNetworkAction$1(function1, tracker)).s(new RestCallStateKt$logNetworkAction$2(cls, function1, tracker)).F(RestCallStateKt$logNetworkAction$3.INSTANCE); m.checkNotNullExpressionValue(observable2, "doOnNext { response ->\n …rectly.\n it.body()\n }"); return observable2; } diff --git a/app/src/main/java/com/discord/utilities/directories/DirectoryUtilsKt$showServerOptions$1.java b/app/src/main/java/com/discord/utilities/directories/DirectoryUtilsKt$showServerOptions$1.java index fc3e70043a..797986aedf 100644 --- a/app/src/main/java/com/discord/utilities/directories/DirectoryUtilsKt$showServerOptions$1.java +++ b/app/src/main/java/com/discord/utilities/directories/DirectoryUtilsKt$showServerOptions$1.java @@ -66,7 +66,7 @@ public final class DirectoryUtilsKt$showServerOptions$1 extends o implements Fun public final void invoke(int i) { if (i == 0) { - j.d(this.$context, WidgetHubDescription.class, new HubDescriptionArgs(this.$directoryEntry.c().g(), this.$channelId, true, this.$hubName, this.$directoryEntry.a(), DirectoryEntryCategory.Companion.findByKey(this.$directoryEntry.d()))); + j.d(this.$context, WidgetHubDescription.class, new HubDescriptionArgs(this.$directoryEntry.c().g(), this.$channelId, true, this.$hubName, false, this.$directoryEntry.a(), DirectoryEntryCategory.Companion.findByKey(this.$directoryEntry.d()), 16, null)); } else if (i == 1) { d.c cVar = d.j; FragmentManager childFragmentManager = this.$this_showServerOptions.getChildFragmentManager(); diff --git a/app/src/main/java/com/discord/utilities/experiments/ExperimentRegistry.java b/app/src/main/java/com/discord/utilities/experiments/ExperimentRegistry.java index ff72d9fa93..52c537b1f5 100644 --- a/app/src/main/java/com/discord/utilities/experiments/ExperimentRegistry.java +++ b/app/src/main/java/com/discord/utilities/experiments/ExperimentRegistry.java @@ -15,7 +15,7 @@ public final class ExperimentRegistry { registeredExperiments = linkedHashMap; RegisteredExperiment.Type type = RegisteredExperiment.Type.USER; RegisteredExperiment.Type type2 = RegisteredExperiment.Type.GUILD; - for (Object obj : n.listOf((Object[]) new RegisteredExperiment[]{new RegisteredExperiment("Compact Invite Widget", "2020-01_mobile_invite_suggestion_compact", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Use compact view"}), true), new RegisteredExperiment("Guild Invite Sheet", "2020-12_android_guild_channel_invite_sheet", type, n.listOf((Object[]) new String[]{"Control: Use the full-screen guild invite UI", "Treatment 1: Use the bottom sheet guild invite UI"}), true), new RegisteredExperiment("Disable mentions in landscape", "2020-12_android_disable_landscape_mentions", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Hide mentions in landscape"}), true), new RegisteredExperiment("Invite to GDM Sheet", "2020-12_invite_to_gdm", type, n.listOf((Object[]) new String[]{"Control: Use the full-screen GDM invite UI", "Treatment 1: Use the bottom sheet GDM invite UI"}), true), new RegisteredExperiment("Guild Delete Feedback", "2020-12_guild_delete_feedback", type, n.listOf((Object[]) new String[]{"Control: Do not show the feedback modal", "Treatment 1: Show the feedback modal"}), true), new RegisteredExperiment("View Threads", "2021-02_view_threads", type, n.listOf((Object[]) new String[]{"Control: Do not display anything threads-related, except if receiving a notification", "Treatment 1: Show view-only threads features in channel list, in chat view, etc."}), true), new RegisteredExperiment("Create Threads", "2020-09_threads", type2, n.listOf((Object[]) new String[]{"Control: Do not show thread creation entrypoints, or Thread Browser", "Treatment 1: Show thread creation buttons, and show button to open Thread Browser"}), true), new RegisteredExperiment("Disable Camera 2", "2021-02_android_webrtc_camera2", type, n.listOf((Object[]) new String[]{"Control: Use Camera 2 API if supported", "Treatment 1: Force Camera 1 API"}), true), new RegisteredExperiment("MediaSinkWants", "2021-03_android_media_sink_wants", type, n.listOf((Object[]) new String[]{"Control: disabled", "Treatment 1: use MediaSinkWants"}), true), new RegisteredExperiment("Default Invite Expiration", "2021-03_android_extend_invite_expiration", type2, n.listOf((Object[]) new String[]{"Control: Default Invite Expiration is 1 day", "Treatment 1: Default Invite Expiration is 7 days"}), true), new RegisteredExperiment("Emoji Autocomplete Upsell", "2021-03_nitro_emoji_autocomplete_upsell_android", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Show Emoji Autocomplete Upsell"}), true), new RegisteredExperiment("Bot UI Kit Components", "2021-03_bot_ui_kit_components_android", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Show Bot UI Kit Components"}), true), new RegisteredExperiment("Select Bot UI Component", "2021-05_bot_ui_kit_select", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Show Select Bot Ui Component"}), true), new RegisteredExperiment("Stage Public Toggle Guilds", "2021-04_stage_discovery_public_guilds", type2, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Enables guild to create public stages for Stage Discovery surface"}), true), new RegisteredExperiment("Stage Public Toggle Users", "2021-05_stage_public_toggle_users", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Enables users to create public stages"}), true), new RegisteredExperiment("Stage Discovery for Users", "2021-04_stage_discovery", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Enables user to use the Stage Discovery surface"}), true), new RegisteredExperiment("Stage Events Guilds", "2021-06_stage_events", type2, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Enables users to see events in guilds"}), true), new RegisteredExperiment("Contact Sync: Base Experiment", "2021-04_contact_sync_android_main", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Enable core Contact Sync features"}), true), new RegisteredExperiment("Contact Sync: Existing Users w/ Phone Upsell Experiment", "2021-04_contact_sync_android_existing_user_phone_prompt", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Show Contact Sync for existing users with a phone number"}), true), new RegisteredExperiment("Contact Sync: Existing Users without Phone Upsell Experiment", "2021-04_contact_sync_android_existing_user_without_phone_prompt", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Show Contact Sync for existing users without a phone number"}), true), new RegisteredExperiment("Contact Sync: Empty states", "2021-05_contact_sync_android_empty_states", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Show Contact Sync in empty friend lists"}), true), new RegisteredExperiment("Stop Offscreen Video Streams", "2021-03_stop_offscreen_video_streams", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Stop offscreen video streams"}), true), new RegisteredExperiment("Guild Member Avatars Kill Switch", "2021-05_guild_member_avatars_android_kill_switch", type, n.listOf((Object[]) new String[]{"0: Render guild member avatars", "1: Don't render guild member avatars (i.e. turn off the feature)"}), true), new RegisteredExperiment("Phone Verification: Call me instead", "2021-05_call_me_instead_phone_verification", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Show 'Call me Instead' option during registration phone verification"}), true), new RegisteredExperiment("Hub Multiple Domains", "2021-08_hub_multi_domain_mobile", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Enable multiple domains for hubs"}), true), new RegisteredExperiment("Enabled Discord Hub Directories", "2021-06_desktop_school_hubs", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: See Discord Hub Directories"}), true), new RegisteredExperiment("Enabled Discord Hub Emails", "2021-06_hub_email_connection", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: See Discord Hub Emails"}), true), new RegisteredExperiment("Enable Impression Logging", "2021-08_impression_logging_enabled_android", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Enable Impression Logging"}), true), new RegisteredExperiment("AudioManager V2 and OpenSL ES", "2021-05_opensl_default_enable_android", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Default enable OpenSL", "Treatment 2: Use StoreAudioManagerV2 for output routing"}), true), new RegisteredExperiment("Phone Registration - Bailout to Email", "2021-06_reg_bailout_to_email_android", type, n.listOf((Object[]) new String[]{"Control: Just the back button", "Treatment 1: Static button to bailout to the email tab"}), true), new RegisteredExperiment("Enable Network Action Logging", "2021-07_network_action_logging_android", type, n.listOf((Object[]) new String[]{"Off: No Action logging", "On: Enable Action Logging"}), true), new RegisteredExperiment("Preview Promotions", "2021-06_preview_promotions", type, n.listOf((Object[]) new String[]{"Off: Hit normal endpoint", "On: Hit preview endpoint"}), true), new RegisteredExperiment("Live Stage Notifications", "2021-07_live_stage_notifications", type2, n.listOf((Object[]) new String[]{"Control: No notification surfaces", "Treatment 1: Show notification surfaces"}), true), new RegisteredExperiment("Show welcome CTA button", "2021-06_welcome_cta", type2, n.listOf((Object[]) new String[]{"Control: No CTA", "Treatment 1: Show welcome CTA button", "Treatment 2: Show expanded welcome CTA button"}), true)})) { + for (Object obj : n.listOf((Object[]) new RegisteredExperiment[]{new RegisteredExperiment("Compact Invite Widget", "2020-01_mobile_invite_suggestion_compact", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Use compact view"}), true), new RegisteredExperiment("Guild Invite Sheet", "2020-12_android_guild_channel_invite_sheet", type, n.listOf((Object[]) new String[]{"Control: Use the full-screen guild invite UI", "Treatment 1: Use the bottom sheet guild invite UI"}), true), new RegisteredExperiment("Disable mentions in landscape", "2020-12_android_disable_landscape_mentions", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Hide mentions in landscape"}), true), new RegisteredExperiment("Invite to GDM Sheet", "2020-12_invite_to_gdm", type, n.listOf((Object[]) new String[]{"Control: Use the full-screen GDM invite UI", "Treatment 1: Use the bottom sheet GDM invite UI"}), true), new RegisteredExperiment("Guild Delete Feedback", "2020-12_guild_delete_feedback", type, n.listOf((Object[]) new String[]{"Control: Do not show the feedback modal", "Treatment 1: Show the feedback modal"}), true), new RegisteredExperiment("View Threads", "2021-02_view_threads", type, n.listOf((Object[]) new String[]{"Control: Do not display anything threads-related, except if receiving a notification", "Treatment 1: Show view-only threads features in channel list, in chat view, etc."}), true), new RegisteredExperiment("Create Threads", "2020-09_threads", type2, n.listOf((Object[]) new String[]{"Control: Do not show thread creation entrypoints, or Thread Browser", "Treatment 1: Show thread creation buttons, and show button to open Thread Browser"}), true), new RegisteredExperiment("Disable Camera 2", "2021-02_android_webrtc_camera2", type, n.listOf((Object[]) new String[]{"Control: Use Camera 2 API if supported", "Treatment 1: Force Camera 1 API"}), true), new RegisteredExperiment("MediaSinkWants", "2021-03_android_media_sink_wants", type, n.listOf((Object[]) new String[]{"Control: disabled", "Treatment 1: use MediaSinkWants"}), true), new RegisteredExperiment("Default Invite Expiration", "2021-03_android_extend_invite_expiration", type2, n.listOf((Object[]) new String[]{"Control: Default Invite Expiration is 1 day", "Treatment 1: Default Invite Expiration is 7 days"}), true), new RegisteredExperiment("Emoji Autocomplete Upsell", "2021-03_nitro_emoji_autocomplete_upsell_android", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Show Emoji Autocomplete Upsell"}), true), new RegisteredExperiment("Bot UI Kit Components", "2021-03_bot_ui_kit_components_android", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Show Bot UI Kit Components"}), true), new RegisteredExperiment("Select Bot UI Component", "2021-05_bot_ui_kit_select", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Show Select Bot Ui Component"}), true), new RegisteredExperiment("Stage Public Toggle Guilds", "2021-04_stage_discovery_public_guilds", type2, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Enables guild to create public stages for Stage Discovery surface"}), true), new RegisteredExperiment("Stage Public Toggle Users", "2021-05_stage_public_toggle_users", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Enables users to create public stages"}), true), new RegisteredExperiment("Stage Discovery for Users", "2021-04_stage_discovery", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Enables user to use the Stage Discovery surface"}), true), new RegisteredExperiment("Stage Events Guilds", "2021-06_stage_events", type2, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Enables users to see events in guilds"}), true), new RegisteredExperiment("Contact Sync: Base Experiment", "2021-04_contact_sync_android_main", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Enable core Contact Sync features"}), true), new RegisteredExperiment("Contact Sync: Existing Users w/ Phone Upsell Experiment", "2021-04_contact_sync_android_existing_user_phone_prompt", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Show Contact Sync for existing users with a phone number"}), true), new RegisteredExperiment("Contact Sync: Existing Users without Phone Upsell Experiment", "2021-04_contact_sync_android_existing_user_without_phone_prompt", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Show Contact Sync for existing users without a phone number"}), true), new RegisteredExperiment("Contact Sync: Empty states", "2021-05_contact_sync_android_empty_states", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Show Contact Sync in empty friend lists"}), true), new RegisteredExperiment("Stop Offscreen Video Streams", "2021-03_stop_offscreen_video_streams", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Stop offscreen video streams"}), true), new RegisteredExperiment("Phone Verification: Call me instead", "2021-05_call_me_instead_phone_verification", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Show 'Call me Instead' option during registration phone verification"}), true), new RegisteredExperiment("Hub Multiple Domains", "2021-08_hub_multi_domain_mobile", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Enable multiple domains for hubs"}), true), new RegisteredExperiment("Enabled Discord Hub Directories", "2021-06_desktop_school_hubs", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: See Discord Hub Directories"}), true), new RegisteredExperiment("Enabled Discord Hub Emails", "2021-06_hub_email_connection", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: See Discord Hub Emails"}), true), new RegisteredExperiment("Enable Impression Logging", "2021-08_impression_logging_enabled_android", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Enable Impression Logging"}), true), new RegisteredExperiment("AudioManager V2 and OpenSL ES", "2021-05_opensl_default_enable_android", type, n.listOf((Object[]) new String[]{"Control", "Treatment 1: Default enable OpenSL", "Treatment 2: Use StoreAudioManagerV2 for output routing"}), true), new RegisteredExperiment("Phone Registration - Bailout to Email", "2021-06_reg_bailout_to_email_android", type, n.listOf((Object[]) new String[]{"Control: Just the back button", "Treatment 1: Static button to bailout to the email tab"}), true), new RegisteredExperiment("Enable Network Action Logging", "2021-07_network_action_logging_android", type, n.listOf((Object[]) new String[]{"Off: No Action logging", "On: Enable Action Logging"}), true), new RegisteredExperiment("Preview Promotions", "2021-06_preview_promotions", type, n.listOf((Object[]) new String[]{"Off: Hit normal endpoint", "On: Hit preview endpoint"}), true), new RegisteredExperiment("Live Stage Notifications", "2021-07_live_stage_notifications", type2, n.listOf((Object[]) new String[]{"Control: No notification surfaces", "Treatment 1: Show notification surfaces"}), true), new RegisteredExperiment("Show welcome CTA button", "2021-06_welcome_cta", type2, n.listOf((Object[]) new String[]{"Control: No CTA", "Treatment 1: Show welcome CTA button", "Treatment 2: Show expanded welcome CTA button"}), true)})) { linkedHashMap.put(((RegisteredExperiment) obj).getName(), obj); } } diff --git a/app/src/main/java/com/discord/utilities/fcm/NotificationData.java b/app/src/main/java/com/discord/utilities/fcm/NotificationData.java index 7202673ec3..add096d562 100644 --- a/app/src/main/java/com/discord/utilities/fcm/NotificationData.java +++ b/app/src/main/java/com/discord/utilities/fcm/NotificationData.java @@ -17,6 +17,7 @@ import com.airbnb.lottie.parser.AnimatableValueParser; import com.discord.R; import com.discord.api.application.Application; import com.discord.api.channel.Channel; +import com.discord.api.guildmember.GuildMember; import com.discord.api.guildscheduledevent.GuildScheduledEventEntityType; import com.discord.api.message.Message; import com.discord.api.message.activity.MessageActivity; @@ -93,6 +94,7 @@ public final class NotificationData { private final Channel channel; private final String guildIcon; private final long guildId; + private final String guildMemberAvatar; private final String guildName; private final GuildScheduledEventEntityType guildScheduledEventEntityType; private final boolean isGroupConversation; @@ -318,7 +320,7 @@ public final class NotificationData { this(new HashMap()); } - public NotificationData(String str, long j, MessageActivityType messageActivityType, String str2, int i, String str3, Channel channel, List list, long j2, String str4, Integer num, String str5, int i2, long j3, String str6, String str7, int i3, String str8, long j4, String str9, String str10, Sticker sticker, String str11, String str12, GuildScheduledEventEntityType guildScheduledEventEntityType) { + public NotificationData(String str, long j, MessageActivityType messageActivityType, String str2, int i, String str3, Channel channel, List list, long j2, String str4, Integer num, String str5, String str6, int i2, long j3, String str7, String str8, int i3, String str9, long j4, String str10, String str11, Sticker sticker, String str12, String str13, GuildScheduledEventEntityType guildScheduledEventEntityType) { m.checkNotNullParameter(str, "type"); m.checkNotNullParameter(channel, "channel"); m.checkNotNullParameter(list, "ackChannelIds"); @@ -334,17 +336,18 @@ public final class NotificationData { this.userUsername = str4; this.userDiscriminator = num; this.userAvatar = str5; + this.guildMemberAvatar = str6; this.relationshipType = i2; - this.guildName = str6; - this.guildIcon = str7; + this.guildName = str7; + this.guildIcon = str8; this.activityType = i3; - this.activityName = str8; + this.activityName = str9; this.applicationId = j4; - this.applicationName = str9; - this.applicationIcon = str10; + this.applicationName = str10; + this.applicationIcon = str11; this.sticker = sticker; - this.subtitle = str11; - this.stageInstanceTopic = str12; + this.subtitle = str12; + this.stageInstanceTopic = str13; this.guildScheduledEventEntityType = guildScheduledEventEntityType; Long valueOf = Long.valueOf(j3); boolean z2 = false; @@ -367,7 +370,7 @@ public final class NotificationData { /* JADX WARNING: Illegal instructions before constructor call */ public NotificationData(Map map) { - this(r1, r1, r6, r7, r8, r9, r49, r11, r12, r14, r15, r16, r17, r18, r20, r21, r22, r23, r24, r26, r27, r28, r29, r30, r31); + this(r1, r1, r6, r7, r8, r9, r49, r11, r12, r14, r15, r16, r17, r18, r19, r21, r22, r23, r24, r25, r27, r28, r29, r30, r31, r32); GuildScheduledEventEntityType guildScheduledEventEntityType; Integer intOrNull; Long longOrNull; @@ -407,24 +410,25 @@ public final class NotificationData { String str13 = map.get("user_discriminator"); Integer intOrNull7 = str13 != null ? s.toIntOrNull(str13) : null; String str14 = map.get("user_avatar"); - String str15 = map.get(ANALYTICS_REL_TYPE); - int intValue3 = (str15 == null || (intOrNull3 = s.toIntOrNull(str15)) == null) ? -1 : intOrNull3.intValue(); - String str16 = map.get("guild_id"); - long longValue4 = (str16 == null || (longOrNull2 = s.toLongOrNull(str16)) == null) ? -1 : longOrNull2.longValue(); - String str17 = map.get("guild_name"); - String str18 = map.get("guild_icon"); - String str19 = map.get(ANALYTICS_ACTIVITY_TYPE); - int intValue4 = (str19 == null || (intOrNull2 = s.toIntOrNull(str19)) == null) ? -1 : intOrNull2.intValue(); - String str20 = map.get(ANALYTICS_ACTIVITY_NAME); - String str21 = map.get(ModelAuditLogEntry.CHANGE_KEY_APPLICATION_ID); - long longValue5 = (str21 == null || (longOrNull = s.toLongOrNull(str21)) == null) ? -1 : longOrNull.longValue(); - String str22 = map.get("application_name"); - String str23 = map.get("application_icon"); + String str15 = map.get("user_guild_avatar"); + String str16 = map.get(ANALYTICS_REL_TYPE); + int intValue3 = (str16 == null || (intOrNull3 = s.toIntOrNull(str16)) == null) ? -1 : intOrNull3.intValue(); + String str17 = map.get("guild_id"); + long longValue4 = (str17 == null || (longOrNull2 = s.toLongOrNull(str17)) == null) ? -1 : longOrNull2.longValue(); + String str18 = map.get("guild_name"); + String str19 = map.get("guild_icon"); + String str20 = map.get(ANALYTICS_ACTIVITY_TYPE); + int intValue4 = (str20 == null || (intOrNull2 = s.toIntOrNull(str20)) == null) ? -1 : intOrNull2.intValue(); + String str21 = map.get(ANALYTICS_ACTIVITY_NAME); + String str22 = map.get(ModelAuditLogEntry.CHANGE_KEY_APPLICATION_ID); + long longValue5 = (str22 == null || (longOrNull = s.toLongOrNull(str22)) == null) ? -1 : longOrNull.longValue(); + String str23 = map.get("application_name"); + String str24 = map.get("application_icon"); Sticker parseFromMessageNotificationJson = StickerUtils.INSTANCE.parseFromMessageNotificationJson(map.get("message")); - String str24 = map.get("subtitle"); - String str25 = map.get("stage_instance_topic"); - String str26 = map.get("guild_scheduled_event_entity_type"); - if (str26 == null || (intOrNull = s.toIntOrNull(str26)) == null) { + String str25 = map.get("subtitle"); + String str26 = map.get("stage_instance_topic"); + String str27 = map.get("guild_scheduled_event_entity_type"); + if (str27 == null || (intOrNull = s.toIntOrNull(str27)) == null) { guildScheduledEventEntityType = null; } else { GuildScheduledEventEntityType.Companion companion = GuildScheduledEventEntityType.Companion; @@ -503,6 +507,10 @@ public final class NotificationData { return IconUtils.getForGuild$default(Long.valueOf(this.guildId), this.guildIcon, "", false, null, 24, null); } + private final String getIconUrlForGuildMember() { + return IconUtils.getForGuildMember$default(IconUtils.INSTANCE, this.guildMemberAvatar, this.guildId, this.userId, null, false, 24, null); + } + public final boolean canDisplayInApp() { if (m.areEqual(this.type, TYPE_STAGE_INSTANCE_CREATE)) { return true; @@ -539,11 +547,13 @@ public final class NotificationData { Integer intOrNull = (e3 == null || (f = e3.f()) == null) ? null : s.toIntOrNull(f); User e4 = message.e(); String str2 = (e4 == null || (a = e4.a()) == null || (a2 = a.a()) == null) ? "" : a2; + GuildMember q = message.q(); + String b3 = q != null ? q.b() : null; long j = this.guildId; String str3 = this.guildName; String str4 = this.guildIcon; List A = message.A(); - return new NotificationData(TYPE_MESSAGE_CREATE, o, b, g, intValue, i, a4, emptyList, i2, str, intOrNull, str2, -1, j, str3, str4, -1, null, -1, null, null, A != null ? (Sticker) u.firstOrNull((List) A) : null, null, null, null); + return new NotificationData(TYPE_MESSAGE_CREATE, o, b, g, intValue, i, a4, emptyList, i2, str, intOrNull, str2, b3, -1, j, str3, str4, -1, null, -1, null, null, A != null ? (Sticker) u.firstOrNull((List) A) : null, null, null, null); } public final List getAckChannelIds() { @@ -803,6 +813,11 @@ public final class NotificationData { } } + public final String getIconUrlForAvatar() { + String iconUrlForGuildMember = getIconUrlForGuildMember(); + return iconUrlForGuildMember != null ? iconUrlForGuildMember : getIconUrlForUser(); + } + public final String getIconUrlForUser() { return IconUtils.getForUser$default(Long.valueOf(this.userId), this.userAvatar, this.userDiscriminator, false, null, 24, null); } diff --git a/app/src/main/java/com/discord/utilities/fcm/NotificationRenderer.java b/app/src/main/java/com/discord/utilities/fcm/NotificationRenderer.java index 15d3cbcf76..07696b8734 100644 --- a/app/src/main/java/com/discord/utilities/fcm/NotificationRenderer.java +++ b/app/src/main/java/com/discord/utilities/fcm/NotificationRenderer.java @@ -180,9 +180,9 @@ public final class NotificationRenderer { List extras2 = andUpdate.getExtras(); ArrayList arrayList = new ArrayList(); for (NotificationData notificationData2 : extras2) { - String iconUrlForUser = notificationData2.getIconUrlForUser(); - if (iconUrlForUser != null) { - arrayList.add(iconUrlForUser); + String iconUrlForAvatar = notificationData2.getIconUrlForAvatar(); + if (iconUrlForAvatar != null) { + arrayList.add(iconUrlForAvatar); } } List plus = u.plus((Collection) arrayList, notificationData.getIconUrl()); @@ -218,7 +218,7 @@ public final class NotificationRenderer { m.checkNotNullExpressionValue(build, "Person.Builder()\n …ey(\"me\")\n .build()"); NotificationCompat.MessagingStyle groupConversation = new NotificationCompat.MessagingStyle(build).setConversationTitle(notificationData.getConversationTitle(context)).setGroupConversation(notificationData.isGroupConversation()); for (NotificationData notificationData2 : list) { - Bitmap bitmap = map.get(notificationData2.getIconUrlForUser()); + Bitmap bitmap = map.get(notificationData2.getIconUrlForAvatar()); IconCompat createWithBitmap = bitmap != null ? IconCompat.createWithBitmap(bitmap) : null; Person build2 = notificationData2.getSender(context).toBuilder().setIcon(createWithBitmap).build(); m.checkNotNullExpressionValue(build2, "person.toBuilder()\n …(icon)\n .build()"); diff --git a/app/src/main/java/com/discord/utilities/icon/IconUtils.java b/app/src/main/java/com/discord/utilities/icon/IconUtils.java index e59a6ac8d4..a30ae0aa63 100644 --- a/app/src/main/java/com/discord/utilities/icon/IconUtils.java +++ b/app/src/main/java/com/discord/utilities/icon/IconUtils.java @@ -23,7 +23,6 @@ import com.discord.utilities.SnowflakeUtils; import com.discord.utilities.color.ColorCompat; import com.discord.utilities.drawable.DrawableCompat; import com.discord.utilities.images.MGImages; -import com.discord.utilities.premium.GuildMemberAvatarsFeatureFlag; import com.discord.utilities.string.StringUtilsKt; import com.discord.widgets.chat.input.MentionUtilsKt; import com.facebook.imagepipeline.request.ImageRequestBuilder; @@ -243,6 +242,10 @@ public final class IconUtils { return iconUtils.getForGuildMember(guildMember, num, z2); } + public static /* synthetic */ String getForGuildMember$default(IconUtils iconUtils, String str, long j, long j2, Integer num, boolean z2, int i, Object obj) { + return iconUtils.getForGuildMember(str, j, j2, (i & 8) != 0 ? null : num, (i & 16) != 0 ? false : z2); + } + public static /* synthetic */ String getForGuildMemberOrUser$default(IconUtils iconUtils, User user, GuildMember guildMember, Integer num, int i, Object obj) { if ((i & 4) != 0) { num = null; @@ -506,7 +509,7 @@ public final class IconUtils { m.checkNotNullParameter(imageView, "imageView"); m.checkNotNullParameter(changeDetector, "changeDetector"); Integer valueOf = i != R.dimen.avatar_size_unrestricted ? Integer.valueOf(imageView.getResources().getDimensionPixelSize(i)) : null; - setIcon$default(imageView, (guildMember == null || !guildMember.hasAvatar() || !GuildMemberAvatarsFeatureFlag.Companion.getINSTANCE().isEnabled()) ? getForUser$default(l, str2, num, false, valueOf, 8, null) : getForGuildMember$default(INSTANCE, guildMember, valueOf, false, 4, null), valueOf != null ? valueOf.intValue() : 0, valueOf != null ? valueOf.intValue() : 0, false, function1, changeDetector, 16, null); + setIcon$default(imageView, (guildMember == null || !guildMember.hasAvatar()) ? getForUser$default(l, str2, num, false, valueOf, 8, null) : getForGuildMember$default(INSTANCE, guildMember, valueOf, false, 4, null), valueOf != null ? valueOf.intValue() : 0, valueOf != null ? valueOf.intValue() : 0, false, function1, changeDetector, 16, null); imageView.setContentDescription(str); } @@ -657,24 +660,25 @@ public final class IconUtils { public final String getForGuildMember(GuildMember guildMember, Integer num, boolean z2) { m.checkNotNullParameter(guildMember, "guildMember"); - String avatarHash = guildMember.getAvatarHash(); - if (avatarHash == null || t.isBlank(avatarHash)) { + return getForGuildMember(guildMember.getAvatarHash(), guildMember.getGuildId(), guildMember.getUserId(), num, z2); + } + + public final String getForGuildMember(String str, long j, long j2, Integer num, boolean z2) { + if ((str == null || t.isBlank(str)) || j == 0 || j2 == 0) { return null; } - String imageExtension = getImageExtension(avatarHash, z2); - StringBuilder L = a.L("https://cdn.discordapp.com/guilds/"); - L.append(guildMember.getGuildId()); - L.append("/users/"); - L.append(guildMember.getUserId()); - L.append("/avatars/"); - L.append(guildMember.getAvatarHash()); - L.append('.'); - L.append(imageExtension); - return withSize(L.toString(), num); + String imageExtension = getImageExtension(str, z2); + StringBuilder O = a.O("https://cdn.discordapp.com/guilds/", j, "/users/"); + O.append(j2); + O.append("/avatars/"); + O.append(str); + O.append('.'); + O.append(imageExtension); + return withSize(O.toString(), num); } public final String getForGuildMemberOrUser(User user, GuildMember guildMember, Integer num) { - return (guildMember == null || !guildMember.hasAvatar() || !GuildMemberAvatarsFeatureFlag.Companion.getINSTANCE().isEnabled()) ? getForUser$default(user, false, num, 2, null) : getForGuildMember$default(this, guildMember, num, false, 4, null); + return (guildMember == null || !guildMember.hasAvatar()) ? getForUser$default(user, false, num, 2, null) : getForGuildMember$default(this, guildMember, num, false, 4, null); } public final String getForUserBanner(long j, String str, Integer num, boolean z2) { diff --git a/app/src/main/java/com/discord/utilities/premium/GuildMemberAvatarsFeatureFlag$Companion$INSTANCE$2.java b/app/src/main/java/com/discord/utilities/premium/GuildMemberAvatarsFeatureFlag$Companion$INSTANCE$2.java deleted file mode 100644 index d9bb5827ab..0000000000 --- a/app/src/main/java/com/discord/utilities/premium/GuildMemberAvatarsFeatureFlag$Companion$INSTANCE$2.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.discord.utilities.premium; - -import d0.z.d.o; -import kotlin.jvm.functions.Function0; -/* compiled from: GuildMemberAvatarsFeatureFlag.kt */ -public final class GuildMemberAvatarsFeatureFlag$Companion$INSTANCE$2 extends o implements Function0 { - public static final GuildMemberAvatarsFeatureFlag$Companion$INSTANCE$2 INSTANCE = new GuildMemberAvatarsFeatureFlag$Companion$INSTANCE$2(); - - public GuildMemberAvatarsFeatureFlag$Companion$INSTANCE$2() { - super(0); - } - - @Override // kotlin.jvm.functions.Function0 - /* renamed from: invoke */ - public final GuildMemberAvatarsFeatureFlag mo1invoke() { - return new GuildMemberAvatarsFeatureFlag(null, 1, null); - } -} diff --git a/app/src/main/java/com/discord/utilities/premium/GuildMemberAvatarsFeatureFlag.java b/app/src/main/java/com/discord/utilities/premium/GuildMemberAvatarsFeatureFlag.java deleted file mode 100644 index 47b0617dd5..0000000000 --- a/app/src/main/java/com/discord/utilities/premium/GuildMemberAvatarsFeatureFlag.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.discord.utilities.premium; - -import com.discord.models.experiments.domain.Experiment; -import com.discord.stores.StoreExperiments; -import com.discord.stores.StoreStream; -import d0.g; -import d0.z.d.m; -import kotlin.Lazy; -import kotlin.jvm.internal.DefaultConstructorMarker; -/* compiled from: GuildMemberAvatarsFeatureFlag.kt */ -public final class GuildMemberAvatarsFeatureFlag { - public static final Companion Companion = new Companion(null); - private static final Lazy INSTANCE$delegate = g.lazy(GuildMemberAvatarsFeatureFlag$Companion$INSTANCE$2.INSTANCE); - private final StoreExperiments storeExperiments; - - /* compiled from: GuildMemberAvatarsFeatureFlag.kt */ - public static final class Companion { - private Companion() { - } - - public /* synthetic */ Companion(DefaultConstructorMarker defaultConstructorMarker) { - this(); - } - - public final GuildMemberAvatarsFeatureFlag getINSTANCE() { - Lazy access$getINSTANCE$cp = GuildMemberAvatarsFeatureFlag.access$getINSTANCE$cp(); - Companion companion = GuildMemberAvatarsFeatureFlag.Companion; - return (GuildMemberAvatarsFeatureFlag) access$getINSTANCE$cp.getValue(); - } - } - - public GuildMemberAvatarsFeatureFlag() { - this(null, 1, null); - } - - public GuildMemberAvatarsFeatureFlag(StoreExperiments storeExperiments) { - m.checkNotNullParameter(storeExperiments, "storeExperiments"); - this.storeExperiments = storeExperiments; - } - - /* JADX INFO: this call moved to the top of the method (can break code semantics) */ - public /* synthetic */ GuildMemberAvatarsFeatureFlag(StoreExperiments storeExperiments, int i, DefaultConstructorMarker defaultConstructorMarker) { - this((i & 1) != 0 ? StoreStream.Companion.getExperiments() : storeExperiments); - } - - public static final /* synthetic */ Lazy access$getINSTANCE$cp() { - return INSTANCE$delegate; - } - - public final boolean isEnabled() { - Experiment userExperiment = this.storeExperiments.getUserExperiment("2021-05_guild_member_avatars_android_kill_switch", true); - return userExperiment == null || userExperiment.getBucket() != 1; - } -} 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 e00a53e198..8c43500fa4 100644 --- a/app/src/main/java/com/discord/utilities/rest/RestAPI.java +++ b/app/src/main/java/com/discord/utilities/rest/RestAPI.java @@ -600,7 +600,7 @@ public final class RestAPI implements RestAPIInterface { @Override // com.discord.restapi.RestAPIInterface @o("channels/{channelId}/directory-entry/{guildId}") - public Observable addServerToHub(@s("channelId") long j, @s("guildId") long j2, @i0.f0.a RestAPIParams.AddServerBody addServerBody) { + public Observable> addServerToHub(@s("channelId") long j, @s("guildId") long j2, @i0.f0.a RestAPIParams.AddServerBody addServerBody) { m.checkNotNullParameter(addServerBody, "body"); return this._api.addServerToHub(j, j2, addServerBody); } @@ -1824,7 +1824,7 @@ public final class RestAPI implements RestAPIInterface { @Override // com.discord.restapi.RestAPIInterface @b("channels/{channelId}/directory-entry/{guildId}") - public Observable removeServerFromHub(@s("channelId") long j, @s("guildId") long j2) { + public Observable> removeServerFromHub(@s("channelId") long j, @s("guildId") long j2) { return this._api.removeServerFromHub(j, j2); } diff --git a/app/src/main/java/com/discord/widgets/chat/list/adapter/WidgetChatListAdapterItemInvite.java b/app/src/main/java/com/discord/widgets/chat/list/adapter/WidgetChatListAdapterItemInvite.java index 2057039be8..1538b73588 100644 --- a/app/src/main/java/com/discord/widgets/chat/list/adapter/WidgetChatListAdapterItemInvite.java +++ b/app/src/main/java/com/discord/widgets/chat/list/adapter/WidgetChatListAdapterItemInvite.java @@ -539,10 +539,10 @@ public final class WidgetChatListAdapterItemInvite extends WidgetChatListAdapter imageView2.setVisibility(8); } - /* JADX WARNING: Removed duplicated region for block: B:31:0x0136 */ - /* JADX WARNING: Removed duplicated region for block: B:32:0x013a */ - /* JADX WARNING: Removed duplicated region for block: B:35:0x014b A[ADDED_TO_REGION] */ - /* JADX WARNING: Removed duplicated region for block: B:42:0x0162 */ + /* JADX WARNING: Removed duplicated region for block: B:31:0x0142 */ + /* JADX WARNING: Removed duplicated region for block: B:32:0x0146 */ + /* JADX WARNING: Removed duplicated region for block: B:35:0x0157 A[ADDED_TO_REGION] */ + /* JADX WARNING: Removed duplicated region for block: B:42:0x016e */ private final void configureInvalidUI(Model.Invalid invalid) { CharSequence charSequence; Channel channel; @@ -570,6 +570,9 @@ public final class WidgetChatListAdapterItemInvite extends WidgetChatListAdapter if ((invalid != null ? invalid.getAuthorUser() : null) != null) { m.checkNotNullExpressionValue(context, "context"); charSequence = c.a.k.b.h(context, R.string.instant_invite_ask_user_for_new_invite, new Object[]{invalid.getAuthorUser().getUsername()}, null, 4); + TextView textView4 = this.binding.b; + m.checkNotNullExpressionValue(textView4, "binding.itemInviteChannelName"); + textView4.setVisibility(8); d3 d3Var = this.binding.k; m.checkNotNullExpressionValue(d3Var, "binding.itemInviteMemberContainer"); LinearLayout linearLayout = d3Var.a; @@ -578,15 +581,15 @@ public final class WidgetChatListAdapterItemInvite extends WidgetChatListAdapter d3 d3Var2 = this.binding.k; m.checkNotNullExpressionValue(d3Var2, "binding.itemInviteMemberContainer"); d3Var2.a.setBackgroundResource(0); - TextView textView4 = this.binding.k.f80c; - m.checkNotNullExpressionValue(textView4, "binding.itemInviteMember…iner.itemInviteOnlineText"); - ViewExtensions.setTextAndVisibilityBy(textView4, charSequence); + TextView textView5 = this.binding.k.f80c; + m.checkNotNullExpressionValue(textView5, "binding.itemInviteMember…iner.itemInviteOnlineText"); + ViewExtensions.setTextAndVisibilityBy(textView5, charSequence); ImageView imageView = this.binding.k.b; m.checkNotNullExpressionValue(imageView, "binding.itemInviteMember…ainer.itemInviteOnlineDot"); imageView.setVisibility(8); - TextView textView5 = this.binding.k.e; - m.checkNotNullExpressionValue(textView5, "binding.itemInviteMember…itemInviteTotalMemberText"); - ViewExtensions.setTextAndVisibilityBy(textView5, null); + TextView textView6 = this.binding.k.e; + m.checkNotNullExpressionValue(textView6, "binding.itemInviteMember…itemInviteTotalMemberText"); + ViewExtensions.setTextAndVisibilityBy(textView6, null); ImageView imageView2 = this.binding.k.d; m.checkNotNullExpressionValue(imageView2, "binding.itemInviteMember….itemInviteTotalMemberDot"); imageView2.setVisibility(8); @@ -623,6 +626,9 @@ public final class WidgetChatListAdapterItemInvite extends WidgetChatListAdapter if ((invalid != null ? invalid.getAuthorUser() : null) == null) { m.checkNotNullExpressionValue(context, "context"); charSequence = c.a.k.b.h(context, R.string.instant_invite_ask_for_new_invite, new Object[0], null, 4); + TextView textView4 = this.binding.b; + m.checkNotNullExpressionValue(textView4, "binding.itemInviteChannelName"); + textView4.setVisibility(8); d3 d3Var = this.binding.k; m.checkNotNullExpressionValue(d3Var, "binding.itemInviteMemberContainer"); LinearLayout linearLayout = d3Var.a; @@ -631,15 +637,15 @@ public final class WidgetChatListAdapterItemInvite extends WidgetChatListAdapter d3 d3Var2 = this.binding.k; m.checkNotNullExpressionValue(d3Var2, "binding.itemInviteMemberContainer"); d3Var2.a.setBackgroundResource(0); - TextView textView4 = this.binding.k.f80c; - m.checkNotNullExpressionValue(textView4, "binding.itemInviteMember…iner.itemInviteOnlineText"); - ViewExtensions.setTextAndVisibilityBy(textView4, charSequence); + TextView textView5 = this.binding.k.f80c; + m.checkNotNullExpressionValue(textView5, "binding.itemInviteMember…iner.itemInviteOnlineText"); + ViewExtensions.setTextAndVisibilityBy(textView5, charSequence); ImageView imageView = this.binding.k.b; m.checkNotNullExpressionValue(imageView, "binding.itemInviteMember…ainer.itemInviteOnlineDot"); imageView.setVisibility(8); - TextView textView5 = this.binding.k.e; - m.checkNotNullExpressionValue(textView5, "binding.itemInviteMember…itemInviteTotalMemberText"); - ViewExtensions.setTextAndVisibilityBy(textView5, null); + TextView textView6 = this.binding.k.e; + m.checkNotNullExpressionValue(textView6, "binding.itemInviteMember…itemInviteTotalMemberText"); + ViewExtensions.setTextAndVisibilityBy(textView6, null); ImageView imageView2 = this.binding.k.d; m.checkNotNullExpressionValue(imageView2, "binding.itemInviteMember….itemInviteTotalMemberDot"); imageView2.setVisibility(8); @@ -671,6 +677,9 @@ public final class WidgetChatListAdapterItemInvite extends WidgetChatListAdapter } else { charSequence = null; } + TextView textView4 = this.binding.b; + m.checkNotNullExpressionValue(textView4, "binding.itemInviteChannelName"); + textView4.setVisibility(8); d3 d3Var = this.binding.k; m.checkNotNullExpressionValue(d3Var, "binding.itemInviteMemberContainer"); LinearLayout linearLayout = d3Var.a; @@ -679,15 +688,15 @@ public final class WidgetChatListAdapterItemInvite extends WidgetChatListAdapter d3 d3Var2 = this.binding.k; m.checkNotNullExpressionValue(d3Var2, "binding.itemInviteMemberContainer"); d3Var2.a.setBackgroundResource(0); - TextView textView4 = this.binding.k.f80c; - m.checkNotNullExpressionValue(textView4, "binding.itemInviteMember…iner.itemInviteOnlineText"); - ViewExtensions.setTextAndVisibilityBy(textView4, charSequence); + TextView textView5 = this.binding.k.f80c; + m.checkNotNullExpressionValue(textView5, "binding.itemInviteMember…iner.itemInviteOnlineText"); + ViewExtensions.setTextAndVisibilityBy(textView5, charSequence); ImageView imageView = this.binding.k.b; m.checkNotNullExpressionValue(imageView, "binding.itemInviteMember…ainer.itemInviteOnlineDot"); imageView.setVisibility(8); - TextView textView5 = this.binding.k.e; - m.checkNotNullExpressionValue(textView5, "binding.itemInviteMember…itemInviteTotalMemberText"); - ViewExtensions.setTextAndVisibilityBy(textView5, null); + TextView textView6 = this.binding.k.e; + m.checkNotNullExpressionValue(textView6, "binding.itemInviteMember…itemInviteTotalMemberText"); + ViewExtensions.setTextAndVisibilityBy(textView6, null); ImageView imageView2 = this.binding.k.d; m.checkNotNullExpressionValue(imageView2, "binding.itemInviteMember….itemInviteTotalMemberDot"); imageView2.setVisibility(8); diff --git a/app/src/main/java/com/discord/widgets/chat/list/entries/ChatListEntry.java b/app/src/main/java/com/discord/widgets/chat/list/entries/ChatListEntry.java index fe44fbb08a..59c99b8a34 100644 --- a/app/src/main/java/com/discord/widgets/chat/list/entries/ChatListEntry.java +++ b/app/src/main/java/com/discord/widgets/chat/list/entries/ChatListEntry.java @@ -27,6 +27,7 @@ import com.discord.utilities.mg_recycler.MGRecyclerDataPayload; import com.discord.widgets.botuikit.BotComponentExperiments; import com.discord.widgets.botuikit.ComponentChatListState; import com.discord.widgets.botuikit.ComponentStateMapper; +import com.discord.widgets.guildscheduledevent.GuildScheduledEventsSharingFeatureFlag; import d0.g0.s; import d0.t.h0; import d0.t.n; @@ -100,7 +101,7 @@ public abstract class ChatListEntry implements MGRecyclerDataPayload { private final ChatListEntry createEntryForInvite(Message message, String str, String str2, InviteEmbedModel inviteEmbedModel) { if (str2 != null) { ModelInvite resolveInviteForGuildScheduledEvent = inviteEmbedModel.resolveInviteForGuildScheduledEvent(str, str2); - if ((resolveInviteForGuildScheduledEvent != null ? resolveInviteForGuildScheduledEvent.getGuildScheduledEvent() : null) != null) { + if ((resolveInviteForGuildScheduledEvent != null ? resolveInviteForGuildScheduledEvent.getGuildScheduledEvent() : null) != null && GuildScheduledEventsSharingFeatureFlag.Companion.getINSTANCE().canShareGuildScheduledEvents()) { GuildScheduledEvent guildScheduledEvent = resolveInviteForGuildScheduledEvent.getGuildScheduledEvent(); m.checkNotNull(guildScheduledEvent); m.checkNotNullExpressionValue(guildScheduledEvent, "eventInvite.guildScheduledEvent!!"); diff --git a/app/src/main/java/com/discord/widgets/guilds/invite/WidgetGuildInviteShare$loggingConfig$1.java b/app/src/main/java/com/discord/widgets/guilds/invite/WidgetGuildInviteShare$loggingConfig$1.java new file mode 100644 index 0000000000..38181ee2f2 --- /dev/null +++ b/app/src/main/java/com/discord/widgets/guilds/invite/WidgetGuildInviteShare$loggingConfig$1.java @@ -0,0 +1,20 @@ +package com.discord.widgets.guilds.invite; + +import com.discord.analytics.generated.events.impression.TrackImpressionGuildInvite; +import com.discord.api.science.AnalyticsSchema; +import d0.z.d.o; +import kotlin.jvm.functions.Function0; +/* compiled from: WidgetGuildInviteShare.kt */ +public final class WidgetGuildInviteShare$loggingConfig$1 extends o implements Function0 { + public static final WidgetGuildInviteShare$loggingConfig$1 INSTANCE = new WidgetGuildInviteShare$loggingConfig$1(); + + public WidgetGuildInviteShare$loggingConfig$1() { + super(0); + } + + @Override // kotlin.jvm.functions.Function0 + /* renamed from: invoke */ + public final AnalyticsSchema mo1invoke() { + return new TrackImpressionGuildInvite(null, null, 3); + } +} diff --git a/app/src/main/java/com/discord/widgets/guilds/invite/WidgetGuildInviteShare.java b/app/src/main/java/com/discord/widgets/guilds/invite/WidgetGuildInviteShare.java index 7106aea5ff..049aff7a10 100644 --- a/app/src/main/java/com/discord/widgets/guilds/invite/WidgetGuildInviteShare.java +++ b/app/src/main/java/com/discord/widgets/guilds/invite/WidgetGuildInviteShare.java @@ -19,6 +19,7 @@ import com.discord.api.guild.Guild; import com.discord.app.AppActivity; import com.discord.app.AppFragment; import com.discord.app.AppViewFlipper; +import com.discord.app.LoggingConfig; import com.discord.databinding.WidgetGuildInviteShareBinding; import com.discord.models.domain.ModelInvite; import com.discord.models.experiments.domain.Experiment; @@ -57,6 +58,7 @@ public final class WidgetGuildInviteShare extends AppFragment { private final FragmentViewBindingDelegate binding$delegate = FragmentViewBindingDelegateKt.viewBinding$default(this, WidgetGuildInviteShare$binding$2.INSTANCE, null, 2, null); private BottomSheetBehavior bottomSheetBehavior; private boolean hasTrackedSuggestionsViewed; + private final LoggingConfig loggingConfig; private final Lazy viewModel$delegate; /* compiled from: WidgetGuildInviteShare.kt */ @@ -97,6 +99,7 @@ public final class WidgetGuildInviteShare extends AppFragment { WidgetGuildInviteShare$viewModel$2 widgetGuildInviteShare$viewModel$2 = new WidgetGuildInviteShare$viewModel$2(this); f0 f0Var = new f0(this); this.viewModel$delegate = FragmentViewModelLazyKt.createViewModelLazy(this, a0.getOrCreateKotlinClass(WidgetGuildInviteShareViewModel.class), new WidgetGuildInviteShare$appViewModels$$inlined$viewModels$1(f0Var), new h0(widgetGuildInviteShare$viewModel$2)); + this.loggingConfig = new LoggingConfig(false, null, WidgetGuildInviteShare$loggingConfig$1.INSTANCE, 3); } public static final /* synthetic */ void access$configureUI(WidgetGuildInviteShare widgetGuildInviteShare, WidgetGuildInviteShareViewModel.ViewState.Loaded loaded) { @@ -260,6 +263,11 @@ public final class WidgetGuildInviteShare extends AppFragment { } } + @Override // com.discord.app.AppFragment, com.discord.app.AppLogger.a + public LoggingConfig getLoggingConfig() { + return this.loggingConfig; + } + @Override // com.discord.app.AppFragment public void onViewBound(View view) { Window window; diff --git a/app/src/main/java/com/discord/widgets/guildscheduledevent/DescriptionCache.java b/app/src/main/java/com/discord/widgets/guildscheduledevent/DescriptionCache.java new file mode 100644 index 0000000000..d45087cc28 --- /dev/null +++ b/app/src/main/java/com/discord/widgets/guildscheduledevent/DescriptionCache.java @@ -0,0 +1,140 @@ +package com.discord.widgets.guildscheduledevent; + +import c.d.b.a.a; +import com.discord.models.domain.ModelAuditLogEntry; +import com.discord.simpleast.core.node.Node; +import com.discord.utilities.textprocessing.MessageRenderContext; +import d0.z.d.m; +import java.util.List; +import java.util.Set; +import kotlin.jvm.internal.DefaultConstructorMarker; +/* compiled from: GuildScheduledEventItemView.kt */ +public abstract class DescriptionCache { + private final List> maybeAst; + private final String maybeDescription; + + /* compiled from: GuildScheduledEventItemView.kt */ + public static final class HasDescription extends DescriptionCache { + private final List> ast; + private final String description; + private final Set shownSpoilerIndices; + + /* JADX INFO: super call moved to the top of the method (can break code semantics) */ + public HasDescription(String str, List> list, Set set) { + super(str, list, null); + m.checkNotNullParameter(str, ModelAuditLogEntry.CHANGE_KEY_DESCRIPTION); + m.checkNotNullParameter(list, "ast"); + m.checkNotNullParameter(set, "shownSpoilerIndices"); + this.description = str; + this.ast = list; + this.shownSpoilerIndices = set; + } + + /* JADX DEBUG: Multi-variable search result rejected for r0v0, resolved type: com.discord.widgets.guildscheduledevent.DescriptionCache$HasDescription */ + /* JADX WARN: Multi-variable type inference failed */ + public static /* synthetic */ HasDescription copy$default(HasDescription hasDescription, String str, List list, Set set, int i, Object obj) { + if ((i & 1) != 0) { + str = hasDescription.description; + } + if ((i & 2) != 0) { + list = hasDescription.ast; + } + if ((i & 4) != 0) { + set = hasDescription.shownSpoilerIndices; + } + return hasDescription.copy(str, list, set); + } + + public final String component1() { + return this.description; + } + + public final List> component2() { + return this.ast; + } + + public final Set component3() { + return this.shownSpoilerIndices; + } + + public final HasDescription copy(String str, List> list, Set set) { + m.checkNotNullParameter(str, ModelAuditLogEntry.CHANGE_KEY_DESCRIPTION); + m.checkNotNullParameter(list, "ast"); + m.checkNotNullParameter(set, "shownSpoilerIndices"); + return new HasDescription(str, list, set); + } + + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof HasDescription)) { + return false; + } + HasDescription hasDescription = (HasDescription) obj; + return m.areEqual(this.description, hasDescription.description) && m.areEqual(this.ast, hasDescription.ast) && m.areEqual(this.shownSpoilerIndices, hasDescription.shownSpoilerIndices); + } + + public final List> getAst() { + return this.ast; + } + + public final String getDescription() { + return this.description; + } + + public final Set getShownSpoilerIndices() { + return this.shownSpoilerIndices; + } + + public int hashCode() { + String str = this.description; + int i = 0; + int hashCode = (str != null ? str.hashCode() : 0) * 31; + List> list = this.ast; + int hashCode2 = (hashCode + (list != null ? list.hashCode() : 0)) * 31; + Set set = this.shownSpoilerIndices; + if (set != null) { + i = set.hashCode(); + } + return hashCode2 + i; + } + + public String toString() { + StringBuilder L = a.L("HasDescription(description="); + L.append(this.description); + L.append(", ast="); + L.append(this.ast); + L.append(", shownSpoilerIndices="); + L.append(this.shownSpoilerIndices); + L.append(")"); + return L.toString(); + } + } + + /* compiled from: GuildScheduledEventItemView.kt */ + public static final class NoDescription extends DescriptionCache { + public static final NoDescription INSTANCE = new NoDescription(); + + private NoDescription() { + super(null, null, null); + } + } + + private DescriptionCache(String str, List> list) { + this.maybeDescription = str; + this.maybeAst = list; + } + + public /* synthetic */ DescriptionCache(String str, List list, DefaultConstructorMarker defaultConstructorMarker) { + this(str, list); + } + + public final List> getMaybeAst() { + return this.maybeAst; + } + + public final String getMaybeDescription() { + return this.maybeDescription; + } +} diff --git a/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventDescriptionParser$Companion$INSTANCE$2.java b/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventDescriptionParser$Companion$INSTANCE$2.java new file mode 100644 index 0000000000..4f6444c26c --- /dev/null +++ b/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventDescriptionParser$Companion$INSTANCE$2.java @@ -0,0 +1,18 @@ +package com.discord.widgets.guildscheduledevent; + +import d0.z.d.o; +import kotlin.jvm.functions.Function0; +/* compiled from: GuildScheduledEventDescriptionParser.kt */ +public final class GuildScheduledEventDescriptionParser$Companion$INSTANCE$2 extends o implements Function0 { + public static final GuildScheduledEventDescriptionParser$Companion$INSTANCE$2 INSTANCE = new GuildScheduledEventDescriptionParser$Companion$INSTANCE$2(); + + public GuildScheduledEventDescriptionParser$Companion$INSTANCE$2() { + super(0); + } + + @Override // kotlin.jvm.functions.Function0 + /* renamed from: invoke */ + public final GuildScheduledEventDescriptionParser mo1invoke() { + return new GuildScheduledEventDescriptionParser(); + } +} diff --git a/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventDescriptionParser$descriptionParser$2.java b/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventDescriptionParser$descriptionParser$2.java new file mode 100644 index 0000000000..ba6ed3950c --- /dev/null +++ b/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventDescriptionParser$descriptionParser$2.java @@ -0,0 +1,23 @@ +package com.discord.widgets.guildscheduledevent; + +import com.discord.simpleast.core.node.Node; +import com.discord.simpleast.core.parser.Parser; +import com.discord.utilities.textprocessing.DiscordParser; +import com.discord.utilities.textprocessing.MessageParseState; +import com.discord.utilities.textprocessing.MessageRenderContext; +import d0.z.d.o; +import kotlin.jvm.functions.Function0; +/* compiled from: GuildScheduledEventDescriptionParser.kt */ +public final class GuildScheduledEventDescriptionParser$descriptionParser$2 extends o implements Function0, MessageParseState>> { + public static final GuildScheduledEventDescriptionParser$descriptionParser$2 INSTANCE = new GuildScheduledEventDescriptionParser$descriptionParser$2(); + + public GuildScheduledEventDescriptionParser$descriptionParser$2() { + super(0); + } + + @Override // kotlin.jvm.functions.Function0 + /* renamed from: invoke */ + public final Parser, MessageParseState> mo1invoke() { + return DiscordParser.createParser(false, false, false); + } +} diff --git a/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventDescriptionParser.java b/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventDescriptionParser.java new file mode 100644 index 0000000000..6571e97884 --- /dev/null +++ b/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventDescriptionParser.java @@ -0,0 +1,55 @@ +package com.discord.widgets.guildscheduledevent; + +import com.discord.models.domain.ModelAuditLogEntry; +import com.discord.simpleast.core.node.Node; +import com.discord.simpleast.core.parser.Parser; +import com.discord.utilities.textprocessing.MessageParseState; +import com.discord.utilities.textprocessing.MessagePreprocessor; +import com.discord.utilities.textprocessing.MessageRenderContext; +import d0.g; +import d0.z.d.m; +import java.util.List; +import java.util.Set; +import kotlin.Lazy; +import kotlin.jvm.internal.DefaultConstructorMarker; +/* compiled from: GuildScheduledEventDescriptionParser.kt */ +public final class GuildScheduledEventDescriptionParser { + public static final Companion Companion = new Companion(null); + private static final Lazy INSTANCE$delegate = g.lazy(GuildScheduledEventDescriptionParser$Companion$INSTANCE$2.INSTANCE); + private final Lazy descriptionParser$delegate = g.lazy(GuildScheduledEventDescriptionParser$descriptionParser$2.INSTANCE); + + /* compiled from: GuildScheduledEventDescriptionParser.kt */ + public static final class Companion { + private Companion() { + } + + public /* synthetic */ Companion(DefaultConstructorMarker defaultConstructorMarker) { + this(); + } + + public final GuildScheduledEventDescriptionParser getINSTANCE() { + Lazy access$getINSTANCE$cp = GuildScheduledEventDescriptionParser.access$getINSTANCE$cp(); + Companion companion = GuildScheduledEventDescriptionParser.Companion; + return (GuildScheduledEventDescriptionParser) access$getINSTANCE$cp.getValue(); + } + } + + public static final /* synthetic */ Lazy access$getINSTANCE$cp() { + return INSTANCE$delegate; + } + + private final Parser, MessageParseState> getDescriptionParser() { + return (Parser) this.descriptionParser$delegate.getValue(); + } + + public final List> parse(String str) { + m.checkNotNullParameter(str, ModelAuditLogEntry.CHANGE_KEY_DESCRIPTION); + return Parser.parse$default(getDescriptionParser(), str, MessageParseState.Companion.getInitialState(), null, 4, null); + } + + public final void updateAstForSpoiler(List> list, Set set) { + m.checkNotNullParameter(list, "ast"); + m.checkNotNullParameter(set, "visibleSpoilerNodeIndices"); + new MessagePreprocessor(-1, set, null, false, null, 28, null).process(list); + } +} diff --git a/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventDescriptionParserKt.java b/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventDescriptionParserKt.java new file mode 100644 index 0000000000..06a4b2d58f --- /dev/null +++ b/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventDescriptionParserKt.java @@ -0,0 +1,4 @@ +package com.discord.widgets.guildscheduledevent; +/* compiled from: GuildScheduledEventDescriptionParser.kt */ +public final class GuildScheduledEventDescriptionParserKt { +} diff --git a/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventItemView$configureDescription$1$renderContext$1.java b/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventItemView$configureDescription$1$renderContext$1.java new file mode 100644 index 0000000000..885bebe530 --- /dev/null +++ b/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventItemView$configureDescription$1$renderContext$1.java @@ -0,0 +1,26 @@ +package com.discord.widgets.guildscheduledevent; + +import com.discord.utilities.textprocessing.node.SpoilerNode; +import d0.z.d.k; +import d0.z.d.m; +import kotlin.Unit; +import kotlin.jvm.functions.Function1; +/* compiled from: GuildScheduledEventItemView.kt */ +public final /* synthetic */ class GuildScheduledEventItemView$configureDescription$1$renderContext$1 extends k implements Function1, Unit> { + public GuildScheduledEventItemView$configureDescription$1$renderContext$1(GuildScheduledEventItemView guildScheduledEventItemView) { + super(1, guildScheduledEventItemView, GuildScheduledEventItemView.class, "handleSpoilerClicked", "handleSpoilerClicked(Lcom/discord/utilities/textprocessing/node/SpoilerNode;)V", 0); + } + + /* Return type fixed from 'java.lang.Object' to match base method */ + /* JADX DEBUG: Method arguments types fixed to match base method, original types: [java.lang.Object] */ + @Override // kotlin.jvm.functions.Function1 + public /* bridge */ /* synthetic */ Unit invoke(SpoilerNode spoilerNode) { + invoke(spoilerNode); + return Unit.a; + } + + public final void invoke(SpoilerNode spoilerNode) { + m.checkNotNullParameter(spoilerNode, "p1"); + GuildScheduledEventItemView.access$handleSpoilerClicked((GuildScheduledEventItemView) this.receiver, spoilerNode); + } +} diff --git a/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventItemView.java b/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventItemView.java index b9494cb1ad..71a77862ac 100644 --- a/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventItemView.java +++ b/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventItemView.java @@ -14,20 +14,29 @@ import com.discord.R; import com.discord.api.channel.Channel; import com.discord.api.guildscheduledevent.GuildScheduledEvent; import com.discord.databinding.GuildScheduledEventItemViewBinding; +import com.discord.simpleast.core.node.Node; import com.discord.utilities.color.ColorCompat; import com.discord.utilities.color.ColorCompatKt; import com.discord.utilities.drawable.DrawableCompat; import com.discord.utilities.guildscheduledevent.GuildScheduledEventTiming; import com.discord.utilities.guildscheduledevent.GuildScheduledEventUtilitiesKt; +import com.discord.utilities.textprocessing.AstRenderer; +import com.discord.utilities.textprocessing.MessageRenderContext; +import com.discord.utilities.textprocessing.node.SpoilerNode; import com.discord.utilities.view.extensions.ViewExtensions; +import com.discord.utilities.view.text.LinkifiedTextView; +import com.discord.widgets.guildscheduledevent.DescriptionCache; import com.discord.widgets.guildscheduledevent.GuildScheduledEventListItem; import d0.z.d.m; +import java.util.LinkedHashSet; +import java.util.List; import kotlin.Unit; import kotlin.jvm.functions.Function0; import kotlin.jvm.internal.DefaultConstructorMarker; /* compiled from: GuildScheduledEventItemView.kt */ public final class GuildScheduledEventItemView extends ConstraintLayout { private final GuildScheduledEventItemViewBinding binding; + private DescriptionCache savedDescriptionCache; public final /* synthetic */ class WhenMappings { public static final /* synthetic */ int[] $EnumSwitchMapping$0; @@ -76,17 +85,17 @@ public final class GuildScheduledEventItemView extends ConstraintLayout { TextView textView2 = (TextView) inflate.findViewById(R.id.guild_scheduled_event_list_item_date_text); if (textView2 != null) { i2 = R.id.guild_scheduled_event_list_item_desc_text; - TextView textView3 = (TextView) inflate.findViewById(R.id.guild_scheduled_event_list_item_desc_text); - if (textView3 != null) { + LinkifiedTextView linkifiedTextView = (LinkifiedTextView) inflate.findViewById(R.id.guild_scheduled_event_list_item_desc_text); + if (linkifiedTextView != null) { i2 = R.id.guild_scheduled_event_list_item_interested_button; ImageView imageView2 = (ImageView) inflate.findViewById(R.id.guild_scheduled_event_list_item_interested_button); if (imageView2 != null) { i2 = R.id.guild_scheduled_event_list_item_interested_button_text; - TextView textView4 = (TextView) inflate.findViewById(R.id.guild_scheduled_event_list_item_interested_button_text); - if (textView4 != null) { + TextView textView3 = (TextView) inflate.findViewById(R.id.guild_scheduled_event_list_item_interested_button_text); + if (textView3 != null) { i2 = R.id.guild_scheduled_event_list_item_rsvp_text; - TextView textView5 = (TextView) inflate.findViewById(R.id.guild_scheduled_event_list_item_rsvp_text); - if (textView5 != null) { + TextView textView4 = (TextView) inflate.findViewById(R.id.guild_scheduled_event_list_item_rsvp_text); + if (textView4 != null) { i2 = R.id.guild_scheduled_event_list_item_share_button; ImageView imageView3 = (ImageView) inflate.findViewById(R.id.guild_scheduled_event_list_item_share_button); if (imageView3 != null) { @@ -94,17 +103,18 @@ public final class GuildScheduledEventItemView extends ConstraintLayout { ImageView imageView4 = (ImageView) inflate.findViewById(R.id.guild_scheduled_event_list_item_start_event_button); if (imageView4 != null) { i2 = R.id.guild_scheduled_event_list_item_start_event_button_text; - TextView textView6 = (TextView) inflate.findViewById(R.id.guild_scheduled_event_list_item_start_event_button_text); - if (textView6 != null) { + TextView textView5 = (TextView) inflate.findViewById(R.id.guild_scheduled_event_list_item_start_event_button_text); + if (textView5 != null) { i2 = R.id.guild_scheduled_event_list_item_status_icon; ImageView imageView5 = (ImageView) inflate.findViewById(R.id.guild_scheduled_event_list_item_status_icon); if (imageView5 != null) { i2 = R.id.guild_scheduled_event_list_item_title_text; - TextView textView7 = (TextView) inflate.findViewById(R.id.guild_scheduled_event_list_item_title_text); - if (textView7 != null) { - GuildScheduledEventItemViewBinding guildScheduledEventItemViewBinding = new GuildScheduledEventItemViewBinding((ConstraintLayout) inflate, imageView, textView, textView2, textView3, imageView2, textView4, textView5, imageView3, imageView4, textView6, imageView5, textView7); + TextView textView6 = (TextView) inflate.findViewById(R.id.guild_scheduled_event_list_item_title_text); + if (textView6 != null) { + GuildScheduledEventItemViewBinding guildScheduledEventItemViewBinding = new GuildScheduledEventItemViewBinding((ConstraintLayout) inflate, imageView, textView, textView2, linkifiedTextView, imageView2, textView3, textView4, imageView3, imageView4, textView5, imageView5, textView6); m.checkNotNullExpressionValue(guildScheduledEventItemViewBinding, "GuildScheduledEventItemV…rom(context), this, true)"); this.binding = guildScheduledEventItemViewBinding; + this.savedDescriptionCache = DescriptionCache.NoDescription.INSTANCE; return; } } @@ -126,22 +136,41 @@ public final class GuildScheduledEventItemView extends ConstraintLayout { this(context, (i2 & 2) != 0 ? null : attributeSet, (i2 & 4) != 0 ? 0 : i); } + public static final /* synthetic */ void access$handleSpoilerClicked(GuildScheduledEventItemView guildScheduledEventItemView, SpoilerNode spoilerNode) { + guildScheduledEventItemView.handleSpoilerClicked(spoilerNode); + } + + private final void configureDescription(String str) { + List> parseAndSaveDescription = parseAndSaveDescription(str); + LinkifiedTextView linkifiedTextView = this.binding.e; + if (parseAndSaveDescription != null) { + setVisibility(0); + m.checkNotNullExpressionValue(linkifiedTextView, "it"); + Context context = linkifiedTextView.getContext(); + m.checkNotNullExpressionValue(context, "it.context"); + linkifiedTextView.setDraweeSpanStringBuilder(AstRenderer.render(parseAndSaveDescription, new MessageRenderContext(context, 0, false, null, null, null, 0, null, null, 0, 0, new GuildScheduledEventItemView$configureDescription$1$renderContext$1(this), null, null, 14328, null))); + return; + } + setVisibility(8); + } + public static /* synthetic */ void configureInChatList$default(GuildScheduledEventItemView guildScheduledEventItemView, GuildScheduledEvent guildScheduledEvent, Channel channel, boolean z2, boolean z3, Function0 function0, Function0 function02, Function0 function03, int i, Object obj) { guildScheduledEventItemView.configureInChatList(guildScheduledEvent, channel, z2, z3, (i & 16) != 0 ? GuildScheduledEventItemView$configureInChatList$1.INSTANCE : function0, (i & 32) != 0 ? GuildScheduledEventItemView$configureInChatList$2.INSTANCE : function02, function03); } private final void configureInternal(GuildScheduledEvent guildScheduledEvent, Channel channel, boolean z2, boolean z3, boolean z4) { - GuildScheduledEventTiming eventTiming = GuildScheduledEventUtilitiesKt.getEventTiming(guildScheduledEvent); - GuildScheduledEventTiming guildScheduledEventTiming = GuildScheduledEventTiming.LIVE; boolean z5 = true; int i = 0; - boolean z6 = eventTiming == guildScheduledEventTiming; - boolean z7 = z3 && (eventTiming == GuildScheduledEventTiming.SOON || eventTiming == GuildScheduledEventTiming.NOW); - this.binding.f.setImageResource(z6 ? R.drawable.bg_guild_scheduled_event_list_item_interested_button_active : z2 ? R.drawable.bg_guild_scheduled_event_list_item_interested_button_interested : R.drawable.bg_guild_scheduled_event_list_item_interested_button_default); + boolean z6 = z4 && GuildScheduledEventsSharingFeatureFlag.Companion.getINSTANCE().canShareGuildScheduledEvents(); + GuildScheduledEventTiming eventTiming = GuildScheduledEventUtilitiesKt.getEventTiming(guildScheduledEvent); + GuildScheduledEventTiming guildScheduledEventTiming = GuildScheduledEventTiming.LIVE; + boolean z7 = eventTiming == guildScheduledEventTiming; + boolean z8 = z3 && (eventTiming == GuildScheduledEventTiming.SOON || eventTiming == GuildScheduledEventTiming.NOW); + this.binding.f.setImageResource(z7 ? R.drawable.bg_guild_scheduled_event_list_item_interested_button_active : z2 ? R.drawable.bg_guild_scheduled_event_list_item_interested_button_interested : R.drawable.bg_guild_scheduled_event_list_item_interested_button_default); TextView textView = this.binding.g; int color = (!z2 || eventTiming == guildScheduledEventTiming) ? ColorCompat.getColor(textView.getContext(), (int) R.color.white) : ColorCompat.getThemedColor(textView.getContext(), (int) R.attr.colorControlBrandForegroundNew); - int i2 = z6 ? 0 : z2 ? R.drawable.ic_check_brand_16dp : R.drawable.ic_bell_16dp; - int i3 = z6 ? R.string.stage_channel_join_button : R.string.stage_instance_interested_label; + int i2 = z7 ? 0 : z2 ? R.drawable.ic_check_brand_16dp : R.drawable.ic_bell_16dp; + int i3 = z7 ? R.string.stage_channel_join_button : R.string.stage_instance_interested_label; DrawableCompat.setCompoundDrawablesCompat$default(textView, i2, 0, 0, 0, 14, (Object) null); textView.setTextColor(color); Context context = textView.getContext(); @@ -150,13 +179,13 @@ public final class GuildScheduledEventItemView extends ConstraintLayout { textView.setText(b.h(context, i3, new Object[0], null, 4)); TextView textView2 = this.binding.k; m.checkNotNullExpressionValue(textView2, "binding.guildScheduledEv…tItemStartEventButtonText"); - textView2.setVisibility(z7 ? 0 : 8); + textView2.setVisibility(z8 ? 0 : 8); ImageView imageView = this.binding.j; m.checkNotNullExpressionValue(imageView, "binding.guildScheduledEv…tListItemStartEventButton"); - imageView.setVisibility(z7 ? 0 : 8); + imageView.setVisibility(z8 ? 0 : 8); ImageView imageView2 = this.binding.i; m.checkNotNullExpressionValue(imageView2, "binding.guildScheduledEventListItemShareButton"); - imageView2.setVisibility(z4 ? 0 : 8); + imageView2.setVisibility(z6 ? 0 : 8); TextView textView3 = this.binding.h; Integer i5 = guildScheduledEvent.i(); if (i5 != null) { @@ -172,9 +201,7 @@ public final class GuildScheduledEventItemView extends ConstraintLayout { TextView textView5 = this.binding.m; m.checkNotNullExpressionValue(textView5, "binding.guildScheduledEventListItemTitleText"); textView5.setText(guildScheduledEvent.f()); - TextView textView6 = this.binding.e; - m.checkNotNullExpressionValue(textView6, "binding.guildScheduledEventListItemDescText"); - ViewExtensions.setTextAndVisibilityBy(textView6, guildScheduledEvent.c()); + configureDescription(guildScheduledEvent.c()); ImageView imageView3 = this.binding.b; m.checkNotNullExpressionValue(imageView3, "binding.guildScheduledEventListItemChannelIcon"); if (channel.m() == null) { @@ -184,9 +211,9 @@ public final class GuildScheduledEventItemView extends ConstraintLayout { i = 8; } imageView3.setVisibility(i); - TextView textView7 = this.binding.f1612c; - m.checkNotNullExpressionValue(textView7, "binding.guildScheduledEventListItemChannelName"); - ViewExtensions.setTextAndVisibilityBy(textView7, channel.m()); + TextView textView6 = this.binding.f1612c; + m.checkNotNullExpressionValue(textView6, "binding.guildScheduledEventListItemChannelName"); + ViewExtensions.setTextAndVisibilityBy(textView6, channel.m()); configureTimeIconAndTextColor(eventTiming); } @@ -208,6 +235,30 @@ public final class GuildScheduledEventItemView extends ConstraintLayout { textView.setTextColor((ordinal2 == 3 || ordinal2 == 4) ? ColorCompat.getThemedColor(getContext(), (int) R.attr.colorControlBrandForegroundNew) : ordinal2 != 5 ? ColorCompat.getThemedColor(getContext(), (int) R.attr.colorHeaderPrimary) : ColorCompat.getColor(getContext(), (int) R.color.status_green_600)); } + private final void handleSpoilerClicked(SpoilerNode spoilerNode) { + DescriptionCache descriptionCache = this.savedDescriptionCache; + if (descriptionCache instanceof DescriptionCache.HasDescription) { + DescriptionCache.HasDescription hasDescription = (DescriptionCache.HasDescription) descriptionCache; + hasDescription.getShownSpoilerIndices().add(Integer.valueOf(spoilerNode.getId())); + GuildScheduledEventDescriptionParser.Companion.getINSTANCE().updateAstForSpoiler(hasDescription.getAst(), hasDescription.getShownSpoilerIndices()); + configureDescription(hasDescription.getDescription()); + } + } + + private final List> parseAndSaveDescription(String str) { + if (m.areEqual(this.savedDescriptionCache.getMaybeDescription(), str)) { + return this.savedDescriptionCache.getMaybeAst(); + } + if (str == null) { + DescriptionCache.NoDescription noDescription = DescriptionCache.NoDescription.INSTANCE; + this.savedDescriptionCache = noDescription; + return noDescription.getMaybeAst(); + } + DescriptionCache.HasDescription hasDescription = new DescriptionCache.HasDescription(str, GuildScheduledEventDescriptionParser.Companion.getINSTANCE().parse(str), new LinkedHashSet()); + this.savedDescriptionCache = hasDescription; + return hasDescription.getMaybeAst(); + } + public final void configureAsPreview(GuildScheduledEventModel guildScheduledEventModel, Channel channel) { m.checkNotNullParameter(guildScheduledEventModel, "eventModel"); m.checkNotNullParameter(channel, "channel"); @@ -238,24 +289,22 @@ public final class GuildScheduledEventItemView extends ConstraintLayout { TextView textView4 = this.binding.m; m.checkNotNullExpressionValue(textView4, "binding.guildScheduledEventListItemTitleText"); textView4.setText(guildScheduledEventModel.getName()); - TextView textView5 = this.binding.e; - m.checkNotNullExpressionValue(textView5, "binding.guildScheduledEventListItemDescText"); - ViewExtensions.setTextAndVisibilityBy(textView5, guildScheduledEventModel.getDescription()); + configureDescription(guildScheduledEventModel.getDescription()); configureTimeIconAndTextColor(eventTiming); - TextView textView6 = this.binding.d; - m.checkNotNullExpressionValue(textView6, "binding.guildScheduledEventListItemDateText"); + TextView textView5 = this.binding.d; + m.checkNotNullExpressionValue(textView5, "binding.guildScheduledEventListItemDateText"); Context context = getContext(); m.checkNotNullExpressionValue(context, "context"); - textView6.setText(GuildScheduledEventUtilitiesKt.getEventStartingTimeString(millis, context)); + textView5.setText(GuildScheduledEventUtilitiesKt.getEventStartingTimeString(millis, context)); ImageView imageView4 = this.binding.b; m.checkNotNullExpressionValue(imageView4, "binding.guildScheduledEventListItemChannelIcon"); if (channel.m() != null) { i = 0; } imageView4.setVisibility(i); - TextView textView7 = this.binding.f1612c; - m.checkNotNullExpressionValue(textView7, "binding.guildScheduledEventListItemChannelName"); - ViewExtensions.setTextAndVisibilityBy(textView7, channel.m()); + TextView textView6 = this.binding.f1612c; + m.checkNotNullExpressionValue(textView6, "binding.guildScheduledEventListItemChannelName"); + ViewExtensions.setTextAndVisibilityBy(textView6, channel.m()); } public final void configureInChatList(GuildScheduledEvent guildScheduledEvent, Channel channel, boolean z2, boolean z3, Function0 function0, Function0 function02, Function0 function03) { diff --git a/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventListViewModel$Companion$observeStores$1.java b/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventListViewModel$Companion$observeStores$1.java index 4080393ba2..827ba91ad9 100644 --- a/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventListViewModel$Companion$observeStores$1.java +++ b/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventListViewModel$Companion$observeStores$1.java @@ -38,9 +38,9 @@ public final class GuildScheduledEventListViewModel$Companion$observeStores$1 ex /* renamed from: invoke */ public final GuildScheduledEventListViewModel.StoreState mo1invoke() { Map channelsForGuild = this.$channelStore.getChannelsForGuild(this.$guildId); - List guildScheduledEvents = this.$guildScheduledEventsStore.getGuildScheduledEvents(this.$guildId); + List guildScheduledEvents$default = StoreGuildScheduledEvents.getGuildScheduledEvents$default(this.$guildScheduledEventsStore, this.$guildId, false, false, 6, null); ArrayList arrayList = new ArrayList(); - for (Object obj : guildScheduledEvents) { + for (Object obj : guildScheduledEvents$default) { if (channelsForGuild.containsKey(Long.valueOf(((GuildScheduledEvent) obj).b()))) { arrayList.add(obj); } diff --git a/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventListViewModel.java b/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventListViewModel.java index 5f7ebc822b..ca67862814 100644 --- a/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventListViewModel.java +++ b/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventListViewModel.java @@ -381,7 +381,8 @@ public final class GuildScheduledEventListViewModel extends AppViewModel { - public static final DiscordHubEmailViewModel$onGuildClicked$1 INSTANCE = new DiscordHubEmailViewModel$onGuildClicked$1(); - - public DiscordHubEmailViewModel$onGuildClicked$1() { - super(1); - } - - public final TrackNetworkMetadataReceiver invoke(EmailVerification emailVerification) { - boolean z2 = true; - if (emailVerification == null || !emailVerification.b()) { - z2 = false; - } - return new TrackNetworkActionHubWaitlistSignup(Boolean.valueOf(z2)); - } -} diff --git a/app/src/main/java/com/discord/widgets/hubs/HubDescriptionArgs.java b/app/src/main/java/com/discord/widgets/hubs/HubDescriptionArgs.java index cefb15f9b0..a32e4759c2 100644 --- a/app/src/main/java/com/discord/widgets/hubs/HubDescriptionArgs.java +++ b/app/src/main/java/com/discord/widgets/hubs/HubDescriptionArgs.java @@ -16,12 +16,13 @@ public final class HubDescriptionArgs implements Parcelable { private final long guildId; private final String hubName; private final boolean isEditing; + private final boolean isNewGuild; public static class Creator implements Parcelable.Creator { @Override // android.os.Parcelable.Creator public final HubDescriptionArgs createFromParcel(Parcel parcel) { m.checkNotNullParameter(parcel, "in"); - return new HubDescriptionArgs(parcel.readLong(), parcel.readLong(), parcel.readInt() != 0, parcel.readString(), parcel.readString(), parcel.readInt() != 0 ? (DirectoryEntryCategory) Enum.valueOf(DirectoryEntryCategory.class, parcel.readString()) : null); + return new HubDescriptionArgs(parcel.readLong(), parcel.readLong(), parcel.readInt() != 0, parcel.readString(), parcel.readInt() != 0, parcel.readString(), parcel.readInt() != 0 ? (DirectoryEntryCategory) Enum.valueOf(DirectoryEntryCategory.class, parcel.readString()) : null); } @Override // android.os.Parcelable.Creator @@ -30,23 +31,24 @@ public final class HubDescriptionArgs implements Parcelable { } } - public HubDescriptionArgs(long j, long j2, boolean z2, String str, String str2, DirectoryEntryCategory directoryEntryCategory) { + public HubDescriptionArgs(long j, long j2, boolean z2, String str, boolean z3, String str2, DirectoryEntryCategory directoryEntryCategory) { m.checkNotNullParameter(str, "hubName"); this.guildId = j; this.channelId = j2; this.isEditing = z2; this.hubName = str; + this.isNewGuild = z3; this.description = str2; this.category = directoryEntryCategory; } /* JADX INFO: this call moved to the top of the method (can break code semantics) */ - public /* synthetic */ HubDescriptionArgs(long j, long j2, boolean z2, String str, String str2, DirectoryEntryCategory directoryEntryCategory, int i, DefaultConstructorMarker defaultConstructorMarker) { - this(j, j2, z2, str, (i & 16) != 0 ? null : str2, (i & 32) != 0 ? null : directoryEntryCategory); + public /* synthetic */ HubDescriptionArgs(long j, long j2, boolean z2, String str, boolean z3, String str2, DirectoryEntryCategory directoryEntryCategory, int i, DefaultConstructorMarker defaultConstructorMarker) { + this(j, j2, z2, str, (i & 16) != 0 ? false : z3, (i & 32) != 0 ? null : str2, (i & 64) != 0 ? null : directoryEntryCategory); } - public static /* synthetic */ HubDescriptionArgs copy$default(HubDescriptionArgs hubDescriptionArgs, long j, long j2, boolean z2, String str, String str2, DirectoryEntryCategory directoryEntryCategory, int i, Object obj) { - return hubDescriptionArgs.copy((i & 1) != 0 ? hubDescriptionArgs.guildId : j, (i & 2) != 0 ? hubDescriptionArgs.channelId : j2, (i & 4) != 0 ? hubDescriptionArgs.isEditing : z2, (i & 8) != 0 ? hubDescriptionArgs.hubName : str, (i & 16) != 0 ? hubDescriptionArgs.description : str2, (i & 32) != 0 ? hubDescriptionArgs.category : directoryEntryCategory); + public static /* synthetic */ HubDescriptionArgs copy$default(HubDescriptionArgs hubDescriptionArgs, long j, long j2, boolean z2, String str, boolean z3, String str2, DirectoryEntryCategory directoryEntryCategory, int i, Object obj) { + return hubDescriptionArgs.copy((i & 1) != 0 ? hubDescriptionArgs.guildId : j, (i & 2) != 0 ? hubDescriptionArgs.channelId : j2, (i & 4) != 0 ? hubDescriptionArgs.isEditing : z2, (i & 8) != 0 ? hubDescriptionArgs.hubName : str, (i & 16) != 0 ? hubDescriptionArgs.isNewGuild : z3, (i & 32) != 0 ? hubDescriptionArgs.description : str2, (i & 64) != 0 ? hubDescriptionArgs.category : directoryEntryCategory); } public final long component1() { @@ -65,17 +67,21 @@ public final class HubDescriptionArgs implements Parcelable { return this.hubName; } - public final String component5() { + public final boolean component5() { + return this.isNewGuild; + } + + public final String component6() { return this.description; } - public final DirectoryEntryCategory component6() { + public final DirectoryEntryCategory component7() { return this.category; } - public final HubDescriptionArgs copy(long j, long j2, boolean z2, String str, String str2, DirectoryEntryCategory directoryEntryCategory) { + public final HubDescriptionArgs copy(long j, long j2, boolean z2, String str, boolean z3, String str2, DirectoryEntryCategory directoryEntryCategory) { m.checkNotNullParameter(str, "hubName"); - return new HubDescriptionArgs(j, j2, z2, str, str2, directoryEntryCategory); + return new HubDescriptionArgs(j, j2, z2, str, z3, str2, directoryEntryCategory); } @Override // android.os.Parcelable @@ -92,7 +98,7 @@ public final class HubDescriptionArgs implements Parcelable { return false; } HubDescriptionArgs hubDescriptionArgs = (HubDescriptionArgs) obj; - return this.guildId == hubDescriptionArgs.guildId && this.channelId == hubDescriptionArgs.channelId && this.isEditing == hubDescriptionArgs.isEditing && m.areEqual(this.hubName, hubDescriptionArgs.hubName) && m.areEqual(this.description, hubDescriptionArgs.description) && m.areEqual(this.category, hubDescriptionArgs.category); + return this.guildId == hubDescriptionArgs.guildId && this.channelId == hubDescriptionArgs.channelId && this.isEditing == hubDescriptionArgs.isEditing && m.areEqual(this.hubName, hubDescriptionArgs.hubName) && this.isNewGuild == hubDescriptionArgs.isNewGuild && m.areEqual(this.description, hubDescriptionArgs.description) && m.areEqual(this.category, hubDescriptionArgs.category); } public final DirectoryEntryCategory getCategory() { @@ -119,29 +125,39 @@ public final class HubDescriptionArgs implements Parcelable { public int hashCode() { int a = (b.a(this.channelId) + (b.a(this.guildId) * 31)) * 31; boolean z2 = this.isEditing; + int i = 1; if (z2) { z2 = true; } - int i = z2 ? 1 : 0; int i2 = z2 ? 1 : 0; int i3 = z2 ? 1 : 0; - int i4 = (a + i) * 31; + int i4 = z2 ? 1 : 0; + int i5 = (a + i2) * 31; String str = this.hubName; - int i5 = 0; - int hashCode = (i4 + (str != null ? str.hashCode() : 0)) * 31; + int i6 = 0; + int hashCode = (i5 + (str != null ? str.hashCode() : 0)) * 31; + boolean z3 = this.isNewGuild; + if (!z3) { + i = z3 ? 1 : 0; + } + int i7 = (hashCode + i) * 31; String str2 = this.description; - int hashCode2 = (hashCode + (str2 != null ? str2.hashCode() : 0)) * 31; + int hashCode2 = (i7 + (str2 != null ? str2.hashCode() : 0)) * 31; DirectoryEntryCategory directoryEntryCategory = this.category; if (directoryEntryCategory != null) { - i5 = directoryEntryCategory.hashCode(); + i6 = directoryEntryCategory.hashCode(); } - return hashCode2 + i5; + return hashCode2 + i6; } public final boolean isEditing() { return this.isEditing; } + public final boolean isNewGuild() { + return this.isNewGuild; + } + @Override // java.lang.Object public String toString() { StringBuilder L = a.L("HubDescriptionArgs(guildId="); @@ -152,6 +168,8 @@ public final class HubDescriptionArgs implements Parcelable { L.append(this.isEditing); L.append(", hubName="); L.append(this.hubName); + L.append(", isNewGuild="); + L.append(this.isNewGuild); L.append(", description="); L.append(this.description); L.append(", category="); @@ -167,6 +185,7 @@ public final class HubDescriptionArgs implements Parcelable { parcel.writeLong(this.channelId); parcel.writeInt(this.isEditing ? 1 : 0); parcel.writeString(this.hubName); + parcel.writeInt(this.isNewGuild ? 1 : 0); parcel.writeString(this.description); DirectoryEntryCategory directoryEntryCategory = this.category; if (directoryEntryCategory != null) { diff --git a/app/src/main/java/com/discord/widgets/hubs/HubEmailArgs.java b/app/src/main/java/com/discord/widgets/hubs/HubEmailArgs.java index 6b7c8ce242..17c8fe1c62 100644 --- a/app/src/main/java/com/discord/widgets/hubs/HubEmailArgs.java +++ b/app/src/main/java/com/discord/widgets/hubs/HubEmailArgs.java @@ -5,7 +5,7 @@ import android.os.Parcelable; import c.d.b.a.a; import d0.z.d.m; import kotlin.jvm.internal.DefaultConstructorMarker; -/* compiled from: DiscordHubEmailViewModel.kt */ +/* compiled from: WidgetHubEmailViewModel.kt */ public final class HubEmailArgs implements Parcelable { public static final Parcelable.Creator CREATOR = new Creator(); private final int guildMemberCount; diff --git a/app/src/main/java/com/discord/widgets/hubs/DiscordHubEmailState$hasMultipleDomains$2.java b/app/src/main/java/com/discord/widgets/hubs/HubEmailState$hasMultipleDomains$2.java similarity index 66% rename from app/src/main/java/com/discord/widgets/hubs/DiscordHubEmailState$hasMultipleDomains$2.java rename to app/src/main/java/com/discord/widgets/hubs/HubEmailState$hasMultipleDomains$2.java index 43d1b2b20f..33cc02b81c 100644 --- a/app/src/main/java/com/discord/widgets/hubs/DiscordHubEmailState$hasMultipleDomains$2.java +++ b/app/src/main/java/com/discord/widgets/hubs/HubEmailState$hasMultipleDomains$2.java @@ -5,14 +5,14 @@ import com.discord.api.hubs.GuildInfo; import d0.z.d.o; import java.util.List; import kotlin.jvm.functions.Function0; -/* compiled from: DiscordHubEmailViewModel.kt */ -public final class DiscordHubEmailState$hasMultipleDomains$2 extends o implements Function0 { - public final /* synthetic */ DiscordHubEmailState this$0; +/* compiled from: WidgetHubEmailViewModel.kt */ +public final class HubEmailState$hasMultipleDomains$2 extends o implements Function0 { + public final /* synthetic */ HubEmailState this$0; /* JADX INFO: super call moved to the top of the method (can break code semantics) */ - public DiscordHubEmailState$hasMultipleDomains$2(DiscordHubEmailState discordHubEmailState) { + public HubEmailState$hasMultipleDomains$2(HubEmailState hubEmailState) { super(0); - this.this$0 = discordHubEmailState; + this.this$0 = hubEmailState; } /* Return type fixed from 'boolean' to match base method */ diff --git a/app/src/main/java/com/discord/widgets/hubs/DiscordHubEmailState.java b/app/src/main/java/com/discord/widgets/hubs/HubEmailState.java similarity index 63% rename from app/src/main/java/com/discord/widgets/hubs/DiscordHubEmailState.java rename to app/src/main/java/com/discord/widgets/hubs/HubEmailState.java index 6569c777fd..905d719118 100644 --- a/app/src/main/java/com/discord/widgets/hubs/DiscordHubEmailState.java +++ b/app/src/main/java/com/discord/widgets/hubs/HubEmailState.java @@ -8,43 +8,43 @@ import d0.g; import d0.z.d.m; import kotlin.Lazy; import kotlin.jvm.internal.DefaultConstructorMarker; -/* compiled from: DiscordHubEmailViewModel.kt */ -public final class DiscordHubEmailState { +/* compiled from: WidgetHubEmailViewModel.kt */ +public final class HubEmailState { private final String email; private final Lazy hasMultipleDomains$delegate; private final RestCallState verifyEmailAsync; private final HubWaitlistResult waitlistResult; - public DiscordHubEmailState() { + public HubEmailState() { this(null, null, null, 7, null); } - public DiscordHubEmailState(String str, HubWaitlistResult hubWaitlistResult, RestCallState restCallState) { + public HubEmailState(String str, HubWaitlistResult hubWaitlistResult, RestCallState restCallState) { m.checkNotNullParameter(restCallState, "verifyEmailAsync"); this.email = str; this.waitlistResult = hubWaitlistResult; this.verifyEmailAsync = restCallState; - this.hasMultipleDomains$delegate = g.lazy(new DiscordHubEmailState$hasMultipleDomains$2(this)); + this.hasMultipleDomains$delegate = g.lazy(new HubEmailState$hasMultipleDomains$2(this)); } /* JADX INFO: this call moved to the top of the method (can break code semantics) */ - public /* synthetic */ DiscordHubEmailState(String str, HubWaitlistResult hubWaitlistResult, RestCallState restCallState, int i, DefaultConstructorMarker defaultConstructorMarker) { + public /* synthetic */ HubEmailState(String str, HubWaitlistResult hubWaitlistResult, RestCallState restCallState, int i, DefaultConstructorMarker defaultConstructorMarker) { this((i & 1) != 0 ? null : str, (i & 2) != 0 ? null : hubWaitlistResult, (i & 4) != 0 ? Default.INSTANCE : restCallState); } - /* JADX DEBUG: Multi-variable search result rejected for r0v0, resolved type: com.discord.widgets.hubs.DiscordHubEmailState */ + /* JADX DEBUG: Multi-variable search result rejected for r0v0, resolved type: com.discord.widgets.hubs.HubEmailState */ /* JADX WARN: Multi-variable type inference failed */ - public static /* synthetic */ DiscordHubEmailState copy$default(DiscordHubEmailState discordHubEmailState, String str, HubWaitlistResult hubWaitlistResult, RestCallState restCallState, int i, Object obj) { + public static /* synthetic */ HubEmailState copy$default(HubEmailState hubEmailState, String str, HubWaitlistResult hubWaitlistResult, RestCallState restCallState, int i, Object obj) { if ((i & 1) != 0) { - str = discordHubEmailState.email; + str = hubEmailState.email; } if ((i & 2) != 0) { - hubWaitlistResult = discordHubEmailState.waitlistResult; + hubWaitlistResult = hubEmailState.waitlistResult; } if ((i & 4) != 0) { - restCallState = discordHubEmailState.verifyEmailAsync; + restCallState = hubEmailState.verifyEmailAsync; } - return discordHubEmailState.copy(str, hubWaitlistResult, restCallState); + return hubEmailState.copy(str, hubWaitlistResult, restCallState); } public final String component1() { @@ -59,20 +59,20 @@ public final class DiscordHubEmailState { return this.verifyEmailAsync; } - public final DiscordHubEmailState copy(String str, HubWaitlistResult hubWaitlistResult, RestCallState restCallState) { + public final HubEmailState copy(String str, HubWaitlistResult hubWaitlistResult, RestCallState restCallState) { m.checkNotNullParameter(restCallState, "verifyEmailAsync"); - return new DiscordHubEmailState(str, hubWaitlistResult, restCallState); + return new HubEmailState(str, hubWaitlistResult, restCallState); } public boolean equals(Object obj) { if (this == obj) { return true; } - if (!(obj instanceof DiscordHubEmailState)) { + if (!(obj instanceof HubEmailState)) { return false; } - DiscordHubEmailState discordHubEmailState = (DiscordHubEmailState) obj; - return m.areEqual(this.email, discordHubEmailState.email) && m.areEqual(this.waitlistResult, discordHubEmailState.waitlistResult) && m.areEqual(this.verifyEmailAsync, discordHubEmailState.verifyEmailAsync); + HubEmailState hubEmailState = (HubEmailState) obj; + return m.areEqual(this.email, hubEmailState.email) && m.areEqual(this.waitlistResult, hubEmailState.waitlistResult) && m.areEqual(this.verifyEmailAsync, hubEmailState.verifyEmailAsync); } public final String getEmail() { @@ -105,7 +105,7 @@ public final class DiscordHubEmailState { } public String toString() { - StringBuilder L = a.L("DiscordHubEmailState(email="); + StringBuilder L = a.L("HubEmailState(email="); L.append(this.email); L.append(", waitlistResult="); L.append(this.waitlistResult); diff --git a/app/src/main/java/com/discord/widgets/hubs/WidgetHubAddServer$adapter$1.java b/app/src/main/java/com/discord/widgets/hubs/WidgetHubAddServer$adapter$1.java index 27cb0ee0d3..a56a4f63c0 100644 --- a/app/src/main/java/com/discord/widgets/hubs/WidgetHubAddServer$adapter$1.java +++ b/app/src/main/java/com/discord/widgets/hubs/WidgetHubAddServer$adapter$1.java @@ -3,7 +3,7 @@ package com.discord.widgets.hubs; import android.view.LayoutInflater; import android.view.ViewGroup; import com.discord.databinding.DiscordHubAddServerListItemBinding; -import d0.z.d.k; +import d0.z.d.a; import d0.z.d.m; import d0.z.d.o; import kotlin.Unit; @@ -15,9 +15,9 @@ public final class WidgetHubAddServer$adapter$1 extends o implements Function2 { + public static final /* synthetic */ class AnonymousClass1 extends a implements Function1 { public AnonymousClass1(WidgetHubAddServer widgetHubAddServer) { - super(1, widgetHubAddServer, WidgetHubAddServer.class, "onServerClickListener", "onServerClickListener(J)V", 0); + super(1, widgetHubAddServer, WidgetHubAddServer.class, "onServerClickListener", "onServerClickListener(JZ)V", 0); } /* Return type fixed from 'java.lang.Object' to match base method */ @@ -29,7 +29,7 @@ public final class WidgetHubAddServer$adapter$1 extends o implements Function2 implements ActivityResultCal data = null; } if (data != null && (result = (WidgetGuildCreate.Result) data.getParcelableExtra("intent_args_key")) != null) { - WidgetHubAddServer.access$onServerClickListener(this.this$0, result.getGuildId()); + WidgetHubAddServer.access$onServerClickListener(this.this$0, result.getGuildId(), true); } } } diff --git a/app/src/main/java/com/discord/widgets/hubs/WidgetHubAddServer$loggingConfig$1.java b/app/src/main/java/com/discord/widgets/hubs/WidgetHubAddServer$loggingConfig$1.java new file mode 100644 index 0000000000..eda7112809 --- /dev/null +++ b/app/src/main/java/com/discord/widgets/hubs/WidgetHubAddServer$loggingConfig$1.java @@ -0,0 +1,20 @@ +package com.discord.widgets.hubs; + +import com.discord.analytics.generated.events.impression.TrackImpressionHubExistingGuildChoose; +import com.discord.api.science.AnalyticsSchema; +import d0.z.d.o; +import kotlin.jvm.functions.Function0; +/* compiled from: WidgetHubAddServer.kt */ +public final class WidgetHubAddServer$loggingConfig$1 extends o implements Function0 { + public static final WidgetHubAddServer$loggingConfig$1 INSTANCE = new WidgetHubAddServer$loggingConfig$1(); + + public WidgetHubAddServer$loggingConfig$1() { + super(0); + } + + @Override // kotlin.jvm.functions.Function0 + /* renamed from: invoke */ + public final AnalyticsSchema mo1invoke() { + return new TrackImpressionHubExistingGuildChoose(); + } +} diff --git a/app/src/main/java/com/discord/widgets/hubs/WidgetHubAddServer.java b/app/src/main/java/com/discord/widgets/hubs/WidgetHubAddServer.java index 0280159e4e..d6685d05c5 100644 --- a/app/src/main/java/com/discord/widgets/hubs/WidgetHubAddServer.java +++ b/app/src/main/java/com/discord/widgets/hubs/WidgetHubAddServer.java @@ -15,6 +15,7 @@ import c.a.k.b; import c.d.b.a.a; import com.discord.R; import com.discord.app.AppFragment; +import com.discord.app.LoggingConfig; import com.discord.databinding.WidgetHubAddServerBinding; import com.discord.models.guild.Guild; import com.discord.utilities.hubs.HubUtilsKt; @@ -36,6 +37,7 @@ public final class WidgetHubAddServer extends AppFragment { private final SimpleRecyclerAdapter adapter = new SimpleRecyclerAdapter<>(null, new WidgetHubAddServer$adapter$1(this), 1, null); private final FragmentViewBindingDelegate binding$delegate = FragmentViewBindingDelegateKt.viewBinding$default(this, WidgetHubAddServer$binding$2.INSTANCE, null, 2, null); private final ActivityResultLauncher launcher; + private final LoggingConfig loggingConfig; private final Lazy viewModel$delegate = FragmentViewModelLazyKt.createViewModelLazy(this, a0.getOrCreateKotlinClass(WidgetDiscordHubAddServerViewModel.class), new WidgetHubAddServer$appActivityViewModels$$inlined$activityViewModels$1(this), new e0(WidgetHubAddServer$viewModel$2.INSTANCE)); /* compiled from: WidgetHubAddServer.kt */ @@ -56,8 +58,9 @@ public final class WidgetHubAddServer extends AppFragment { public WidgetHubAddServer() { super(R.layout.widget_hub_add_server); ActivityResultLauncher registerForActivityResult = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new WidgetHubAddServer$launcher$1(this)); - m.checkNotNullExpressionValue(registerForActivityResult, "registerForActivityResul…istener(it.guildId) }\n }"); + m.checkNotNullExpressionValue(registerForActivityResult, "registerForActivityResul… isNewGuild = true) }\n }"); this.launcher = registerForActivityResult; + this.loggingConfig = new LoggingConfig(false, null, WidgetHubAddServer$loggingConfig$1.INSTANCE, 3); } public static final /* synthetic */ void access$configureUI(WidgetHubAddServer widgetHubAddServer, DiscordHubAddServerState discordHubAddServerState) { @@ -68,8 +71,8 @@ public final class WidgetHubAddServer extends AppFragment { return widgetHubAddServer.launcher; } - public static final /* synthetic */ void access$onServerClickListener(WidgetHubAddServer widgetHubAddServer, long j) { - widgetHubAddServer.onServerClickListener(j); + public static final /* synthetic */ void access$onServerClickListener(WidgetHubAddServer widgetHubAddServer, long j, boolean z2) { + widgetHubAddServer.onServerClickListener(j, z2); } private final void configureUI(DiscordHubAddServerState discordHubAddServerState) { @@ -78,17 +81,24 @@ public final class WidgetHubAddServer extends AppFragment { getBinding().b.setOnClickListener(new WidgetHubAddServer$configureUI$1(this, discordHubAddServerState)); } - private final void onServerClickListener(long j) { + private final void onServerClickListener(long j, boolean z2) { Context context = getContext(); if (context != null) { m.checkNotNullExpressionValue(context, "context ?: return"); Long channelId = getViewModel().getChannelId(); if (channelId != null) { - j.g(j.g, getParentFragmentManager(), context, WidgetHubDescription.class, 0, true, null, new HubDescriptionArgs(j, channelId.longValue(), false, getViewModel().getHubName(), null, null, 48, null), 40); + j.g(j.g, getParentFragmentManager(), context, WidgetHubDescription.class, 0, true, null, new HubDescriptionArgs(j, channelId.longValue(), false, getViewModel().getHubName(), z2, null, null, 96, null), 40); } } } + public static /* synthetic */ void onServerClickListener$default(WidgetHubAddServer widgetHubAddServer, long j, boolean z2, int i, Object obj) { + if ((i & 2) != 0) { + z2 = false; + } + widgetHubAddServer.onServerClickListener(j, z2); + } + public final SimpleRecyclerAdapter getAdapter() { return this.adapter; } @@ -97,6 +107,11 @@ public final class WidgetHubAddServer extends AppFragment { return (WidgetHubAddServerBinding) this.binding$delegate.getValue((Fragment) this, $$delegatedProperties[0]); } + @Override // com.discord.app.AppFragment, com.discord.app.AppLogger.a + public LoggingConfig getLoggingConfig() { + return this.loggingConfig; + } + public final WidgetDiscordHubAddServerViewModel getViewModel() { return (WidgetDiscordHubAddServerViewModel) this.viewModel$delegate.getValue(); } diff --git a/app/src/main/java/com/discord/widgets/hubs/WidgetHubDescription$loggingConfig$1.java b/app/src/main/java/com/discord/widgets/hubs/WidgetHubDescription$loggingConfig$1.java new file mode 100644 index 0000000000..2e637db5cd --- /dev/null +++ b/app/src/main/java/com/discord/widgets/hubs/WidgetHubDescription$loggingConfig$1.java @@ -0,0 +1,23 @@ +package com.discord.widgets.hubs; + +import com.discord.analytics.generated.events.impression.TrackImpressionHubCreateGuildCustomize; +import com.discord.analytics.generated.events.impression.TrackImpressionHubExistingGuildCustomize; +import com.discord.api.science.AnalyticsSchema; +import d0.z.d.o; +import kotlin.jvm.functions.Function0; +/* compiled from: WidgetHubDescription.kt */ +public final class WidgetHubDescription$loggingConfig$1 extends o implements Function0 { + public final /* synthetic */ WidgetHubDescription this$0; + + /* JADX INFO: super call moved to the top of the method (can break code semantics) */ + public WidgetHubDescription$loggingConfig$1(WidgetHubDescription widgetHubDescription) { + super(0); + this.this$0 = widgetHubDescription; + } + + @Override // kotlin.jvm.functions.Function0 + /* renamed from: invoke */ + public final AnalyticsSchema mo1invoke() { + return this.this$0.getArgs().isNewGuild() ? new TrackImpressionHubCreateGuildCustomize() : new TrackImpressionHubExistingGuildCustomize(); + } +} diff --git a/app/src/main/java/com/discord/widgets/hubs/WidgetHubDescription$viewModel$2.java b/app/src/main/java/com/discord/widgets/hubs/WidgetHubDescription$viewModel$2.java index 439e1d5ce5..7ed500eed2 100644 --- a/app/src/main/java/com/discord/widgets/hubs/WidgetHubDescription$viewModel$2.java +++ b/app/src/main/java/com/discord/widgets/hubs/WidgetHubDescription$viewModel$2.java @@ -16,6 +16,6 @@ public final class WidgetHubDescription$viewModel$2 extends o implements Functio @Override // kotlin.jvm.functions.Function0 /* renamed from: invoke */ public final AppViewModel mo1invoke() { - return new WidgetDiscordHubsDescriptionViewModel(this.this$0.getArgs().getGuildId(), this.this$0.getArgs().isEditing(), this.this$0.getArgs().getCategory(), null, null, 24, null); + return new WidgetHubDescriptionViewModel(this.this$0.getArgs().getGuildId(), this.this$0.getArgs().isEditing(), this.this$0.getArgs().getCategory(), null, null, 24, null); } } diff --git a/app/src/main/java/com/discord/widgets/hubs/WidgetHubDescription.java b/app/src/main/java/com/discord/widgets/hubs/WidgetHubDescription.java index 920692604b..ed7126a5bb 100644 --- a/app/src/main/java/com/discord/widgets/hubs/WidgetHubDescription.java +++ b/app/src/main/java/com/discord/widgets/hubs/WidgetHubDescription.java @@ -11,6 +11,7 @@ import c.a.k.b; import c.d.b.a.a; import com.discord.R; import com.discord.app.AppFragment; +import com.discord.app.LoggingConfig; import com.discord.databinding.WidgetHubDescriptionBinding; import com.discord.models.hubs.DirectoryEntryCategory; import com.discord.models.hubs.DirectoryEntryCategoryKt; @@ -37,6 +38,7 @@ public final class WidgetHubDescription extends AppFragment { public static final /* synthetic */ KProperty[] $$delegatedProperties = {a.W(WidgetHubDescription.class, "binding", "getBinding()Lcom/discord/databinding/WidgetHubDescriptionBinding;", 0)}; private final Lazy args$delegate = g.lazy(new WidgetHubDescription$$special$$inlined$args$1(this, "intent_args_key")); private final FragmentViewBindingDelegate binding$delegate = FragmentViewBindingDelegateKt.viewBinding$default(this, WidgetHubDescription$binding$2.INSTANCE, null, 2, null); + private final LoggingConfig loggingConfig; private final Lazy validationManager$delegate; private final Lazy viewModel$delegate; @@ -44,8 +46,9 @@ public final class WidgetHubDescription extends AppFragment { super(R.layout.widget_hub_description); WidgetHubDescription$viewModel$2 widgetHubDescription$viewModel$2 = new WidgetHubDescription$viewModel$2(this); f0 f0Var = new f0(this); - this.viewModel$delegate = FragmentViewModelLazyKt.createViewModelLazy(this, a0.getOrCreateKotlinClass(WidgetDiscordHubsDescriptionViewModel.class), new WidgetHubDescription$appViewModels$$inlined$viewModels$1(f0Var), new h0(widgetHubDescription$viewModel$2)); + this.viewModel$delegate = FragmentViewModelLazyKt.createViewModelLazy(this, a0.getOrCreateKotlinClass(WidgetHubDescriptionViewModel.class), new WidgetHubDescription$appViewModels$$inlined$viewModels$1(f0Var), new h0(widgetHubDescription$viewModel$2)); this.validationManager$delegate = g.lazy(new WidgetHubDescription$validationManager$2(this)); + this.loggingConfig = new LoggingConfig(false, null, new WidgetHubDescription$loggingConfig$1(this), 3); } public static final /* synthetic */ void access$configureUI(WidgetHubDescription widgetHubDescription, HubDescriptionState hubDescriptionState) { @@ -84,7 +87,7 @@ public final class WidgetHubDescription extends AppFragment { private final void maybeAddServer() { if (getValidationManager().validate(true)) { - WidgetDiscordHubsDescriptionViewModel viewModel = getViewModel(); + WidgetHubDescriptionViewModel viewModel = getViewModel(); long channelId = getArgs().getChannelId(); long guildId = getArgs().getGuildId(); TextInputEditText textInputEditText = getBinding().f; @@ -101,6 +104,11 @@ public final class WidgetHubDescription extends AppFragment { return (WidgetHubDescriptionBinding) this.binding$delegate.getValue((Fragment) this, $$delegatedProperties[0]); } + @Override // com.discord.app.AppFragment, com.discord.app.AppLogger.a + public LoggingConfig getLoggingConfig() { + return this.loggingConfig; + } + public final RadioSelectorItems getSelectorArgs() { String string = requireContext().getString(R.string.categories); m.checkNotNullExpressionValue(string, "requireContext().getString(R.string.categories)"); @@ -119,8 +127,8 @@ public final class WidgetHubDescription extends AppFragment { return new RadioSelectorItems(string, arrayList); } - public final WidgetDiscordHubsDescriptionViewModel getViewModel() { - return (WidgetDiscordHubsDescriptionViewModel) this.viewModel$delegate.getValue(); + public final WidgetHubDescriptionViewModel getViewModel() { + return (WidgetHubDescriptionViewModel) this.viewModel$delegate.getValue(); } @Override // com.discord.app.AppFragment diff --git a/app/src/main/java/com/discord/widgets/hubs/WidgetDiscordHubsDescriptionViewModel$Companion$observeStores$1.java b/app/src/main/java/com/discord/widgets/hubs/WidgetHubDescriptionViewModel$Companion$observeStores$1.java similarity index 78% rename from app/src/main/java/com/discord/widgets/hubs/WidgetDiscordHubsDescriptionViewModel$Companion$observeStores$1.java rename to app/src/main/java/com/discord/widgets/hubs/WidgetHubDescriptionViewModel$Companion$observeStores$1.java index 446c246c02..99c30626ef 100644 --- a/app/src/main/java/com/discord/widgets/hubs/WidgetDiscordHubsDescriptionViewModel$Companion$observeStores$1.java +++ b/app/src/main/java/com/discord/widgets/hubs/WidgetHubDescriptionViewModel$Companion$observeStores$1.java @@ -5,12 +5,12 @@ import com.discord.stores.StoreGuilds; import d0.z.d.o; import kotlin.jvm.functions.Function0; /* compiled from: WidgetHubDescriptionViewModel.kt */ -public final class WidgetDiscordHubsDescriptionViewModel$Companion$observeStores$1 extends o implements Function0 { +public final class WidgetHubDescriptionViewModel$Companion$observeStores$1 extends o implements Function0 { public final /* synthetic */ long $guildId; public final /* synthetic */ StoreGuilds $guildStore; /* JADX INFO: super call moved to the top of the method (can break code semantics) */ - public WidgetDiscordHubsDescriptionViewModel$Companion$observeStores$1(StoreGuilds storeGuilds, long j) { + public WidgetHubDescriptionViewModel$Companion$observeStores$1(StoreGuilds storeGuilds, long j) { super(0); this.$guildStore = storeGuilds; this.$guildId = j; diff --git a/app/src/main/java/com/discord/widgets/hubs/WidgetHubDescriptionViewModel$addServer$1.java b/app/src/main/java/com/discord/widgets/hubs/WidgetHubDescriptionViewModel$addServer$1.java new file mode 100644 index 0000000000..bf71e5cecc --- /dev/null +++ b/app/src/main/java/com/discord/widgets/hubs/WidgetHubDescriptionViewModel$addServer$1.java @@ -0,0 +1,26 @@ +package com.discord.widgets.hubs; + +import com.discord.analytics.generated.events.network_action.TrackNetworkActionDirectoryGuildEntryCreate; +import com.discord.analytics.generated.traits.TrackNetworkMetadataReceiver; +import com.discord.api.directory.DirectoryEntry; +import com.discord.models.hubs.DirectoryEntryCategory; +import d0.z.d.o; +import kotlin.jvm.functions.Function1; +/* compiled from: WidgetHubDescriptionViewModel.kt */ +public final class WidgetHubDescriptionViewModel$addServer$1 extends o implements Function1 { + public final /* synthetic */ DirectoryEntryCategory $category; + public final /* synthetic */ long $channelId; + public final /* synthetic */ long $guildId; + + /* JADX INFO: super call moved to the top of the method (can break code semantics) */ + public WidgetHubDescriptionViewModel$addServer$1(long j, long j2, DirectoryEntryCategory directoryEntryCategory) { + super(1); + this.$channelId = j; + this.$guildId = j2; + this.$category = directoryEntryCategory; + } + + public final TrackNetworkMetadataReceiver invoke(DirectoryEntry directoryEntry) { + return new TrackNetworkActionDirectoryGuildEntryCreate(Long.valueOf(this.$channelId), Long.valueOf(this.$guildId), Integer.valueOf(this.$category.getKey())); + } +} diff --git a/app/src/main/java/com/discord/widgets/hubs/WidgetDiscordHubsDescriptionViewModel$addServer$1.java b/app/src/main/java/com/discord/widgets/hubs/WidgetHubDescriptionViewModel$addServer$2.java similarity index 62% rename from app/src/main/java/com/discord/widgets/hubs/WidgetDiscordHubsDescriptionViewModel$addServer$1.java rename to app/src/main/java/com/discord/widgets/hubs/WidgetHubDescriptionViewModel$addServer$2.java index cec656895e..3d5f55516d 100644 --- a/app/src/main/java/com/discord/widgets/hubs/WidgetDiscordHubsDescriptionViewModel$addServer$1.java +++ b/app/src/main/java/com/discord/widgets/hubs/WidgetHubDescriptionViewModel$addServer$2.java @@ -7,14 +7,14 @@ import d0.z.d.o; import kotlin.Unit; import kotlin.jvm.functions.Function1; /* compiled from: WidgetHubDescriptionViewModel.kt */ -public final class WidgetDiscordHubsDescriptionViewModel$addServer$1 extends o implements Function1, Unit> { +public final class WidgetHubDescriptionViewModel$addServer$2 extends o implements Function1, Unit> { public final /* synthetic */ HubDescriptionState $state; - public final /* synthetic */ WidgetDiscordHubsDescriptionViewModel this$0; + public final /* synthetic */ WidgetHubDescriptionViewModel this$0; /* JADX INFO: super call moved to the top of the method (can break code semantics) */ - public WidgetDiscordHubsDescriptionViewModel$addServer$1(WidgetDiscordHubsDescriptionViewModel widgetDiscordHubsDescriptionViewModel, HubDescriptionState hubDescriptionState) { + public WidgetHubDescriptionViewModel$addServer$2(WidgetHubDescriptionViewModel widgetHubDescriptionViewModel, HubDescriptionState hubDescriptionState) { super(1); - this.this$0 = widgetDiscordHubsDescriptionViewModel; + this.this$0 = widgetHubDescriptionViewModel; this.$state = hubDescriptionState; } @@ -28,6 +28,6 @@ public final class WidgetDiscordHubsDescriptionViewModel$addServer$1 extends o i public final void invoke(RestCallState restCallState) { m.checkNotNullParameter(restCallState, "it"); - WidgetDiscordHubsDescriptionViewModel.access$updateViewState(this.this$0, HubDescriptionState.copy$default(this.$state, 0, null, null, restCallState, 7, null)); + WidgetHubDescriptionViewModel.access$updateViewState(this.this$0, HubDescriptionState.copy$default(this.$state, 0, null, null, restCallState, 7, null)); } } diff --git a/app/src/main/java/com/discord/widgets/hubs/WidgetDiscordHubsDescriptionViewModel.java b/app/src/main/java/com/discord/widgets/hubs/WidgetHubDescriptionViewModel.java similarity index 74% rename from app/src/main/java/com/discord/widgets/hubs/WidgetDiscordHubsDescriptionViewModel.java rename to app/src/main/java/com/discord/widgets/hubs/WidgetHubDescriptionViewModel.java index acbac4c3a1..ec2b5e9c5d 100644 --- a/app/src/main/java/com/discord/widgets/hubs/WidgetDiscordHubsDescriptionViewModel.java +++ b/app/src/main/java/com/discord/widgets/hubs/WidgetHubDescriptionViewModel.java @@ -20,7 +20,7 @@ import kotlin.jvm.functions.Function1; import kotlin.jvm.internal.DefaultConstructorMarker; import rx.Observable; /* compiled from: WidgetHubDescriptionViewModel.kt */ -public final class WidgetDiscordHubsDescriptionViewModel extends AppViewModel { +public final class WidgetHubDescriptionViewModel extends AppViewModel { public static final Companion Companion = new Companion(null); private final long guildId; private final boolean isEditing; @@ -28,10 +28,10 @@ public final class WidgetDiscordHubsDescriptionViewModel extends AppViewModel { - public AnonymousClass1(WidgetDiscordHubsDescriptionViewModel widgetDiscordHubsDescriptionViewModel) { - super(1, widgetDiscordHubsDescriptionViewModel, WidgetDiscordHubsDescriptionViewModel.class, "handleStoreUpdate", "handleStoreUpdate(Lcom/discord/widgets/hubs/HubDescriptionState;)Lkotlin/Unit;", 8); + public AnonymousClass1(WidgetHubDescriptionViewModel widgetHubDescriptionViewModel) { + super(1, widgetHubDescriptionViewModel, WidgetHubDescriptionViewModel.class, "handleStoreUpdate", "handleStoreUpdate(Lcom/discord/widgets/hubs/HubDescriptionState;)Lkotlin/Unit;", 8); } /* Return type fixed from 'java.lang.Object' to match base method */ @@ -44,7 +44,7 @@ public final class WidgetDiscordHubsDescriptionViewModel extends AppViewModel observeStores(long j, ObservationDeck observationDeck, StoreGuilds storeGuilds) { m.checkNotNullParameter(observationDeck, "observationDeck"); m.checkNotNullParameter(storeGuilds, "guildStore"); - return ObservationDeck.connectRx$default(observationDeck, new ObservationDeck.UpdateSource[]{storeGuilds}, false, null, null, new WidgetDiscordHubsDescriptionViewModel$Companion$observeStores$1(storeGuilds, j), 14, null); + return ObservationDeck.connectRx$default(observationDeck, new ObservationDeck.UpdateSource[]{storeGuilds}, false, null, null, new WidgetHubDescriptionViewModel$Companion$observeStores$1(storeGuilds, j), 14, null); } } /* JADX INFO: super call moved to the top of the method (can break code semantics) */ - public WidgetDiscordHubsDescriptionViewModel(long j, boolean z2, DirectoryEntryCategory directoryEntryCategory, RestAPI restAPI, Observable observable) { + public WidgetHubDescriptionViewModel(long j, boolean z2, DirectoryEntryCategory directoryEntryCategory, RestAPI restAPI, Observable observable) { super(new HubDescriptionState(0, directoryEntryCategory, null, null, 13, null)); m.checkNotNullParameter(restAPI, "restAPI"); m.checkNotNullParameter(observable, "storeObservable"); @@ -73,16 +73,16 @@ public final class WidgetDiscordHubsDescriptionViewModel extends AppViewModel { +public final class WidgetHubEmailFlow$onViewBoundOrOnResume$1 extends o implements Function1 { public final /* synthetic */ WidgetHubEmailFlow this$0; /* JADX INFO: super call moved to the top of the method (can break code semantics) */ @@ -17,14 +17,14 @@ public final class WidgetHubEmailFlow$onViewBoundOrOnResume$1 extends o implemen /* Return type fixed from 'java.lang.Object' to match base method */ /* JADX DEBUG: Method arguments types fixed to match base method, original types: [java.lang.Object] */ @Override // kotlin.jvm.functions.Function1 - public /* bridge */ /* synthetic */ Unit invoke(DiscordHubEmailState discordHubEmailState) { - invoke(discordHubEmailState); + public /* bridge */ /* synthetic */ Unit invoke(HubEmailState hubEmailState) { + invoke(hubEmailState); return Unit.a; } - public final void invoke(DiscordHubEmailState discordHubEmailState) { + public final void invoke(HubEmailState hubEmailState) { WidgetHubEmailFlow widgetHubEmailFlow = this.this$0; - m.checkNotNullExpressionValue(discordHubEmailState, "viewState"); - WidgetHubEmailFlow.access$updateView(widgetHubEmailFlow, discordHubEmailState); + m.checkNotNullExpressionValue(hubEmailState, "viewState"); + WidgetHubEmailFlow.access$updateView(widgetHubEmailFlow, hubEmailState); } } diff --git a/app/src/main/java/com/discord/widgets/hubs/WidgetHubEmailFlow$updateView$4.java b/app/src/main/java/com/discord/widgets/hubs/WidgetHubEmailFlow$updateView$4.java index edfa243553..8a1182abdb 100644 --- a/app/src/main/java/com/discord/widgets/hubs/WidgetHubEmailFlow$updateView$4.java +++ b/app/src/main/java/com/discord/widgets/hubs/WidgetHubEmailFlow$updateView$4.java @@ -19,14 +19,14 @@ import kotlin.jvm.functions.Function1; public final class WidgetHubEmailFlow$updateView$4 extends o implements Function1, Unit> { public final /* synthetic */ Context $context; public final /* synthetic */ String $email; - public final /* synthetic */ DiscordHubEmailState $state; + public final /* synthetic */ HubEmailState $state; public final /* synthetic */ WidgetHubEmailFlow this$0; /* JADX INFO: super call moved to the top of the method (can break code semantics) */ - public WidgetHubEmailFlow$updateView$4(WidgetHubEmailFlow widgetHubEmailFlow, DiscordHubEmailState discordHubEmailState, Context context, String str) { + public WidgetHubEmailFlow$updateView$4(WidgetHubEmailFlow widgetHubEmailFlow, HubEmailState hubEmailState, Context context, String str) { super(1); this.this$0 = widgetHubEmailFlow; - this.$state = discordHubEmailState; + this.$state = hubEmailState; this.$context = context; this.$email = str; } diff --git a/app/src/main/java/com/discord/widgets/hubs/WidgetHubEmailFlow$viewModel$2.java b/app/src/main/java/com/discord/widgets/hubs/WidgetHubEmailFlow$viewModel$2.java index 30001cb971..3177fe5ef5 100644 --- a/app/src/main/java/com/discord/widgets/hubs/WidgetHubEmailFlow$viewModel$2.java +++ b/app/src/main/java/com/discord/widgets/hubs/WidgetHubEmailFlow$viewModel$2.java @@ -4,7 +4,7 @@ import com.discord.app.AppViewModel; import d0.z.d.o; import kotlin.jvm.functions.Function0; /* compiled from: WidgetHubEmailFlow.kt */ -public final class WidgetHubEmailFlow$viewModel$2 extends o implements Function0> { +public final class WidgetHubEmailFlow$viewModel$2 extends o implements Function0> { public static final WidgetHubEmailFlow$viewModel$2 INSTANCE = new WidgetHubEmailFlow$viewModel$2(); public WidgetHubEmailFlow$viewModel$2() { @@ -13,7 +13,7 @@ public final class WidgetHubEmailFlow$viewModel$2 extends o implements Function0 @Override // kotlin.jvm.functions.Function0 /* renamed from: invoke */ - public final AppViewModel mo1invoke() { - return new DiscordHubEmailViewModel(null, false, 3, null); + public final AppViewModel mo1invoke() { + return new WidgetHubEmailViewModel(null, false, 3, null); } } diff --git a/app/src/main/java/com/discord/widgets/hubs/WidgetHubEmailFlow.java b/app/src/main/java/com/discord/widgets/hubs/WidgetHubEmailFlow.java index 685b1c1537..2f1432e83b 100644 --- a/app/src/main/java/com/discord/widgets/hubs/WidgetHubEmailFlow.java +++ b/app/src/main/java/com/discord/widgets/hubs/WidgetHubEmailFlow.java @@ -60,7 +60,7 @@ public final class WidgetHubEmailFlow extends AppFragment { this.activityResultHandler = registerForActivityResult; WidgetHubEmailFlow$viewModel$2 widgetHubEmailFlow$viewModel$2 = WidgetHubEmailFlow$viewModel$2.INSTANCE; f0 f0Var = new f0(this); - this.viewModel$delegate = FragmentViewModelLazyKt.createViewModelLazy(this, a0.getOrCreateKotlinClass(DiscordHubEmailViewModel.class), new WidgetHubEmailFlow$appViewModels$$inlined$viewModels$1(f0Var), new h0(widgetHubEmailFlow$viewModel$2)); + this.viewModel$delegate = FragmentViewModelLazyKt.createViewModelLazy(this, a0.getOrCreateKotlinClass(WidgetHubEmailViewModel.class), new WidgetHubEmailFlow$appViewModels$$inlined$viewModels$1(f0Var), new h0(widgetHubEmailFlow$viewModel$2)); this.validationManager$delegate = g.lazy(new WidgetHubEmailFlow$validationManager$2(this)); this.loggingConfig = new LoggingConfig(false, null, WidgetHubEmailFlow$loggingConfig$1.INSTANCE, 3); } @@ -77,12 +77,12 @@ public final class WidgetHubEmailFlow extends AppFragment { return widgetHubEmailFlow.getEmail(); } - public static final /* synthetic */ DiscordHubEmailViewModel access$getViewModel$p(WidgetHubEmailFlow widgetHubEmailFlow) { + public static final /* synthetic */ WidgetHubEmailViewModel access$getViewModel$p(WidgetHubEmailFlow widgetHubEmailFlow) { return widgetHubEmailFlow.getViewModel(); } - public static final /* synthetic */ void access$updateView(WidgetHubEmailFlow widgetHubEmailFlow, DiscordHubEmailState discordHubEmailState) { - widgetHubEmailFlow.updateView(discordHubEmailState); + public static final /* synthetic */ void access$updateView(WidgetHubEmailFlow widgetHubEmailFlow, HubEmailState hubEmailState) { + widgetHubEmailFlow.updateView(hubEmailState); } public static final /* synthetic */ void access$verifyEmail(WidgetHubEmailFlow widgetHubEmailFlow) { @@ -107,21 +107,21 @@ public final class WidgetHubEmailFlow extends AppFragment { return (ValidationManager) this.validationManager$delegate.getValue(); } - private final DiscordHubEmailViewModel getViewModel() { - return (DiscordHubEmailViewModel) this.viewModel$delegate.getValue(); + private final WidgetHubEmailViewModel getViewModel() { + return (WidgetHubEmailViewModel) this.viewModel$delegate.getValue(); } - private final void updateView(DiscordHubEmailState discordHubEmailState) { + private final void updateView(HubEmailState hubEmailState) { String school; Context context = getContext(); if (context != null) { m.checkNotNullExpressionValue(context, "context ?: return"); - EmailVerification invoke = discordHubEmailState.getVerifyEmailAsync().invoke(); + EmailVerification invoke = hubEmailState.getVerifyEmailAsync().invoke(); int i = 0; boolean z2 = invoke != null && invoke.b(); - boolean z3 = !(discordHubEmailState.getVerifyEmailAsync() instanceof Success) && discordHubEmailState.getWaitlistResult() == null; - EmailVerification invoke2 = discordHubEmailState.getVerifyEmailAsync().invoke(); - boolean z4 = (invoke2 != null && !invoke2.b()) || discordHubEmailState.getWaitlistResult() != null; + boolean z3 = !(hubEmailState.getVerifyEmailAsync() instanceof Success) && hubEmailState.getWaitlistResult() == null; + EmailVerification invoke2 = hubEmailState.getVerifyEmailAsync().invoke(); + boolean z4 = (invoke2 != null && !invoke2.b()) || hubEmailState.getWaitlistResult() != null; TextInputEditText textInputEditText = getBinding().f1857c.f193c; m.checkNotNullExpressionValue(textInputEditText, "binding.discordHubEmailI…aderDescriptionEmailInput"); String valueOf = String.valueOf(textInputEditText.getText()); @@ -146,7 +146,7 @@ public final class WidgetHubEmailFlow extends AppFragment { NestedScrollView nestedScrollView3 = z4Var.a; m.checkNotNullExpressionValue(nestedScrollView3, "binding.discordHubWaitlist.root"); nestedScrollView3.setVisibility(z4 ? 0 : 8); - HubWaitlistResult waitlistResult = discordHubEmailState.getWaitlistResult(); + HubWaitlistResult waitlistResult = hubEmailState.getWaitlistResult(); if (!(waitlistResult == null || (school = waitlistResult.getSchool()) == null)) { TextView textView2 = getBinding().f.b; m.checkNotNullExpressionValue(textView2, "binding.discordHubWaitlist.hubWaitlistDescription"); @@ -160,8 +160,8 @@ public final class WidgetHubEmailFlow extends AppFragment { } loadingButton.setVisibility(i); getBinding().e.setText(z4 ? getString(R.string.hub_add_server_confirmation_button) : getString(R.string.hub_email_connection_content_button)); - getBinding().e.setIsLoading(discordHubEmailState.getVerifyEmailAsync() instanceof Loading); - RestCallStateKt.handleResponse$default(discordHubEmailState.getVerifyEmailAsync(), context, null, null, new WidgetHubEmailFlow$updateView$4(this, discordHubEmailState, context, valueOf), 6, null); + getBinding().e.setIsLoading(hubEmailState.getVerifyEmailAsync() instanceof Loading); + RestCallStateKt.handleResponse$default(hubEmailState.getVerifyEmailAsync(), context, null, null, new WidgetHubEmailFlow$updateView$4(this, hubEmailState, context, valueOf), 6, null); } } @@ -188,7 +188,7 @@ public final class WidgetHubEmailFlow extends AppFragment { @Override // com.discord.app.AppFragment public void onViewBoundOrOnResume() { super.onViewBoundOrOnResume(); - Observable r = getViewModel().observeViewState().r(); + Observable r = getViewModel().observeViewState().r(); m.checkNotNullExpressionValue(r, "viewModel\n .obser… .distinctUntilChanged()"); ObservableExtensionsKt.appSubscribe$default(ObservableExtensionsKt.bindToComponentLifecycle(r, this), WidgetHubEmailFlow.class, (Context) null, (Function1) null, (Function1) null, (Function0) null, (Function0) null, new WidgetHubEmailFlow$onViewBoundOrOnResume$1(this), 62, (Object) null); } diff --git a/app/src/main/java/com/discord/widgets/hubs/WidgetHubEmailViewModel$onGuildClicked$1.java b/app/src/main/java/com/discord/widgets/hubs/WidgetHubEmailViewModel$onGuildClicked$1.java new file mode 100644 index 0000000000..bb6f646410 --- /dev/null +++ b/app/src/main/java/com/discord/widgets/hubs/WidgetHubEmailViewModel$onGuildClicked$1.java @@ -0,0 +1,22 @@ +package com.discord.widgets.hubs; + +import com.discord.analytics.generated.events.network_action.TrackNetworkActionHubEmailVerifySend; +import com.discord.analytics.generated.traits.TrackNetworkMetadataReceiver; +import com.discord.api.hubs.EmailVerification; +import d0.z.d.o; +import kotlin.jvm.functions.Function1; +/* compiled from: WidgetHubEmailViewModel.kt */ +public final class WidgetHubEmailViewModel$onGuildClicked$1 extends o implements Function1 { + public static final WidgetHubEmailViewModel$onGuildClicked$1 INSTANCE = new WidgetHubEmailViewModel$onGuildClicked$1(); + + public WidgetHubEmailViewModel$onGuildClicked$1() { + super(1); + } + + public final TrackNetworkMetadataReceiver invoke(EmailVerification emailVerification) { + if (emailVerification != null) { + return new TrackNetworkActionHubEmailVerifySend(Boolean.valueOf(emailVerification.b())); + } + return null; + } +} diff --git a/app/src/main/java/com/discord/widgets/hubs/DiscordHubEmailViewModel$submitEmail$2.java b/app/src/main/java/com/discord/widgets/hubs/WidgetHubEmailViewModel$onGuildClicked$2.java similarity index 56% rename from app/src/main/java/com/discord/widgets/hubs/DiscordHubEmailViewModel$submitEmail$2.java rename to app/src/main/java/com/discord/widgets/hubs/WidgetHubEmailViewModel$onGuildClicked$2.java index db0e6bafbe..f6a5289f00 100644 --- a/app/src/main/java/com/discord/widgets/hubs/DiscordHubEmailViewModel$submitEmail$2.java +++ b/app/src/main/java/com/discord/widgets/hubs/WidgetHubEmailViewModel$onGuildClicked$2.java @@ -6,14 +6,14 @@ import d0.z.d.m; import d0.z.d.o; import kotlin.Unit; import kotlin.jvm.functions.Function1; -/* compiled from: DiscordHubEmailViewModel.kt */ -public final class DiscordHubEmailViewModel$submitEmail$2 extends o implements Function1, Unit> { - public final /* synthetic */ DiscordHubEmailViewModel this$0; +/* compiled from: WidgetHubEmailViewModel.kt */ +public final class WidgetHubEmailViewModel$onGuildClicked$2 extends o implements Function1, Unit> { + public final /* synthetic */ WidgetHubEmailViewModel this$0; /* JADX INFO: super call moved to the top of the method (can break code semantics) */ - public DiscordHubEmailViewModel$submitEmail$2(DiscordHubEmailViewModel discordHubEmailViewModel) { + public WidgetHubEmailViewModel$onGuildClicked$2(WidgetHubEmailViewModel widgetHubEmailViewModel) { super(1); - this.this$0 = discordHubEmailViewModel; + this.this$0 = widgetHubEmailViewModel; } /* Return type fixed from 'java.lang.Object' to match base method */ @@ -26,7 +26,7 @@ public final class DiscordHubEmailViewModel$submitEmail$2 extends o implements F public final void invoke(RestCallState restCallState) { m.checkNotNullParameter(restCallState, "it"); - DiscordHubEmailViewModel discordHubEmailViewModel = this.this$0; - DiscordHubEmailViewModel.access$updateViewState(discordHubEmailViewModel, DiscordHubEmailState.copy$default(DiscordHubEmailViewModel.access$requireViewState(discordHubEmailViewModel), null, null, restCallState, 3, null)); + WidgetHubEmailViewModel widgetHubEmailViewModel = this.this$0; + WidgetHubEmailViewModel.access$updateViewState(widgetHubEmailViewModel, HubEmailState.copy$default(WidgetHubEmailViewModel.access$requireViewState(widgetHubEmailViewModel), null, null, restCallState, 3, null)); } } diff --git a/app/src/main/java/com/discord/widgets/hubs/DiscordHubEmailViewModel$submitEmail$1.java b/app/src/main/java/com/discord/widgets/hubs/WidgetHubEmailViewModel$submitEmail$1.java similarity index 63% rename from app/src/main/java/com/discord/widgets/hubs/DiscordHubEmailViewModel$submitEmail$1.java rename to app/src/main/java/com/discord/widgets/hubs/WidgetHubEmailViewModel$submitEmail$1.java index f73d538641..3cc3922d8f 100644 --- a/app/src/main/java/com/discord/widgets/hubs/DiscordHubEmailViewModel$submitEmail$1.java +++ b/app/src/main/java/com/discord/widgets/hubs/WidgetHubEmailViewModel$submitEmail$1.java @@ -5,11 +5,11 @@ import com.discord.analytics.generated.traits.TrackNetworkMetadataReceiver; import com.discord.api.hubs.EmailVerification; import d0.z.d.o; import kotlin.jvm.functions.Function1; -/* compiled from: DiscordHubEmailViewModel.kt */ -public final class DiscordHubEmailViewModel$submitEmail$1 extends o implements Function1 { - public static final DiscordHubEmailViewModel$submitEmail$1 INSTANCE = new DiscordHubEmailViewModel$submitEmail$1(); +/* compiled from: WidgetHubEmailViewModel.kt */ +public final class WidgetHubEmailViewModel$submitEmail$1 extends o implements Function1 { + public static final WidgetHubEmailViewModel$submitEmail$1 INSTANCE = new WidgetHubEmailViewModel$submitEmail$1(); - public DiscordHubEmailViewModel$submitEmail$1() { + public WidgetHubEmailViewModel$submitEmail$1() { super(1); } diff --git a/app/src/main/java/com/discord/widgets/hubs/DiscordHubEmailViewModel$onGuildClicked$2.java b/app/src/main/java/com/discord/widgets/hubs/WidgetHubEmailViewModel$submitEmail$2.java similarity index 56% rename from app/src/main/java/com/discord/widgets/hubs/DiscordHubEmailViewModel$onGuildClicked$2.java rename to app/src/main/java/com/discord/widgets/hubs/WidgetHubEmailViewModel$submitEmail$2.java index dc19029b98..0c5e4c8756 100644 --- a/app/src/main/java/com/discord/widgets/hubs/DiscordHubEmailViewModel$onGuildClicked$2.java +++ b/app/src/main/java/com/discord/widgets/hubs/WidgetHubEmailViewModel$submitEmail$2.java @@ -6,14 +6,14 @@ import d0.z.d.m; import d0.z.d.o; import kotlin.Unit; import kotlin.jvm.functions.Function1; -/* compiled from: DiscordHubEmailViewModel.kt */ -public final class DiscordHubEmailViewModel$onGuildClicked$2 extends o implements Function1, Unit> { - public final /* synthetic */ DiscordHubEmailViewModel this$0; +/* compiled from: WidgetHubEmailViewModel.kt */ +public final class WidgetHubEmailViewModel$submitEmail$2 extends o implements Function1, Unit> { + public final /* synthetic */ WidgetHubEmailViewModel this$0; /* JADX INFO: super call moved to the top of the method (can break code semantics) */ - public DiscordHubEmailViewModel$onGuildClicked$2(DiscordHubEmailViewModel discordHubEmailViewModel) { + public WidgetHubEmailViewModel$submitEmail$2(WidgetHubEmailViewModel widgetHubEmailViewModel) { super(1); - this.this$0 = discordHubEmailViewModel; + this.this$0 = widgetHubEmailViewModel; } /* Return type fixed from 'java.lang.Object' to match base method */ @@ -26,7 +26,7 @@ public final class DiscordHubEmailViewModel$onGuildClicked$2 extends o implement public final void invoke(RestCallState restCallState) { m.checkNotNullParameter(restCallState, "it"); - DiscordHubEmailViewModel discordHubEmailViewModel = this.this$0; - DiscordHubEmailViewModel.access$updateViewState(discordHubEmailViewModel, DiscordHubEmailState.copy$default(DiscordHubEmailViewModel.access$requireViewState(discordHubEmailViewModel), null, null, restCallState, 3, null)); + WidgetHubEmailViewModel widgetHubEmailViewModel = this.this$0; + WidgetHubEmailViewModel.access$updateViewState(widgetHubEmailViewModel, HubEmailState.copy$default(WidgetHubEmailViewModel.access$requireViewState(widgetHubEmailViewModel), null, null, restCallState, 3, null)); } } diff --git a/app/src/main/java/com/discord/widgets/hubs/DiscordHubEmailViewModel.java b/app/src/main/java/com/discord/widgets/hubs/WidgetHubEmailViewModel.java similarity index 59% rename from app/src/main/java/com/discord/widgets/hubs/DiscordHubEmailViewModel.java rename to app/src/main/java/com/discord/widgets/hubs/WidgetHubEmailViewModel.java index e9f5e65645..3c6433a6d8 100644 --- a/app/src/main/java/com/discord/widgets/hubs/DiscordHubEmailViewModel.java +++ b/app/src/main/java/com/discord/widgets/hubs/WidgetHubEmailViewModel.java @@ -10,34 +10,34 @@ import com.discord.utilities.rest.RestAPI; import com.discord.utilities.rx.ObservableExtensionsKt; import d0.z.d.m; import kotlin.jvm.internal.DefaultConstructorMarker; -/* compiled from: DiscordHubEmailViewModel.kt */ -public final class DiscordHubEmailViewModel extends AppViewModel { +/* compiled from: WidgetHubEmailViewModel.kt */ +public final class WidgetHubEmailViewModel extends AppViewModel { private final boolean multiDomainEnabled; private final RestAPI restAPI; - public DiscordHubEmailViewModel() { + public WidgetHubEmailViewModel() { this(null, false, 3, null); } /* JADX INFO: super call moved to the top of the method (can break code semantics) */ - public DiscordHubEmailViewModel(RestAPI restAPI, boolean z2) { - super(new DiscordHubEmailState(null, null, null, 7, null)); + public WidgetHubEmailViewModel(RestAPI restAPI, boolean z2) { + super(new HubEmailState(null, null, null, 7, null)); m.checkNotNullParameter(restAPI, "restAPI"); this.restAPI = restAPI; this.multiDomainEnabled = z2; } /* JADX INFO: this call moved to the top of the method (can break code semantics) */ - public /* synthetic */ DiscordHubEmailViewModel(RestAPI restAPI, boolean z2, int i, DefaultConstructorMarker defaultConstructorMarker) { + public /* synthetic */ WidgetHubEmailViewModel(RestAPI restAPI, boolean z2, int i, DefaultConstructorMarker defaultConstructorMarker) { this((i & 1) != 0 ? RestAPI.Companion.getApi() : restAPI, (i & 2) != 0 ? GrowthTeamFeatures.INSTANCE.isMultiDomainEnabled() : z2); } - public static final /* synthetic */ DiscordHubEmailState access$requireViewState(DiscordHubEmailViewModel discordHubEmailViewModel) { - return discordHubEmailViewModel.requireViewState(); + public static final /* synthetic */ HubEmailState access$requireViewState(WidgetHubEmailViewModel widgetHubEmailViewModel) { + return widgetHubEmailViewModel.requireViewState(); } - public static final /* synthetic */ void access$updateViewState(DiscordHubEmailViewModel discordHubEmailViewModel, DiscordHubEmailState discordHubEmailState) { - discordHubEmailViewModel.updateViewState(discordHubEmailState); + public static final /* synthetic */ void access$updateViewState(WidgetHubEmailViewModel widgetHubEmailViewModel, HubEmailState hubEmailState) { + widgetHubEmailViewModel.updateViewState(hubEmailState); } public final boolean getMultiDomainEnabled() { @@ -50,24 +50,24 @@ public final class DiscordHubEmailViewModel extends AppViewModel { + public static final WidgetHubGuildTemplates$loggingConfig$1 INSTANCE = new WidgetHubGuildTemplates$loggingConfig$1(); + + public WidgetHubGuildTemplates$loggingConfig$1() { + super(0); + } + + @Override // kotlin.jvm.functions.Function0 + /* renamed from: invoke */ + public final AnalyticsSchema mo1invoke() { + return new TrackImpressionHubCreateGuildTemplate(); + } +} diff --git a/app/src/main/java/com/discord/widgets/nux/WidgetHubGuildTemplates.java b/app/src/main/java/com/discord/widgets/nux/WidgetHubGuildTemplates.java new file mode 100644 index 0000000000..f6020bc66e --- /dev/null +++ b/app/src/main/java/com/discord/widgets/nux/WidgetHubGuildTemplates.java @@ -0,0 +1,12 @@ +package com.discord.widgets.nux; + +import com.discord.app.LoggingConfig; +/* compiled from: WidgetGuildTemplates.kt */ +public final class WidgetHubGuildTemplates extends WidgetGuildTemplates { + private final LoggingConfig loggingConfig = new LoggingConfig(false, null, WidgetHubGuildTemplates$loggingConfig$1.INSTANCE, 3); + + @Override // com.discord.app.AppFragment, com.discord.app.AppLogger.a + public LoggingConfig getLoggingConfig() { + return this.loggingConfig; + } +} 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 3a68f2c982..0e58002eaf 100644 --- a/app/src/main/java/com/discord/widgets/settings/WidgetSettings.java +++ b/app/src/main/java/com/discord/widgets/settings/WidgetSettings.java @@ -321,7 +321,7 @@ public final class WidgetSettings extends AppFragment implements OnTabSelectedLi TextView textView = binding.f; m.checkNotNullExpressionValue(textView, "appInfoHeader"); String string = getString(R.string.app_information); - textView.setText(string + " - 88.4 - Alpha (88204)"); + textView.setText(string + " - 88.5 - Alpha (88205)"); binding.f1964z.setOnClickListener(new WidgetSettings$onViewBound$$inlined$with$lambda$3(this)); binding.u.setOnClickListener(WidgetSettings$onViewBound$1$5.INSTANCE); binding.q.setOnClickListener(WidgetSettings$onViewBound$1$6.INSTANCE); diff --git a/app/src/main/java/com/discord/widgets/user/profile/UserProfileHeaderView.java b/app/src/main/java/com/discord/widgets/user/profile/UserProfileHeaderView.java index 9f8bc75851..28f3aefcbd 100644 --- a/app/src/main/java/com/discord/widgets/user/profile/UserProfileHeaderView.java +++ b/app/src/main/java/com/discord/widgets/user/profile/UserProfileHeaderView.java @@ -32,7 +32,6 @@ import com.discord.utilities.colors.RepresentativeColorsKt; import com.discord.utilities.icon.IconUtils; import com.discord.utilities.images.MGImages; import com.discord.utilities.logging.Logger; -import com.discord.utilities.premium.GuildMemberAvatarsFeatureFlag; import com.discord.utilities.presence.PresenceUtils; import com.discord.utilities.rx.ObservableExtensionsKt; import com.discord.utilities.textprocessing.node.EmojiNode; @@ -466,9 +465,7 @@ public final class UserProfileHeaderView extends ConstraintLayout { this.binding.f.setOnClickListener(new UserProfileHeaderView$updateViewState$2(this, loaded)); this.binding.b.setOnClickListener(new UserProfileHeaderView$updateViewState$3(this, loaded)); configureBanner(loaded); - GuildMember guildMember = loaded.getGuildMember(); - Activity activity = null; - this.binding.f.a(new UserAvatarPresenceView.a(loaded.getUser(), loaded.getPresence(), loaded.getStreamContext(), loaded.getShowPresence(), (guildMember == null || !GuildMemberAvatarsFeatureFlag.Companion.getINSTANCE().isEnabled()) ? null : guildMember)); + this.binding.f.a(new UserAvatarPresenceView.a(loaded.getUser(), loaded.getPresence(), loaded.getStreamContext(), loaded.getShowPresence(), loaded.getGuildMember())); configurePrimaryName(loaded); configureSecondaryName(loaded); Badge.Companion companion = Badge.Companion; @@ -481,16 +478,14 @@ public final class UserProfileHeaderView extends ConstraintLayout { m.checkNotNullExpressionValue(context, "context"); this.badgesAdapter.setData(companion.getBadgesForUser(user, userProfile, snowsGivingHypeSquadEventWinner, isMeUserPremium, isMeUserVerified, context)); Presence presence = loaded.getPresence(); - if (presence != null) { - activity = PresenceUtils.INSTANCE.getCustomStatusActivity(presence); - } - if (activity != null) { - this.binding.h.setDraweeSpanStringBuilder(getCustomStatusDraweeSpanStringBuilder(activity, loaded.getAllowAnimatedEmojis())); + Activity customStatusActivity = presence != null ? PresenceUtils.INSTANCE.getCustomStatusActivity(presence) : null; + if (customStatusActivity != null) { + this.binding.h.setDraweeSpanStringBuilder(getCustomStatusDraweeSpanStringBuilder(customStatusActivity, loaded.getAllowAnimatedEmojis())); } SimpleDraweeSpanTextView simpleDraweeSpanTextView = this.binding.h; m.checkNotNullExpressionValue(simpleDraweeSpanTextView, "binding.userProfileHeaderCustomStatus"); int i = 0; - simpleDraweeSpanTextView.setVisibility(activity != null ? 0 : 8); + simpleDraweeSpanTextView.setVisibility(customStatusActivity != null ? 0 : 8); CardView cardView = this.binding.b; m.checkNotNullExpressionValue(cardView, "binding.avatarEdit"); cardView.setVisibility(loaded.getEditable() ? 0 : 8); diff --git a/app/src/main/java/com/discord/widgets/user/profile/UserProfileHeaderViewModel.java b/app/src/main/java/com/discord/widgets/user/profile/UserProfileHeaderViewModel.java index 21f6c1b0fb..9c4dcfdae8 100644 --- a/app/src/main/java/com/discord/widgets/user/profile/UserProfileHeaderViewModel.java +++ b/app/src/main/java/com/discord/widgets/user/profile/UserProfileHeaderViewModel.java @@ -21,7 +21,6 @@ import com.discord.stores.StoreUser; import com.discord.stores.StoreUserPresence; import com.discord.stores.StoreUserProfile; import com.discord.stores.StoreUserSettings; -import com.discord.utilities.premium.GuildMemberAvatarsFeatureFlag; import com.discord.utilities.rx.ObservableExtensionsKt; import com.discord.utilities.streams.StreamContext; import com.discord.utilities.streams.StreamContextService; @@ -355,8 +354,8 @@ public final class UserProfileHeaderViewModel extends AppViewModel { this.hasGuildMemberAvatar = z10; boolean z11 = !t.isBlank((guildMember == null || (str3 = guildMember.getNick()) == null) ? "" : str3); this.hasNickname = z11; - this.showMediumAvatar = z10 && !z11 && GuildMemberAvatarsFeatureFlag.Companion.getINSTANCE().isEnabled(); - this.showSmallAvatar = z10 && z11 && GuildMemberAvatarsFeatureFlag.Companion.getINSTANCE().isEnabled(); + this.showMediumAvatar = z10 && !z11; + this.showSmallAvatar = z10 && z11; this.shouldAnimateBanner = !z7 || z8; if (z7 && !z8 && str != null && t.startsWith$default(str, "a_", false, 2, null)) { z9 = true; diff --git a/app/src/main/java/com/discord/widgets/voice/fullscreen/WidgetCallFullscreen$viewModel$2.java b/app/src/main/java/com/discord/widgets/voice/fullscreen/WidgetCallFullscreen$viewModel$2.java index 5f4fc28d97..39edcda7a8 100644 --- a/app/src/main/java/com/discord/widgets/voice/fullscreen/WidgetCallFullscreen$viewModel$2.java +++ b/app/src/main/java/com/discord/widgets/voice/fullscreen/WidgetCallFullscreen$viewModel$2.java @@ -17,6 +17,6 @@ public final class WidgetCallFullscreen$viewModel$2 extends o implements Functio @Override // kotlin.jvm.functions.Function0 /* renamed from: invoke */ public final AppViewModel mo1invoke() { - return new WidgetCallFullscreenViewModel(WidgetCallFullscreen.access$getChannelId(this.this$0), null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, this.this$0.getMostRecentIntent().getStringExtra("com.discord.intent.extra.EXTRA_STREAM_KEY"), 1048574, null); + return new WidgetCallFullscreenViewModel(WidgetCallFullscreen.access$getChannelId(this.this$0), null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, this.this$0.getMostRecentIntent().getStringExtra("com.discord.intent.extra.EXTRA_STREAM_KEY"), 2097150, null); } } diff --git a/app/src/main/java/com/discord/widgets/voice/fullscreen/WidgetCallFullscreenViewModel.java b/app/src/main/java/com/discord/widgets/voice/fullscreen/WidgetCallFullscreenViewModel.java index bbb2f65a4e..d815e5294e 100644 --- a/app/src/main/java/com/discord/widgets/voice/fullscreen/WidgetCallFullscreenViewModel.java +++ b/app/src/main/java/com/discord/widgets/voice/fullscreen/WidgetCallFullscreenViewModel.java @@ -90,6 +90,7 @@ public final class WidgetCallFullscreenViewModel extends AppViewModel private List allVideoParticipants; private final StoreAnalytics analyticsStore; private final StoreApplicationStreaming applicationStreamingStore; + private final StoreAudioManagerV2 audioManagerStore; private String autotargetStreamKey; private final Scheduler backgroundThreadScheduler; private Integer bottomSheetState; @@ -1556,7 +1557,7 @@ public final class WidgetCallFullscreenViewModel extends AppViewModel } /* JADX INFO: super call moved to the top of the method (can break code semantics) */ - public WidgetCallFullscreenViewModel(long j, StoreVoiceChannelSelected storeVoiceChannelSelected, StoreGuildSelected storeGuildSelected, StoreTabsNavigation storeTabsNavigation, StoreUserSettings storeUserSettings, StoreApplicationStreaming storeApplicationStreaming, StoreMediaEngine storeMediaEngine, StoreMediaSettings storeMediaSettings, StorePermissions storePermissions, Clock clock, Scheduler scheduler, VideoPermissionsManager videoPermissionsManager, VoiceEngineServiceController voiceEngineServiceController, StoreStreamRtcConnection storeStreamRtcConnection, StoreMentions storeMentions, StoreAnalytics storeAnalytics, StoreConnectivity storeConnectivity, StoreStageChannels storeStageChannels, StoreAnalytics storeAnalytics2, StoreExperiments storeExperiments, String str) { + public WidgetCallFullscreenViewModel(long j, StoreVoiceChannelSelected storeVoiceChannelSelected, StoreGuildSelected storeGuildSelected, StoreTabsNavigation storeTabsNavigation, StoreUserSettings storeUserSettings, StoreApplicationStreaming storeApplicationStreaming, StoreMediaEngine storeMediaEngine, StoreMediaSettings storeMediaSettings, StorePermissions storePermissions, Clock clock, Scheduler scheduler, VideoPermissionsManager videoPermissionsManager, VoiceEngineServiceController voiceEngineServiceController, StoreStreamRtcConnection storeStreamRtcConnection, StoreAudioManagerV2 storeAudioManagerV2, StoreMentions storeMentions, StoreAnalytics storeAnalytics, StoreConnectivity storeConnectivity, StoreStageChannels storeStageChannels, StoreAnalytics storeAnalytics2, StoreExperiments storeExperiments, String str) { super(ViewState.Uninitialized.INSTANCE); m.checkNotNullParameter(storeVoiceChannelSelected, "selectedVoiceChannelStore"); m.checkNotNullParameter(storeGuildSelected, "guildSelectedStore"); @@ -1571,6 +1572,7 @@ public final class WidgetCallFullscreenViewModel extends AppViewModel m.checkNotNullParameter(videoPermissionsManager, "videoPermissionsManager"); m.checkNotNullParameter(voiceEngineServiceController, "voiceEngineServiceController"); m.checkNotNullParameter(storeStreamRtcConnection, "streamRtcConnectionStore"); + m.checkNotNullParameter(storeAudioManagerV2, "audioManagerStore"); m.checkNotNullParameter(storeMentions, "mentionsStore"); m.checkNotNullParameter(storeAnalytics, "analyticsStore"); m.checkNotNullParameter(storeConnectivity, "connectivityStore"); @@ -1591,6 +1593,7 @@ public final class WidgetCallFullscreenViewModel extends AppViewModel this.videoPermissionsManager = videoPermissionsManager; this.voiceEngineServiceController = voiceEngineServiceController; this.streamRtcConnectionStore = storeStreamRtcConnection; + this.audioManagerStore = storeAudioManagerV2; this.mentionsStore = storeMentions; this.analyticsStore = storeAnalytics; this.connectivityStore = storeConnectivity; @@ -1614,8 +1617,8 @@ public final class WidgetCallFullscreenViewModel extends AppViewModel } /* JADX WARNING: Illegal instructions before constructor call */ - public /* synthetic */ WidgetCallFullscreenViewModel(long j, StoreVoiceChannelSelected storeVoiceChannelSelected, StoreGuildSelected storeGuildSelected, StoreTabsNavigation storeTabsNavigation, StoreUserSettings storeUserSettings, StoreApplicationStreaming storeApplicationStreaming, StoreMediaEngine storeMediaEngine, StoreMediaSettings storeMediaSettings, StorePermissions storePermissions, Clock clock, Scheduler scheduler, VideoPermissionsManager videoPermissionsManager, VoiceEngineServiceController voiceEngineServiceController, StoreStreamRtcConnection storeStreamRtcConnection, StoreMentions storeMentions, StoreAnalytics storeAnalytics, StoreConnectivity storeConnectivity, StoreStageChannels storeStageChannels, StoreAnalytics storeAnalytics2, StoreExperiments storeExperiments, String str, int i, DefaultConstructorMarker defaultConstructorMarker) { - this(j, voiceChannelSelected, guildSelected, tabsNavigation, userSettings, applicationStreaming, mediaEngine, mediaSettings, permissions, clock2, scheduler2, (i & 2048) != 0 ? new VideoPermissionsManager(null, 1, null) : videoPermissionsManager, (i & 4096) != 0 ? VoiceEngineServiceController.Companion.getINSTANCE() : voiceEngineServiceController, (i & 8192) != 0 ? StoreStream.Companion.getStreamRtcConnection() : storeStreamRtcConnection, (i & 16384) != 0 ? StoreStream.Companion.getMentions() : storeMentions, (32768 & i) != 0 ? StoreStream.Companion.getAnalytics() : storeAnalytics, (65536 & i) != 0 ? StoreStream.Companion.getConnectivity() : storeConnectivity, (131072 & i) != 0 ? StoreStream.Companion.getStageChannels() : storeStageChannels, (262144 & i) != 0 ? StoreStream.Companion.getAnalytics() : storeAnalytics2, (i & 524288) != 0 ? StoreStream.Companion.getExperiments() : storeExperiments, str); + public /* synthetic */ WidgetCallFullscreenViewModel(long j, StoreVoiceChannelSelected storeVoiceChannelSelected, StoreGuildSelected storeGuildSelected, StoreTabsNavigation storeTabsNavigation, StoreUserSettings storeUserSettings, StoreApplicationStreaming storeApplicationStreaming, StoreMediaEngine storeMediaEngine, StoreMediaSettings storeMediaSettings, StorePermissions storePermissions, Clock clock, Scheduler scheduler, VideoPermissionsManager videoPermissionsManager, VoiceEngineServiceController voiceEngineServiceController, StoreStreamRtcConnection storeStreamRtcConnection, StoreAudioManagerV2 storeAudioManagerV2, StoreMentions storeMentions, StoreAnalytics storeAnalytics, StoreConnectivity storeConnectivity, StoreStageChannels storeStageChannels, StoreAnalytics storeAnalytics2, StoreExperiments storeExperiments, String str, int i, DefaultConstructorMarker defaultConstructorMarker) { + this(j, voiceChannelSelected, guildSelected, tabsNavigation, userSettings, applicationStreaming, mediaEngine, mediaSettings, permissions, clock2, scheduler2, (i & 2048) != 0 ? new VideoPermissionsManager(null, 1, null) : videoPermissionsManager, (i & 4096) != 0 ? VoiceEngineServiceController.Companion.getINSTANCE() : voiceEngineServiceController, (i & 8192) != 0 ? StoreStream.Companion.getStreamRtcConnection() : storeStreamRtcConnection, (i & 16384) != 0 ? StoreStream.Companion.getAudioManagerV2() : storeAudioManagerV2, (32768 & i) != 0 ? StoreStream.Companion.getMentions() : storeMentions, (65536 & i) != 0 ? StoreStream.Companion.getAnalytics() : storeAnalytics, (131072 & i) != 0 ? StoreStream.Companion.getConnectivity() : storeConnectivity, (262144 & i) != 0 ? StoreStream.Companion.getStageChannels() : storeStageChannels, (524288 & i) != 0 ? StoreStream.Companion.getAnalytics() : storeAnalytics2, (i & 1048576) != 0 ? StoreStream.Companion.getExperiments() : storeExperiments, str); Scheduler scheduler2; StoreVoiceChannelSelected voiceChannelSelected = (i & 2) != 0 ? StoreStream.Companion.getVoiceChannelSelected() : storeVoiceChannelSelected; StoreGuildSelected guildSelected = (i & 4) != 0 ? StoreStream.Companion.getGuildSelected() : storeGuildSelected; @@ -2401,6 +2404,7 @@ public final class WidgetCallFullscreenViewModel extends AppViewModel public final void onStreamPerceptualVolumeChanged(float f, boolean z2) { if (z2) { this.streamRtcConnectionStore.updateStreamVolume(PerceptualVolumeUtils.INSTANCE.perceptualToAmplitude(f, 300.0f)); + this.audioManagerStore.updateMediaVolume(f / 300.0f); } } diff --git a/app/src/main/java/com/hammerandchisel/libdiscord/Discord.java b/app/src/main/java/com/hammerandchisel/libdiscord/Discord.java index e98461b11e..8f1881f531 100644 --- a/app/src/main/java/com/hammerandchisel/libdiscord/Discord.java +++ b/app/src/main/java/com/hammerandchisel/libdiscord/Discord.java @@ -104,7 +104,7 @@ public class Discord { private native void setLocalVoiceLevelChangedCallbackNative(boolean z2); @NonNull - public native Connection connectToServer(int i, long j, @NonNull String str, int i2, @NonNull StreamParameters[] streamParametersArr, boolean z2, @NonNull ConnectToServerCallback connectToServerCallback); + public native Connection connectToServer(int i, long j, @NonNull String str, int i2, @NonNull StreamParameters[] streamParametersArr, @NonNull ConnectToServerCallback connectToServerCallback); public native void crash(); diff --git a/app/src/main/res/layout-v22/guild_scheduled_event_item_view.xml b/app/src/main/res/layout-v22/guild_scheduled_event_item_view.xml index 291c156f84..ae6a9a75d5 100644 --- a/app/src/main/res/layout-v22/guild_scheduled_event_item_view.xml +++ b/app/src/main/res/layout-v22/guild_scheduled_event_item_view.xml @@ -4,7 +4,7 @@ - + diff --git a/app/src/main/res/layout/guild_scheduled_event_item_view.xml b/app/src/main/res/layout/guild_scheduled_event_item_view.xml index 6ef50bd715..2f35c0c2f0 100644 --- a/app/src/main/res/layout/guild_scheduled_event_item_view.xml +++ b/app/src/main/res/layout/guild_scheduled_event_item_view.xml @@ -4,7 +4,7 @@ - + diff --git a/app/src/main/res/values-ar-rXB/plurals.xml b/app/src/main/res/values-ar-rXB/plurals.xml index 5b147830bf..188be8e0a6 100644 --- a/app/src/main/res/values-ar-rXB/plurals.xml +++ b/app/src/main/res/values-ar-rXB/plurals.xml @@ -536,6 +536,10 @@ ‏‮per‬‏ ‏‮year‬‏ ‏‮per‬‏ ‏‮{count}‬‏ ‏‮years‬‏ + + ‏‮1‬‏ ‏‮member‬‏ + ‏‮{members}‬‏ ‏‮members‬‏ + ‏‮Exclusive‬‏ ‏‮Channel‬‏ ‏‮{count}‬‏ ‏‮Exclusive‬‏ ‏‮Channels‬‏ @@ -1200,6 +1204,10 @@ ‏‮{#}‬‏‏‮x‬‏ + + ‏‮{#}‬‏ ‏‮month‬‏ + ‏‮{#}‬‏ ‏‮months‬‏ + ‏‮{#}‬‏ ‏‮month‬‏ ‏‮{#}‬‏ ‏‮months‬‏ diff --git a/app/src/main/res/values-ar-rXB/strings.xml b/app/src/main/res/values-ar-rXB/strings.xml index f2ec16deab..80812e4c87 100644 --- a/app/src/main/res/values-ar-rXB/strings.xml +++ b/app/src/main/res/values-ar-rXB/strings.xml @@ -3224,7 +3224,12 @@ ‏‮Text‬‏ ‏‮channel,‬‏ ‏‮external‬‏ ‏‮link,‬‏ ‏‮or‬‏ ‏‮an‬‏ ‏‮in‬‏ ‏‮person‬‏ ‏‮event.‬‏ ‏‮Great‬‏ ‏‮for‬‏ ‏‮larger‬‏ ‏‮community‬‏ ‏‮and‬‏ ‏‮audio‬‏ ‏‮events.‬‏ ‏‮Hang‬‏ ‏‮out‬‏ ‏‮with‬‏ ‏‮voice,‬‏ ‏‮video,‬‏ ‏‮screenshare,‬‏ ‏‮and‬‏ ‏‮Go‬‏ ‏‮Live.‬‏ - ‏‮Stage‬‏ ‏‮channels‬‏ ‏‮are‬‏ ‏‮built‬‏ ‏‮specifically‬‏ ‏‮for‬‏ ‏‮community‬‏ ‏‮audio‬‏ ‏‮events,‬‏ ‏‮with‬‏ ‏‮$[built-in‬‏ ‏‮moderation‬‏ ‏‮tools](moderationHook)‬‏ ‏‮like‬‏ ‏‮$[hand‬‏ ‏‮raise](handRaiseHook)‬‏ ‏‮and‬‏ ‏‮an‬‏ ‏‮$[audience‬‏ ‏‮muted‬‏ ‏‮by‬‏ ‏‮default.](audienceHook)‬‏ + ‏‮Three‬‏ ‏‮speakers‬‏ ‏‮in‬‏ ‏‮a‬‏ ‏‮Stage‬‏ ‏‮channel‬‏ ‏‮speak‬‏ ‏‮to‬‏ ‏‮five‬‏ ‏‮audience‬‏ ‏‮members,‬‏ ‏‮two‬‏ ‏‮audience‬‏ ‏‮members‬‏ ‏‮have‬‏ ‏‮their‬‏ ‏‮hand‬‏ ‏‮raised‬‏ + ‏‮Get‬‏ ‏‮more‬‏ ‏‮moderation‬‏ ‏‮features‬‏ ‏‮and‬‏ ‏‮audience‬‏ ‏‮controls.‬‏ ‏‮Perfect‬‏ ‏‮for‬‏ ‏‮larger‬‏ ‏‮audio‬‏ ‏‮events.‬‏ + ‏‮Good‬‏ ‏‮for:‬‏ ‏‮$[Q&A,‬‏ ‏‮AMA,‬‏ ‏‮Panel‬‏ ‏‮Discussion](suggestionsHook)‬‏ + ‏‮Q&A‬‏ + ‏‮AMA‬‏ + ‏‮Panel‬‏ ‏‮Discussion‬‏ ‏‮Try‬‏ ‏‮using‬‏ ‏‮a‬‏ ‏‮Stage‬‏ ‏‮channel!‬‏ ‏‮So‬‏ ‏‮no‬‏ ‏‮one‬‏ ‏‮gets‬‏ ‏‮lost‬‏ ‏‮on‬‏ ‏‮where‬‏ ‏‮to‬‏ ‏‮go.‬‏ ‏‮Where‬‏ ‏‮is‬‏ ‏‮your‬‏ ‏‮event?‬‏ @@ -3274,6 +3279,9 @@ ‏‮Wanna‬‏ ‏‮use‬‏ ‏‮a‬‏ ‏‮different‬‏ ‏‮avatar?‬‏ ‏‮!!‬‏‏‮{guild}‬‏‏‮!!‬‏ ‏‮members‬‏ ‏‮No‬‏ ‏‮members‬‏ ‏‮were‬‏ ‏‮found.‬‏ + ‏‮Verification‬‏ ‏‮link‬‏ ‏‮has‬‏ ‏‮expired.‬‏ + ‏‮Verification‬‏ ‏‮success.‬‏ + ‏‮Verifying‬‏ ‏‮your‬‏ ‏‮request.‬‏ ‏‮!!‬‏‏‮{guildName}‬‏‏‮!!‬‏ ‏‮monetization‬‏ ‏‮Once‬‏ ‏‮enabled,‬‏ ‏‮you‬‏ ‏‮will‬‏ ‏‮be‬‏ ‏‮able‬‏ ‏‮to‬‏ ‏‮accept‬‏ ‏‮payment‬‏ ‏‮for‬‏ ‏‮Premium‬‏ ‏‮Subscriptions.‬‏ ‏‮Are‬‏ ‏‮you‬‏ ‏‮sure‬‏ ‏‮you‬‏ ‏‮want‬‏ ‏‮to‬‏ ‏‮enable‬‏ ‏‮monetization‬‏ ‏‮for‬‏ ‏‮this‬‏ ‏‮server?‬‏ @@ -3452,6 +3460,7 @@ ‏‮Exclusive‬‏ ‏‮Channel‬‏ ‏‮Exclusive‬‏ ‏‮Channels‬‏ ‏‮Draft‬‏ + ‏‮{members}‬‏ ‏‮{count}‬‏ ‏‮{count}‬‏ ‏‮Member‬‏ ‏‮Color‬‏ ‏‮&‬‏ ‏‮Badge‬‏ @@ -3464,6 +3473,7 @@ ‏‮Edit‬‏ ‏‮Server‬‏ ‏‮Rules‬‏ ‏‮Server‬‏ ‏‮Rules‬‏ ‏‮By‬‏ ‏‮participating‬‏ ‏‮in‬‏ ‏‮this‬‏ ‏‮server,‬‏ ‏‮you‬‏ ‏‮have‬‏ ‏‮read‬‏ ‏‮and‬‏ ‏‮agreed‬‏ ‏‮to‬‏ ‏‮the‬‏ ‏‮server\'s‬‏ ‏‮rules.‬‏ + ‏‮Join‬‏ ‏‮Event‬‏ ‏‮Event‬‏ ‏‮Live‬‏ ‏‮!!‬‏‏‮{topic}‬‏‏‮!!‬‏ ‏‮with‬‏ ‏‮!!‬‏‏‮{username}‬‏‏‮!!.‬‏ ‏‮Listen‬‏ ‏‮in!‬‏ ‏‮Your‬‏ ‏‮event‬‏ ‏‮is‬‏ ‏‮starting‬‏ ‏‮in‬‏ ‏‮!!‬‏‏‮{guildName}‬‏‏‮!!‬‏ @@ -3858,6 +3868,7 @@ ‏‮Set‬‏ ‏‮your‬‏ ‏‮thread‬‏ ‏‮to‬‏ ‏‮expire‬‏ ‏‮after‬‏ ‏‮3‬‏ ‏‮days‬‏ ‏‮of‬‏ ‏‮inactivity‬‏ ‏‮and‬‏ ‏‮keep‬‏ ‏‮them‬‏ ‏‮around‬‏ ‏‮during‬‏ ‏‮a‬‏ ‏‮long‬‏ ‏‮weekend.‬‏ ‏‮Hear‬‏ ‏‮your‬‏ ‏‮friends‬‏ ‏‮in‬‏ ‏‮higher‬‏ ‏‮definition!‬‏ ‏‮Upload‬‏ ‏‮a‬‏ ‏‮decorative‬‏ ‏‮banner‬‏ ‏‮that‬‏ ‏‮best‬‏ ‏‮represents‬‏ ‏‮your‬‏ ‏‮community!‬‏ ‏‮Shown‬‏ ‏‮under‬‏ ‏‮your‬‏ ‏‮server‬‏ ‏‮name.‬‏ + ‏‮Set‬‏ ‏‮a‬‏ ‏‮unique‬‏ ‏‮icon‬‏ ‏‮for‬‏ ‏‮each‬‏ ‏‮role.‬‏ ‏‮Icons‬‏ ‏‮display‬‏ ‏‮in‬‏ ‏‮chat‬‏ ‏‮and‬‏ ‏‮the‬‏ ‏‮members‬‏ ‏‮list.‬‏ ‏‮Even‬‏ ‏‮more‬‏ ‏‮emojis,‬‏ ‏‮for‬‏ ‏‮even‬‏ ‏‮more‬‏ ‏‮ways‬‏ ‏‮to‬‏ ‏‮express‬‏ ‏‮yourself!‬‏ ‏‮More‬‏ ‏‮sticker‬‏ ‏‮slots‬‏ ‏‮for‬‏ ‏‮more‬‏ ‏‮custom‬‏ ‏‮expressions!‬‏ ‏‮Stream‬‏ ‏‮to‬‏ ‏‮your‬‏ ‏‮friends‬‏ ‏‮in‬‏ ‏‮high‬‏ ‏‮quality.‬‏ @@ -3874,6 +3885,7 @@ ‏‮Stream‬‏ ‏‮to‬‏ ‏‮your‬‏ ‏‮friends‬‏ ‏‮in‬‏ ‏‮high‬‏ ‏‮quality.‬‏ ‏‮3‬‏ ‏‮day‬‏ ‏‮archive‬‏ ‏‮option‬‏ ‏‮for‬‏ ‏‮threads‬‏ ‏‮Server‬‏ ‏‮Banner‬‏ + ‏‮Custom‬‏ ‏‮Role‬‏ ‏‮Icons‬‏ ‏‮1080p‬‏ ‏‮60fps‬‏ ‏‮Go‬‏ ‏‮Live‬‏ ‏‮streams‬‏ ‏‮1‬‏ ‏‮week‬‏ ‏‮archive‬‏ ‏‮option‬‏ ‏‮for‬‏ ‏‮threads‬‏ ‏‮Create‬‏ ‏‮private‬‏ ‏‮threads‬‏ @@ -4049,6 +4061,8 @@ ‏‮Basic‬‏ ‏‮Info‬‏ ‏‮Members‬‏ ‏‮Edit‬‏ ‏‮Roles‬‏ ‏‮Permissions‬‏ + ‏‮Publish‬‏ + ‏‮And‬‏ ‏‮if‬‏ ‏‮you‬‏ ‏‮ask‬‏ ‏‮me‬‏ ‏‮how‬‏ ‏‮I\'m‬‏ ‏‮feeling,‬‏ ‏‮Don\'t‬‏ ‏‮tell‬‏ ‏‮me‬‏ ‏‮you\'re‬‏ ‏‮too‬‏ ‏‮blind‬‏ ‏‮to‬‏ ‏‮see‬‏ ‏‮Never‬‏ ‏‮gonna‬‏ ‏‮You‬‏ ‏‮know‬‏ ‏‮the‬‏ ‏‮rules‬‏ ‏‮and‬‏ ‏‮so‬‏ ‏‮do‬‏ ‏‮I‬‏ ‏‮Server‬‏ ‏‮Banner‬‏ @@ -4418,6 +4432,7 @@ ‏‮An‬‏ ‏‮exclusive‬‏ ‏‮place‬‏ ‏‮to‬‏ ‏‮connect‬‏ ‏‮with‬‏ ‏‮students,‬‏ ‏‮discover‬‏ ‏‮servers,‬‏ ‏‮and‬‏ ‏‮share‬‏ ‏‮your‬‏ ‏‮own‬‏ ‏‮servers‬‏ ‏‮for‬‏ ‏‮students‬‏ ‏‮to‬‏ ‏‮join.‬‏ ‏‮Hubs‬‏ ‏‮are‬‏ ‏‮not‬‏ ‏‮affiliated‬‏ ‏‮with‬‏ ‏‮or‬‏ ‏‮managed‬‏ ‏‮by‬‏ ‏‮schools.‬‏ ‏‮Servers‬‏ ‏‮in‬‏ ‏‮the‬‏ ‏‮Hub‬‏ ‏‮are‬‏ ‏‮student-run,‬‏ ‏‮but‬‏ ‏‮may‬‏ ‏‮include‬‏ ‏‮non-students.‬‏ ‏‮Discord‬‏ ‏‮Hubs‬‏ ‏‮What\'s‬‏ ‏‮a‬‏ ‏‮Discord‬‏ ‏‮Hub?‬‏ + ‏‮Enter‬‏ ‏‮Discord‬‏ ‏‮one-time‬‏ ‏‮code‬‏ ‏‮If‬‏ ‏‮your‬‏ ‏‮server‬‏ ‏‮is‬‏ ‏‮intended‬‏ ‏‮for‬‏ ‏‮students‬‏ ‏‮only,‬‏ ‏‮just‬‏ ‏‮invite‬‏ ‏‮your‬‏ ‏‮classmates.‬‏ ‏‮They‬‏ ‏‮don\'t‬‏ ‏‮need‬‏ ‏‮a‬‏ ‏‮.edu‬‏ ‏‮address‬‏ ‏‮to‬‏ ‏‮join‬‏ ‏‮Remove‬‏ ‏‮from‬‏ ‏‮Hub‬‏ ‏‮Are‬‏ ‏‮you‬‏ ‏‮sure‬‏ ‏‮you‬‏ ‏‮want‬‏ ‏‮to‬‏ ‏‮remove‬‏ ‏‮!!‬‏‏‮{guildName}‬‏‏‮!!‬‏ ‏‮from‬‏ ‏‮this‬‏ ‏‮Hub?‬‏ @@ -4427,6 +4442,7 @@ ‏‮Go‬‏ ‏‮to‬‏ ‏‮a‬‏ ‏‮different‬‏ ‏‮school?‬‏ ‏‮[Join‬‏ ‏‮here](onClick)‬‏ ‏‮You\'ve‬‏ ‏‮been‬‏ ‏‮invited‬‏ ‏‮to‬‏ ‏‮join‬‏ ‏‮a‬‏ ‏‮Hub‬‏ ‏‮You‬‏ ‏‮sent‬‏ ‏‮an‬‏ ‏‮invite‬‏ ‏‮to‬‏ ‏‮join‬‏ ‏‮a‬‏ ‏‮Hub‬‏ + ‏‮Didn\'t‬‏ ‏‮get‬‏ ‏‮the‬‏ ‏‮code?‬‏ ‏‮[Resend‬‏ ‏‮code](onClick)‬‏ ‏‮to‬‏ ‏‮!!‬‏‏‮{email}‬‏‏‮!!‬‏ ‏‮Let\'s‬‏ ‏‮go!‬‏ ‏‮Full‬‏ ‏‮Name‬‏ ‏‮Real‬‏ ‏‮Name‬‏ @@ -4438,6 +4454,7 @@ ‏‮Join‬‏ ‏‮Servers‬‏ ‏‮My‬‏ ‏‮school‬‏ ‏‮isn\'t‬‏ ‏‮here‬‏ ‏‮Verified‬‏ ‏‮Discord‬‏ ‏‮Hub‬‏ + ‏‮Verify‬‏ ‏‮email‬‏ ‏‮address‬‏ ‏‮Enter‬‏ ‏‮your‬‏ ‏‮official‬‏ ‏‮school‬‏ ‏‮email‬‏ ‏‮address‬‏ ‏‮sam@college.edu‬‏ ‏‮School‬‏ ‏‮Email‬‏ @@ -5540,8 +5557,8 @@ ‏‮Members‬‏ ‏‮with‬‏ ‏‮this‬‏ ‏‮permission‬‏ ‏‮can‬‏ ‏‮drag‬‏ ‏‮other‬‏ ‏‮members‬‏ ‏‮out‬‏ ‏‮of‬‏ ‏‮this‬‏ ‏‮channel.‬‏ ‏‮They‬‏ ‏‮can‬‏ ‏‮only‬‏ ‏‮move‬‏ ‏‮members‬‏ ‏‮between‬‏ ‏‮channels‬‏ ‏‮both‬‏ ‏‮they‬‏ ‏‮and‬‏ ‏‮the‬‏ ‏‮member‬‏ ‏‮they‬‏ ‏‮are‬‏ ‏‮moving‬‏ ‏‮have‬‏ ‏‮access.‬‏ ‏‮Move‬‏ ‏‮To‬‏ ‏‮User‬‏ ‏‮has‬‏ ‏‮been‬‏ ‏‮moved‬‏ ‏‮to‬‏ ‏‮the‬‏ ‏‮selected‬‏ ‏‮channel.‬‏ - ‏‮Alert‬‏ ‏‮Cleared‬‏ - ‏‮No‬‏ ‏‮Alert‬‏ ‏‮Showing‬‏ + ‏‮Alert‬‏ ‏‮Cleared‬‏ + ‏‮No‬‏ ‏‮Alert‬‏ ‏‮Showing‬‏ ‏‮New‬‏ ‏‮notification‬‏ ‏‮Remove‬‏ ‏‮%1$s‬‏ ‏‮More‬‏ ‏‮than‬‏ %1$d ‏‮new‬‏ ‏‮notifications‬‏ @@ -6524,6 +6541,8 @@ ‏‮Use‬‏ ‏‮custom‬‏ ‏‮stickers‬‏ ‏‮anywhere‬‏ ‏‮and‬‏ ‏‮access‬‏ ‏‮300‬‏ ‏‮Nitro-exclusive‬‏ ‏‮stickers.‬‏ ‏‮$[Info](infoHook)‬‏ ‏‮Boosted‬‏ ‏‮servers‬‏ ‏‮can‬‏ ‏‮upload‬‏ ‏‮custom‬‏ ‏‮stickers‬‏ ‏‮through‬‏ ‏‮Server‬‏ ‏‮Settings‬‏ ‏‮>‬‏ ‏‮Stickers.‬‏ ‏‮Nitro‬‏ ‏‮users‬‏ ‏‮can‬‏ ‏‮use‬‏ ‏‮custom‬‏ ‏‮stickers‬‏ ‏‮anywhere.‬‏ ‏‮Special‬‏ ‏‮Stickers‬‏ ‏‮Access‬‏ + ‏‮Customize‬‏ ‏‮video‬‏ ‏‮calls‬‏ ‏‮with‬‏ ‏‮your‬‏ ‏‮own‬‏ ‏‮video‬‏ ‏‮backgrounds‬‏ + ‏‮More‬‏ ‏‮Backgrounds‬‏ ‏‮Upgrade‬‏ ‏‮your‬‏ ‏‮emoji,‬‏ ‏‮personalize‬‏ ‏‮your‬‏ ‏‮profile,‬‏ ‏‮and‬‏ ‏‮stand‬‏ ‏‮out‬‏ ‏‮in‬‏ ‏‮your‬‏ ‏‮servers.‬‏ ‏‮Make‬‏ ‏‮Discord‬‏ ‏‮yours‬‏ ‏‮Nitro‬‏ ‏‮is‬‏ ‏‮powering‬‏ ‏‮you‬‏ ‏‮with‬‏ ‏‮{maxLength}‬‏ ‏‮characters‬‏ ‏‮per‬‏ ‏‮message!‬‏ @@ -6793,9 +6812,10 @@ ‏‮Signed‬‏ ‏‮in‬‏ ‏‮as‬‏ ‏‮$[](avatarHook)‬‏ ‏‮{tag}‬‏‏‮.‬‏ ‏‮[Not‬‏ ‏‮You?](logoutHook)‬‏ ‏‮Claim‬‏ ‏‮Upgrade‬‏ ‏‮Anyway‬‏ - ‏‮You\'re‬‏ ‏‮still‬‏ ‏‮eligible‬‏ ‏‮for‬‏ ‏‮this‬‏ ‏‮promotion,‬‏ ‏‮but‬‏ ‏‮your‬‏ ‏‮current‬‏ ‏‮subscription‬‏ ‏‮will‬‏ ‏‮end.‬‏ ‏‮If‬‏ ‏‮you‬‏ ‏‮choose‬‏ ‏‮to‬‏ ‏‮continue,‬‏ ‏‮the‬‏ ‏‮following‬‏ ‏‮benefits‬‏ ‏‮will‬‏ ‏‮end‬‏ ‏‮today:‬‏ - ‏‮You‬‏ ‏‮still‬‏ ‏‮have‬‏ ‏‮an‬‏ ‏‮active‬‏ ‏‮subscription!‬‏ + ‏‮If‬‏ ‏‮you‬‏ ‏‮claim‬‏ ‏‮this‬‏ ‏‮promotion,‬‏ ‏‮your‬‏ ‏‮current‬‏ ‏‮subscription‬‏ ‏‮of:‬‏ ‏‮$[](lineItemsHook)‬‏ ‏‮will‬‏ ‏‮be‬‏ ‏‮replaced‬‏ ‏‮with‬‏ ‏‮a‬‏ ‏‮{newPlanName}‬‏ ‏‮subscription.‬‏ + ‏‮You‬‏ ‏‮have‬‏ ‏‮an‬‏ ‏‮active‬‏ ‏‮subscription!‬‏ ‏‮{quantity}‬‏‏‮{lineItem}‬‏ + ‏‮You\'ll‬‏ ‏‮receive‬‏ ‏‮the‬‏ ‏‮full‬‏ ‏‮value‬‏ ‏‮of‬‏ ‏‮the‬‏ ‏‮promotion,‬‏ ‏‮including‬‏ ‏‮{trialMonths}‬‏ ‏‮free‬‏ ‏‮([learn‬‏ ‏‮more](‬‏‏‮{helpCenterLink}‬‏‏‮)).‬‏ ‏‮**But‬‏ ‏‮you\'ll‬‏ ‏‮lose‬‏ ‏‮any‬‏ ‏‮features‬‏ ‏‮associated‬‏ ‏‮with‬‏ ‏‮your‬‏ ‏‮current‬‏ ‏‮subscription,‬‏ ‏‮and‬‏ ‏‮you‬‏ ‏‮won\'t‬‏ ‏‮receive‬‏ ‏‮a‬‏ ‏‮refund‬‏ ‏‮for‬‏ ‏‮any‬‏ ‏‮remaining‬‏ ‏‮value‬‏ ‏‮on‬‏ ‏‮your‬‏ ‏‮current‬‏ ‏‮subscription.**‬‏ ‏‮At‬‏ ‏‮the‬‏ ‏‮end‬‏ ‏‮of‬‏ ‏‮the‬‏ ‏‮promotion‬‏ ‏‮period,‬‏ ‏‮you\'ll‬‏ ‏‮be‬‏ ‏‮converted‬‏ ‏‮to‬‏ ‏‮a‬‏ ‏‮paying‬‏ ‏‮{newPlanName}‬‏ ‏‮subscription‬‏ ‏‮at‬‏ ‏‮the‬‏ ‏‮price‬‏ ‏‮of‬‏ ‏‮{planPrice}‬‏‏‮.‬‏ ‏‮Seems‬‏ ‏‮like‬‏ ‏‮something’s‬‏ ‏‮gone‬‏ ‏‮wrong‬‏ ‏‮and‬‏ ‏‮you‬‏ ‏‮can’t‬‏ ‏‮use‬‏ ‏‮that‬‏ ‏‮code.‬‏ ‏‮Sorry‬‏ ‏‮about‬‏ ‏‮that.‬‏ ‏‮Sorry,‬‏ ‏‮looks‬‏ ‏‮like‬‏ ‏‮this‬‏ ‏‮code‬‏ ‏‮has‬‏ ‏‮already‬‏ ‏‮been‬‏ ‏‮redeemed.‬‏ ‏‮Visit‬‏ ‏‮our‬‏ ‏‮[Help‬‏ ‏‮Center](‬‏‏‮{helpCenterLink}‬‏‏‮)‬‏ ‏‮for‬‏ ‏‮more‬‏ ‏‮information.‬‏ @@ -6987,6 +7007,7 @@ ‏‮Report‬‏ ‏‮a‬‏ ‏‮message‬‏ ‏‮Report‬‏ ‏‮Stage‬‏ ‏‮Select‬‏ ‏‮one‬‏ + ‏‮Selected‬‏ ‏‮Server‬‏ ‏‮Do‬‏ ‏‮you‬‏ ‏‮want‬‏ ‏‮to‬‏ ‏‮block‬‏ ‏‮this‬‏ ‏‮user?‬‏ ‏‮Do‬‏ ‏‮you‬‏ ‏‮want‬‏ ‏‮to‬‏ ‏‮delete‬‏ ‏‮this‬‏ ‏‮message?‬‏ ‏‮Subject‬‏ @@ -7108,6 +7129,7 @@ ‏‮applies‬‏ ‏‮to‬‏ ‏‮all‬‏ ‏‮server‬‏ ‏‮members‬‏ ‏‮Default‬‏ ‏‮Permissions‬‏ ‏‮Default‬‏ ‏‮permissions‬‏ ‏‮for‬‏ ‏‮all‬‏ ‏‮server‬‏ ‏‮members‬‏ + ‏‮Role‬‏ ‏‮icon,‬‏ ‏‮{name}‬‏ ‏‮Choose‬‏ ‏‮Image‬‏ ‏‮Upload‬‏ ‏‮an‬‏ ‏‮image‬‏ ‏‮or‬‏ ‏‮pick‬‏ ‏‮an‬‏ ‏‮emoji.‬‏ ‏‮We‬‏ ‏‮recommend‬‏ ‏‮an‬‏ ‏‮image‬‏ ‏‮that’s‬‏ ‏‮at‬‏ ‏‮least‬‏ ‏‮64x64‬‏ ‏‮pixels.‬‏ ‏‮It‬‏ ‏‮must‬‏ ‏‮be‬‏ ‏‮under‬‏ ‏‮256kb.‬‏ ‏‮Emoji‬‏ @@ -9010,6 +9032,8 @@ ‏‮Tropic‬‏ ‏‮Island‬‏ ‏‮Discord‬‏ ‏‮Vaporwave‬‏ ‏‮Wumpus‬‏ ‏‮Vaporwave‬‏ + ‏‮Express‬‏ ‏‮yourself‬‏ ‏‮with‬‏ ‏‮video‬‏ ‏‮backgrounds,‬‏ ‏‮and‬‏ ‏‮if‬‏ ‏‮you‬‏ ‏‮have‬‏ ‏‮Nitro,‬‏ ‏‮upload‬‏ ‏‮your‬‏ ‏‮own!‬‏ + ‏‮New‬‏ ‏‮Video‬‏ ‏‮Backgrounds!‬‏ ‏‮Get‬‏ ‏‮more‬‏ ‏‮customization‬‏ ‏‮by‬‏ ‏‮uploading‬‏ ‏‮your‬‏ ‏‮own‬‏ ‏‮video‬‏ ‏‮background,‬‏ ‏‮custom‬‏ ‏‮global‬‏ ‏‮emojis,‬‏ ‏‮and‬‏ ‏‮more‬‏ ‏‮with‬‏ ‏‮[Discord‬‏ ‏‮Nitro!](onLearnMore)‬‏ ‏‮Wanna‬‏ ‏‮upload‬‏ ‏‮your‬‏ ‏‮own‬‏ ‏‮background?‬‏ ‏‮Focus‬‏ diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index c84592ab51..cc6848f20e 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -7650,7 +7650,6 @@ Прехвърляне на собствеността Потвърждавам, че след прехвърлянето на собствеността на този сървър на **!!{username}!!**, той официално принадлежи на тях. Партньорските или потвърдените сървъри трябва да се свържат с екипа на общността за подаване на заявки за прехвърляне на собственост. - Прехвърляне на собствеността на !!{user}!! Стрелка надолу за популярни Стрелка нагоре за популярни Опитай отново diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index a9dd6c6b65..6503d1cbdf 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -5776,7 +5776,7 @@ Na {canceledCount} je otevřená žádost o zrušení. Automatické odebrání proběhne {date}. {slotCount} Vyber tento server. Chvíli potrvá, než se {slotCount} projeví. - Pokud vylepšíš tento server, {days} nebudeš moct{slotCount} převést na žádný další server. + Pokud vylepšíš tento server, {days} nebudeš moct {slotCount} převést na žádný další server. Určitě chceš {slotCount} přesunout? Pokud budeš pokračovat, ztratí {guildCount} svůj postup. Aktuálně {guildCount} Převést vylepšení serveru? @@ -7655,7 +7655,6 @@ Převést vlastnictví Beru na vědomí, že převedením vlastnictví serveru na **!!{username}!!**, se oficiálně stává majitelem. Žádost o převod vlastnictví partnerských a ověřených serverů musí projít přes náš tým pro komunitu. - Převést vlastnictví na !!{user}!! Populární vzestupně Populární sestupně Zkusit znovu diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index 775eafcdb4..0d48376e06 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -7649,7 +7649,6 @@ Overfør ejerskab Jeg anerkender, at ved overførsel af ejerskabet af denne server til **!!{username}!!** tilhører den officielt dem. Partnerskabsservere eller bekræftede servere skal kontakte fællesskabsteamet for anmodninger om overførsel af ejerskab. - Overfør ejerskab til !!{user}!! Faldende trender Stigende trender Prøv igen diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index ec96bda39a..47b4b38be1 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -7664,7 +7664,6 @@ Eigentumsrechte übertragen Ich bestätige, dass dieser Server durch Übertragung der Eigentumsrechte offiziell **!!{username}!!** gehört. Partner-Server und verifizierte Server müssen sich beim Community-Team melden, wenn sie Eigentumsrechte übertragen wollen. - Eigentumsrechte an !!{user}!! übertragen Abwärtstrend Aufwärtstrend Erneut versuchen diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index e06358ea54..f10c16e690 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -7648,7 +7648,6 @@ Μεταφορά ιδιοκτησίας Αναγνωρίζω ότι με τη μεταφορά της ιδιοκτησίας του διακομιστή στο χρήστη **!!{username}!!**, του/της ανήκει επίσημα. Οι διακομιστές-συνεργάτες και οι επαληθευμένοι διακομιστές πρέπει να επικοινωνήσουν με την ομάδα κοινότητας για τα αιτήματα μεταφοράς ιδιοκτησίας. - Μεταφορά ιδιοκτησίας στον χρήστη !!{user}!! Κάτω Βέλος Τάσης Άνω Βέλος Τάσης Προσπάθησε ξανά diff --git a/app/src/main/res/values-en-rXA/plurals.xml b/app/src/main/res/values-en-rXA/plurals.xml index 50e60505fd..142d6ddf95 100644 --- a/app/src/main/res/values-en-rXA/plurals.xml +++ b/app/src/main/res/values-en-rXA/plurals.xml @@ -536,6 +536,10 @@ [þéŕ ýéåŕ one two] [þéŕ »{count}« ýéåŕš one two] + + [1 ḿéḿɓéŕ one two] + [»{members}« ḿéḿɓéŕš one two] + [ÉхçļûšîVé Çĥåññéļ one two three] [»{count}« ÉхçļûšîVé Çĥåññéļš one two three] @@ -1200,6 +1204,10 @@ [] [»{#}«х one] + + [»{#}« ḿöñţĥ one two] + [»{#}« ḿöñţĥš one two] + [»{#}« ḿöñţĥ one two] [»{#}« ḿöñţĥš one two] diff --git a/app/src/main/res/values-en-rXA/strings.xml b/app/src/main/res/values-en-rXA/strings.xml index 0c96e5e239..28ece1078d 100644 --- a/app/src/main/res/values-en-rXA/strings.xml +++ b/app/src/main/res/values-en-rXA/strings.xml @@ -3224,7 +3224,12 @@ [Ţéхţ çĥåññéļ, éхţéŕñåļ ļîñķ, öŕ åñ îñ þéŕšöñ éVéñţ. one two three four five six] [Ĝŕéåţ ƒöŕ ļåŕĝéŕ çöḿḿûñîţý åñð åûðîö éVéñţš. one two three four five] [Ĥåñĝ öûţ ŵîţĥ Vöîçé, Vîðéö, šçŕééñšĥåŕé, åñð Ĝö ĻîVé. one two three four five six seven eight nine ten eleven] - [Šţåĝé çĥåññéļš åŕé ɓûîļţ šþéçîƒîçåļļý ƒöŕ çöḿḿûñîţý åûðîö éVéñţš, ŵîţĥ €[ɓûîļţ-îñ ḿöðéŕåţîöñ ţööļš](ḿöðéŕåţîöñĤööķ) ļîķé €[ĥåñð ŕåîšé](ĥåñðŔåîšéĤööķ) åñð åñ €[åûðîéñçé ḿûţéð ɓý ðéƒåûļţ.](åûðîéñçéĤööķ) one two three four five six seven eight nine ten eleven twelve thirteen fourteen fiveteen sixteen seventeen nineteen twenty one two three four five six seven eight nine ten eleven twelve thirteen fourteen] + [Ţĥŕéé šþéåķéŕš îñ å Šţåĝé çĥåññéļ šþéåķ ţö ƒîVé åûðîéñçé ḿéḿɓéŕš, ţŵö åûðîéñçé ḿéḿɓéŕš ĥåVé ţĥéîŕ ĥåñð ŕåîšéð one two three four five six seven eight nine ten eleven] + [Ĝéţ ḿöŕé ḿöðéŕåţîöñ ƒéåţûŕéš åñð åûðîéñçé çöñţŕöļš. Þéŕƒéçţ ƒöŕ ļåŕĝéŕ åûðîö éVéñţš. one two three four five six seven eight nine] + [Ĝööð ƒöŕ: €[q&A,Å, ÅḾÅ, Þåñéļ Ðîšçûššîöñ](šûĝĝéšţîöñšĤööķ) one two three four five six seven eight nine ten eleven twelve] + [q&AÅ one] + [ÅḾÅ one] + [Þåñéļ Ðîšçûššîöñ one two three] [Ţŕý ûšîñĝ å Šţåĝé çĥåññéļ¡ one two three four] [Šö ñö öñé ĝéţš ļöšţ öñ ŵĥéŕé ţö ĝö. one two three four] [Ŵĥéŕé îš ýöûŕ éVéñţ¿ one two three] @@ -3274,6 +3279,9 @@ [Ŵåññå ûšé å ðéŕéñţ åVåţåŕ¿ one two three four] [¡¡»{guild}«¡¡ ḿéḿɓéŕš one two] [Ñö ḿéḿɓéŕš ŵéŕé ƒöûñð. one two three] + [νéŕîƒîçåţîöñ ļîñķ ĥåš éхþîŕéð. one two three four] + [νéŕîƒîçåţîöñ šûççéšš. one two three] + [νéŕîƒýîñĝ ýöûŕ ŕéQûéšţ. one two three] [¡¡»{guildName}«¡¡ ḿöñéţîžåţîöñ one two three] [Öñçé éñåɓļéð, ýöû ŵîļļ ɓé åɓļé ţö åççéþţ þåýḿéñţ ƒöŕ Þŕéḿîûḿ Šûɓšçŕîþţîöñš. one two three four five six seven eight] [Åŕé ýöû šûŕé ýöû ŵåñţ ţö éñåɓļé ḿöñéţîžåţîöñ ƒöŕ ţĥîš šéŕVéŕ¿ one two three four five six seven] @@ -3452,6 +3460,7 @@ [ÉхçļûšîVé Çĥåññéļ one two three] [ÉхçļûšîVé Çĥåññéļš one two three] [Ðŕåƒţ one] + [»{members}«] [»{count}«] [»{count}«] [Ḿéḿɓéŕ Çöļöŕ & βåðĝé one two three] @@ -3464,6 +3473,7 @@ [Éðîţ ŠéŕVéŕ Ŕûļéš one two three] [ŠéŕVéŕ Ŕûļéš one two] [βý þåŕţîçîþåţîñĝ îñ ţĥîš šéŕVéŕ, ýöû ĥåVé ŕéåð åñð åĝŕééð ţö ţĥé šéŕVéŕ\'š ŕûļéš. one two three four five six seven eight nine] + [Ĵöîñ ÉVéñţ one two] [ÉVéñţ ĻîVé one two] [¡¡»{topic}«¡¡ ŵîţĥ ¡¡»{username}«¡¡. Ļîšţéñ îñ¡ one two three four] [Ýöûŕ éVéñţ îš šţåŕţîñĝ îñ ¡¡»{guildName}«¡¡ one two three four] @@ -3858,6 +3868,7 @@ [Šéţ ýöûŕ ţĥŕéåð ţö éхþîŕé åƒţéŕ 3 ðåýš öƒ îñåçţîVîţý åñð ķééþ ţĥéḿ åŕöûñð ðûŕîñĝ å ļöñĝ ŵééķéñð. one two three four five six seven eight nine ten eleven] [Ĥéåŕ ýöûŕ ƒŕîéñðš îñ ĥîĝĥéŕ ðéƒîñîţîöñ¡ one two three four five] [Ûþļöåð å ðéçöŕåţîVé ɓåññéŕ ţĥåţ ɓéšţ ŕéþŕéšéñţš ýöûŕ çöḿḿûñîţý¡ Šĥöŵñ ûñðéŕ ýöûŕ šéŕVéŕ ñåḿé. one two three four five six seven eight nine ten] + [Šéţ å ûñîQûé îçöñ ƒöŕ éåçĥ ŕöļé. Îçöñš ðîšþļåý îñ çĥåţ åñð ţĥé ḿéḿɓéŕš ļîšţ. one two three four five six seven eight] [ÉVéñ ḿöŕé éḿöĵîš, ƒöŕ éVéñ ḿöŕé ŵåýš ţö éхþŕéšš ýöûŕšéļƒ¡ one two three four five six seven] [Ḿöŕé šţîçķéŕ šļöţš ƒöŕ ḿöŕé çûšţöḿ éхþŕéššîöñš¡ one two three four five six] [Šţŕéåḿ ţö ýöûŕ ƒŕîéñðš îñ ĥîĝĥ Qûåļîţý. one two three four five] @@ -3874,6 +3885,7 @@ [Šţŕéåḿ ţö ýöûŕ ƒŕîéñðš îñ ĥîĝĥ Qûåļîţý. one two three four five] [3 ðåý åŕçĥîVé öþţîöñ ƒöŕ ţĥŕéåðš one two three four] [ŠéŕVéŕ βåññéŕ one two] + [Çûšţöḿ Ŕöļé Îçöñš one two three] [1080þ 60ƒþš Ĝö ĻîVé šţŕéåḿš one two three four] [1 ŵééķ åŕçĥîVé öþţîöñ ƒöŕ ţĥŕéåðš one two three four] [Çŕéåţé þŕîVåţé ţĥŕéåðš one two three] @@ -4049,6 +4061,8 @@ [βåšîç Îñƒö one two] [Ḿéḿɓéŕš one two] [Éðîţ Ŕöļéš Þéŕḿîššîöñš one two three] + [Þûɓļîšĥ one two] + [Åñð îƒ ýöû åšķ ḿé ĥöŵ Î\'ḿ ƒééļîñĝ, Ðöñ\'ţ ţéļļ ḿé ýöû\'ŕé ţöö ɓļîñð ţö šéé one two three four five six seven eight nine ten eleven twelve thirteen fourteen] [ÑéVéŕ ĝöññå one two] [Ýöû ķñöŵ ţĥé ŕûļéš åñð šö ðö Î one two three four] [ŠéŕVéŕ βåññéŕ one two] @@ -4418,6 +4432,7 @@ [Åñ éхçļûšîVé þļåçé ţö çöññéçţ ŵîţĥ šţûðéñţš, ðîšçöVéŕ šéŕVéŕš, åñð šĥåŕé ýöûŕ öŵñ šéŕVéŕš ƒöŕ šţûðéñţš ţö ĵöîñ. Ĥûɓš åŕé ñöţ 僃îļîåţéð ŵîţĥ öŕ ḿåñåĝéð ɓý šçĥööļš. ŠéŕVéŕš îñ ţĥé Ĥûɓ åŕé šţûðéñţ-ŕûñ, ɓûţ ḿåý îñçļûðé ñöñ-šţûðéñţš. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fiveteen sixteen seventeen nineteen twenty one two three four five six seven eight nine ten eleven twelve thirteen fourteen fiveteen sixteen seventeen] [Ðîšçöŕð Ĥûɓš one two] [Ŵĥåţ\'š å Ðîšçöŕð Ĥûɓ¿ one two three] + [Éñţéŕ Ðîšçöŕð öñé-ţîḿé çöðé one two three four] [΃ ýöûŕ šéŕVéŕ îš îñţéñðéð ƒöŕ šţûðéñţš öñļý, ĵûšţ îñVîţé ýöûŕ çļåššḿåţéš. Ţĥéý ðöñ\'ţ ñééð å .éðû åððŕéšš ţö ĵöîñ one two three four five six seven eight nine ten eleven twelve thirteen fourteen fiveteen sixteen seventeen nineteen] [ŔéḿöVé ƒŕöḿ Ĥûɓ one two three] [Åŕé ýöû šûŕé ýöû ŵåñţ ţö ŕéḿöVé ¡¡»{guildName}«¡¡ ƒŕöḿ ţĥîš Ĥûɓ¿ one two three four five six] @@ -4427,6 +4442,7 @@ [Ĝö ţö å ðéŕéñţ šçĥööļ¿ [Ĵöîñ ĥéŕé](öñÇļîçķ) one two three four five six] [Ýöû\'Vé ɓééñ îñVîţéð ţö ĵöîñ å Ĥûɓ one two three four] [Ýöû šéñţ åñ îñVîţé ţö ĵöîñ å Ĥûɓ one two three four] + [Ðîðñ\'ţ ĝéţ ţĥé çöðé¿ [Ŕéšéñð çöðé](öñÇļîçķ) ţö ¡¡»{email}«¡¡ one two three four five six] [Ļéţ\'š ĝö¡ one two] [Fûļļ Ñåḿé one two] [Ŕéåļ Ñåḿé one two] @@ -4438,6 +4454,7 @@ [Ĵöîñ ŠéŕVéŕš one two] [Ḿý šçĥööļ îšñ\'ţ ĥéŕé one two three] [νéŕîƒîéð Ðîšçöŕð Ĥûɓ one two three] + [νéŕîƒý éḿåîļ åððŕéšš one two three] [Éñţéŕ ýöûŕ öƒƒîçîåļ šçĥööļ éḿåîļ åððŕéšš one two three four five] [šåḿ@çöļļéĝé.éðû one two three] [Šçĥööļ Éḿåîļ one two] @@ -5540,8 +5557,8 @@ [Ḿéḿɓéŕš ŵîţĥ ţĥîš þéŕḿîššîöñ çåñ ðŕåĝ öţĥéŕ ḿéḿɓéŕš öûţ öƒ ţĥîš çĥåññéļ. Ţĥéý çåñ öñļý ḿöVé ḿéḿɓéŕš ɓéţŵééñ çĥåññéļš ɓöţĥ ţĥéý åñð ţĥé ḿéḿɓéŕ ţĥéý åŕé ḿöVîñĝ ĥåVé åççéšš. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fiveteen] [ḾöVé Ţö one two] [Ûšéŕ ĥåš ɓééñ ḿöVéð ţö ţĥé šéļéçţéð çĥåññéļ. one two three four five] - [Åļéŕţ Çļéåŕéð one two] - [Ñö Åļéŕţ Šĥöŵîñĝ one two three] + [Åļéŕţ Çļéåŕéð one two] + [Ñö Åļéŕţ Šĥöŵîñĝ one two three] [Ñéŵ ñöţîƒîçåţîöñ one two three] [ŔéḿöVé »%1$s« one two] [Ḿöŕé ţĥåñ %1$d ñéŵ ñöţîƒîçåţîöñš one two three four] @@ -6524,6 +6541,8 @@ [Ûšé çûšţöḿ šţîçķéŕš åñýŵĥéŕé åñð åççéšš 300 Ñîţŕö-éхçļûšîVé šţîçķéŕš. €[Îñƒö](îñƒöĤööķ) one two three four five six seven eight nine ten eleven twelve thirteen fourteen fiveteen] [βööšţéð šéŕVéŕš çåñ ûþļöåð çûšţöḿ šţîçķéŕš ţĥŕöûĝĥ ŠéŕVéŕ Šéţţîñĝš > Šţîçķéŕš. Ñîţŕö ûšéŕš çåñ ûšé çûšţöḿ šţîçķéŕš åñýŵĥéŕé. one two three four five six seven eight nine ten eleven twelve thirteen] [Šþéçîåļ Šţîçķéŕš Åççéšš one two three] + [Çûšţöḿîžé Vîðéö çåļļš ŵîţĥ ýöûŕ öŵñ Vîðéö ɓåçķĝŕöûñðš one two three four five six] + [Ḿöŕé βåçķĝŕöûñðš one two three] [Ûþĝŕåðé ýöûŕ éḿöĵî, þéŕšöñåļîžé ýöûŕ þŕöƒîļé, åñð šţåñð öûţ îñ ýöûŕ šéŕVéŕš. one two three four five six seven eight] [Ḿåķé Ðîšçöŕð ýöûŕš one two three] [Ñîţŕö îš þöŵéŕîñĝ ýöû ŵîţĥ »{maxLength}« çĥåŕåçţéŕš þéŕ ḿéššåĝé¡ one two three four five six] @@ -6793,9 +6812,10 @@ [Šîĝñéð îñ åš €[](åVåţåŕĤööķ) »{tag}«. [Ñöţ Ýöû¿](ļöĝöûţĤööķ) one two three four five six seven eight nine ten eleven] [Çļåîḿ one] [Ûþĝŕåðé Åñýŵåý one two three] - [Ýöû\'ŕé šţîļļ éļîĝîɓļé ƒöŕ ţĥîš þŕöḿöţîöñ, ɓûţ ýöûŕ çûŕŕéñţ šûɓšçŕîþţîöñ ŵîļļ éñð. ΃ ýöû çĥööšé ţö çöñţîñûé, ţĥé ƒöļļöŵîñĝ ɓéñéƒîţš ŵîļļ éñð ţöðåý: one two three four five six seven eight nine ten eleven twelve thirteen fourteen fiveteen sixteen seventeen nineteen twenty one two three four five six] - [Ýöû šţîļļ ĥåVé åñ åçţîVé šûɓšçŕîþţîöñ¡ one two three four five] + [΃ ýöû çļåîḿ ţĥîš þŕöḿöţîöñ, ýöûŕ çûŕŕéñţ šûɓšçŕîþţîöñ öƒ: €[](ļîñéÎţéḿšĤööķ) ŵîļļ ɓé ŕéþļåçéð ŵîţĥ å »{newPlanName}« šûɓšçŕîþţîöñ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fiveteen sixteen seventeen nineteen twenty] + [Ýöû ĥåVé åñ åçţîVé šûɓšçŕîþţîöñ¡ one two three four] [»{quantity}«»{lineItem}«] + [Ýöû\'ļļ ŕéçéîVé ţĥé ƒûļļ Våļûé öƒ ţĥé þŕöḿöţîöñ, îñçļûðîñĝ »{trialMonths}« ƒŕéé ([ļéåŕñ ḿöŕé](»{helpCenterLink}«)). **βûţ ýöû\'ļļ ļöšé åñý ƒéåţûŕéš åššöçîåţéð ŵîţĥ ýöûŕ çûŕŕéñţ šûɓšçŕîþţîöñ, åñð ýöû ŵöñ\'ţ ŕéçéîVé å ŕéƒûñð ƒöŕ åñý ŕéḿåîñîñĝ Våļûé öñ ýöûŕ çûŕŕéñţ šûɓšçŕîþţîöñ.** Åţ ţĥé éñð öƒ ţĥé þŕöḿöţîöñ þéŕîöð, ýöû\'ļļ ɓé çöñVéŕţéð ţö å þåýîñĝ »{newPlanName}« šûɓšçŕîþţîöñ åţ ţĥé þŕîçé öƒ »{planPrice}«. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fiveteen sixteen seventeen nineteen twenty one two three four five six seven eight nine ten eleven twelve thirteen fourteen fiveteen sixteen seventeen nineteen twenty one two three four five six seven eight nine ten eleven twelve thirteen fourteen fiveteen sixteen] [Šééḿš ļîķé šöḿéţĥîñĝ’š ĝöñé ŵŕöñĝ åñð ýöû çåñ’ţ ûšé ţĥåţ çöðé. Šöŕŕý åɓöûţ ţĥåţ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fiveteen] [Šöŕŕý, ļööķš ļîķé ţĥîš çöðé ĥåš åļŕéåðý ɓééñ ŕéðééḿéð. one two three four five six seven] [νîšîţ öûŕ [Ĥéļþ Çéñţéŕ](»{helpCenterLink}«) ƒöŕ ḿöŕé îñƒöŕḿåţîöñ. one two three four five six seven eight nine ten] @@ -6987,6 +7007,7 @@ [Ŕéþöŕţ å ḿéššåĝé one two three] [Ŕéþöŕţ Šţåĝé one two] [Šéļéçţ öñé one two] + [Šéļéçţéð ŠéŕVéŕ one two three] [Ðö ýöû ŵåñţ ţö ɓļöçķ ţĥîš ûšéŕ¿ one two three four] [Ðö ýöû ŵåñţ ţö ðéļéţé ţĥîš ḿéššåĝé¿ one two three four] [Šûɓĵéçţ one two] @@ -7108,6 +7129,7 @@ [åþþļîéš ţö åļļ šéŕVéŕ ḿéḿɓéŕš one two three four] [Ðéƒåûļţ Þéŕḿîššîöñš one two three] [Ðéƒåûļţ þéŕḿîššîöñš ƒöŕ åļļ šéŕVéŕ ḿéḿɓéŕš one two three four five] + [Ŕöļé îçöñ, »{name}« one two] [Çĥööšé Îḿåĝé one two] [Ûþļöåð åñ îḿåĝé öŕ þîçķ åñ éḿöĵî. Ŵé ŕéçöḿḿéñð åñ îḿåĝé ţĥåţ’š åţ ļéåšţ 64х64 þîхéļš. Îţ ḿûšţ ɓé ûñðéŕ 256ķɓ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fiveteen sixteen seventeen nineteen] [Éḿöĵî one] @@ -9010,6 +9032,8 @@ [Ţŕöþîç Κļåñð one two] [Ðîšçöŕð νåþöŕŵåVé one two three] [Ŵûḿþûš νåþöŕŵåVé one two three] + [Éхþŕéšš ýöûŕšéļƒ ŵîţĥ Vîðéö ɓåçķĝŕöûñðš, åñð îƒ ýöû ĥåVé Ñîţŕö, ûþļöåð ýöûŕ öŵñ¡ one two three four five six seven eight nine] + [Ñéŵ νîðéö βåçķĝŕöûñðš¡ one two three] [Ĝéţ ḿöŕé çûšţöḿîžåţîöñ ɓý ûþļöåðîñĝ ýöûŕ öŵñ Vîðéö ɓåçķĝŕöûñð, çûšţöḿ ĝļöɓåļ éḿöĵîš, åñð ḿöŕé ŵîţĥ [Ðîšçöŕð Ñîţŕö¡](öñĻéåŕñḾöŕé) one two three four five six seven eight nine ten eleven twelve thirteen fourteen fiveteen sixteen seventeen nineteen twenty one two] [Ŵåññå ûþļöåð ýöûŕ öŵñ ɓåçķĝŕöûñð¿ one two three four] [Föçûš one] diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index 7a5f712021..f1cc9e64cc 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -7498,7 +7498,6 @@ Transferir propiedad Soy consciente de que al transferir la propiedad del servidor a **!!{username}!!**, este le pertenecerá oficialmente. Los servidores socios o verificados deben solicitar al equipo de la comunidad de Discord el traspaso de la propiedad. - Transferir la propiedad del servidor a !!{user}!! Flecha de tendencia decreciente Flecha de tendencia creciente Volver a intentar diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 26a914a146..4965682baf 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -7649,7 +7649,6 @@ Siirrä omistajuus Ymmärrän, että siirtämällä palvelimen omistajuuden käyttäjälle **!!{username}!!**, palvelin kuuluu jatkossa virallisesti hänelle. Kumppanipalvelimien ja vahvistettujen palvelimien on otettava yhteyttä yhteisötiimiin, mikäli palvelimen omistajan siirtäminen on tarpeen. - Siirrä omistajuus käyttäjälle !!{user}!! Trendaamista kuvaava laskeva nuoli Trendaamista kuvaava nouseva nuoli Yritä uudelleen diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index f35bc9e139..628ec13196 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -7658,7 +7658,6 @@ Transférer la propriété Je reconnais qu\'en transférant la propriété de ce serveur à **!!{username}!!**, celui-ci lui appartient dorénavant officiellement. Les serveurs partenaires ou certifiés doivent contacter l\'équipe de la communauté Discord pour toute demande de transfert de propriété. - Transférer la propriété à !!{user}!! Tendance à la baisse Tendance à la hausse Réessayer diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index aee3c705b7..d0c50fae2b 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -7649,7 +7649,6 @@ ओनरशिप ट्रांसफर करें मैं मानता हूं कि इस सर्वर **!!{username}!!** की ओनरशिप ट्रांसफर करने पर, यह आधिकारिक रूप से उनका होगा. पार्टनर्ड या वेरीफाई किए गए सर्वर को ओनरशिप ट्रांसफर रिक्वेस्ट के लिए कम्युनिटी टीम से बात करनी होगी. - !!{user}!! को ओनरशिप ट्रांसफर करें ट्रेन्डिंग ऐरो डाउन ट्रेन्डिंग ऐरो अप फिर से कोशिश करें diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index effe402f8e..aa025357f0 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -7268,7 +7268,7 @@ Prestani zvoniti korisniku !!{username}!! Prestani čitati poruku Zaustavi streaming - Prestani gledati + Prestani gledanje Prestani gledanje – !!{username}!! Potrebna je dozvola za pohranu Prodajni kanal @@ -7650,7 +7650,6 @@ Prenesi vlasništvo Prihvaćam da prijenosom vlasništva ovog servera na **!!{username}!!**, ovaj server službeno pripada toj osobi. Partnerski i odobreni serveri moraju se obratiti Timu zajednice za zahtjeve prijenosa vlasništva. - Prenesi vlasništvo na !!{user}!! Strelica trenda silazna Strelica trenda uzlazna Pokušaj ponovno diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 4fb71be35e..cd3c14089f 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -7649,7 +7649,6 @@ Tulajdonjog átadása Tudomásul veszem, hogy miután átadom a szerver tulajdonjogát **!!{username}!!** felhasználónak, az hivatalosan hozzá fog tartozni. A partner vagy hittelesített szerverek meg kell keressék a közösségi csapatot a tulajdonjog-átadási igényekkel. - Tulajdonjog átadása !!{user}!! számára Lefelé irányuló trend Felfelé irányuló trend Újrapróbálkozás diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index c2fe4b51f3..e6e12a9912 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -7658,7 +7658,6 @@ Trasferisci il server Riconosco che così facendo trasferirò il mio server a **!!{username}!!**, rendendolo di sua proprietà. Server partner o verificati devono rivolgersi al team della Community per richieste di trasferimento di proprietà. - Trasferisci il server a !!{user}!! Freccia di tendenza Giù Freccia di tendenza Su Riprova diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 17e9f7d3b7..30a2e6060e 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -7663,7 +7663,6 @@ 所有権の移動 私はこのサーバーの所有権を正式に**!!{username}!!**に渡すことに同意します。 パートナーサーバーまたは認証済みサーバーは、管理人権限を譲渡する場合、コミュニティチームにご連絡ください。 - !!{user}!!に所有権を譲渡します。 トレンディング↓ トレンディング↑ やり直す diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 4985618cd8..eec990db9b 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -1159,7 +1159,7 @@ 채널 알림을 끄면 멘션했을 때를 제외한 새 메시지 알림이 나타나지 않아요. 새로운 채널 채널 또는 카테고리 - 이 채널 또는 서버는 현재 소리가 꺼져 있어요. + 이 채널 또는 서버는 현재 알림이 꺼져 있어요. 채널 순서가 업데이트되었어요. 채널 권한 역할이 이미 서버 수준 권한을 가지고 있어요. @@ -4150,7 +4150,7 @@ 사용 횟수 이미 가입됨: !!{username}!! 님이 채팅에 초대했어요 - 채팅에 초대 받았어요 + 다음 사용자와 채팅에 초대 받았어요: 초대 받음: **!!{username}!!** 님이 초대함: 그룹 메시지에 초대받았어요 @@ -7658,7 +7658,6 @@ 소유권 이전하기 이 서버의 소유권을 **!!{username}!!** 님에게 이전하는 데 동의합니다. 파트너 서버나 인증 서버는 커뮤니티 팀에 연락하여 소유권 이전을 요청해야 해요. - !!{user}!! 님에게 소유권 이전하기 트렌딩 감소 화살표 트렌딩 증가 화살표 다시 시도하기 diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 7c88aa167e..db576214c5 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -6051,7 +6051,7 @@ Perjungti į Nitro Classic metinę prenumeratą Perjungti į Nitro prenumeratą Nitro Classic - Arba tiesiog naudokis pagrindiniais bruožais. + Arba tiesiog naudokis pagrindinėmis funkcijomis. Nitro Asmeniškai pritaikyk profilį naudodamas unikalią žymą, gauk prieigą prie animacinių emoji, įkelk didesnius failus, stiprink mėgstamą serverį ir daugiau. Mėgaukis geresne Discord patirtimi už vieną mažą mėnesinį mokestį. @@ -6676,7 +6676,7 @@ Tu nedalyvauji jokiose serveriuose. Prisijungti į serverius už tave Naudoti kvietimus tavo vardu. - Prieiga prie tavo slapyvardį, pseudoportreto ir reklamjuostės + Prieiga prie tavo slapyvardžio, pseudoportreto ir reklamjuostės Pažymėti visas žinutes perskaitytomis Tai leidžia programai skaityti visus pranešimus, pasiekiamus per Discord paskyrą Peržiūrėk, kas yra tavo draugai @@ -7609,7 +7609,7 @@ Prašymai draugauti išsiųsti! Komanda nukopijuota Atsiliepimas nusiųstas! - Galimybė pakviesti draugus panaikinta + Kvietimai draugauti pašalinti GIF išsaugotas Nukopijuotas ID Paveikslėlis išsaugotas @@ -7649,7 +7649,6 @@ Perduoti nuosavybę Aš suprantu, kad perduodamas serverio nuosavybės teisęs **!!{username}!!**, serveris oficialiai priklausys jam. Norėdami pateikti nuosavybės perleidimo užklausas, partneriais paskelbtų arba patvirtintų serverių savininkai turi susisiekti su bendruomenės komanda. - Perduoti nuosavybės teisę !!{user}!!(-ui / -ai)!! Tendencijos rodyklė žemyn Tendencijos rodyklė aukštyn Bandyk Dar Kartą diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 58521eaf23..38e25b2132 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -7659,7 +7659,6 @@ Eigenaarschap overdragen Ik erken dat door het overdragen van eigenaarschap van deze server aan **!!{username}!!**, hij officieel aan de andere zal toebehoren. Partnerservers of geverifieerde servers moeten contact opnemen met het communityteam voor verzoeken met betrekking tot eigendomsoverdracht. - Eigenaarschap overdragen aan !!{user}!! Trending, pijl omlaag Trending, pijl omhoog Probeer het opnieuw diff --git a/app/src/main/res/values-no/strings.xml b/app/src/main/res/values-no/strings.xml index 79fc81d5ea..e53c473e5b 100644 --- a/app/src/main/res/values-no/strings.xml +++ b/app/src/main/res/values-no/strings.xml @@ -7490,7 +7490,6 @@ Overfør eierskap Jeg anerkjenner at ved å overføre eierskap på denne serveren til **!!{username}!!**, tilhører den offisielt vedkommende. Partnerservere eller verifiserte servere må ta kontakt med fellesskapsteamet vedrørende forespørsler om overføring av eierskap. - Overfør eierskap til !!{user}!! Trendpil ned Trendpil opp Prøv på nytt diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 73c91b5b7c..5c38ffe058 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -4155,7 +4155,7 @@ Użyć Jesteś już członkiem !!{username}!! zaprasza Cię do rozmowy - Zaproszono Cię do rozmowy z członkiem + Zaproszono Cię do rozmowy z Zaproszono Cię do dołączenia **!!{username}!!** zaprosił(-a) Cię do dołączenia Otrzymano zaproszenie do dołączenia do prywatnej rozmowy grupowej od @@ -6690,7 +6690,7 @@ Nie masz jeszcze żadnych serwerów! Dołącz do serwerów dla Ciebie Korzysta z zaproszeń w Twoim imieniu. - Uzyskaj dostęp do swojej nazwy użytkownika, awataru i baneru + Uzyskanie dostępu do Twojej nazwy użytkownika, awataru i baneru Przeczytaj wszystkie wiadomości To pozwala aplikacji na czytanie wszystkich wiadomości na Twoim koncie Discorda Sprawdź, kto jest Twoim znajomym @@ -7663,7 +7663,6 @@ Zmień właściciela Przyjmuję do wiadomości, że po zmianie właściciela serwer oficjalnie należeć będzie do użytkownika **!!{username}!!**. Serwery partnerskie i zweryfikowane muszą zwrócić się do Zespołu Społeczności, jeśli chcą złożyć wniosek o przeniesienie własności. - Zmień właściciela serwera na !!{user}!! Strzałka trendu w dół Strzałka trendu w górę Spróbuj ponownie diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 72b2bcba71..908d387fd5 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -7608,7 +7608,6 @@ Transferir posse do servidor Entendo que ao transferir a propriedade deste servidor para **!!{username}!!**, o servidor pertencerá a ele(a). Servidores Parceiros ou Verificados devem entrar em contato com a equipe da Comunidade para solicitações de transferência de posse. - Transferir posse para !!{user}!! Seta de em alta para baixo Seta de em alta para cima Tente novamente diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index c4d88eb970..ce2ebc8e47 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -7649,7 +7649,6 @@ Transferă rolul de proprietar Recunosc că prin transferul rolului de proprietar al acestui server către **!!{username}!!**, oficial acesta îi va aparține. Serverele Partenere sau Verificate trebuie să se adreseze Echipei de comunitate pentru solicitări de transfer de proprietate. - Transferă rolul de proprietar lui !!{user}!! Tendință în jos Tendință în sus Încearcă din nou diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 8826ec88af..25001fbcb5 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -7663,7 +7663,6 @@ Передать права на сервер Я признаю, что после передачи прав на сервер он будет официально принадлежать пользователю **!!{username}!!**. Партнёрские и верифицированные серверы должны связаться с командой по работе с сообществом для подачи заявок о передаче прав. - Передать права участнику !!{user}!! Стрелка снижения популярности Стрелка увеличения популярности Попробовать снова diff --git a/app/src/main/res/values-sv-rSE/strings.xml b/app/src/main/res/values-sv-rSE/strings.xml index 0e1c32751e..2d5412100c 100644 --- a/app/src/main/res/values-sv-rSE/strings.xml +++ b/app/src/main/res/values-sv-rSE/strings.xml @@ -7498,7 +7498,6 @@ Överför ägarskap Jag bekräftar att ägarskapet till denna server överförs till **!!{username}!!** som därmed blir officiell ägare. Verifierade servrar och partnerservrar måste kontakta vårt communityteam för frågor gällande överföring av ägandeskap. - Överför ägarskap till !!{user}!! Pil ner för popularitet Pil upp för popularitet Försök igen diff --git a/app/src/main/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml index f8db9b270b..9e5919aae5 100644 --- a/app/src/main/res/values-th/strings.xml +++ b/app/src/main/res/values-th/strings.xml @@ -7649,7 +7649,6 @@ โอนความเป็นเจ้าของ ข้าพเจ้าทราบว่า โดยการโอนความเป็นเจ้าของให้แก่ **!!{username}!!** เขาจะกลายเป็นเจ้าของอย่างเป็นทางการ เซิร์ฟเวอร์ที่เป็นพาร์ทเนอร์หรือที่ได้รับการยืนยันจะต้องติดต่อไปที่ทีมของชุมชนหากต้องการส่งคำขอโอนความเป็นเจ้าของ - โอนความเป็นเจ้าของให้ !!{user}!! ลูกศรความนิยมพุ่งลง ลูกศรความนิยมพุ่งขึ้น ลองอีกครั้ง diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 230ece3ac6..920c7316b2 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -7659,7 +7659,6 @@ Sunucu sahipliğini aktar Bu sunucunun sahipliğini **!!{username}!!** kullanıcısına devrederek sunucunun resmi olarak ona ait olduğunu kabul ediyorum. Ortak veya Doğrulanmış sunucular, sunucu sahipliğini aktarmak için öncelikle Topluluk Ekibi\'ne talepte bulunmalı. - Mal Sahipliğini !!{user}!! Adlı Kişiye Aktar Azalma Oku Artış Oku Tekrar Dene diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index dc81462d92..4738255ea3 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -7649,7 +7649,6 @@ Передати право власності Я усвідомлюю, що після передачі права власності на цей сервер користувачу **!!{username}!!** він офіційно належатиме йому. Партнерські або перевірені сервери мають зв\'язатися з Командою спільноти, щоби надіслати запит на передачу власності. - Передати право власності користувачу !!{user}!! Стрілка тренду вниз Стрілка тренду вгору Спробувати знову diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 7230f86ba4..771faaef34 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -7649,7 +7649,6 @@ Chuyển Quyền Sở Hữu Tôi xác nhận rằng khi chuyển quyền sở hữu của máy chủ **!!{username}!!**, nó sẽ chính thức thuộc về người được chuyển. Các máy chủ Đối Tác và Đã Xác Minh phải liên hệ với đội ngũ Cộng Đồng để gửi yêu cầu chuyển quyền sở hữu. - Chuyển Quyền Sở Hữu cho !!{user}!! Theo Hướng Đi Xuống Theo Hướng Phát Triển Thử lại diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 501ec3f19e..780cae4649 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -7654,7 +7654,6 @@ 所有权转让 我同意将此服务器的所有权转让给**!!{username}!!**,它正式属于他们。 已成为合作伙伴或经过验证的服务器必须联系社区团队来处理所有权转让请求。 - 将所有权转让给 !!{user}!! 下降趋势 上升趋势 重试 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 8b8b9938c4..454d48a653 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -1154,7 +1154,7 @@ 將頻道靜音會防止未讀的標示和通知顯示出來,除非您被提及。 新-頻道 頻道或類別 - 此頻道或伺服器目前靜音。 + 此頻道或伺服器目前設為不接受通知。 頻道順序已更新。 頻道權限 此身分已具備伺服器層級的權限。 @@ -2283,7 +2283,7 @@ 手電筒 對焦到這位成員 追蹤 - 選擇您想套用更新的位置。您隨時都可前往「伺服器設定」>「整合」>「已追蹤的頻道」移除此設定。 + 選擇您想接收公告更新資訊的伺服器。您隨時都可前往「伺服器設定」>「整合」>「已追蹤的頻道」移除此設定。 無法追蹤頻道,請再試一次。 系統只會顯示您擁有 Webhook 權限的伺服器和頻道。 糟糕,您於所在的任何伺服器中都沒有 Webhook 權限。請向您的伺服器管理員要求權限,或請他們自己來追蹤! @@ -4142,7 +4142,7 @@ 使用數 您已經是成員 !!{username}!! 邀請您來聊天 - 有人邀請您與以下對象聊天 + 您已獲邀請與以下對象聊天 您已被邀請加入到 **!!{username}!!** 已邀請您加入 您已被邀請加入群體訊息,邀請人: @@ -4250,14 +4250,14 @@ !!{name}!! 正在直播! 在 !!{guildName}!! 中 您已被邀請加入伺服器 - 您收到了一個好友連結 + 您收到了一個加入好友連結 您已被邀請加入群體訊息 您收到了一個邀請,但是… 您已受邀觀賞直播 您已被邀請一起遊玩 您已受邀加入語音頻道 您發出了一個加入伺服器的邀請 - 您發送了一個好友連結 + 您發送了一個加入好友連結 您已發送邀請加入群體訊息 您發送了一個邀請,但是… 您已發送觀賞直播的邀請 @@ -5736,7 +5736,7 @@ 已加成伺服器可獲得: 沒有等級 伺服器加成 - 加成包含 + 隨附於加成 **{num}** × {num} 每月 {num} × {num} 每月 **{num}** × {num} 每年 @@ -6051,7 +6051,7 @@ 切換至 Nitro Classic 年度訂閱方案 切換至 Nitro 年度訂閱方案 Nitro Classic - 或一切從簡,使用基礎功能就好。 + 或一切從簡,使用基礎升級功能就好。 Nitro 以獨特 tag 自訂您的個人檔案、取得動態表情符號、享受更大的上傳檔案大小、加成您最愛的伺服器等等。 每個月以低廉價格獲得更完善的 Discord 體驗。 @@ -6227,7 +6227,7 @@ 草稿 了解更多關於快速切換器 似乎找不到您要尋找的東西? - 在尋找其他內容嗎? + 要再尋找其他內容嗎? 最後的頻道 前往訊息 您沒有存取此連結的權限 @@ -7057,7 +7057,7 @@ **!!{a}!!、!!{b}!!、!!{c}!!,與另 {n}**已加入聽眾行列 $[!!{name}!!](usernameHook) 已加入聽眾行列 **!!{names}!!** 已加入聽眾行列 - 來自您所在的伺服器 + 從您所在的伺服器 **!!{name}!!** 正在發言 $[!!{name}!!](usernameHook) 正在發言 {count} @@ -7565,7 +7565,7 @@ 變更設定 您的通知設定現已設為所有訊息。 您的通知設定現已設為所有訊息。[不要再顯示](onClick) - 母頻道 !!{channelName}!! + 討論串來源頻道 !!{channelName}!! 想更輕鬆地追蹤這個 {count}的討論串嗎? 討論串設定 討論串設定已更新。 @@ -7609,7 +7609,7 @@ 好友請求已送出! 已複製的命令 已發送意見回饋! - 好友邀請已撤銷 + 已撤銷好友邀請 Gif 已儲存 已複製的 ID 已儲存圖片 @@ -7649,7 +7649,6 @@ 轉移所有權 我同意轉移此伺服器的所有權於 **!!{username}!!**,並正式的屬於他們的。 已成為合作夥伴或已驗證的伺服器必須聯絡社群團隊以要求移轉擁有權。 - 轉移所有權給 !!{user}!! 趨勢箭頭向下 趨勢箭頭向上 再試一次 diff --git a/app/src/main/res/values/plurals.xml b/app/src/main/res/values/plurals.xml index 09adef2a1c..cef5552de7 100644 --- a/app/src/main/res/values/plurals.xml +++ b/app/src/main/res/values/plurals.xml @@ -536,6 +536,10 @@ per year per {count} years + + 1 member + {members} members + Exclusive Channel {count} Exclusive Channels @@ -1200,6 +1204,10 @@ {#}x + + {#} month + {#} months + {#} month {#} months diff --git a/app/src/main/res/values/public.xml b/app/src/main/res/values/public.xml index d55d466d55..3fd4351472 100644 --- a/app/src/main/res/values/public.xml +++ b/app/src/main/res/values/public.xml @@ -10448,231 +10448,233 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -17466,5982 +17468,6006 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1e1b4c8f63..38e1e2e20d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1360,7 +1360,7 @@ Select a color Transparency Use Default - 61270a1e5aa84174a1fa5a5f39b8f4a1 + 51dcdcdc55cc4fceab096e7a8f608528 Coming Soon Slash command application {applicationName} {applicationName} application @@ -3240,7 +3240,12 @@ Text channel, external link, or an in person event. Great for larger community and audio events. Hang out with voice, video, screenshare, and Go Live. - Stage channels are built specifically for community audio events, with $[built-in moderation tools](moderationHook) like $[hand raise](handRaiseHook) and an $[audience muted by default.](audienceHook) + Three speakers in a Stage channel speak to five audience members, two audience members have their hand raised + Get more moderation features and audience controls. Perfect for larger audio events. + Good for: $[Q&A, AMA, Panel Discussion](suggestionsHook) + Q&A + AMA + Panel Discussion Try using a Stage channel! So no one gets lost on where to go. Where is your event? @@ -3290,6 +3295,9 @@ Wanna use a different avatar? !!{guild}!! members No members were found. + Verification link has expired. + Verification success. + Verifying your request. !!{guildName}!! monetization Once enabled, you will be able to accept payment for Premium Subscriptions. Are you sure you want to enable monetization for this server? @@ -3468,6 +3476,7 @@ Exclusive Channel Exclusive Channels Draft + {members} {count} {count} Member Color & Badge @@ -3480,6 +3489,7 @@ Edit Server Rules Server Rules By participating in this server, you have read and agreed to the server\'s rules. + Join Event Event Live !!{topic}!! with !!{username}!!. Listen in! Your event is starting in !!{guildName}!! @@ -3874,6 +3884,7 @@ Set your thread to expire after 3 days of inactivity and keep them around during a long weekend. Hear your friends in higher definition! Upload a decorative banner that best represents your community! Shown under your server name. + Set a unique icon for each role. Icons display in chat and the members list. Even more emojis, for even more ways to express yourself! More sticker slots for more custom expressions! Stream to your friends in high quality. @@ -3890,6 +3901,7 @@ Stream to your friends in high quality. 3 day archive option for threads Server Banner + Custom Role Icons 1080p 60fps Go Live streams 1 week archive option for threads Create private threads @@ -4065,6 +4077,8 @@ Basic Info Members Edit Roles Permissions + Publish + And if you ask me how I\'m feeling, Don\'t tell me you\'re too blind to see Never gonna You know the rules and so do I Server Banner @@ -4435,6 +4449,7 @@ An exclusive place to connect with students, discover servers, and share your own servers for students to join. Hubs are not affiliated with or managed by schools. Servers in the Hub are student-run, but may include non-students. Discord Hubs What\'s a Discord Hub? + Enter Discord one-time code If your server is intended for students only, just invite your classmates. They don\'t need a .edu address to join Remove from Hub Are you sure you want to remove !!{guildName}!! from this Hub? @@ -4444,6 +4459,7 @@ Go to a different school? [Join here](onClick) You\'ve been invited to join a Hub You sent an invite to join a Hub + Didn\'t get the code? [Resend code](onClick) to !!{email}!! Let\'s go! Full Name Real Name @@ -4455,6 +4471,7 @@ Join Servers My school isn\'t here Verified Discord Hub + Verify email address Enter your official school email address sam@college.edu School Email @@ -5559,8 +5576,8 @@ Members with this permission can drag other members out of this channel. They can only move members between channels both they and the member they are moving have access. Move To User has been moved to the selected channel. - Alert Cleared - No Alert Showing + Alert Cleared + No Alert Showing New notification Remove %1$s More than %1$d new notifications @@ -6550,6 +6567,8 @@ Use custom stickers anywhere and access 300 Nitro-exclusive stickers. $[Info](infoHook) Boosted servers can upload custom stickers through Server Settings > Stickers. Nitro users can use custom stickers anywhere. Special Stickers Access + Customize video calls with your own video backgrounds + More Backgrounds Upgrade your emoji, personalize your profile, and stand out in your servers. Make Discord yours Nitro is powering you with {maxLength} characters per message! @@ -6820,9 +6839,10 @@ Signed in as $[](avatarHook) {tag}. [Not You?](logoutHook) Claim Upgrade Anyway - You\'re still eligible for this promotion, but your current subscription will end. If you choose to continue, the following benefits will end today: - You still have an active subscription! + If you claim this promotion, your current subscription of: $[](lineItemsHook) will be replaced with a {newPlanName} subscription. + You have an active subscription! {quantity}{lineItem} + You\'ll receive the full value of the promotion, including {trialMonths} free ([learn more]({helpCenterLink})). **But you\'ll lose any features associated with your current subscription, and you won\'t receive a refund for any remaining value on your current subscription.** At the end of the promotion period, you\'ll be converted to a paying {newPlanName} subscription at the price of {planPrice}. Seems like something’s gone wrong and you can’t use that code. Sorry about that. Sorry, looks like this code has already been redeemed. Visit our [Help Center]({helpCenterLink}) for more information. @@ -7014,6 +7034,7 @@ Report a message Report Stage Select one + Selected Server Do you want to block this user? Do you want to delete this message? Subject @@ -7135,6 +7156,7 @@ applies to all server members Default Permissions Default permissions for all server members + Role icon, {name} Choose Image Upload an image or pick an emoji. We recommend an image that’s at least 64x64 pixels. It must be under 256kb. Emoji @@ -9039,6 +9061,8 @@ Tropic Island Discord Vaporwave Wumpus Vaporwave + Express yourself with video backgrounds, and if you have Nitro, upload your own! + New Video Backgrounds! Get more customization by uploading your own video background, custom global emojis, and more with [Discord Nitro!](onLearnMore) Wanna upload your own background? Focus