From 5edecf3eb1c950358e802c4f69e701ba7401fafc Mon Sep 17 00:00:00 2001 From: Juby210 Date: Thu, 7 Oct 2021 08:22:31 +0200 Subject: [PATCH] 97.2 - Alpha (97202) --- app/build.gradle | 4 +- app/src/main/AndroidManifest.xml | 2 +- .../events/TrackDiscoverySetupCtaClicked.java | 61 + ...TrackDiscoverySetupCtaClickedReceiver.java | 6 + .../TrackDiscoverySetupPopularTagClicked.java | 51 + ...scoverySetupPopularTagClickedReceiver.java | 6 + .../events/TrackScreenshareFinished.java | 17 +- ...teractions$sendComponentInteraction$1.java | 1 + .../autocomplete/AutocompleteModelUtils.java | 240 +- .../autocomplete/AutocompleteViewModel.java | 11 +- .../commands/AutocompleteCommandUtils.java | 157 +- ...EventInvite$Model$Companion$observe$1.java | 9 +- ...tAdapterItemGuildScheduledEventInvite.java | 95 +- .../GuildScheduledEventBottomButtonView.java | 121 +- ...lsViewModel$Companion$observeStores$1.java | 16 +- .../GuildScheduledEventDetailsViewModel.java | 91 +- .../GuildScheduledEventItemView.java | 22 +- .../GuildScheduledEventListItem.java | 43 +- ...stViewModel$Companion$observeStores$1.java | 3 +- .../GuildScheduledEventListViewModel.java | 52 +- ...GuildScheduledEventDetailsBottomSheet.java | 2 +- .../widgets/settings/WidgetSettings.java | 2 +- ...dget_chat_list_bot_ui_button_component.xml | 2 +- ...dget_chat_list_bot_ui_button_component.xml | 2 +- app/src/main/res/values-ar-rXB/plurals.xml | 8 +- app/src/main/res/values-ar-rXB/strings.xml | 27 +- app/src/main/res/values-bg/strings.xml | 1 - app/src/main/res/values-cs/strings.xml | 1 - 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 | 27 +- 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 | 1 - 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 | 1 - app/src/main/res/values-lt/strings.xml | 1 - 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 | 1 - 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 | 1 - app/src/main/res/values/plurals.xml | 8 +- app/src/main/res/values/public.xml | 13016 ++++++++-------- app/src/main/res/values/strings.xml | 29 +- 59 files changed, 7167 insertions(+), 7000 deletions(-) create mode 100644 app/src/main/java/com/discord/analytics/generated/events/TrackDiscoverySetupCtaClicked.java create mode 100644 app/src/main/java/com/discord/analytics/generated/events/TrackDiscoverySetupCtaClickedReceiver.java create mode 100644 app/src/main/java/com/discord/analytics/generated/events/TrackDiscoverySetupPopularTagClicked.java create mode 100644 app/src/main/java/com/discord/analytics/generated/events/TrackDiscoverySetupPopularTagClickedReceiver.java diff --git a/app/build.gradle b/app/build.gradle index 661581c9d7..3692a227f8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ android { applicationId 'com.discord' minSdkVersion 21 targetSdkVersion 29 - versionCode 97201 - versionName "97.1 - Alpha" + versionCode 97202 + versionName "97.2 - Alpha" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index dd87b8978c..a54b848d7e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,5 +1,5 @@ - + diff --git a/app/src/main/java/com/discord/analytics/generated/events/TrackDiscoverySetupCtaClicked.java b/app/src/main/java/com/discord/analytics/generated/events/TrackDiscoverySetupCtaClicked.java new file mode 100644 index 0000000000..ae0e4b53ab --- /dev/null +++ b/app/src/main/java/com/discord/analytics/generated/events/TrackDiscoverySetupCtaClicked.java @@ -0,0 +1,61 @@ +package com.discord.analytics.generated.events; + +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.TrackGuild; +import com.discord.analytics.generated.traits.TrackGuildReceiver; +import com.discord.api.science.AnalyticsSchema; +import d0.z.d.m; +/* compiled from: TrackDiscoverySetupCtaClicked.kt */ +public final class TrackDiscoverySetupCtaClicked implements AnalyticsSchema, TrackBaseReceiver, TrackGuildReceiver { + private final transient String analyticsSchemaTypeName = "discovery_setup_cta_clicked"; + private final CharSequence ctaName = null; + private final CharSequence discoverySettingsView = null; + private final CharSequence helpCenterArticleId = null; + private final CharSequence modalStep = null; + private TrackBase trackBase; + private TrackGuild trackGuild; + + @Override // com.discord.api.science.AnalyticsSchema + public String b() { + return this.analyticsSchemaTypeName; + } + + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof TrackDiscoverySetupCtaClicked)) { + return false; + } + TrackDiscoverySetupCtaClicked trackDiscoverySetupCtaClicked = (TrackDiscoverySetupCtaClicked) obj; + return m.areEqual(this.ctaName, trackDiscoverySetupCtaClicked.ctaName) && m.areEqual(this.discoverySettingsView, trackDiscoverySetupCtaClicked.discoverySettingsView) && m.areEqual(this.helpCenterArticleId, trackDiscoverySetupCtaClicked.helpCenterArticleId) && m.areEqual(this.modalStep, trackDiscoverySetupCtaClicked.modalStep); + } + + public int hashCode() { + CharSequence charSequence = this.ctaName; + int i = 0; + int hashCode = (charSequence != null ? charSequence.hashCode() : 0) * 31; + CharSequence charSequence2 = this.discoverySettingsView; + int hashCode2 = (hashCode + (charSequence2 != null ? charSequence2.hashCode() : 0)) * 31; + CharSequence charSequence3 = this.helpCenterArticleId; + int hashCode3 = (hashCode2 + (charSequence3 != null ? charSequence3.hashCode() : 0)) * 31; + CharSequence charSequence4 = this.modalStep; + if (charSequence4 != null) { + i = charSequence4.hashCode(); + } + return hashCode3 + i; + } + + public String toString() { + StringBuilder P = a.P("TrackDiscoverySetupCtaClicked(ctaName="); + P.append(this.ctaName); + P.append(", discoverySettingsView="); + P.append(this.discoverySettingsView); + P.append(", helpCenterArticleId="); + P.append(this.helpCenterArticleId); + P.append(", modalStep="); + return a.D(P, this.modalStep, ")"); + } +} diff --git a/app/src/main/java/com/discord/analytics/generated/events/TrackDiscoverySetupCtaClickedReceiver.java b/app/src/main/java/com/discord/analytics/generated/events/TrackDiscoverySetupCtaClickedReceiver.java new file mode 100644 index 0000000000..90c153511a --- /dev/null +++ b/app/src/main/java/com/discord/analytics/generated/events/TrackDiscoverySetupCtaClickedReceiver.java @@ -0,0 +1,6 @@ +package com.discord.analytics.generated.events; + +import com.discord.api.science.AnalyticsSchema; +/* compiled from: TrackDiscoverySetupCtaClicked.kt */ +public interface TrackDiscoverySetupCtaClickedReceiver extends AnalyticsSchema { +} diff --git a/app/src/main/java/com/discord/analytics/generated/events/TrackDiscoverySetupPopularTagClicked.java b/app/src/main/java/com/discord/analytics/generated/events/TrackDiscoverySetupPopularTagClicked.java new file mode 100644 index 0000000000..25de9bfa2b --- /dev/null +++ b/app/src/main/java/com/discord/analytics/generated/events/TrackDiscoverySetupPopularTagClicked.java @@ -0,0 +1,51 @@ +package com.discord.analytics.generated.events; + +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.TrackGuild; +import com.discord.analytics.generated.traits.TrackGuildReceiver; +import com.discord.api.science.AnalyticsSchema; +import d0.z.d.m; +/* compiled from: TrackDiscoverySetupPopularTagClicked.kt */ +public final class TrackDiscoverySetupPopularTagClicked implements AnalyticsSchema, TrackBaseReceiver, TrackGuildReceiver { + private final transient String analyticsSchemaTypeName = "discovery_setup_popular_tag_clicked"; + private final Long primaryCategoryId = null; + private final CharSequence tag = null; + private TrackBase trackBase; + private TrackGuild trackGuild; + + @Override // com.discord.api.science.AnalyticsSchema + public String b() { + return this.analyticsSchemaTypeName; + } + + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof TrackDiscoverySetupPopularTagClicked)) { + return false; + } + TrackDiscoverySetupPopularTagClicked trackDiscoverySetupPopularTagClicked = (TrackDiscoverySetupPopularTagClicked) obj; + return m.areEqual(this.tag, trackDiscoverySetupPopularTagClicked.tag) && m.areEqual(this.primaryCategoryId, trackDiscoverySetupPopularTagClicked.primaryCategoryId); + } + + public int hashCode() { + CharSequence charSequence = this.tag; + int i = 0; + int hashCode = (charSequence != null ? charSequence.hashCode() : 0) * 31; + Long l = this.primaryCategoryId; + if (l != null) { + i = l.hashCode(); + } + return hashCode + i; + } + + public String toString() { + StringBuilder P = a.P("TrackDiscoverySetupPopularTagClicked(tag="); + P.append(this.tag); + P.append(", primaryCategoryId="); + return a.F(P, this.primaryCategoryId, ")"); + } +} diff --git a/app/src/main/java/com/discord/analytics/generated/events/TrackDiscoverySetupPopularTagClickedReceiver.java b/app/src/main/java/com/discord/analytics/generated/events/TrackDiscoverySetupPopularTagClickedReceiver.java new file mode 100644 index 0000000000..2133708005 --- /dev/null +++ b/app/src/main/java/com/discord/analytics/generated/events/TrackDiscoverySetupPopularTagClickedReceiver.java @@ -0,0 +1,6 @@ +package com.discord.analytics.generated.events; + +import com.discord.api.science.AnalyticsSchema; +/* compiled from: TrackDiscoverySetupPopularTagClicked.kt */ +public interface TrackDiscoverySetupPopularTagClickedReceiver extends AnalyticsSchema { +} diff --git a/app/src/main/java/com/discord/analytics/generated/events/TrackScreenshareFinished.java b/app/src/main/java/com/discord/analytics/generated/events/TrackScreenshareFinished.java index 6ca5397d2c..486c502ac4 100644 --- a/app/src/main/java/com/discord/analytics/generated/events/TrackScreenshareFinished.java +++ b/app/src/main/java/com/discord/analytics/generated/events/TrackScreenshareFinished.java @@ -7,6 +7,7 @@ import com.discord.api.science.AnalyticsSchema; import d0.z.d.m; /* compiled from: TrackScreenshareFinished.kt */ public final class TrackScreenshareFinished implements AnalyticsSchema, TrackBaseReceiver { + private final Float activity = null; private final transient String analyticsSchemaTypeName = "screenshare_finished"; private final Long channelId = null; private final CharSequence context = null; @@ -48,7 +49,7 @@ public final class TrackScreenshareFinished implements AnalyticsSchema, TrackBas return false; } TrackScreenshareFinished trackScreenshareFinished = (TrackScreenshareFinished) obj; - return m.areEqual(this.guildId, trackScreenshareFinished.guildId) && m.areEqual(this.channelId, trackScreenshareFinished.channelId) && m.areEqual(this.context, trackScreenshareFinished.context) && m.areEqual(this.screenshareFrames, trackScreenshareFinished.screenshareFrames) && m.areEqual(this.videohookFrames, trackScreenshareFinished.videohookFrames) && m.areEqual(this.hybridDxgiFrames, trackScreenshareFinished.hybridDxgiFrames) && m.areEqual(this.hybridGdiFrames, trackScreenshareFinished.hybridGdiFrames) && m.areEqual(this.hybridVideohookFrames, trackScreenshareFinished.hybridVideohookFrames) && m.areEqual(this.soundshareSession, trackScreenshareFinished.soundshareSession) && m.areEqual(this.shareGameName, trackScreenshareFinished.shareGameName) && m.areEqual(this.shareGameId, trackScreenshareFinished.shareGameId) && m.areEqual(this.desktopCapturerType, trackScreenshareFinished.desktopCapturerType) && m.areEqual(this.screens, trackScreenshareFinished.screens) && m.areEqual(this.windows, trackScreenshareFinished.windows) && m.areEqual(this.cpu, trackScreenshareFinished.cpu) && m.areEqual(this.gpu, trackScreenshareFinished.gpu) && m.areEqual(this.cpuBrand, trackScreenshareFinished.cpuBrand) && m.areEqual(this.cpuVendor, trackScreenshareFinished.cpuVendor) && m.areEqual(this.cpuMemory, trackScreenshareFinished.cpuMemory) && m.areEqual(this.gpuBrand, trackScreenshareFinished.gpuBrand) && m.areEqual(this.gpuCount, trackScreenshareFinished.gpuCount) && m.areEqual(this.gpuMemory, trackScreenshareFinished.gpuMemory) && m.areEqual(this.mediaSessionId, trackScreenshareFinished.mediaSessionId) && m.areEqual(this.rtcConnectionId, trackScreenshareFinished.rtcConnectionId) && m.areEqual(this.quartzFrames, trackScreenshareFinished.quartzFrames); + return m.areEqual(this.guildId, trackScreenshareFinished.guildId) && m.areEqual(this.channelId, trackScreenshareFinished.channelId) && m.areEqual(this.context, trackScreenshareFinished.context) && m.areEqual(this.screenshareFrames, trackScreenshareFinished.screenshareFrames) && m.areEqual(this.videohookFrames, trackScreenshareFinished.videohookFrames) && m.areEqual(this.hybridDxgiFrames, trackScreenshareFinished.hybridDxgiFrames) && m.areEqual(this.hybridGdiFrames, trackScreenshareFinished.hybridGdiFrames) && m.areEqual(this.hybridVideohookFrames, trackScreenshareFinished.hybridVideohookFrames) && m.areEqual(this.soundshareSession, trackScreenshareFinished.soundshareSession) && m.areEqual(this.shareGameName, trackScreenshareFinished.shareGameName) && m.areEqual(this.shareGameId, trackScreenshareFinished.shareGameId) && m.areEqual(this.desktopCapturerType, trackScreenshareFinished.desktopCapturerType) && m.areEqual(this.screens, trackScreenshareFinished.screens) && m.areEqual(this.windows, trackScreenshareFinished.windows) && m.areEqual(this.cpu, trackScreenshareFinished.cpu) && m.areEqual(this.gpu, trackScreenshareFinished.gpu) && m.areEqual(this.cpuBrand, trackScreenshareFinished.cpuBrand) && m.areEqual(this.cpuVendor, trackScreenshareFinished.cpuVendor) && m.areEqual(this.cpuMemory, trackScreenshareFinished.cpuMemory) && m.areEqual(this.gpuBrand, trackScreenshareFinished.gpuBrand) && m.areEqual(this.gpuCount, trackScreenshareFinished.gpuCount) && m.areEqual(this.gpuMemory, trackScreenshareFinished.gpuMemory) && m.areEqual(this.mediaSessionId, trackScreenshareFinished.mediaSessionId) && m.areEqual(this.rtcConnectionId, trackScreenshareFinished.rtcConnectionId) && m.areEqual(this.quartzFrames, trackScreenshareFinished.quartzFrames) && m.areEqual(this.activity, trackScreenshareFinished.activity); } public int hashCode() { @@ -102,10 +103,12 @@ public final class TrackScreenshareFinished implements AnalyticsSchema, TrackBas CharSequence charSequence11 = this.rtcConnectionId; int hashCode24 = (hashCode23 + (charSequence11 != null ? charSequence11.hashCode() : 0)) * 31; Long l14 = this.quartzFrames; - if (l14 != null) { - i = l14.hashCode(); + int hashCode25 = (hashCode24 + (l14 != null ? l14.hashCode() : 0)) * 31; + Float f = this.activity; + if (f != null) { + i = f.hashCode(); } - return hashCode24 + i; + return hashCode25 + i; } public String toString() { @@ -158,6 +161,10 @@ public final class TrackScreenshareFinished implements AnalyticsSchema, TrackBas P.append(", rtcConnectionId="); P.append(this.rtcConnectionId); P.append(", quartzFrames="); - return a.F(P, this.quartzFrames, ")"); + P.append(this.quartzFrames); + P.append(", activity="); + P.append(this.activity); + P.append(")"); + return P.toString(); } } diff --git a/app/src/main/java/com/discord/stores/StoreApplicationInteractions$sendComponentInteraction$1.java b/app/src/main/java/com/discord/stores/StoreApplicationInteractions$sendComponentInteraction$1.java index 245ec14f59..e525b9371f 100644 --- a/app/src/main/java/com/discord/stores/StoreApplicationInteractions$sendComponentInteraction$1.java +++ b/app/src/main/java/com/discord/stores/StoreApplicationInteractions$sendComponentInteraction$1.java @@ -69,6 +69,7 @@ public final class StoreApplicationInteractions$sendComponentInteraction$1 exten StoreLocalActionComponentState access$getStoreLocalActionComponentState$p = StoreApplicationInteractions.access$getStoreLocalActionComponentState$p(this.this$0.this$0.this$0); StoreApplicationInteractions$sendComponentInteraction$1 storeApplicationInteractions$sendComponentInteraction$1 = this.this$0.this$0; access$getStoreLocalActionComponentState$p.clearState(storeApplicationInteractions$sendComponentInteraction$1.$messageId, Integer.valueOf(storeApplicationInteractions$sendComponentInteraction$1.$componentIndex)); + this.this$0.this$0.this$0.getComponentInteractions().remove(this.this$0.this$0.$nonce); StoreApplicationInteractions$sendComponentInteraction$1 storeApplicationInteractions$sendComponentInteraction$12 = this.this$0.this$0; StoreApplicationInteractions storeApplicationInteractions = storeApplicationInteractions$sendComponentInteraction$12.this$0; long j = storeApplicationInteractions$sendComponentInteraction$12.$messageId; diff --git a/app/src/main/java/com/discord/widgets/chat/input/autocomplete/AutocompleteModelUtils.java b/app/src/main/java/com/discord/widgets/chat/input/autocomplete/AutocompleteModelUtils.java index 452868eb6a..dfbf48f701 100644 --- a/app/src/main/java/com/discord/widgets/chat/input/autocomplete/AutocompleteModelUtils.java +++ b/app/src/main/java/com/discord/widgets/chat/input/autocomplete/AutocompleteModelUtils.java @@ -10,7 +10,6 @@ import com.discord.models.commands.ApplicationCommand; import com.discord.models.commands.ApplicationCommandOption; import com.discord.models.commands.ApplicationSubCommand; import com.discord.stores.CommandAutocompleteState; -import com.discord.stores.StoreApplicationCommandsKt; import com.discord.utilities.stickers.StickerUtils; import com.discord.utilities.string.StringUtilsKt; import com.discord.widgets.chat.input.MentionUtilsKt; @@ -349,90 +348,115 @@ public final class AutocompleteModelUtils { } public final ApplicationCommandData getApplicationSendData(AutocompleteInputSelectionModel autocompleteInputSelectionModel, ApplicationCommandOption applicationCommandOption, List list, List list2) { - ApplicationCommand applicationCommand; - Application application; + boolean z2; ApplicationCommandValue applicationCommandValue; + boolean z3; OptionRange optionRange; IntRange value; - Object obj; - Object obj2; - boolean z2; - CharSequence charSequence; - boolean z3; - InputSelectionModel inputSelectionModel; - MentionInputModel inputModel; - CharSequence input; + boolean z4; m.checkNotNullParameter(list, "applications"); m.checkNotNullParameter(list2, "queryCommands"); - InputSelectionModel inputSelectionModel2 = autocompleteInputSelectionModel != null ? autocompleteInputSelectionModel.getInputSelectionModel() : null; - boolean z4 = false; - if (inputSelectionModel2 instanceof InputSelectionModel.CommandInputSelectionModel) { - InputSelectionModel.CommandInputSelectionModel commandInputSelectionModel = (InputSelectionModel.CommandInputSelectionModel) inputSelectionModel2; - applicationCommand = commandInputSelectionModel.getInputModel().getInputCommandContext().getSelectedCommand(); - application = commandInputSelectionModel.getInputModel().getInputCommandContext().getSelectedApplication(); - } else { - Iterator it = StoreApplicationCommandsKt.flattenSubCommands(list2).iterator(); - while (true) { - if (!it.hasNext()) { - obj = null; - break; - } - obj = it.next(); - ApplicationCommand applicationCommand2 = (ApplicationCommand) obj; - if (autocompleteInputSelectionModel == null || (inputSelectionModel = autocompleteInputSelectionModel.getInputSelectionModel()) == null || (inputModel = inputSelectionModel.getInputModel()) == null || (input = inputModel.getInput()) == null || (charSequence = w.trim(input)) == null) { - charSequence = ""; - } - if (!(!t.isBlank(charSequence)) || !m.areEqual(applicationCommand2.getName(), charSequence.subSequence(1, charSequence.length()).toString()) || charSequence.charAt(0) != '/') { - z3 = false; - continue; - } else { - z3 = true; - continue; - } - if (z3) { - break; - } - } - applicationCommand = (ApplicationCommand) obj; - if (applicationCommand == null) { - return null; - } - Iterator it2 = list.iterator(); - while (true) { - if (!it2.hasNext()) { - obj2 = null; - break; - } - obj2 = it2.next(); - if (((Application) obj2).getId() == applicationCommand.getApplicationId()) { - z2 = true; - continue; - } else { - z2 = false; - continue; - } - if (z2) { - break; - } - } - application = (Application) obj2; - if (application == null) { - return null; - } + InputSelectionModel inputSelectionModel = autocompleteInputSelectionModel != null ? autocompleteInputSelectionModel.getInputSelectionModel() : null; + if (!(inputSelectionModel instanceof InputSelectionModel.CommandInputSelectionModel)) { + return null; } - MentionInputModel inputModel2 = inputSelectionModel2 != null ? inputSelectionModel2.getInputModel() : null; - if (!(inputModel2 instanceof MentionInputModel.VerifiedCommandInputModel)) { - inputModel2 = null; + InputSelectionModel.CommandInputSelectionModel commandInputSelectionModel = (InputSelectionModel.CommandInputSelectionModel) inputSelectionModel; + ApplicationCommand selectedCommand = commandInputSelectionModel.getInputModel().getInputCommandContext().getSelectedCommand(); + Application selectedApplication = commandInputSelectionModel.getInputModel().getInputCommandContext().getSelectedApplication(); + MentionInputModel.VerifiedCommandInputModel inputModel = commandInputSelectionModel.getInputModel(); + if (!(inputModel instanceof MentionInputModel.VerifiedCommandInputModel)) { + inputModel = null; } - MentionInputModel.VerifiedCommandInputModel verifiedCommandInputModel = (MentionInputModel.VerifiedCommandInputModel) inputModel2; - if (verifiedCommandInputModel == null && applicationCommand != null && application != null) { + if (inputModel == null && selectedCommand != null && selectedApplication != null) { List emptyList = n.emptyList(); - List options = applicationCommand.getOptions(); + List options = selectedCommand.getOptions(); if (!(options instanceof Collection) || !options.isEmpty()) { - Iterator it3 = options.iterator(); + Iterator it = options.iterator(); while (true) { - if (it3.hasNext()) { - if (!(!((ApplicationCommandOption) it3.next()).getRequired())) { + if (it.hasNext()) { + if (!(!((ApplicationCommandOption) it.next()).getRequired())) { + z4 = false; + break; + } + } else { + break; + } + } + return new ApplicationCommandData(selectedApplication, selectedCommand, emptyList, z4); + } + z4 = true; + return new ApplicationCommandData(selectedApplication, selectedCommand, emptyList, z4); + } else if (inputModel == null || selectedCommand == null || selectedApplication == null) { + return null; + } else { + Map inputCommandOptionValues = inputModel.getInputCommandOptionValues(); + LinkedHashMap linkedHashMap = new LinkedHashMap(g0.mapCapacity(inputCommandOptionValues.size())); + Iterator it2 = inputCommandOptionValues.entrySet().iterator(); + while (it2.hasNext()) { + Map.Entry entry = (Map.Entry) it2.next(); + Object key = entry.getKey(); + Object value2 = ((CommandOptionValue) entry.getValue()).getValue(); + if (entry.getValue() instanceof StringOptionValue) { + List choices = ((ApplicationCommandOption) entry.getKey()).getChoices(); + if (!(!(choices == null || choices.isEmpty()) || (optionRange = inputModel.getInputCommandOptionsRanges().get(entry.getKey())) == null || (value = optionRange.getValue()) == null)) { + int first = value.getFirst(); + String obj = ((CommandOptionValue) entry.getValue()).getValue().toString(); + Map inputMentionsMap = inputModel.getInputMentionsMap(); + LinkedHashMap linkedHashMap2 = new LinkedHashMap(g0.mapCapacity(inputMentionsMap.size())); + Iterator it3 = inputMentionsMap.entrySet().iterator(); + while (it3.hasNext()) { + Map.Entry entry2 = (Map.Entry) it3.next(); + linkedHashMap2.put(new IntRange(((IntRange) entry2.getKey()).getFirst() - first, ((IntRange) entry2.getKey()).getLast() - first), entry2.getValue()); + } + LinkedHashMap linkedHashMap3 = new LinkedHashMap(); + for (Map.Entry entry3 : linkedHashMap2.entrySet()) { + if (((IntRange) entry3.getKey()).getFirst() >= 0 && ((IntRange) entry3.getKey()).getLast() <= obj.length()) { + linkedHashMap3.put(entry3.getKey(), entry3.getValue()); + } + } + value2 = AutocompleteExtensionsKt.replaceAutocompleteDataWithServerValues(obj, linkedHashMap3); + } + } + linkedHashMap.put(key, value2); + } + Map inputCommandOptionValidity = inputModel.getInputCommandOptionValidity(); + if (selectedCommand instanceof ApplicationSubCommand) { + Collection values = inputCommandOptionValidity.values(); + if (!(values instanceof Collection) || !values.isEmpty()) { + Iterator it4 = values.iterator(); + while (true) { + if (it4.hasNext()) { + if (!((Boolean) it4.next()).booleanValue()) { + z3 = false; + break; + } + } else { + break; + } + } + } + z3 = true; + Set keySet = linkedHashMap.keySet(); + ArrayList arrayList = new ArrayList(o.collectionSizeOrDefault(keySet, 10)); + for (ApplicationCommandOption applicationCommandOption2 : keySet) { + boolean areEqual = m.areEqual(applicationCommandOption != null ? applicationCommandOption.getName() : null, applicationCommandOption2.getName()); + boolean z5 = (applicationCommandOption2.getRequired() && linkedHashMap.get(applicationCommandOption2) == null && !applicationCommandOption2.getAutocomplete()) || m.areEqual(inputCommandOptionValidity.get(applicationCommandOption2), Boolean.FALSE); + z3 = z3 && !z5; + Object obj2 = !z5 ? linkedHashMap.get(applicationCommandOption2) : null; + arrayList.add((obj2 != null || applicationCommandOption2.getAutocomplete()) ? new ApplicationCommandValue(applicationCommandOption2.getName(), obj2 != null ? obj2 : "", applicationCommandOption2.getType().getType(), null, areEqual ? Boolean.TRUE : null, 8, null) : null); + } + ApplicationSubCommand applicationSubCommand = (ApplicationSubCommand) selectedCommand; + ApplicationCommandValue applicationCommandValue2 = new ApplicationCommandValue(applicationSubCommand.getSubCommandName(), null, ApplicationCommandType.SUBCOMMAND.getType(), u.filterNotNull(arrayList), null, 18, null); + String parentGroupName = applicationSubCommand.getParentGroupName(); + return parentGroupName != null ? new ApplicationCommandData(selectedApplication, applicationSubCommand.getRootCommand(), d0.t.m.listOf(new ApplicationCommandValue(parentGroupName, null, ApplicationCommandType.SUBCOMMAND_GROUP.getType(), d0.t.m.listOf(applicationCommandValue2), null, 18, null)), z3) : new ApplicationCommandData(selectedApplication, applicationSubCommand.getRootCommand(), d0.t.m.listOf(applicationCommandValue2), z3); + } + Collection values2 = inputCommandOptionValidity.values(); + if (!(values2 instanceof Collection) || !values2.isEmpty()) { + Iterator it5 = values2.iterator(); + while (true) { + if (it5.hasNext()) { + if (!((Boolean) it5.next()).booleanValue()) { + z2 = false; break; } } else { @@ -440,74 +464,22 @@ public final class AutocompleteModelUtils { } } } - z4 = true; - return new ApplicationCommandData(application, applicationCommand, emptyList, z4); - } else if (verifiedCommandInputModel == null || applicationCommand == null || application == null) { - return null; - } else { - Map inputCommandOptionValues = verifiedCommandInputModel.getInputCommandOptionValues(); - LinkedHashMap linkedHashMap = new LinkedHashMap(g0.mapCapacity(inputCommandOptionValues.size())); - Iterator it4 = inputCommandOptionValues.entrySet().iterator(); - while (it4.hasNext()) { - Map.Entry entry = (Map.Entry) it4.next(); - Object key = entry.getKey(); - Object value2 = ((CommandOptionValue) entry.getValue()).getValue(); - if (entry.getValue() instanceof StringOptionValue) { - List choices = ((ApplicationCommandOption) entry.getKey()).getChoices(); - if (!(!(choices == null || choices.isEmpty()) || (optionRange = verifiedCommandInputModel.getInputCommandOptionsRanges().get(entry.getKey())) == null || (value = optionRange.getValue()) == null)) { - int first = value.getFirst(); - String obj3 = ((CommandOptionValue) entry.getValue()).getValue().toString(); - Map inputMentionsMap = verifiedCommandInputModel.getInputMentionsMap(); - LinkedHashMap linkedHashMap2 = new LinkedHashMap(g0.mapCapacity(inputMentionsMap.size())); - Iterator it5 = inputMentionsMap.entrySet().iterator(); - while (it5.hasNext()) { - Map.Entry entry2 = (Map.Entry) it5.next(); - linkedHashMap2.put(new IntRange(((IntRange) entry2.getKey()).getFirst() - first, ((IntRange) entry2.getKey()).getLast() - first), entry2.getValue()); - } - LinkedHashMap linkedHashMap3 = new LinkedHashMap(); - for (Map.Entry entry3 : linkedHashMap2.entrySet()) { - if (((IntRange) entry3.getKey()).getFirst() >= 0 && ((IntRange) entry3.getKey()).getLast() <= obj3.length()) { - linkedHashMap3.put(entry3.getKey(), entry3.getValue()); - } - } - value2 = AutocompleteExtensionsKt.replaceAutocompleteDataWithServerValues(obj3, linkedHashMap3); - } - } - linkedHashMap.put(key, value2); - } - Map inputCommandOptionValidity = verifiedCommandInputModel.getInputCommandOptionValidity(); - if (applicationCommand instanceof ApplicationSubCommand) { - Set keySet = linkedHashMap.keySet(); - ArrayList arrayList = new ArrayList(o.collectionSizeOrDefault(keySet, 10)); - boolean z5 = true; - for (ApplicationCommandOption applicationCommandOption2 : keySet) { - boolean areEqual = m.areEqual(applicationCommandOption != null ? applicationCommandOption.getName() : null, applicationCommandOption2.getName()); - boolean z6 = (applicationCommandOption2.getRequired() && linkedHashMap.get(applicationCommandOption2) == null && !applicationCommandOption2.getAutocomplete()) || m.areEqual(inputCommandOptionValidity.get(applicationCommandOption2), Boolean.FALSE); - z5 = z5 && !z6; - Object obj4 = !z6 ? linkedHashMap.get(applicationCommandOption2) : null; - arrayList.add((obj4 != null || applicationCommandOption2.getAutocomplete()) ? new ApplicationCommandValue(applicationCommandOption2.getName(), obj4 != null ? obj4 : "", applicationCommandOption2.getType().getType(), null, areEqual ? Boolean.TRUE : null, 8, null) : null); - } - ApplicationSubCommand applicationSubCommand = (ApplicationSubCommand) applicationCommand; - ApplicationCommandValue applicationCommandValue2 = new ApplicationCommandValue(applicationSubCommand.getSubCommandName(), null, ApplicationCommandType.SUBCOMMAND.getType(), u.filterNotNull(arrayList), null, 18, null); - String parentGroupName = applicationSubCommand.getParentGroupName(); - return parentGroupName != null ? new ApplicationCommandData(application, applicationSubCommand.getRootCommand(), d0.t.m.listOf(new ApplicationCommandValue(parentGroupName, null, ApplicationCommandType.SUBCOMMAND_GROUP.getType(), d0.t.m.listOf(applicationCommandValue2), null, 18, null)), z5) : new ApplicationCommandData(application, applicationSubCommand.getRootCommand(), d0.t.m.listOf(applicationCommandValue2), z5); - } + z2 = true; Set keySet2 = linkedHashMap.keySet(); ArrayList arrayList2 = new ArrayList(o.collectionSizeOrDefault(keySet2, 10)); - boolean z7 = true; for (ApplicationCommandOption applicationCommandOption3 : keySet2) { boolean areEqual2 = m.areEqual(applicationCommandOption != null ? applicationCommandOption.getName() : null, applicationCommandOption3.getName()); - boolean z8 = (applicationCommandOption3.getRequired() && linkedHashMap.get(applicationCommandOption3) == null && !applicationCommandOption3.getAutocomplete()) || m.areEqual(inputCommandOptionValidity.get(applicationCommandOption3), Boolean.FALSE); - z7 = z7 && !z8; - Object obj5 = !z8 ? linkedHashMap.get(applicationCommandOption3) : null; - if (obj5 != null || applicationCommandOption3.getAutocomplete()) { - applicationCommandValue = new ApplicationCommandValue(applicationCommandOption3.getName(), obj5 != null ? obj5 : "", applicationCommandOption3.getType().getType(), null, areEqual2 ? Boolean.TRUE : null, 8, null); + boolean z6 = (applicationCommandOption3.getRequired() && linkedHashMap.get(applicationCommandOption3) == null && !applicationCommandOption3.getAutocomplete()) || m.areEqual(inputCommandOptionValidity.get(applicationCommandOption3), Boolean.FALSE); + z2 = z2 && !z6; + Object obj3 = !z6 ? linkedHashMap.get(applicationCommandOption3) : null; + if (obj3 != null || applicationCommandOption3.getAutocomplete()) { + applicationCommandValue = new ApplicationCommandValue(applicationCommandOption3.getName(), obj3 != null ? obj3 : "", applicationCommandOption3.getType().getType(), null, areEqual2 ? Boolean.TRUE : null, 8, null); } else { applicationCommandValue = null; } arrayList2.add(applicationCommandValue); } - return new ApplicationCommandData(application, applicationCommand, u.filterNotNull(arrayList2), z7); + return new ApplicationCommandData(selectedApplication, selectedCommand, u.filterNotNull(arrayList2), z2); } } diff --git a/app/src/main/java/com/discord/widgets/chat/input/autocomplete/AutocompleteViewModel.java b/app/src/main/java/com/discord/widgets/chat/input/autocomplete/AutocompleteViewModel.java index 90160c57fd..1fcff7a51d 100644 --- a/app/src/main/java/com/discord/widgets/chat/input/autocomplete/AutocompleteViewModel.java +++ b/app/src/main/java/com/discord/widgets/chat/input/autocomplete/AutocompleteViewModel.java @@ -1602,11 +1602,14 @@ public final class AutocompleteViewModel extends AppViewModel { if ((!autocompletable.getInputTextMatchers().isEmpty()) && selectedCommandOption != null && optionRange != null) { String str2 = (String) u.first((List) autocompletable.getInputTextMatchers()); String str3 = str2 + ' '; + IntRange selection = inputSelectionModel3.getSelection(); + IntRange intRange = InputSelectionModelKt.hasSelectedFreeformInput(inputSelectionModel3) ? new IntRange(selection.getFirst() - 1, selection.getLast()) : optionRange.getValue(); InputState inputState = this.inputState; Map mutableMap = h0.toMutableMap(inputState.getInputAutocompleteMap()); mutableMap.put(new IntRange(optionRange.getValue().getFirst(), str2.length() + optionRange.getValue().getFirst()), autocompletable); this.inputState = InputState.copy$default(inputState, null, null, null, null, mutableMap, 15, null); - this.editTextAction.onNext(new InputEditTextAction.InsertText(commandInputSelectionModel.getInputModel().getInput(), str3, optionRange.getValue(), (str3.length() + commandInputSelectionModel.getInputModel().getInput().length()) - (optionRange.getValue().getLast() - optionRange.getValue().getFirst()))); + InputSelectionModel.CommandInputSelectionModel commandInputSelectionModel2 = (InputSelectionModel.CommandInputSelectionModel) inputSelectionModel3; + this.editTextAction.onNext(new InputEditTextAction.InsertText(commandInputSelectionModel2.getInputModel().getInput(), str3, intRange, (str3.length() + commandInputSelectionModel2.getInputModel().getInput().length()) - (intRange.getLast() - intRange.getFirst()))); } } else if ((inputSelectionModel3 instanceof InputSelectionModel.MessageInputSelectionModel) || inputSelectionModel3 == null) { AutocompleteInputSelectionModel autocompleteInputSelectionModel = this.lastAutocompleteInputSelectionModel; @@ -1616,14 +1619,14 @@ public final class AutocompleteViewModel extends AppViewModel { AutocompleteInputSelectionModel autocompleteInputSelectionModel2 = this.lastAutocompleteInputSelectionModel; MentionToken autocompleteToken = autocompleteInputSelectionModel2 != null ? autocompleteInputSelectionModel2.getAutocompleteToken() : null; if (!autocompletable.getInputTextMatchers().isEmpty()) { - IntRange intRange = autocompleteToken != null ? new IntRange(autocompleteToken.getStartIndex(), autocompleteToken.getToken().length() + autocompleteToken.getStartIndex()) : new IntRange(str.length(), str.length()); + IntRange intRange2 = autocompleteToken != null ? new IntRange(autocompleteToken.getStartIndex(), autocompleteToken.getToken().length() + autocompleteToken.getStartIndex()) : new IntRange(str.length(), str.length()); String str4 = (String) u.first((List) autocompletable.getInputTextMatchers()); String str5 = str4 + ' '; InputState inputState2 = this.inputState; Map mutableMap2 = h0.toMutableMap(inputState2.getInputAutocompleteMap()); - mutableMap2.put(new IntRange(intRange.getFirst(), str4.length() + intRange.getFirst()), autocompletable); + mutableMap2.put(new IntRange(intRange2.getFirst(), str4.length() + intRange2.getFirst()), autocompletable); this.inputState = InputState.copy$default(inputState2, null, null, null, null, mutableMap2, 15, null); - this.editTextAction.onNext(new InputEditTextAction.InsertText(str, str5, intRange, str5.length() + intRange.getFirst())); + this.editTextAction.onNext(new InputEditTextAction.InsertText(str, str5, intRange2, str5.length() + intRange2.getFirst())); } } } diff --git a/app/src/main/java/com/discord/widgets/chat/input/autocomplete/commands/AutocompleteCommandUtils.java b/app/src/main/java/com/discord/widgets/chat/input/autocomplete/commands/AutocompleteCommandUtils.java index cfbec8c08f..3e63e05279 100644 --- a/app/src/main/java/com/discord/widgets/chat/input/autocomplete/commands/AutocompleteCommandUtils.java +++ b/app/src/main/java/com/discord/widgets/chat/input/autocomplete/commands/AutocompleteCommandUtils.java @@ -16,7 +16,6 @@ import com.discord.widgets.chat.input.autocomplete.Autocompletable; import com.discord.widgets.chat.input.autocomplete.AutocompleteModelUtils; import com.discord.widgets.chat.input.autocomplete.ChannelAutocompletable; import com.discord.widgets.chat.input.autocomplete.InputEditTextAction; -import com.discord.widgets.chat.input.autocomplete.LeadingIdentifier; import com.discord.widgets.chat.input.autocomplete.RoleAutocompletable; import com.discord.widgets.chat.input.autocomplete.UserAutocompletable; import com.discord.widgets.chat.input.models.AutocompleteApplicationCommands; @@ -44,6 +43,7 @@ import d0.z.d.m; import java.text.NumberFormat; import java.text.ParseException; import java.text.ParsePosition; +import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.LinkedHashMap; @@ -343,13 +343,12 @@ public final class AutocompleteCommandUtils { public final String getCommandPrefix(CharSequence charSequence) { List groupValues; - String str; m.checkNotNullParameter(charSequence, "$this$getCommandPrefix"); MatchResult find$default = Regex.find$default(new Regex("^(/([\\p{L}0-9-]+\\s*){0,3})"), charSequence, 0, 2, null); - if (find$default == null || (groupValues = find$default.getGroupValues()) == null || (str = (String) u.getOrNull(groupValues, 1)) == null) { + if (find$default == null || (groupValues = find$default.getGroupValues()) == null) { return null; } - return w.trim(str).toString(); + return (String) u.getOrNull(groupValues, 1); } public final Set getErrorsToShowForCommandParameters(ApplicationCommand applicationCommand, ApplicationCommandOption applicationCommandOption, ApplicationCommandOption applicationCommandOption2, Map map, Map map2) { @@ -380,7 +379,7 @@ public final class AutocompleteCommandUtils { return linkedHashSet; } - /* JADX DEBUG: Multi-variable search result rejected for r2v5, resolved type: java.lang.Object */ + /* JADX DEBUG: Multi-variable search result rejected for r1v2, resolved type: java.lang.Object */ /* JADX WARN: Multi-variable type inference failed */ /* JADX ERROR: IF instruction can be used only in fallback mode jadx.core.utils.exceptions.CodegenException: IF instruction can be used only in fallback mode @@ -405,6 +404,12 @@ public final class AutocompleteCommandUtils { at jadx.core.codegen.RegionGen.makeRegion(RegionGen.java:64) at jadx.core.dex.regions.Region.generate(Region.java:35) at jadx.core.codegen.RegionGen.makeRegion(RegionGen.java:64) + at jadx.core.codegen.RegionGen.makeRegionIndent(RegionGen.java:93) + at jadx.core.codegen.RegionGen.makeIf(RegionGen.java:136) + at jadx.core.dex.regions.conditions.IfRegion.generate(IfRegion.java:137) + at jadx.core.codegen.RegionGen.makeRegion(RegionGen.java:64) + at jadx.core.dex.regions.Region.generate(Region.java:35) + at jadx.core.codegen.RegionGen.makeRegion(RegionGen.java:64) at jadx.core.codegen.MethodGen.addRegionInsns(MethodGen.java:261) at jadx.core.codegen.MethodGen.addInstructions(MethodGen.java:254) at jadx.core.codegen.ClassGen.addMethodCode(ClassGen.java:345) @@ -415,129 +420,17 @@ public final class AutocompleteCommandUtils { at java.base/java.util.stream.SortedOps$RefSortingSink.end(SortedOps.java:395) at java.base/java.util.stream.Sink$ChainedReference.end(Sink.java:258) */ - /* JADX WARNING: Code restructure failed: missing block: B:8:0x0036, code lost: - if (d0.g0.t.startsWith$default(r8, r9, false, 2, null) == false) goto L_0x0038; + /* JADX WARNING: Code restructure failed: missing block: B:68:0x014c, code lost: + if (d0.g0.t.startsWith$default(r18.subSequence(1, r18.length()).toString(), d0.z.d.m.stringPlus(r2 != null ? r2.getName() : null, " "), false, 2, null) != false) goto L_0x0157; */ - /* JADX WARNING: Removed duplicated region for block: B:31:0x00bc */ - /* JADX WARNING: Removed duplicated region for block: B:44:0x00a8 A[EDGE_INSN: B:44:0x00a8->B:26:0x00a8 ?: BREAK , SYNTHETIC] */ - /* JADX WARNING: Removed duplicated region for block: B:48:0x00d7 A[EDGE_INSN: B:48:0x00d7->B:39:0x00d7 ?: BREAK , SYNTHETIC] */ + /* JADX WARNING: Code restructure failed: missing block: B:8:0x0039, code lost: + if (d0.g0.t.startsWith$default(r11, r12, false, 2, null) == false) goto L_0x003b; + */ + /* JADX WARNING: Removed duplicated region for block: B:76:0x0165 */ + /* JADX WARNING: Removed duplicated region for block: B:95:0x0180 A[EDGE_INSN: B:95:0x0180->B:84:0x0180 ?: BREAK , SYNTHETIC] */ public final com.discord.widgets.chat.input.models.InputCommandContext getInputCommandContext(java.lang.CharSequence charSequence, long j, java.util.List list, com.discord.widgets.chat.input.models.AutocompleteApplicationCommands autocompleteApplicationCommands, com.discord.models.commands.ApplicationCommand applicationCommand) { /* - r14 = this; - r0 = r15 - r1 = r18 - java.lang.String r2 = "input" - d0.z.d.m.checkNotNullParameter(r15, r2) - java.lang.String r2 = "userRoles" - d0.z.d.m.checkNotNullParameter(r1, r2) - java.lang.String r2 = "applicationCommands" - r3 = r19 - d0.z.d.m.checkNotNullParameter(r3, r2) - java.lang.String r2 = r14.getCommandPrefix(r15) - r4 = 0 - if (r2 == 0) goto L_0x00da - r5 = 2 - r6 = 1 - r7 = 0 - if (r20 == 0) goto L_0x0038 - java.lang.String r8 = r2.substring(r6) - java.lang.String r9 = "(this as java.lang.String).substring(startIndex)" - d0.z.d.m.checkNotNullExpressionValue(r8, r9) - java.lang.String r9 = r20.getName() - if (r9 == 0) goto L_0x0030 - goto L_0x0032 - L_0x0030: - java.lang.String r9 = "" - L_0x0032: - boolean r8 = d0.g0.t.startsWith$default(r8, r9, r7, r5, r4) - if (r8 != 0) goto L_0x00ac - L_0x0038: - int r2 = r2.length() - if (r2 <= 0) goto L_0x0040 - r2 = 1 - goto L_0x0041 - L_0x0040: - r2 = 0 - L_0x0041: - if (r2 == 0) goto L_0x00ac - java.util.List r2 = r19.getQueryCommands() - java.util.List r2 = com.discord.stores.StoreApplicationCommandsKt.flattenSubCommands(r2) - java.util.Iterator r2 = r2.iterator() - L_0x004f: - boolean r8 = r2.hasNext() - if (r8 == 0) goto L_0x00a7 - java.lang.Object r8 = r2.next() - r9 = r8 - com.discord.models.commands.ApplicationCommand r9 = (com.discord.models.commands.ApplicationCommand) r9 - java.lang.StringBuilder r10 = new java.lang.StringBuilder - r10.() - com.discord.widgets.chat.input.autocomplete.LeadingIdentifier r11 = com.discord.widgets.chat.input.autocomplete.LeadingIdentifier.APP_COMMAND - java.lang.Character r11 = r11.getIdentifier() - d0.z.d.m.checkNotNull(r11) - char r11 = r11.charValue() - java.lang.String r12 = r9.getName() - java.lang.StringBuilder r13 = new java.lang.StringBuilder - r13.() - java.lang.String r11 = java.lang.String.valueOf(r11) - r13.append(r11) - r13.append(r12) - java.lang.String r11 = r13.toString() - r10.append(r11) - r11 = 32 - r10.append(r11) - java.lang.String r10 = r10.toString() - boolean r10 = d0.g0.w.startsWith$default(r15, r10, r7, r5, r4) - if (r10 == 0) goto L_0x00a1 - r10 = r16 - boolean r9 = com.discord.models.commands.ApplicationCommandKt.hasPermission(r9, r10, r1) - if (r9 == 0) goto L_0x00a3 - r9 = 1 - goto L_0x00a4 - L_0x00a1: - r10 = r16 - L_0x00a3: - r9 = 0 - L_0x00a4: - if (r9 == 0) goto L_0x004f - goto L_0x00a8 - L_0x00a7: - r8 = r4 - L_0x00a8: - r0 = r8 - com.discord.models.commands.ApplicationCommand r0 = (com.discord.models.commands.ApplicationCommand) r0 - goto L_0x00ae - L_0x00ac: - r0 = r20 - L_0x00ae: - java.util.List r1 = r19.getApplications() - java.util.Iterator r1 = r1.iterator() - L_0x00b6: - boolean r2 = r1.hasNext() - if (r2 == 0) goto L_0x00d7 - java.lang.Object r2 = r1.next() - r3 = r2 - com.discord.models.commands.Application r3 = (com.discord.models.commands.Application) r3 - long r8 = r3.getId() - if (r0 == 0) goto L_0x00d3 - long r10 = r0.getApplicationId() - int r3 = (r8 > r10 ? 1 : (r8 == r10 ? 0 : -1)) - if (r3 != 0) goto L_0x00d3 - r3 = 1 - goto L_0x00d4 - L_0x00d3: - r3 = 0 - L_0x00d4: - if (r3 == 0) goto L_0x00b6 - r4 = r2 - L_0x00d7: - com.discord.models.commands.Application r4 = (com.discord.models.commands.Application) r4 - goto L_0x00db - L_0x00da: - r0 = r4 - L_0x00db: - com.discord.widgets.chat.input.models.InputCommandContext r1 = new com.discord.widgets.chat.input.models.InputCommandContext - r1.(r4, r0) - return r1 + // Method dump skipped, instructions count: 394 */ throw new UnsupportedOperationException("Method not decompiled: com.discord.widgets.chat.input.autocomplete.commands.AutocompleteCommandUtils.getInputCommandContext(java.lang.CharSequence, long, java.util.List, com.discord.widgets.chat.input.models.AutocompleteApplicationCommands, com.discord.models.commands.ApplicationCommand):com.discord.widgets.chat.input.models.InputCommandContext"); } @@ -700,6 +593,7 @@ public final class AutocompleteCommandUtils { Object obj; String str; CommandOptionValue integerOptionValue; + CommandOptionValue numberOptionValue; Object obj2; m.checkNotNullParameter(charSequence, "input"); m.checkNotNullParameter(applicationCommand, "command"); @@ -749,7 +643,7 @@ public final class AutocompleteCommandUtils { commandOptionValue = new StringOptionValue(str); break; case 3: - Long asSafeNumberOrNull = asSafeNumberOrNull(s.toLongOrNull(obj4)); + Long asSafeNumberOrNull = asSafeNumberOrNull(s.toLongOrNull(str)); if (asSafeNumberOrNull != null) { integerOptionValue = new IntegerOptionValue(asSafeNumberOrNull.longValue()); commandOptionValue = integerOptionValue; @@ -757,9 +651,9 @@ public final class AutocompleteCommandUtils { } break; case 4: - if (AutocompleteModelUtils.INSTANCE.isBoolean(obj4)) { - integerOptionValue = new BooleanOptionValue(Boolean.parseBoolean(obj4)); - commandOptionValue = integerOptionValue; + if (AutocompleteModelUtils.INSTANCE.isBoolean(str)) { + numberOptionValue = new BooleanOptionValue(Boolean.parseBoolean(str)); + commandOptionValue = numberOptionValue; break; } break; @@ -808,9 +702,10 @@ public final class AutocompleteCommandUtils { } break; case 9: - Number asSafeNumberOrNull2 = asSafeNumberOrNull(parseNumber(obj4)); + Number asSafeNumberOrNull2 = asSafeNumberOrNull(parseNumber(str)); if (asSafeNumberOrNull2 != null) { - commandOptionValue = new NumberOptionValue(asSafeNumberOrNull2); + numberOptionValue = new NumberOptionValue(asSafeNumberOrNull2); + commandOptionValue = numberOptionValue; break; } break; diff --git a/app/src/main/java/com/discord/widgets/chat/list/adapter/WidgetChatListAdapterItemGuildScheduledEventInvite$Model$Companion$observe$1.java b/app/src/main/java/com/discord/widgets/chat/list/adapter/WidgetChatListAdapterItemGuildScheduledEventInvite$Model$Companion$observe$1.java index 4ce8bc432d..3ac56bc727 100644 --- a/app/src/main/java/com/discord/widgets/chat/list/adapter/WidgetChatListAdapterItemGuildScheduledEventInvite$Model$Companion$observe$1.java +++ b/app/src/main/java/com/discord/widgets/chat/list/adapter/WidgetChatListAdapterItemGuildScheduledEventInvite$Model$Companion$observe$1.java @@ -2,13 +2,16 @@ package com.discord.widgets.chat.list.adapter; import com.discord.api.channel.Channel; import com.discord.api.guildscheduledevent.GuildScheduledEvent; +import com.discord.api.permission.Permission; import com.discord.models.domain.ModelInvite; import com.discord.models.guild.Guild; import com.discord.stores.StoreChannels; import com.discord.stores.StoreGuildScheduledEvents; import com.discord.stores.StoreGuilds; +import com.discord.stores.StorePermissions; import com.discord.stores.StoreUser; import com.discord.stores.StoreVoiceChannelSelected; +import com.discord.utilities.permissions.PermissionUtils; import com.discord.widgets.chat.list.adapter.WidgetChatListAdapterItemGuildScheduledEventInvite; import com.discord.widgets.chat.list.entries.GuildScheduledEventInviteEntry; import d0.z.d.m; @@ -20,11 +23,12 @@ public final class WidgetChatListAdapterItemGuildScheduledEventInvite$Model$Comp public final /* synthetic */ StoreGuildScheduledEvents $guildScheduledEventStore; public final /* synthetic */ StoreGuilds $guildStore; public final /* synthetic */ GuildScheduledEventInviteEntry $item; + public final /* synthetic */ StorePermissions $permissionStore; public final /* synthetic */ StoreUser $userStore; public final /* synthetic */ StoreVoiceChannelSelected $voiceChannelSelectedStore; /* JADX INFO: super call moved to the top of the method (can break code semantics) */ - public WidgetChatListAdapterItemGuildScheduledEventInvite$Model$Companion$observe$1(GuildScheduledEventInviteEntry guildScheduledEventInviteEntry, StoreGuilds storeGuilds, StoreUser storeUser, StoreGuildScheduledEvents storeGuildScheduledEvents, StoreChannels storeChannels, StoreVoiceChannelSelected storeVoiceChannelSelected) { + public WidgetChatListAdapterItemGuildScheduledEventInvite$Model$Companion$observe$1(GuildScheduledEventInviteEntry guildScheduledEventInviteEntry, StoreGuilds storeGuilds, StoreUser storeUser, StoreGuildScheduledEvents storeGuildScheduledEvents, StoreChannels storeChannels, StoreVoiceChannelSelected storeVoiceChannelSelected, StorePermissions storePermissions) { super(0); this.$item = guildScheduledEventInviteEntry; this.$guildStore = storeGuilds; @@ -32,6 +36,7 @@ public final class WidgetChatListAdapterItemGuildScheduledEventInvite$Model$Comp this.$guildScheduledEventStore = storeGuildScheduledEvents; this.$channelStore = storeChannels; this.$voiceChannelSelectedStore = storeVoiceChannelSelected; + this.$permissionStore = storePermissions; } @Override // kotlin.jvm.functions.Function0 @@ -65,6 +70,6 @@ public final class WidgetChatListAdapterItemGuildScheduledEventInvite$Model$Comp } guild = guild2; } - return new WidgetChatListAdapterItemGuildScheduledEventInvite.Model(invite, z2, isRsvpedToEvent, guildScheduledEvent2, channel3, guild, Long.valueOf(this.$voiceChannelSelectedStore.getSelectedVoiceChannelId())); + return new WidgetChatListAdapterItemGuildScheduledEventInvite.Model(invite, z2, isRsvpedToEvent, guildScheduledEvent2, channel3, guild, Long.valueOf(this.$voiceChannelSelectedStore.getSelectedVoiceChannelId()), channel != null ? PermissionUtils.can(Permission.CONNECT, this.$permissionStore.getPermissionsByChannel().get(Long.valueOf(channel.h()))) : false); } } diff --git a/app/src/main/java/com/discord/widgets/chat/list/adapter/WidgetChatListAdapterItemGuildScheduledEventInvite.java b/app/src/main/java/com/discord/widgets/chat/list/adapter/WidgetChatListAdapterItemGuildScheduledEventInvite.java index 5e68e47876..f0fd9740e2 100644 --- a/app/src/main/java/com/discord/widgets/chat/list/adapter/WidgetChatListAdapterItemGuildScheduledEventInvite.java +++ b/app/src/main/java/com/discord/widgets/chat/list/adapter/WidgetChatListAdapterItemGuildScheduledEventInvite.java @@ -12,6 +12,7 @@ import com.discord.models.guild.Guild; import com.discord.stores.StoreChannels; import com.discord.stores.StoreGuildScheduledEvents; import com.discord.stores.StoreGuilds; +import com.discord.stores.StorePermissions; import com.discord.stores.StoreStream; import com.discord.stores.StoreUser; import com.discord.stores.StoreVoiceChannelSelected; @@ -39,6 +40,7 @@ public final class WidgetChatListAdapterItemGuildScheduledEventInvite extends Wi /* compiled from: WidgetChatListAdapterItemGuildScheduledEventInvite.kt */ public static final class Model { public static final Companion Companion = new Companion(null); + private final boolean canConnect; private final Channel channel; private final Guild guild; private final GuildScheduledEvent guildScheduledEvent; @@ -56,37 +58,23 @@ public final class WidgetChatListAdapterItemGuildScheduledEventInvite extends Wi this(); } - public static /* synthetic */ Observable observe$default(Companion companion, GuildScheduledEventInviteEntry guildScheduledEventInviteEntry, StoreGuilds storeGuilds, StoreUser storeUser, StoreChannels storeChannels, StoreGuildScheduledEvents storeGuildScheduledEvents, StoreVoiceChannelSelected storeVoiceChannelSelected, int i, Object obj) { - if ((i & 2) != 0) { - storeGuilds = StoreStream.Companion.getGuilds(); - } - if ((i & 4) != 0) { - storeUser = StoreStream.Companion.getUsers(); - } - if ((i & 8) != 0) { - storeChannels = StoreStream.Companion.getChannels(); - } - if ((i & 16) != 0) { - storeGuildScheduledEvents = StoreStream.Companion.getGuildScheduledEvents(); - } - if ((i & 32) != 0) { - storeVoiceChannelSelected = StoreStream.Companion.getVoiceChannelSelected(); - } - return companion.observe(guildScheduledEventInviteEntry, storeGuilds, storeUser, storeChannels, storeGuildScheduledEvents, storeVoiceChannelSelected); + public static /* synthetic */ Observable observe$default(Companion companion, GuildScheduledEventInviteEntry guildScheduledEventInviteEntry, StoreGuilds storeGuilds, StoreUser storeUser, StoreChannels storeChannels, StoreGuildScheduledEvents storeGuildScheduledEvents, StoreVoiceChannelSelected storeVoiceChannelSelected, StorePermissions storePermissions, int i, Object obj) { + return companion.observe(guildScheduledEventInviteEntry, (i & 2) != 0 ? StoreStream.Companion.getGuilds() : storeGuilds, (i & 4) != 0 ? StoreStream.Companion.getUsers() : storeUser, (i & 8) != 0 ? StoreStream.Companion.getChannels() : storeChannels, (i & 16) != 0 ? StoreStream.Companion.getGuildScheduledEvents() : storeGuildScheduledEvents, (i & 32) != 0 ? StoreStream.Companion.getVoiceChannelSelected() : storeVoiceChannelSelected, (i & 64) != 0 ? StoreStream.Companion.getPermissions() : storePermissions); } - public final Observable observe(GuildScheduledEventInviteEntry guildScheduledEventInviteEntry, StoreGuilds storeGuilds, StoreUser storeUser, StoreChannels storeChannels, StoreGuildScheduledEvents storeGuildScheduledEvents, StoreVoiceChannelSelected storeVoiceChannelSelected) { + public final Observable observe(GuildScheduledEventInviteEntry guildScheduledEventInviteEntry, StoreGuilds storeGuilds, StoreUser storeUser, StoreChannels storeChannels, StoreGuildScheduledEvents storeGuildScheduledEvents, StoreVoiceChannelSelected storeVoiceChannelSelected, StorePermissions storePermissions) { m.checkNotNullParameter(guildScheduledEventInviteEntry, "item"); m.checkNotNullParameter(storeGuilds, "guildStore"); m.checkNotNullParameter(storeUser, "userStore"); m.checkNotNullParameter(storeChannels, "channelStore"); m.checkNotNullParameter(storeGuildScheduledEvents, "guildScheduledEventStore"); m.checkNotNullParameter(storeVoiceChannelSelected, "voiceChannelSelectedStore"); - return ObservationDeck.connectRx$default(ObservationDeckProvider.get(), new ObservationDeck.UpdateSource[]{storeGuilds, storeUser, storeGuildScheduledEvents, storeVoiceChannelSelected}, false, null, null, new WidgetChatListAdapterItemGuildScheduledEventInvite$Model$Companion$observe$1(guildScheduledEventInviteEntry, storeGuilds, storeUser, storeGuildScheduledEvents, storeChannels, storeVoiceChannelSelected), 14, null); + m.checkNotNullParameter(storePermissions, "permissionStore"); + return ObservationDeck.connectRx$default(ObservationDeckProvider.get(), new ObservationDeck.UpdateSource[]{storeGuilds, storeUser, storeGuildScheduledEvents, storeVoiceChannelSelected, storePermissions}, false, null, null, new WidgetChatListAdapterItemGuildScheduledEventInvite$Model$Companion$observe$1(guildScheduledEventInviteEntry, storeGuilds, storeUser, storeGuildScheduledEvents, storeChannels, storeVoiceChannelSelected, storePermissions), 14, null); } } - public Model(ModelInvite modelInvite, boolean z2, boolean z3, GuildScheduledEvent guildScheduledEvent, Channel channel, Guild guild, Long l) { + public Model(ModelInvite modelInvite, boolean z2, boolean z3, GuildScheduledEvent guildScheduledEvent, Channel channel, Guild guild, Long l, boolean z4) { m.checkNotNullParameter(modelInvite, "invite"); m.checkNotNullParameter(guildScheduledEvent, "guildScheduledEvent"); this.invite = modelInvite; @@ -96,31 +84,11 @@ public final class WidgetChatListAdapterItemGuildScheduledEventInvite extends Wi this.channel = channel; this.guild = guild; this.selectedVoiceChannelId = l; + this.canConnect = z4; } - public static /* synthetic */ Model copy$default(Model model, ModelInvite modelInvite, boolean z2, boolean z3, GuildScheduledEvent guildScheduledEvent, Channel channel, Guild guild, Long l, int i, Object obj) { - if ((i & 1) != 0) { - modelInvite = model.invite; - } - if ((i & 2) != 0) { - z2 = model.isInGuild; - } - if ((i & 4) != 0) { - z3 = model.isRsvped; - } - if ((i & 8) != 0) { - guildScheduledEvent = model.guildScheduledEvent; - } - if ((i & 16) != 0) { - channel = model.channel; - } - if ((i & 32) != 0) { - guild = model.guild; - } - if ((i & 64) != 0) { - l = model.selectedVoiceChannelId; - } - return model.copy(modelInvite, z2, z3, guildScheduledEvent, channel, guild, l); + public static /* synthetic */ Model copy$default(Model model, ModelInvite modelInvite, boolean z2, boolean z3, GuildScheduledEvent guildScheduledEvent, Channel channel, Guild guild, Long l, boolean z4, int i, Object obj) { + return model.copy((i & 1) != 0 ? model.invite : modelInvite, (i & 2) != 0 ? model.isInGuild : z2, (i & 4) != 0 ? model.isRsvped : z3, (i & 8) != 0 ? model.guildScheduledEvent : guildScheduledEvent, (i & 16) != 0 ? model.channel : channel, (i & 32) != 0 ? model.guild : guild, (i & 64) != 0 ? model.selectedVoiceChannelId : l, (i & 128) != 0 ? model.canConnect : z4); } public final ModelInvite component1() { @@ -151,10 +119,14 @@ public final class WidgetChatListAdapterItemGuildScheduledEventInvite extends Wi return this.selectedVoiceChannelId; } - public final Model copy(ModelInvite modelInvite, boolean z2, boolean z3, GuildScheduledEvent guildScheduledEvent, Channel channel, Guild guild, Long l) { + public final boolean component8() { + return this.canConnect; + } + + public final Model copy(ModelInvite modelInvite, boolean z2, boolean z3, GuildScheduledEvent guildScheduledEvent, Channel channel, Guild guild, Long l, boolean z4) { m.checkNotNullParameter(modelInvite, "invite"); m.checkNotNullParameter(guildScheduledEvent, "guildScheduledEvent"); - return new Model(modelInvite, z2, z3, guildScheduledEvent, channel, guild, l); + return new Model(modelInvite, z2, z3, guildScheduledEvent, channel, guild, l, z4); } public boolean equals(Object obj) { @@ -165,7 +137,11 @@ public final class WidgetChatListAdapterItemGuildScheduledEventInvite extends Wi return false; } Model model = (Model) obj; - return m.areEqual(this.invite, model.invite) && this.isInGuild == model.isInGuild && this.isRsvped == model.isRsvped && m.areEqual(this.guildScheduledEvent, model.guildScheduledEvent) && m.areEqual(this.channel, model.channel) && m.areEqual(this.guild, model.guild) && m.areEqual(this.selectedVoiceChannelId, model.selectedVoiceChannelId); + return m.areEqual(this.invite, model.invite) && this.isInGuild == model.isInGuild && this.isRsvped == model.isRsvped && m.areEqual(this.guildScheduledEvent, model.guildScheduledEvent) && m.areEqual(this.channel, model.channel) && m.areEqual(this.guild, model.guild) && m.areEqual(this.selectedVoiceChannelId, model.selectedVoiceChannelId) && this.canConnect == model.canConnect; + } + + public final boolean getCanConnect() { + return this.canConnect; } public final Channel getChannel() { @@ -202,12 +178,15 @@ public final class WidgetChatListAdapterItemGuildScheduledEventInvite extends Wi int i5 = z2 ? 1 : 0; int i6 = (hashCode + i3) * 31; boolean z3 = this.isRsvped; - if (!z3) { - i2 = z3 ? 1 : 0; + if (z3) { + z3 = true; } - int i7 = (i6 + i2) * 31; + int i7 = z3 ? 1 : 0; + int i8 = z3 ? 1 : 0; + int i9 = z3 ? 1 : 0; + int i10 = (i6 + i7) * 31; GuildScheduledEvent guildScheduledEvent = this.guildScheduledEvent; - int hashCode2 = (i7 + (guildScheduledEvent != null ? guildScheduledEvent.hashCode() : 0)) * 31; + int hashCode2 = (i10 + (guildScheduledEvent != null ? guildScheduledEvent.hashCode() : 0)) * 31; Channel channel = this.channel; int hashCode3 = (hashCode2 + (channel != null ? channel.hashCode() : 0)) * 31; Guild guild = this.guild; @@ -216,7 +195,12 @@ public final class WidgetChatListAdapterItemGuildScheduledEventInvite extends Wi if (l != null) { i = l.hashCode(); } - return hashCode4 + i; + int i11 = (hashCode4 + i) * 31; + boolean z4 = this.canConnect; + if (!z4) { + i2 = z4 ? 1 : 0; + } + return i11 + i2; } public final boolean isInGuild() { @@ -241,7 +225,9 @@ public final class WidgetChatListAdapterItemGuildScheduledEventInvite extends Wi P.append(", guild="); P.append(this.guild); P.append(", selectedVoiceChannelId="); - return a.F(P, this.selectedVoiceChannelId, ")"); + P.append(this.selectedVoiceChannelId); + P.append(", canConnect="); + return a.L(P, this.canConnect, ")"); } } @@ -312,10 +298,11 @@ public final class WidgetChatListAdapterItemGuildScheduledEventInvite extends Wi z2 = true; } } + boolean canConnect = model.getCanConnect(); if (model.isInGuild()) { widgetChatListAdapterItemGuildScheduledEventInvite$configureUI$2 = new WidgetChatListAdapterItemGuildScheduledEventInvite$configureUI$2(this, model); } - guildScheduledEventItemView2.configureInChatList(guildScheduledEvent, channel, guild, isInGuild, isRsvped, z2, widgetChatListAdapterItemGuildScheduledEventInvite$configureUI$2, new WidgetChatListAdapterItemGuildScheduledEventInvite$configureUI$3(this, model), new WidgetChatListAdapterItemGuildScheduledEventInvite$configureUI$4(this, model), new WidgetChatListAdapterItemGuildScheduledEventInvite$configureUI$5(this, model)); + guildScheduledEventItemView2.configureInChatList(guildScheduledEvent, channel, guild, isInGuild, isRsvped, z2, canConnect, widgetChatListAdapterItemGuildScheduledEventInvite$configureUI$2, new WidgetChatListAdapterItemGuildScheduledEventInvite$configureUI$3(this, model), new WidgetChatListAdapterItemGuildScheduledEventInvite$configureUI$4(this, model), new WidgetChatListAdapterItemGuildScheduledEventInvite$configureUI$5(this, model)); } @Override // com.discord.utilities.mg_recycler.MGRecyclerViewHolder @@ -327,6 +314,6 @@ public final class WidgetChatListAdapterItemGuildScheduledEventInvite extends Wi public void onConfigure(int i, ChatListEntry chatListEntry) { m.checkNotNullParameter(chatListEntry, "data"); super.onConfigure(i, chatListEntry); - ObservableExtensionsKt.appSubscribe$default(ObservableExtensionsKt.ui(Model.Companion.observe$default(Model.Companion, (GuildScheduledEventInviteEntry) chatListEntry, null, null, null, null, null, 62, null)), WidgetChatListAdapterItemGuildScheduledEventInvite.class, (Context) null, new WidgetChatListAdapterItemGuildScheduledEventInvite$onConfigure$2(this), (Function1) null, (Function0) null, (Function0) null, new WidgetChatListAdapterItemGuildScheduledEventInvite$onConfigure$1(this), 58, (Object) null); + ObservableExtensionsKt.appSubscribe$default(ObservableExtensionsKt.ui(Model.Companion.observe$default(Model.Companion, (GuildScheduledEventInviteEntry) chatListEntry, null, null, null, null, null, null, 126, null)), WidgetChatListAdapterItemGuildScheduledEventInvite.class, (Context) null, new WidgetChatListAdapterItemGuildScheduledEventInvite$onConfigure$2(this), (Function1) null, (Function0) null, (Function0) null, new WidgetChatListAdapterItemGuildScheduledEventInvite$onConfigure$1(this), 58, (Object) null); } } diff --git a/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventBottomButtonView.java b/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventBottomButtonView.java index 79cb858ff8..fcd251032c 100644 --- a/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventBottomButtonView.java +++ b/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventBottomButtonView.java @@ -27,6 +27,8 @@ public final class GuildScheduledEventBottomButtonView extends ConstraintLayout /* compiled from: GuildScheduledEventBottomButtonView.kt */ public static final class VisibilityInfo { + private final boolean canConnect; + private final boolean canConnectToChannel; private final boolean canRsvp; private final boolean canShare; private final boolean canStartEvent; @@ -43,41 +45,43 @@ public final class GuildScheduledEventBottomButtonView extends ConstraintLayout private final boolean primaryInteractionButtonVisible; private final GuildScheduledEventTiming timing; - public VisibilityInfo(GuildScheduledEvent guildScheduledEvent, boolean z2, boolean z3, boolean z4, boolean z5, boolean z6) { + public VisibilityInfo(GuildScheduledEvent guildScheduledEvent, boolean z2, boolean z3, boolean z4, boolean z5, boolean z6, boolean z7) { m.checkNotNullParameter(guildScheduledEvent, "guildScheduledEvent"); this.guildScheduledEvent = guildScheduledEvent; this.canRsvp = z2; this.canShare = z3; this.canStartEvent = z4; this.isConnected = z5; - this.isDetailView = z6; + this.canConnect = z6; + this.isDetailView = z7; GuildScheduledEventTiming eventTiming = GuildScheduledEventUtilitiesKt.getEventTiming(guildScheduledEvent); this.timing = eventTiming; - boolean z7 = true; - boolean z8 = guildScheduledEvent.k() == GuildScheduledEventStatus.COMPLETED; - this.isEventComplete = z8; - boolean z9 = eventTiming == GuildScheduledEventTiming.LIVE; - this.isEventActive = z9; + boolean z8 = true; + boolean z9 = guildScheduledEvent.k() == GuildScheduledEventStatus.COMPLETED; + this.isEventComplete = z9; + boolean z10 = eventTiming == GuildScheduledEventTiming.LIVE; + this.isEventActive = z10; + this.canConnectToChannel = z6; this.primaryInteractionButtonVisible = z2; - this.primaryInteractionButtonEnabled = !z8 && (!z9 || guildScheduledEvent.e() != GuildScheduledEventEntityType.EXTERNAL); - boolean isStartable = (!z4 || z8) ? false : eventTiming.isStartable(); + this.primaryInteractionButtonEnabled = !z9 && (!z10 || (guildScheduledEvent.e() != GuildScheduledEventEntityType.EXTERNAL && z6)); + boolean isStartable = (!z4 || z9) ? false : eventTiming.isStartable(); this.isStartEventVisible = isStartable; - boolean z10 = z6 && z9 && z5 && z4; - this.isEndEventVisible = z10; - boolean z11 = z3 && !z8; - this.isShareVisible = z11; - if (!z2 && !isStartable && !z10 && !z11) { - z7 = false; + boolean z11 = z7 && z10 && z5 && z4; + this.isEndEventVisible = z11; + boolean z12 = z3 && !z9; + this.isShareVisible = z12; + if (!z2 && !isStartable && !z11 && !z12) { + z8 = false; } - this.isAnyButtonVisible = z7; + this.isAnyButtonVisible = z8; } /* JADX INFO: this call moved to the top of the method (can break code semantics) */ - public /* synthetic */ VisibilityInfo(GuildScheduledEvent guildScheduledEvent, boolean z2, boolean z3, boolean z4, boolean z5, boolean z6, int i, DefaultConstructorMarker defaultConstructorMarker) { - this(guildScheduledEvent, z2, z3, z4, z5, (i & 32) != 0 ? false : z6); + public /* synthetic */ VisibilityInfo(GuildScheduledEvent guildScheduledEvent, boolean z2, boolean z3, boolean z4, boolean z5, boolean z6, boolean z7, int i, DefaultConstructorMarker defaultConstructorMarker) { + this(guildScheduledEvent, z2, z3, z4, z5, z6, (i & 64) != 0 ? false : z7); } - public static /* synthetic */ VisibilityInfo copy$default(VisibilityInfo visibilityInfo, GuildScheduledEvent guildScheduledEvent, boolean z2, boolean z3, boolean z4, boolean z5, boolean z6, int i, Object obj) { + public static /* synthetic */ VisibilityInfo copy$default(VisibilityInfo visibilityInfo, GuildScheduledEvent guildScheduledEvent, boolean z2, boolean z3, boolean z4, boolean z5, boolean z6, boolean z7, int i, Object obj) { if ((i & 1) != 0) { guildScheduledEvent = visibilityInfo.guildScheduledEvent; } @@ -94,9 +98,12 @@ public final class GuildScheduledEventBottomButtonView extends ConstraintLayout z5 = visibilityInfo.isConnected; } if ((i & 32) != 0) { - z6 = visibilityInfo.isDetailView; + z6 = visibilityInfo.canConnect; } - return visibilityInfo.copy(guildScheduledEvent, z2, z3, z4, z5, z6); + if ((i & 64) != 0) { + z7 = visibilityInfo.isDetailView; + } + return visibilityInfo.copy(guildScheduledEvent, z2, z3, z4, z5, z6, z7); } public final GuildScheduledEvent component1() { @@ -120,12 +127,16 @@ public final class GuildScheduledEventBottomButtonView extends ConstraintLayout } public final boolean component6() { + return this.canConnect; + } + + public final boolean component7() { return this.isDetailView; } - public final VisibilityInfo copy(GuildScheduledEvent guildScheduledEvent, boolean z2, boolean z3, boolean z4, boolean z5, boolean z6) { + public final VisibilityInfo copy(GuildScheduledEvent guildScheduledEvent, boolean z2, boolean z3, boolean z4, boolean z5, boolean z6, boolean z7) { m.checkNotNullParameter(guildScheduledEvent, "guildScheduledEvent"); - return new VisibilityInfo(guildScheduledEvent, z2, z3, z4, z5, z6); + return new VisibilityInfo(guildScheduledEvent, z2, z3, z4, z5, z6, z7); } public boolean equals(Object obj) { @@ -136,7 +147,15 @@ public final class GuildScheduledEventBottomButtonView extends ConstraintLayout return false; } VisibilityInfo visibilityInfo = (VisibilityInfo) obj; - return m.areEqual(this.guildScheduledEvent, visibilityInfo.guildScheduledEvent) && this.canRsvp == visibilityInfo.canRsvp && this.canShare == visibilityInfo.canShare && this.canStartEvent == visibilityInfo.canStartEvent && this.isConnected == visibilityInfo.isConnected && this.isDetailView == visibilityInfo.isDetailView; + return m.areEqual(this.guildScheduledEvent, visibilityInfo.guildScheduledEvent) && this.canRsvp == visibilityInfo.canRsvp && this.canShare == visibilityInfo.canShare && this.canStartEvent == visibilityInfo.canStartEvent && this.isConnected == visibilityInfo.isConnected && this.canConnect == visibilityInfo.canConnect && this.isDetailView == visibilityInfo.isDetailView; + } + + public final boolean getCanConnect() { + return this.canConnect; + } + + public final boolean getCanConnectToChannel() { + return this.canConnectToChannel; } public final boolean getCanRsvp() { @@ -203,11 +222,19 @@ public final class GuildScheduledEventBottomButtonView extends ConstraintLayout int i15 = z5 ? 1 : 0; int i16 = z5 ? 1 : 0; int i17 = (i13 + i14) * 31; - boolean z6 = this.isDetailView; - if (!z6) { - i = z6 ? 1 : 0; + boolean z6 = this.canConnect; + if (z6) { + z6 = true; } - return i17 + i; + int i18 = z6 ? 1 : 0; + int i19 = z6 ? 1 : 0; + int i20 = z6 ? 1 : 0; + int i21 = (i17 + i18) * 31; + boolean z7 = this.isDetailView; + if (!z7) { + i = z7 ? 1 : 0; + } + return i21 + i; } public final boolean isAnyButtonVisible() { @@ -253,6 +280,8 @@ public final class GuildScheduledEventBottomButtonView extends ConstraintLayout P.append(this.canStartEvent); P.append(", isConnected="); P.append(this.isConnected); + P.append(", canConnect="); + P.append(this.canConnect); P.append(", isDetailView="); return a.L(P, this.isDetailView, ")"); } @@ -287,16 +316,17 @@ public final class GuildScheduledEventBottomButtonView extends ConstraintLayout this.binding = a; } - public static /* synthetic */ void configure$default(GuildScheduledEventBottomButtonView guildScheduledEventBottomButtonView, GuildScheduledEvent guildScheduledEvent, boolean z2, boolean z3, boolean z4, boolean z5, boolean z6, Function0 function0, Function0 function02, Function0 function03, Function0 function04, Function0 function05, int i, Object obj) { - boolean z7 = false; - boolean z8 = (i & 2) != 0 ? false : z2; - boolean z9 = (i & 4) != 0 ? false : z3; - boolean z10 = (i & 8) != 0 ? false : z4; - boolean z11 = (i & 16) != 0 ? false : z5; - if ((i & 32) == 0) { - z7 = z6; + public static /* synthetic */ void configure$default(GuildScheduledEventBottomButtonView guildScheduledEventBottomButtonView, GuildScheduledEvent guildScheduledEvent, boolean z2, boolean z3, boolean z4, boolean z5, boolean z6, boolean z7, Function0 function0, Function0 function02, Function0 function03, Function0 function04, Function0 function05, int i, Object obj) { + boolean z8 = false; + boolean z9 = (i & 2) != 0 ? false : z2; + boolean z10 = (i & 4) != 0 ? false : z3; + boolean z11 = (i & 8) != 0 ? false : z4; + boolean z12 = (i & 16) != 0 ? false : z5; + boolean z13 = (i & 32) != 0 ? false : z6; + if ((i & 64) == 0) { + z8 = z7; } - guildScheduledEventBottomButtonView.configure(guildScheduledEvent, z8, z9, z10, z11, z7, (i & 64) != 0 ? GuildScheduledEventBottomButtonView$configure$1.INSTANCE : function0, (i & 128) != 0 ? GuildScheduledEventBottomButtonView$configure$2.INSTANCE : function02, (i & 256) != 0 ? GuildScheduledEventBottomButtonView$configure$3.INSTANCE : function03, (i & 512) != 0 ? GuildScheduledEventBottomButtonView$configure$4.INSTANCE : function04, (i & 1024) != 0 ? GuildScheduledEventBottomButtonView$configure$5.INSTANCE : function05); + guildScheduledEventBottomButtonView.configure(guildScheduledEvent, z9, z10, z11, z12, z13, z8, (i & 128) != 0 ? GuildScheduledEventBottomButtonView$configure$1.INSTANCE : function0, (i & 256) != 0 ? GuildScheduledEventBottomButtonView$configure$2.INSTANCE : function02, (i & 512) != 0 ? GuildScheduledEventBottomButtonView$configure$3.INSTANCE : function03, (i & 1024) != 0 ? GuildScheduledEventBottomButtonView$configure$4.INSTANCE : function04, (i & 2048) != 0 ? GuildScheduledEventBottomButtonView$configure$5.INSTANCE : function05); } private final void configureInterestedButton(VisibilityInfo visibilityInfo, boolean z2, Function0 function0, Function0 function02, Function0 function03) { @@ -324,7 +354,7 @@ public final class GuildScheduledEventBottomButtonView extends ConstraintLayout textView.setVisibility(i); int color = !visibilityInfo.getPrimaryInteractionButtonEnabled() ? ColorCompat.getColor(textView.getContext(), (int) R.color.white_alpha_40) : (!z2 || visibilityInfo.isEventActive() || visibilityInfo.isEventComplete()) ? ColorCompat.getColor(textView.getContext(), (int) R.color.white) : ColorCompat.getThemedColor(textView.getContext(), (int) R.attr.colorInteractiveActive); int i3 = (visibilityInfo.isEventActive() || !visibilityInfo.getPrimaryInteractionButtonEnabled()) ? 0 : z2 ? R.drawable.ic_check_active_16dp : R.drawable.ic_bell_16dp; - int i4 = (!visibilityInfo.isEventActive() || visibilityInfo.getGuildScheduledEvent().e() != GuildScheduledEventEntityType.EXTERNAL) ? visibilityInfo.isEndEventVisible() ? R.string.end_event : (!visibilityInfo.isEventActive() || !visibilityInfo.isConnected()) ? (!visibilityInfo.isEventActive() || visibilityInfo.getGuildScheduledEvent().e() != GuildScheduledEventEntityType.VOICE) ? visibilityInfo.isEventActive() ? R.string.stage_channel_join_button : visibilityInfo.isEventComplete() ? R.string.guild_event_invite_completed : R.string.stage_instance_interested_label : R.string.guild_event_join : R.string.go_to_channel : R.string.guild_event_started; + int i4 = (!visibilityInfo.isEventActive() || visibilityInfo.getGuildScheduledEvent().e() != GuildScheduledEventEntityType.EXTERNAL) ? (!visibilityInfo.isEventActive() || visibilityInfo.getCanConnectToChannel()) ? visibilityInfo.isEndEventVisible() ? R.string.end_event : (!visibilityInfo.isEventActive() || !visibilityInfo.isConnected()) ? (!visibilityInfo.isEventActive() || visibilityInfo.getGuildScheduledEvent().e() != GuildScheduledEventEntityType.VOICE) ? visibilityInfo.isEventActive() ? R.string.stage_channel_join_button : visibilityInfo.isEventComplete() ? R.string.guild_event_invite_completed : R.string.stage_instance_interested_label : R.string.guild_event_join : R.string.go_to_channel : R.string.channel_locked_short : R.string.guild_event_started; DrawableCompat.setCompoundDrawablesCompat$default(textView, i3, 0, 0, 0, 14, (Object) null); textView.setTextColor(color); Context context = textView.getContext(); @@ -352,20 +382,21 @@ public final class GuildScheduledEventBottomButtonView extends ConstraintLayout imageView.setOnClickListener(new GuildScheduledEventBottomButtonView$configureStartEventButton$$inlined$apply$lambda$1(visibilityInfo, function0)); } - public final void configure(GuildScheduledEvent guildScheduledEvent, boolean z2, boolean z3, boolean z4, boolean z5, boolean z6, Function0 function0, Function0 function02, Function0 function03, Function0 function04, Function0 function05) { + public final void configure(GuildScheduledEvent guildScheduledEvent, boolean z2, boolean z3, boolean z4, boolean z5, boolean z6, boolean z7, Function0 function0, Function0 function02, Function0 function03, Function0 function04, Function0 function05) { m.checkNotNullParameter(guildScheduledEvent, "guildScheduledEvent"); m.checkNotNullParameter(function0, "onRsvpButtonClicked"); m.checkNotNullParameter(function02, "onStartEventButtonClicked"); m.checkNotNullParameter(function03, "onShareButtonClicked"); m.checkNotNullParameter(function04, "onJoinButtonClicked"); m.checkNotNullParameter(function05, "onEndEventButtonClicked"); - VisibilityInfo visibilityInfo = new VisibilityInfo(guildScheduledEvent, z3, z4, z5, z6, false, 32, null); + VisibilityInfo visibilityInfo = new VisibilityInfo(guildScheduledEvent, z3, z4, z5, z6, z7, false, 64, null); configureStartEventButton(visibilityInfo, function02); configureInterestedButton(visibilityInfo, z2, function0, function04, function05); configureShareButton(visibilityInfo, function03); } - public final void configureForDetails(GuildScheduledEvent guildScheduledEvent, boolean z2, boolean z3, boolean z4, boolean z5, boolean z6, Function0 function0, Function0 function02, Function0 function03, Function0 function04, Function0 function05, Function0 function06) { + public final void configureForDetails(GuildScheduledEvent guildScheduledEvent, boolean z2, boolean z3, boolean z4, boolean z5, boolean z6, boolean z7, Function0 function0, Function0 function02, Function0 function03, Function0 function04, Function0 function05, Function0 function06) { + boolean z8; Function0 function07; Function0 function08; VisibilityInfo visibilityInfo; @@ -375,7 +406,7 @@ public final class GuildScheduledEventBottomButtonView extends ConstraintLayout m.checkNotNullParameter(function03, "onShareButtonClicked"); m.checkNotNullParameter(function05, "onJoinButtonClicked"); m.checkNotNullParameter(function06, "onEndEventButtonClicked"); - VisibilityInfo visibilityInfo2 = new VisibilityInfo(guildScheduledEvent, true, z4, z5, z3, true); + VisibilityInfo visibilityInfo2 = new VisibilityInfo(guildScheduledEvent, true, z4, z5, z3, z6, true); configureStartEventButton(visibilityInfo2, function0); int i = 8; if (visibilityInfo2.isStartEventVisible()) { @@ -388,20 +419,22 @@ public final class GuildScheduledEventBottomButtonView extends ConstraintLayout visibilityInfo = visibilityInfo2; function08 = function04; function07 = function03; + z8 = z7; } else { visibilityInfo = visibilityInfo2; function08 = function04; function07 = function03; + z8 = z7; configureInterestedButton(visibilityInfo2, z2, function02, function05, function06); } configureShareButton(visibilityInfo, function07); ImageView imageView2 = this.binding.b; - if (function08 != null && (z5 || z6)) { + if (function08 != null && (z5 || z8)) { i = 0; } imageView2.setVisibility(i); if (function08 != null) { - imageView2.setOnClickListener(new GuildScheduledEventBottomButtonView$configureForDetails$$inlined$apply$lambda$1(function08, z5, z6)); + imageView2.setOnClickListener(new GuildScheduledEventBottomButtonView$configureForDetails$$inlined$apply$lambda$1(function08, z5, z8)); } } diff --git a/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventDetailsViewModel$Companion$observeStores$1.java b/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventDetailsViewModel$Companion$observeStores$1.java index 1d7eed8846..126cdea8be 100644 --- a/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventDetailsViewModel$Companion$observeStores$1.java +++ b/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventDetailsViewModel$Companion$observeStores$1.java @@ -1,7 +1,9 @@ package com.discord.widgets.guildscheduledevent; +import androidx.core.app.FrameMetricsAggregator; import com.discord.api.channel.Channel; import com.discord.api.guildscheduledevent.GuildScheduledEvent; +import com.discord.api.permission.Permission; import com.discord.models.guild.Guild; import com.discord.stores.StoreChannels; import com.discord.stores.StoreGuildScheduledEvents; @@ -10,6 +12,7 @@ import com.discord.stores.StorePermissions; import com.discord.stores.StoreUserSettings; import com.discord.stores.StoreVoiceChannelSelected; import com.discord.utilities.guildscheduledevent.GuildScheduledEventUtilities; +import com.discord.utilities.permissions.PermissionUtils; import com.discord.widgets.guildscheduledevent.GuildScheduledEventDetailsViewModel; import d0.z.d.o; import kotlin.jvm.functions.Function0; @@ -39,9 +42,10 @@ public final class GuildScheduledEventDetailsViewModel$Companion$observeStores$1 /* renamed from: invoke */ public final GuildScheduledEventDetailsViewModel.StoreState mo1invoke() { Channel channel; + boolean z2; GuildScheduledEvent findEventFromStore$default = StoreGuildScheduledEvents.findEventFromStore$default(this.$guildScheduledEventsStore, this.$guildScheduledEventId, null, 2, null); if (findEventFromStore$default == null) { - return new GuildScheduledEventDetailsViewModel.StoreState(null, null, null, false, false, false, false, null, 255, null); + return new GuildScheduledEventDetailsViewModel.StoreState(null, null, null, false, false, false, false, null, false, FrameMetricsAggregator.EVERY_DURATION, null); } Long b = findEventFromStore$default.b(); if (b != null) { @@ -53,6 +57,14 @@ public final class GuildScheduledEventDetailsViewModel$Companion$observeStores$1 Long valueOf = Long.valueOf(this.$selectedVoiceChannelStore.getSelectedVoiceChannelId()); boolean isRsvpedToEvent = this.$guildScheduledEventsStore.isRsvpedToEvent(findEventFromStore$default.f(), this.$guildScheduledEventId); GuildScheduledEventUtilities.Companion companion = GuildScheduledEventUtilities.Companion; - return new GuildScheduledEventDetailsViewModel.StoreState(findEventFromStore$default, channel, guild, isRsvpedToEvent, GuildScheduledEventUtilities.Companion.canShareEvent$default(companion, findEventFromStore$default.b(), this.$channelsStore, this.$guildsStore, null, 8, null), companion.canStartEvent(findEventFromStore$default.f(), findEventFromStore$default.b(), this.$channelsStore, this.$permissionsStore), this.$userSettingsStore.getIsDeveloperMode(), valueOf); + boolean canShareEvent$default = GuildScheduledEventUtilities.Companion.canShareEvent$default(companion, findEventFromStore$default.b(), this.$channelsStore, this.$guildsStore, null, 8, null); + boolean canStartEvent = companion.canStartEvent(findEventFromStore$default.f(), findEventFromStore$default.b(), this.$channelsStore, this.$permissionsStore); + Long b2 = findEventFromStore$default.b(); + if (b2 != null) { + z2 = PermissionUtils.can(Permission.CONNECT, this.$permissionsStore.getPermissionsByChannel().get(Long.valueOf(b2.longValue()))); + } else { + z2 = false; + } + return new GuildScheduledEventDetailsViewModel.StoreState(findEventFromStore$default, channel, guild, isRsvpedToEvent, canShareEvent$default, canStartEvent, this.$userSettingsStore.getIsDeveloperMode(), valueOf, z2); } } diff --git a/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventDetailsViewModel.java b/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventDetailsViewModel.java index ac0050cfbe..91d67235fb 100644 --- a/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventDetailsViewModel.java +++ b/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventDetailsViewModel.java @@ -1,6 +1,7 @@ package com.discord.widgets.guildscheduledevent; import android.content.Context; +import androidx.core.app.FrameMetricsAggregator; import c.d.b.a.a; import com.discord.api.channel.Channel; import com.discord.api.guildscheduledevent.GuildScheduledEvent; @@ -71,6 +72,7 @@ public final class GuildScheduledEventDetailsViewModel extends AppViewModel function0, Function0 function02, Function0 function03, Function0 function04, Function0 function05) { + private final void configureInternal(GuildScheduledEvent guildScheduledEvent, GuildScheduledEventLocationInfo guildScheduledEventLocationInfo, Guild guild, boolean z2, boolean z3, boolean z4, boolean z5, boolean z6, boolean z7, Function0 function0, Function0 function02, Function0 function03, Function0 function04, Function0 function05) { GuildScheduledEventBottomButtonView guildScheduledEventBottomButtonView = this.binding.b; m.checkNotNullExpressionValue(guildScheduledEventBottomButtonView, "binding.guildScheduledEventListItemButtomView"); - guildScheduledEventBottomButtonView.setVisibility(new GuildScheduledEventBottomButtonView.VisibilityInfo(guildScheduledEvent, z3, z5, z4, z6, false, 32, null).isAnyButtonVisible() ? 0 : 8); - GuildScheduledEventBottomButtonView.configure$default(this.binding.b, guildScheduledEvent, z2, z3, z5, z4, z6, function02, function03, function04, function05, null, 1024, null); + guildScheduledEventBottomButtonView.setVisibility(new GuildScheduledEventBottomButtonView.VisibilityInfo(guildScheduledEvent, z3, z5, z4, z6, z7, false, 64, null).isAnyButtonVisible() ? 0 : 8); + GuildScheduledEventBottomButtonView.configure$default(this.binding.b, guildScheduledEvent, z2, z3, z5, z4, z6, z7, function02, function03, function04, function05, null, 2048, null); TextView textView = this.binding.j; m.checkNotNullExpressionValue(textView, "binding.guildScheduledEventListItemRsvpText"); Integer l = guildScheduledEvent.l(); @@ -156,8 +156,8 @@ public final class GuildScheduledEventItemView extends ConstraintLayout { } } - public static /* synthetic */ void configureInternal$default(GuildScheduledEventItemView guildScheduledEventItemView, GuildScheduledEvent guildScheduledEvent, GuildScheduledEventLocationInfo guildScheduledEventLocationInfo, Guild guild, boolean z2, boolean z3, boolean z4, boolean z5, boolean z6, Function0 function0, Function0 function02, Function0 function03, Function0 function04, Function0 function05, int i, Object obj) { - guildScheduledEventItemView.configureInternal(guildScheduledEvent, guildScheduledEventLocationInfo, guild, z2, z3, z4, z5, z6, function0, (i & 512) != 0 ? GuildScheduledEventItemView$configureInternal$1.INSTANCE : function02, (i & 1024) != 0 ? GuildScheduledEventItemView$configureInternal$2.INSTANCE : function03, (i & 2048) != 0 ? GuildScheduledEventItemView$configureInternal$3.INSTANCE : function04, (i & 4096) != 0 ? GuildScheduledEventItemView$configureInternal$4.INSTANCE : function05); + public static /* synthetic */ void configureInternal$default(GuildScheduledEventItemView guildScheduledEventItemView, GuildScheduledEvent guildScheduledEvent, GuildScheduledEventLocationInfo guildScheduledEventLocationInfo, Guild guild, boolean z2, boolean z3, boolean z4, boolean z5, boolean z6, boolean z7, Function0 function0, Function0 function02, Function0 function03, Function0 function04, Function0 function05, int i, Object obj) { + guildScheduledEventItemView.configureInternal(guildScheduledEvent, guildScheduledEventLocationInfo, guild, z2, z3, z4, z5, z6, z7, function0, (i & 1024) != 0 ? GuildScheduledEventItemView$configureInternal$1.INSTANCE : function02, (i & 2048) != 0 ? GuildScheduledEventItemView$configureInternal$2.INSTANCE : function03, (i & 4096) != 0 ? GuildScheduledEventItemView$configureInternal$3.INSTANCE : function04, (i & 8192) != 0 ? GuildScheduledEventItemView$configureInternal$4.INSTANCE : function05); } private final void configureLocation(GuildScheduledEventLocationInfo guildScheduledEventLocationInfo, Guild guild) { @@ -275,12 +275,12 @@ public final class GuildScheduledEventItemView extends ConstraintLayout { configureLocation$default(this, GuildScheduledEventLocationInfo.Companion.buildLocationInfo(guildScheduledEventModel, channel), null, 2, null); } - public final void configureInChatList(GuildScheduledEvent guildScheduledEvent, Channel channel, Guild guild, boolean z2, boolean z3, boolean z4, Function0 function0, Function0 function02, Function0 function03, Function0 function04) { + public final void configureInChatList(GuildScheduledEvent guildScheduledEvent, Channel channel, Guild guild, boolean z2, boolean z3, boolean z4, boolean z5, Function0 function0, Function0 function02, Function0 function03, Function0 function04) { m.checkNotNullParameter(guildScheduledEvent, "guildScheduledEvent"); m.checkNotNullParameter(function02, "rsvpButtonClickListener"); m.checkNotNullParameter(function03, "joinServerButtonClickListener"); m.checkNotNullParameter(function04, "shareButtonClickListener"); - configureInternal(guildScheduledEvent, GuildScheduledEventLocationInfo.Companion.buildLocationInfo(guildScheduledEvent, channel), guild, z3, true, false, true, z4, function0, function02, function03, function04, function03); + configureInternal(guildScheduledEvent, GuildScheduledEventLocationInfo.Companion.buildLocationInfo(guildScheduledEvent, channel), guild, z3, true, false, true, z4, z5, function0, function02, function03, function04, function03); ConstraintLayout constraintLayout = this.binding.a; m.checkNotNullExpressionValue(constraintLayout, "binding.root"); constraintLayout.setBackground((!z4 || guildScheduledEvent.k() != GuildScheduledEventStatus.ACTIVE) ? ContextCompat.getDrawable(getContext(), R.drawable.bg_guild_scheduled_event_list_item_secondary) : ContextCompat.getDrawable(getContext(), R.drawable.bg_guild_scheduled_event_list_item_connected_secondary)); @@ -324,7 +324,7 @@ public final class GuildScheduledEventItemView extends ConstraintLayout { m.checkNotNullParameter(function03, "eventStartButtonClickListener"); m.checkNotNullParameter(function04, "shareButtonClickListener"); m.checkNotNullParameter(function05, "joinButtonClickListener"); - configureInternal(event.getEvent(), GuildScheduledEventLocationInfo.Companion.buildLocationInfo(event.getEvent(), event.getChannel()), null, event.isRsvped(), true, event.getCanStartEvent(), event.getCanShare(), event.isConnected(), function0, function02, function03, function04, function05); + configureInternal(event.getEvent(), GuildScheduledEventLocationInfo.Companion.buildLocationInfo(event.getEvent(), event.getChannel()), null, event.isRsvped(), true, event.getCanStartEvent(), event.getCanShare(), event.isConnected(), event.getCanConnect(), function0, function02, function03, function04, function05); ConstraintLayout constraintLayout = this.binding.a; m.checkNotNullExpressionValue(constraintLayout, "binding.root"); constraintLayout.setBackground((!event.isConnected() || event.getEvent().k() != GuildScheduledEventStatus.ACTIVE) ? ContextCompat.getDrawable(getContext(), R.drawable.bg_guild_scheduled_event_list_item_primary) : ContextCompat.getDrawable(getContext(), R.drawable.bg_guild_scheduled_event_list_item_connected_primary)); @@ -334,7 +334,7 @@ public final class GuildScheduledEventItemView extends ConstraintLayout { m.checkNotNullParameter(guildScheduledEvent, "guildScheduledEvent"); m.checkNotNullParameter(function0, "onCardClicked"); m.checkNotNullParameter(function02, "onStartEventButtonClicked"); - configureInternal(guildScheduledEvent, null, null, false, false, z2, false, z4, function0, GuildScheduledEventItemView$configureInVoiceChannel$1.INSTANCE, function02, GuildScheduledEventItemView$configureInVoiceChannel$2.INSTANCE, GuildScheduledEventItemView$configureInVoiceChannel$3.INSTANCE); + configureInternal(guildScheduledEvent, null, null, false, false, z2, false, z4, false, function0, GuildScheduledEventItemView$configureInVoiceChannel$1.INSTANCE, function02, GuildScheduledEventItemView$configureInVoiceChannel$2.INSTANCE, GuildScheduledEventItemView$configureInVoiceChannel$3.INSTANCE); ConstraintLayout constraintLayout = this.binding.a; m.checkNotNullExpressionValue(constraintLayout, "binding.root"); constraintLayout.setBackground((!z4 || guildScheduledEvent.k() != GuildScheduledEventStatus.ACTIVE) ? ContextCompat.getDrawable(getContext(), R.drawable.bg_guild_scheduled_event_list_item_secondary) : ContextCompat.getDrawable(getContext(), R.drawable.bg_guild_scheduled_event_list_item_connected_secondary)); diff --git a/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventListItem.java b/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventListItem.java index a0e5cdea65..205aea9bc2 100644 --- a/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventListItem.java +++ b/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventListItem.java @@ -23,6 +23,7 @@ public abstract class GuildScheduledEventListItem implements MGRecyclerDataPaylo /* compiled from: GuildScheduledEventListItem.kt */ public static final class Event extends GuildScheduledEventListItem { + private final boolean canConnect; private final boolean canShare; private final boolean canStartEvent; private final Channel channel; @@ -33,7 +34,7 @@ public abstract class GuildScheduledEventListItem implements MGRecyclerDataPaylo private final int type; /* JADX INFO: super call moved to the top of the method (can break code semantics) */ - public Event(GuildScheduledEvent guildScheduledEvent, Channel channel, boolean z2, boolean z3, boolean z4, boolean z5) { + public Event(GuildScheduledEvent guildScheduledEvent, Channel channel, boolean z2, boolean z3, boolean z4, boolean z5, boolean z6) { super(null); m.checkNotNullParameter(guildScheduledEvent, "event"); this.event = guildScheduledEvent; @@ -42,10 +43,11 @@ public abstract class GuildScheduledEventListItem implements MGRecyclerDataPaylo this.canStartEvent = z3; this.canShare = z4; this.isConnected = z5; + this.canConnect = z6; this.key = String.valueOf(guildScheduledEvent.g()); } - public static /* synthetic */ Event copy$default(Event event, GuildScheduledEvent guildScheduledEvent, Channel channel, boolean z2, boolean z3, boolean z4, boolean z5, int i, Object obj) { + public static /* synthetic */ Event copy$default(Event event, GuildScheduledEvent guildScheduledEvent, Channel channel, boolean z2, boolean z3, boolean z4, boolean z5, boolean z6, int i, Object obj) { if ((i & 1) != 0) { guildScheduledEvent = event.event; } @@ -64,7 +66,10 @@ public abstract class GuildScheduledEventListItem implements MGRecyclerDataPaylo if ((i & 32) != 0) { z5 = event.isConnected; } - return event.copy(guildScheduledEvent, channel, z2, z3, z4, z5); + if ((i & 64) != 0) { + z6 = event.canConnect; + } + return event.copy(guildScheduledEvent, channel, z2, z3, z4, z5, z6); } public final GuildScheduledEvent component1() { @@ -91,9 +96,13 @@ public abstract class GuildScheduledEventListItem implements MGRecyclerDataPaylo return this.isConnected; } - public final Event copy(GuildScheduledEvent guildScheduledEvent, Channel channel, boolean z2, boolean z3, boolean z4, boolean z5) { + public final boolean component7() { + return this.canConnect; + } + + public final Event copy(GuildScheduledEvent guildScheduledEvent, Channel channel, boolean z2, boolean z3, boolean z4, boolean z5, boolean z6) { m.checkNotNullParameter(guildScheduledEvent, "event"); - return new Event(guildScheduledEvent, channel, z2, z3, z4, z5); + return new Event(guildScheduledEvent, channel, z2, z3, z4, z5, z6); } public boolean equals(Object obj) { @@ -104,7 +113,11 @@ public abstract class GuildScheduledEventListItem implements MGRecyclerDataPaylo return false; } Event event = (Event) obj; - return m.areEqual(this.event, event.event) && m.areEqual(this.channel, event.channel) && this.isRsvped == event.isRsvped && this.canStartEvent == event.canStartEvent && this.canShare == event.canShare && this.isConnected == event.isConnected; + return m.areEqual(this.event, event.event) && m.areEqual(this.channel, event.channel) && this.isRsvped == event.isRsvped && this.canStartEvent == event.canStartEvent && this.canShare == event.canShare && this.isConnected == event.isConnected && this.canConnect == event.canConnect; + } + + public final boolean getCanConnect() { + return this.canConnect; } public final boolean getCanShare() { @@ -168,10 +181,18 @@ public abstract class GuildScheduledEventListItem implements MGRecyclerDataPaylo int i14 = z4 ? 1 : 0; int i15 = (i11 + i12) * 31; boolean z5 = this.isConnected; - if (!z5) { - i3 = z5 ? 1 : 0; + if (z5) { + z5 = true; } - return i15 + i3; + int i16 = z5 ? 1 : 0; + int i17 = z5 ? 1 : 0; + int i18 = z5 ? 1 : 0; + int i19 = (i15 + i16) * 31; + boolean z6 = this.canConnect; + if (!z6) { + i3 = z6 ? 1 : 0; + } + return i19 + i3; } public final boolean isConnected() { @@ -194,7 +215,9 @@ public abstract class GuildScheduledEventListItem implements MGRecyclerDataPaylo P.append(", canShare="); P.append(this.canShare); P.append(", isConnected="); - return a.L(P, this.isConnected, ")"); + P.append(this.isConnected); + P.append(", canConnect="); + return a.L(P, this.canConnect, ")"); } } 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 e9289eb9a9..bf310f621b 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 @@ -54,10 +54,11 @@ public final class GuildScheduledEventListViewModel$Companion$observeStores$1 ex List sortedWith = u.sortedWith(guildScheduledEvents$default, GuildScheduledEventsComparator.INSTANCE); Set userGuildScheduledEventIds = this.$guildScheduledEventsStore.getUserGuildScheduledEventIds(this.$guildId); boolean canCreateAnyEvent = GuildScheduledEventUtilities.Companion.canCreateAnyEvent(this.$guildId, this.$channelStore, this.$permissionsStore); + Map permissionsByChannel = this.$permissionsStore.getPermissionsByChannel(); Long valueOf = Long.valueOf(this.$voiceChannelSelectedStore.getSelectedVoiceChannelId()); if (!(valueOf.longValue() != 0)) { valueOf = null; } - return new GuildScheduledEventListViewModel.StoreState(sortedWith, userGuildScheduledEventIds, channelsForGuild, canCreateAnyEvent, valueOf); + return new GuildScheduledEventListViewModel.StoreState(sortedWith, userGuildScheduledEventIds, channelsForGuild, canCreateAnyEvent, valueOf, permissionsByChannel); } } 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 54adb03b9f..417954db2b 100644 --- a/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventListViewModel.java +++ b/app/src/main/java/com/discord/widgets/guildscheduledevent/GuildScheduledEventListViewModel.java @@ -4,6 +4,7 @@ import android.content.Context; import c.d.b.a.a; import com.discord.api.channel.Channel; import com.discord.api.guildscheduledevent.GuildScheduledEvent; +import com.discord.api.permission.Permission; import com.discord.app.AppViewModel; import com.discord.stores.StoreChannels; import com.discord.stores.StoreGuildScheduledEvents; @@ -15,6 +16,7 @@ import com.discord.stores.updates.ObservationDeck; import com.discord.stores.updates.ObservationDeckProvider; import com.discord.utilities.analytics.AnalyticsTracker; import com.discord.utilities.guildscheduledevent.GuildScheduledEventUtilities; +import com.discord.utilities.permissions.PermissionUtils; import com.discord.utilities.rx.ObservableExtensionsKt; import com.discord.widgets.guildscheduledevent.GuildScheduledEventListItem; import d0.t.o; @@ -82,25 +84,28 @@ public final class GuildScheduledEventListViewModel extends AppViewModel channelPermissions; private final Map guildChannels; private final List guildScheduledEvents; private final Long selectedVoiceChannelId; private final Set userGuildScheduledEventIds; - public StoreState(List list, Set set, Map map, boolean z2, Long l) { + public StoreState(List list, Set set, Map map, boolean z2, Long l, Map map2) { m.checkNotNullParameter(list, "guildScheduledEvents"); m.checkNotNullParameter(set, "userGuildScheduledEventIds"); m.checkNotNullParameter(map, "guildChannels"); + m.checkNotNullParameter(map2, "channelPermissions"); this.guildScheduledEvents = list; this.userGuildScheduledEventIds = set; this.guildChannels = map; this.canCreateEvents = z2; this.selectedVoiceChannelId = l; + this.channelPermissions = map2; } - /* JADX DEBUG: Multi-variable search result rejected for r3v0, resolved type: com.discord.widgets.guildscheduledevent.GuildScheduledEventListViewModel$StoreState */ + /* JADX DEBUG: Multi-variable search result rejected for r4v0, resolved type: com.discord.widgets.guildscheduledevent.GuildScheduledEventListViewModel$StoreState */ /* JADX WARN: Multi-variable type inference failed */ - public static /* synthetic */ StoreState copy$default(StoreState storeState, List list, Set set, Map map, boolean z2, Long l, int i, Object obj) { + public static /* synthetic */ StoreState copy$default(StoreState storeState, List list, Set set, Map map, boolean z2, Long l, Map map2, int i, Object obj) { if ((i & 1) != 0) { list = storeState.guildScheduledEvents; } @@ -116,7 +121,10 @@ public final class GuildScheduledEventListViewModel extends AppViewModel component1() { @@ -139,11 +147,16 @@ public final class GuildScheduledEventListViewModel extends AppViewModel list, Set set, Map map, boolean z2, Long l) { + public final Map component6() { + return this.channelPermissions; + } + + public final StoreState copy(List list, Set set, Map map, boolean z2, Long l, Map map2) { m.checkNotNullParameter(list, "guildScheduledEvents"); m.checkNotNullParameter(set, "userGuildScheduledEventIds"); m.checkNotNullParameter(map, "guildChannels"); - return new StoreState(list, set, map, z2, l); + m.checkNotNullParameter(map2, "channelPermissions"); + return new StoreState(list, set, map, z2, l, map2); } public boolean equals(Object obj) { @@ -154,13 +167,17 @@ public final class GuildScheduledEventListViewModel extends AppViewModel getChannelPermissions() { + return this.channelPermissions; + } + public final Map getGuildChannels() { return this.guildChannels; } @@ -194,10 +211,12 @@ public final class GuildScheduledEventListViewModel extends AppViewModel map2 = this.channelPermissions; + if (map2 != null) { + i = map2.hashCode(); } - return i5 + i; + return hashCode4 + i; } public String toString() { @@ -210,7 +229,9 @@ public final class GuildScheduledEventListViewModel extends AppViewModel - + diff --git a/app/src/main/res/layout/widget_chat_list_bot_ui_button_component.xml b/app/src/main/res/layout/widget_chat_list_bot_ui_button_component.xml index 5cf8398a3b..3b93e5aa1d 100644 --- a/app/src/main/res/layout/widget_chat_list_bot_ui_button_component.xml +++ b/app/src/main/res/layout/widget_chat_list_bot_ui_button_component.xml @@ -1,5 +1,5 @@ - + diff --git a/app/src/main/res/values-ar-rXB/plurals.xml b/app/src/main/res/values-ar-rXB/plurals.xml index 348a553994..a5d6b28d7c 100644 --- a/app/src/main/res/values-ar-rXB/plurals.xml +++ b/app/src/main/res/values-ar-rXB/plurals.xml @@ -1197,8 +1197,12 @@ ‏‮in‬‏ ‏‮{#}‬‏ ‏‮days‬‏ - ‏‮{#}‬‏ ‏‮day‬‏ - ‏‮{#}‬‏ ‏‮days‬‏ + ‏‮in‬‏ ‏‮{#}‬‏ ‏‮day‬‏ + ‏‮in‬‏ ‏‮{#}‬‏ ‏‮days‬‏ + + + ‏‮in‬‏ ‏‮{#}‬‏ ‏‮day‬‏ + ‏‮in‬‏ ‏‮{#}‬‏ ‏‮days‬‏ ‏‮1‬‏ ‏‮day‬‏ diff --git a/app/src/main/res/values-ar-rXB/strings.xml b/app/src/main/res/values-ar-rXB/strings.xml index f80e5d447d..86afa90c25 100644 --- a/app/src/main/res/values-ar-rXB/strings.xml +++ b/app/src/main/res/values-ar-rXB/strings.xml @@ -3492,7 +3492,7 @@ ‏‮This‬‏ ‏‮will‬‏ ‏‮send‬‏ ‏‮a‬‏ ‏‮notification‬‏ ‏‮to‬‏ ‏‮members‬‏ ‏‮that‬‏ ‏‮your‬‏ ‏‮Stage‬‏ ‏‮is‬‏ ‏‮live.‬‏ ‏‮This‬‏ ‏‮will‬‏ ‏‮send‬‏ ‏‮a‬‏ ‏‮notification‬‏ ‏‮to‬‏ ‏‮members‬‏ ‏‮who‬‏ ‏‮can‬‏ ‏‮see‬‏ ‏‮this‬‏ ‏‮channel.‬‏ ‏‮Server‬‏ ‏‮Owner‬‏ - ‏‮Applications‬‏ ‏‮are‬‏ ‏‮paused‬‏ ‏‮for‬‏ ‏‮the‬‏ ‏‮summer.‬‏ + ‏‮Applications‬‏ ‏‮are‬‏ ‏‮currently‬‏ ‏‮paused.‬‏ ‏‮Which‬‏ ‏‮of‬‏ ‏‮the‬‏ ‏‮following‬‏ ‏‮categories‬‏ ‏‮best‬‏ ‏‮describes‬‏ ‏‮your‬‏ ‏‮server?‬‏ ‏‮Categories‬‏ ‏‮Connect‬‏ ‏‮your‬‏ ‏‮social‬‏ ‏‮accounts‬‏ @@ -3511,7 +3511,7 @@ ‏‮Do‬‏ ‏‮you‬‏ ‏‮create‬‏ ‏‮content‬‏ ‏‮somewhere‬‏ ‏‮else?‬‏ ‏‮If‬‏ ‏‮it\'s‬‏ ‏‮not‬‏ ‏‮one‬‏ ‏‮of‬‏ ‏‮the‬‏ ‏‮above‬‏ ‏‮websites,‬‏ ‏‮you‬‏ ‏‮can‬‏ ‏‮link‬‏ ‏‮it‬‏ ‏‮here.‬‏ ‏‮Do‬‏ ‏‮you‬‏ ‏‮create‬‏ ‏‮content‬‏ ‏‮somewhere‬‏ ‏‮else?‬‏ ‏‮(Optional)‬‏ - ‏‮Partner‬‏ ‏‮Program‬‏ ‏‮applications‬‏ ‏‮are‬‏ ‏‮currently‬‏ ‏‮paused‬‏ ‏‮while‬‏ ‏‮the‬‏ ‏‮team‬‏ ‏‮takes‬‏ ‏‮a‬‏ ‏‮well‬‏ ‏‮earned‬‏ ‏‮break‬‏ ‏‮for‬‏ ‏‮the‬‏ ‏‮summer.‬‏ ‏‮We\'ll‬‏ ‏‮start‬‏ ‏‮accepting‬‏ ‏‮submissions‬‏ ‏‮soon‬‏ ‏‮as‬‏ ‏‮the‬‏ ‏‮next‬‏ ‏‮season‬‏ ‏‮rolls‬‏ ‏‮around.‬‏ ‏‮Take‬‏ ‏‮this‬‏ ‏‮extra‬‏ ‏‮time‬‏ ‏‮to‬‏ ‏‮work‬‏ ‏‮on‬‏ ‏‮your‬‏ ‏‮application,‬‏ ‏‮and‬‏ ‏‮we‬‏ ‏‮can’t‬‏ ‏‮wait‬‏ ‏‮to‬‏ ‏‮see‬‏ ‏‮you‬‏ ‏‮apply‬‏ ‏‮for‬‏ ‏‮Partnership‬‏ ‏‮in‬‏ ‏‮the‬‏ ‏‮near‬‏ ‏‮future!‬‏ + ‏‮Partner‬‏ ‏‮Program‬‏ ‏‮applications‬‏ ‏‮are‬‏ ‏‮currently‬‏ ‏‮paused‬‏ ‏‮while‬‏ ‏‮the‬‏ ‏‮team‬‏ ‏‮takes‬‏ ‏‮a‬‏ ‏‮well‬‏ ‏‮earned‬‏ ‏‮break.‬‏ ‏‮We\'ll‬‏ ‏‮start‬‏ ‏‮accepting‬‏ ‏‮submissions‬‏ ‏‮soon‬‏ ‏‮as‬‏ ‏‮the‬‏ ‏‮next‬‏ ‏‮season‬‏ ‏‮rolls‬‏ ‏‮around.‬‏ ‏‮Take‬‏ ‏‮this‬‏ ‏‮extra‬‏ ‏‮time‬‏ ‏‮to‬‏ ‏‮work‬‏ ‏‮on‬‏ ‏‮your‬‏ ‏‮application,‬‏ ‏‮and‬‏ ‏‮we‬‏ ‏‮can’t‬‏ ‏‮wait‬‏ ‏‮to‬‏ ‏‮see‬‏ ‏‮you‬‏ ‏‮apply‬‏ ‏‮for‬‏ ‏‮Partnership‬‏ ‏‮in‬‏ ‏‮the‬‏ ‏‮near‬‏ ‏‮future!‬‏ ‏‮Server‬‏ ‏‮Info‬‏ ‏‮You\'re‬‏ ‏‮a‬‏ ‏‮few‬‏ ‏‮steps‬‏ ‏‮away‬‏ ‏‮from‬‏ ‏‮being‬‏ ‏‮recognized‬‏ ‏‮as‬‏ ‏‮one‬‏ ‏‮of‬‏ ‏‮the‬‏ ‏‮best‬‏ ‏‮servers‬‏ ‏‮on‬‏ ‏‮Discord!‬‏ ‏‮First,‬‏ ‏‮we\'ll‬‏ ‏‮need‬‏ ‏‮a‬‏ ‏‮few‬‏ ‏‮details‬‏ ‏‮about‬‏ ‏‮your‬‏ ‏‮community.‬‏ ‏‮What\'s‬‏ ‏‮your‬‏ ‏‮community‬‏ ‏‮about?‬‏ @@ -3560,12 +3560,15 @@ ‏‮You‬‏ ‏‮will‬‏ ‏‮lose‬‏ ‏‮access‬‏ ‏‮to‬‏ ‏‮{numChannels}‬‏ ‏‮exclusive‬‏ ‏‮{numChannels}‬‏ ‏‮and‬‏ ‏‮{numAdditionalBenefits}‬‏ ‏‮additional‬‏ ‏‮{numAdditionalBenefits}‬‏ ‏‮on‬‏ ‏‮{subscriptionEndDate}‬‏‏‮.‬‏ ‏‮Nevermind‬‏ ‏‮Are‬‏ ‏‮you‬‏ ‏‮sure‬‏ ‏‮you‬‏ ‏‮want‬‏ ‏‮to‬‏ ‏‮cancel?‬‏ + ‏‮Canceled‬‏ ‏‮Member‬‏ ‏‮since‬‏ + ‏‮Membership‬‏ ‏‮ends‬‏ ‏‮Next‬‏ ‏‮renewal‬‏ ‏‮Monthly‬‏ ‏‮Cost‬‏ ‏‮Cancel‬‏ ‏‮my‬‏ ‏‮membership‬‏ ‏‮Select‬‏ ‏‮a‬‏ ‏‮different‬‏ ‏‮tier‬‏ ‏‮Manage‬‏ ‏‮Subscription‬‏ + ‏‮Restart‬‏ ‏‮my‬‏ ‏‮membership‬‏ ‏‮Vitae‬‏ ‏‮quis‬‏ ‏‮facilisi‬‏ ‏‮integer‬‏ ‏‮nec‬‏ ‏‮lobortis‬‏ ‏‮et‬‏ ‏‮purus.‬‏ ‏‮Sed‬‏ ‏‮arcu‬‏ ‏‮odio‬‏ ‏‮Premium‬‏ ‏‮Membership‬‏ ‏‮Payment‬‏ ‏‮Method‬‏ @@ -3955,6 +3958,8 @@ ‏‮**Granted**‬‏ ‏‮{count}‬‏ ‏‮Set‬‏ ‏‮the‬‏ ‏‮unicode‬‏ ‏‮emoji‬‏ ‏‮$[**!!‬‏‏‮{user}‬‏‏‮!!**](userHook)‬‏ ‏‮updated‬‏ ‏‮the‬‏ ‏‮role‬‏ ‏‮$[**!!‬‏‏‮{target}‬‏‏‮!!**](targetHook)‬‏ + ‏‮Set‬‏ ‏‮the‬‏ ‏‮channel‬‏ ‏‮to‬‏ ‏‮**!!‬‏‏‮{newValue}‬‏‏‮!!**‬‏ + ‏‮Removed‬‏ ‏‮the‬‏ ‏‮channel‬‏ ‏‮$[**!!‬‏‏‮{user}‬‏‏‮!!**](userHook)‬‏ ‏‮scheduled‬‏ ‏‮the‬‏ ‏‮event‬‏ ‏‮$[**!!‬‏‏‮{target}‬‏‏‮!!**](targetHook)‬‏ ‏‮$[**!!‬‏‏‮{user}‬‏‏‮!!**](userHook)‬‏ ‏‮deleted‬‏ ‏‮the‬‏ ‏‮scheduled‬‏ ‏‮event‬‏ ‏‮$[**!!‬‏‏‮{target}‬‏‏‮!!**](targetHook)‬‏ ‏‮Set‬‏ ‏‮the‬‏ ‏‮description‬‏ ‏‮to‬‏ ‏‮**!!‬‏‏‮{newValue}‬‏‏‮!!**‬‏ @@ -3962,6 +3967,8 @@ ‏‮Linked‬‏ ‏‮to‬‏ ‏‮**Nothing**‬‏ ‏‮Linked‬‏ ‏‮with‬‏ ‏‮a‬‏ ‏‮**Stage**‬‏ ‏‮Linked‬‏ ‏‮with‬‏ ‏‮a‬‏ ‏‮**Voice‬‏ ‏‮Channel**‬‏ + ‏‮Set‬‏ ‏‮the‬‏ ‏‮location‬‏ ‏‮to‬‏ ‏‮**!!‬‏‏‮{newValue}‬‏‏‮!!**‬‏ + ‏‮Removed‬‏ ‏‮the‬‏ ‏‮location‬‏ ‏‮With‬‏ ‏‮the‬‏ ‏‮name‬‏ ‏‮**!!‬‏‏‮{newValue}‬‏‏‮!!**‬‏ ‏‮With‬‏ ‏‮a‬‏ ‏‮ticket‬‏ ‏‮Set‬‏ ‏‮the‬‏ ‏‮status‬‏ ‏‮to‬‏ ‏‮**Active**‬‏ @@ -5898,8 +5905,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‬‏ @@ -6673,13 +6680,18 @@ ‏‮Nevermind,‬‏ ‏‮keep‬‏ ‏‮Nitro‬‏ ‏‮Your‬‏ ‏‮**2‬‏ ‏‮free‬‏ ‏‮Boosts**‬‏ ‏‮and‬‏ ‏‮**30%%‬‏ ‏‮Boost‬‏ ‏‮discount**‬‏ ‏‮{boostCount}‬‏ + ‏‮Your‬‏ ‏‮**30%%‬‏ ‏‮Boost‬‏ ‏‮discount**‬‏ ‏‮Access‬‏ ‏‮to‬‏ ‏‮**custom‬‏ ‏‮emojis**‬‏ ‏‮and‬‏ ‏‮**stickers**‬‏ ‏‮across‬‏ ‏‮all‬‏ ‏‮of‬‏ ‏‮your‬‏ ‏‮servers‬‏ + ‏‮Access‬‏ ‏‮to‬‏ ‏‮**custom‬‏ ‏‮emojis**‬‏ ‏‮across‬‏ ‏‮all‬‏ ‏‮of‬‏ ‏‮your‬‏ ‏‮servers‬‏ ‏‮An‬‏ ‏‮**animated‬‏ ‏‮avatar**,‬‏ ‏‮**profile‬‏ ‏‮banner**,‬‏ ‏‮and‬‏ ‏‮custom‬‏ ‏‮**Discord‬‏ ‏‮Tag**‬‏ ‏‮An‬‏ ‏‮**animated‬‏ ‏‮avatar**,‬‏ ‏‮**profile‬‏ ‏‮banner**,‬‏ ‏‮and‬‏ ‏‮custom‬‏ ‏‮**Discord‬‏ ‏‮Tag**‬‏ ‏‮(#‬‏‏‮{discriminator}‬‏‏‮)‬‏ + ‏‮An‬‏ ‏‮**animated‬‏ ‏‮avatar**,‬‏ ‏‮and‬‏ ‏‮custom‬‏ ‏‮**Discord‬‏ ‏‮Tag**‬‏ ‏‮(#‬‏‏‮{discriminator}‬‏‏‮)‬‏ + ‏‮An‬‏ ‏‮**animated‬‏ ‏‮avatar**,‬‏ ‏‮and‬‏ ‏‮custom‬‏ ‏‮**Discord‬‏ ‏‮Tag**‬‏ ‏‮Higher‬‏ ‏‮**screen‬‏ ‏‮share**‬‏ ‏‮quality‬‏ ‏‮If‬‏ ‏‮you‬‏ ‏‮cancel,‬‏ ‏‮**you‬‏ ‏‮will‬‏ ‏‮lose‬‏ ‏‮these‬‏ ‏‮perks:**‬‏ ‏‮Are‬‏ ‏‮you‬‏ ‏‮sure‬‏ ‏‮you‬‏ ‏‮want‬‏ ‏‮to‬‏ ‏‮cancel?‬‏ ‏‮Bigger‬‏ ‏‮**uploads**‬‏ ‏‮and‬‏ ‏‮**longer‬‏ ‏‮messages**‬‏ + ‏‮Bigger‬‏ ‏‮**uploads**‬‏ ‏‮This‬‏ ‏‮tag‬‏ ‏‮is‬‏ ‏‮invalid.‬‏ ‏‮Tags‬‏ ‏‮must‬‏ ‏‮contain‬‏ ‏‮4‬‏ ‏‮digits.‬‏ ‏‮When‬‏ ‏‮your‬‏ ‏‮Nitro‬‏ ‏‮subscription‬‏ ‏‮ends,‬‏ ‏‮your‬‏ ‏‮Discord‬‏ ‏‮Tag‬‏ ‏‮will‬‏ ‏‮be‬‏ ‏‮randomized.‬‏ ‏‮Are‬‏ ‏‮you‬‏ ‏‮sure‬‏ ‏‮you‬‏ ‏‮want‬‏ ‏‮to‬‏ ‏‮change‬‏ ‏‮your‬‏ ‏‮Discord‬‏ ‏‮Tag?‬‏ ‏‮Change‬‏ ‏‮Discord‬‏ ‏‮Tag‬‏ @@ -7099,13 +7111,16 @@ ‏‮You’ll‬‏ ‏‮lose‬‏ ‏‮access‬‏ ‏‮to‬‏ ‏‮profile‬‏ ‏‮customization,‬‏ ‏‮bigger‬‏ ‏‮file‬‏ ‏‮uploads,‬‏ ‏‮better‬‏ ‏‮screen‬‏ ‏‮share,‬‏ ‏‮and‬‏ ‏‮more‬‏ ‏‮{daysLeft}‬‏‏‮.‬‏ ‏‮Manage‬‏ ‏‮Plan‬‏ ‏‮Your‬‏ ‏‮Nitro‬‏ ‏‮Classic‬‏ ‏‮access‬‏ ‏‮ends‬‏ ‏‮{daysLeft}‬‏‏‮.‬‏ ‏‮Renew‬‏ ‏‮now‬‏ ‏‮to‬‏ ‏‮keep‬‏ ‏‮custom‬‏ ‏‮emoji,‬‏ ‏‮bigger‬‏ ‏‮uploads,‬‏ ‏‮and‬‏ ‏‮more.‬‏ - ‏‮Your‬‏ ‏‮Nitro‬‏ ‏‮access‬‏ ‏‮ends‬‏ ‏‮today.‬‏ ‏‮Dismiss‬‏ ‏‮Keep‬‏ ‏‮Nitro‬‏ ‏‮If‬‏ ‏‮you‬‏ ‏‮reinstate‬‏ ‏‮Nitro,‬‏ ‏‮we’ll‬‏ ‏‮resume‬‏ ‏‮charging‬‏ ‏‮your‬‏ ‏‮payment‬‏ ‏‮method‬‏ ‏‮**‬‏‏‮{price}‬‏‏‮**‬‏ ‏‮and‬‏ ‏‮continue‬‏ ‏‮to‬‏ ‏‮charge‬‏ ‏‮you‬‏ ‏‮**monthly**‬‏ ‏‮until‬‏ ‏‮you‬‏ ‏‮cancel‬‏ ‏‮the‬‏ ‏‮subscription.‬‏ ‏‮You‬‏ ‏‮can‬‏ ‏‮cancel‬‏ ‏‮any‬‏ ‏‮time‬‏ ‏‮from‬‏ ‏‮your‬‏ ‏‮Settings‬‏ ‏‮page.‬‏ + ‏‮If‬‏ ‏‮you‬‏ ‏‮reinstate‬‏ ‏‮Nitro‬‏ ‏‮Classic,‬‏ ‏‮we’ll‬‏ ‏‮resume‬‏ ‏‮charging‬‏ ‏‮your‬‏ ‏‮payment‬‏ ‏‮method‬‏ ‏‮**‬‏‏‮{price}‬‏‏‮**‬‏ ‏‮and‬‏ ‏‮continue‬‏ ‏‮to‬‏ ‏‮charge‬‏ ‏‮you‬‏ ‏‮**monthly**‬‏ ‏‮until‬‏ ‏‮you‬‏ ‏‮cancel‬‏ ‏‮the‬‏ ‏‮subscription.‬‏ ‏‮You‬‏ ‏‮can‬‏ ‏‮cancel‬‏ ‏‮any‬‏ ‏‮time‬‏ ‏‮from‬‏ ‏‮your‬‏ ‏‮Settings‬‏ ‏‮page.‬‏ ‏‮If‬‏ ‏‮you‬‏ ‏‮reinstate‬‏ ‏‮Nitro,‬‏ ‏‮we’ll‬‏ ‏‮resume‬‏ ‏‮charging‬‏ ‏‮your‬‏ ‏‮payment‬‏ ‏‮method‬‏ ‏‮**‬‏‏‮{price}‬‏‏‮**‬‏ ‏‮and‬‏ ‏‮continue‬‏ ‏‮to‬‏ ‏‮charge‬‏ ‏‮you‬‏ ‏‮**yearly**‬‏ ‏‮until‬‏ ‏‮you‬‏ ‏‮cancel‬‏ ‏‮the‬‏ ‏‮subscription.‬‏ ‏‮You‬‏ ‏‮can‬‏ ‏‮cancel‬‏ ‏‮any‬‏ ‏‮time‬‏ ‏‮from‬‏ ‏‮your‬‏ ‏‮Settings‬‏ ‏‮page.‬‏ + ‏‮If‬‏ ‏‮you‬‏ ‏‮reinstate‬‏ ‏‮Nitro‬‏ ‏‮Classic,‬‏ ‏‮we’ll‬‏ ‏‮resume‬‏ ‏‮charging‬‏ ‏‮your‬‏ ‏‮payment‬‏ ‏‮method‬‏ ‏‮**‬‏‏‮{price}‬‏‏‮**‬‏ ‏‮and‬‏ ‏‮continue‬‏ ‏‮to‬‏ ‏‮charge‬‏ ‏‮you‬‏ ‏‮**yearly**‬‏ ‏‮until‬‏ ‏‮you‬‏ ‏‮cancel‬‏ ‏‮the‬‏ ‏‮subscription.‬‏ ‏‮You‬‏ ‏‮can‬‏ ‏‮cancel‬‏ ‏‮any‬‏ ‏‮time‬‏ ‏‮from‬‏ ‏‮your‬‏ ‏‮Settings‬‏ ‏‮page.‬‏ ‏‮If‬‏ ‏‮you‬‏ ‏‮don’t‬‏ ‏‮keep‬‏ ‏‮Nitro,‬‏ ‏‮**you‬‏ ‏‮will‬‏ ‏‮lose:**‬‏ - ‏‮Your‬‏ ‏‮Nitro‬‏ ‏‮access‬‏ ‏‮ends‬‏ ‏‮in‬‏ ‏‮{daysLeft}‬‏‏‮.‬‏ + ‏‮If‬‏ ‏‮you‬‏ ‏‮don’t‬‏ ‏‮keep‬‏ ‏‮Nitro‬‏ ‏‮Classic,‬‏ ‏‮**you‬‏ ‏‮will‬‏ ‏‮lose:**‬‏ + ‏‮Your‬‏ ‏‮Nitro‬‏ ‏‮access‬‏ ‏‮ends‬‏ ‏‮{daysLeft}‬‏‏‮.‬‏ + ‏‮Your‬‏ ‏‮Nitro‬‏ ‏‮Classic‬‏ ‏‮access‬‏ ‏‮ends‬‏ ‏‮{daysLeft}‬‏‏‮.‬‏ ‏‮Your‬‏ ‏‮grandfathered‬‏ ‏‮Nitro‬‏ ‏‮subscription‬‏ ‏‮is‬‏ ‏‮about‬‏ ‏‮to‬‏ ‏‮be‬‏ ‏‮changed‬‏ ‏‮to‬‏ ‏‮Nitro‬‏ ‏‮Classic.‬‏ ‏‮If‬‏ ‏‮you‬‏ ‏‮wish‬‏ ‏‮to‬‏ ‏‮keep‬‏ ‏‮your‬‏ ‏‮current‬‏ ‏‮perks,‬‏ ‏‮including‬‏ ‏‮Boosts,‬‏ ‏‮upgrade‬‏ ‏‮now.‬‏ ‏‮Boost‬‏ ‏‮Adjustment‬‏ ‏‮You‬‏ ‏‮are‬‏ ‏‮purchasing‬‏ ‏‮a‬‏ ‏‮plan‬‏ ‏‮change.‬‏ ‏‮Your‬‏ ‏‮Server‬‏ ‏‮Boosts‬‏ ‏‮are‬‏ ‏‮being‬‏ ‏‮updated‬‏ ‏‮accordingly.‬‏ diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index ccba342389..34b6dc9ae1 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -6582,7 +6582,6 @@ Твоят абонамент за Nitro изтича {daysLeft}. Добави метод на плащане, за да продължиш да използваш персонализирането на профила и др. Научи повече Ще изгубиш достъп до персонализирането на профила, качването на по-големи файлове, по-доброто споделяне на екрана и още след {daysLeft}. - Достъпът ти до Nitro приключва днес. Затваряне Задръж Nitro Ако възстановиш абонамента си за Nitro, ще възобновим таксуването на **{price}** към твоя метод на плащане и ще продължим да те таксуваме **ежемесечно**, докато не отмениш абонамента си. Можеш да го отмениш по всяко време от страницата си „Настройки“. diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index b0d154d191..7b326f7724 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -6586,7 +6586,6 @@ Tvé předplatné Nitro {daysLeft} skončí. Jestli chceš dál využívat přizpůsobení profilu a další výhody, přidej platební metodu. Zjistit více Za {daysLeft} přijdeš o možnost přizpůsobení profilu, nahrávání větších souborů, lepšího sdílení obrazovky a další výhody. - Tvůj přístup k Nitru dnes končí. Zahodit Zachovat Nitro Pokud Nitro obnovíš, začneme ti opět strhávat **{price}** prostřednictvím nastavené platební metody, a to **každý měsíc**, dokud předplatné nezrušíš. Zrušit jej můžeš kdykoliv na stránce Nastavení. diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index d800865425..23db446037 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -6587,7 +6587,6 @@ Dit Nitro-abonnement ophører {daysLeft}.Tilføj en betalingsmetode for fortsat at kunne bruge profiltilpasning med mere. Få mere at vide Du mister adgangen til profiltilpasning, større filuploads, bedre skærmdeling, og meget mere i {daysLeft}. - Din Nitro-adgang ophører i dag. Afvis Behold Nitro Hvis du starter op med Nitro igen, genoptager vi opkrævningen af din betalingsmetode **{price}** og fortsætter med at opkræve **månedligt**, indtil du annullerer abonnementet. Du kan annullere det når som helst fra din side med Indstillinger. diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 539532ea47..9001bfd1bd 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -6592,7 +6592,6 @@ Dein Nitro-Abonnement läuft {daysLeft} ab. Füge eine Zahlungsmethode hinzu, um weiterhin die Profilanpassung und viele andere Vorteile nutzen zu können. Mehr erfahren In {daysLeft} verlierst du Zugriff auf Profilanpassung, größere Datei-Uploads, bessere Bildschirmübertragungen und mehr. - Dein Nitro-Abo läuft heute aus. Schließen Nitro behalten Wenn du dich für Nitro entscheidest, buchen wir über die gewünschte Zahlungsmethode **monatlich** **{price}** ab, bis du dein Abonnement kündigst. Du kannst dein Abonnement jederzeit in den Account-Einstellungen kündigen. diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 0b529f8838..0589eb7b8d 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -6582,7 +6582,6 @@ Η συνδρομή σου στο Nitro θα λήξει {daysLeft}. Πρόσθεσε έναν τρόπο πληρωμής για να συνεχίσεις να χρησιμοποιείς την προσαρμογή προφίλ και πολλά άλλα. Μάθε περισσότερα Θα χάσεις την πρόσβαση σε προσαρμογή προφίλ, μεταφόρτωση μεγαλύτερων αρχείων, καλύτερη κοινή χρήση οθόνης και πολλά άλλα σε {daysLeft}. - Η πρόσβασή σου στο Nitro λήγει σήμερα. Απόρριψη Διατήρηση Nitro Αν επαναφέρεις το Nitro, θα συνεχίσεις να χρεώνεσαι με το ποσό των **{price}** με τον τρόπο πληρωμής που έχεις επιλέξει σε **μηνιαία βάση** μέχρι να ακυρώσεις τη συνδρομή. Μπορείς να την ακυρώσεις οποιαδήποτε στιγμή από τη σελίδα των Ρυθμίσεων. diff --git a/app/src/main/res/values-en-rXA/plurals.xml b/app/src/main/res/values-en-rXA/plurals.xml index a97f2861f0..99619db73b 100644 --- a/app/src/main/res/values-en-rXA/plurals.xml +++ b/app/src/main/res/values-en-rXA/plurals.xml @@ -1197,8 +1197,12 @@ [îñ »{#}« ðåýš one two] - [»{#}« ðåý one] - [»{#}« ðåýš one] + [îñ »{#}« ðåý one two] + [îñ »{#}« ðåýš one two] + + + [îñ »{#}« ðåý one two] + [îñ »{#}« ðåýš one two] [1 ðåý one] diff --git a/app/src/main/res/values-en-rXA/strings.xml b/app/src/main/res/values-en-rXA/strings.xml index ba716fcabd..5193998ee1 100644 --- a/app/src/main/res/values-en-rXA/strings.xml +++ b/app/src/main/res/values-en-rXA/strings.xml @@ -3492,7 +3492,7 @@ [Ţĥîš ŵîļļ šéñð å ñöţîƒîçåţîöñ ţö ḿéḿɓéŕš ţĥåţ ýöûŕ Šţåĝé îš ļîVé. one two three four five six seven] [Ţĥîš ŵîļļ šéñð å ñöţîƒîçåţîöñ ţö ḿéḿɓéŕš ŵĥö çåñ šéé ţĥîš çĥåññéļ. one two three four five six seven eight] [ŠéŕVéŕ Öŵñéŕ one two] - [Åþþļîçåţîöñš åŕé þåûšéð ƒöŕ ţĥé šûḿḿéŕ. one two three four five] + [Åþþļîçåţîöñš åŕé çûŕŕéñţļý þåûšéð. one two three four] [Ŵĥîçĥ öƒ ţĥé ƒöļļöŵîñĝ çåţéĝöŕîéš ɓéšţ ðéšçŕîɓéš ýöûŕ šéŕVéŕ¿ one two three four five six seven] [Çåţéĝöŕîéš one two] [Çöññéçţ ýöûŕ šöçîåļ åççöûñţš one two three four] @@ -3511,7 +3511,7 @@ [Ðö ýöû çŕéåţé çöñţéñţ šöḿéŵĥéŕé éļšé¿ one two three four five] [΃ îţ\'š ñöţ öñé öƒ ţĥé åɓöVé ŵéɓšîţéš, ýöû çåñ ļîñķ îţ ĥéŕé. one two three four five six seven] [Ðö ýöû çŕéåţé çöñţéñţ šöḿéŵĥéŕé éļšé¿ (Öþţîöñåļ) one two three four five six] - [Þåŕţñéŕ Þŕöĝŕåḿ åþþļîçåţîöñš åŕé çûŕŕéñţļý þåûšéð ŵĥîļé ţĥé ţéåḿ ţåķéš å ŵéļļ éåŕñéð ɓŕéåķ ƒöŕ ţĥé šûḿḿéŕ. Ŵé\'ļļ šţåŕţ åççéþţîñĝ šûɓḿîššîöñš šööñ åš ţĥé ñéхţ šéåšöñ ŕöļļš åŕöûñð. Ţåķé ţĥîš éхţŕå ţîḿé ţö ŵöŕķ öñ ýöûŕ åþþļîçåţîöñ, åñð ŵé çåñ’ţ ŵåîţ ţö šéé ýöû åþþļý ƒöŕ Þåŕţñéŕšĥîþ îñ ţĥé ñéåŕ ƒûţûŕé¡ 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] + [Þåŕţñéŕ Þŕöĝŕåḿ åþþļîçåţîöñš åŕé çûŕŕéñţļý þåûšéð ŵĥîļé ţĥé ţéåḿ ţåķéš å ŵéļļ éåŕñéð ɓŕéåķ. Ŵé\'ļļ šţåŕţ åççéþţîñĝ šûɓḿîššîöñš šööñ åš ţĥé ñéхţ šéåšöñ ŕöļļš åŕöûñð. Ţåķé ţĥîš éхţŕå ţîḿé ţö ŵöŕķ öñ ýöûŕ åþþļîçåţîöñ, åñð ŵé çåñ’ţ ŵåîţ ţö šéé ýöû åþþļý ƒöŕ Þåŕţñéŕšĥîþ îñ ţĥé ñéåŕ ƒûţûŕé¡ 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] [ŠéŕVéŕ Îñƒö one two] [Ýöû\'ŕé å ƒéŵ šţéþš åŵåý ƒŕöḿ ɓéîñĝ ŕéçöĝñîžéð åš öñé öƒ ţĥé ɓéšţ šéŕVéŕš öñ Ðîšçöŕð¡ Fîŕšţ, ŵé\'ļļ ñééð å ƒéŵ ðéţåîļš åɓöûţ ýöûŕ çöḿḿûñîţý. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fiveteen sixteen seventeen nineteen twenty one two three four] [Ŵĥåţ\'š ýöûŕ çöḿḿûñîţý åɓöûţ¿ one two three four] @@ -3560,12 +3560,15 @@ [Ýöû ŵîļļ ļöšé åççéšš ţö »{numChannels}« éхçļûšîVé »{numChannels}« åñð »{numAdditionalBenefits}« åððîţîöñåļ »{numAdditionalBenefits}« öñ »{subscriptionEndDate}«. one two three four five six seven] [ÑéVéŕḿîñð one two] [Åŕé ýöû šûŕé ýöû ŵåñţ ţö çåñçéļ¿ one two three four] + [Çåñçéļéð one two] [Ḿéḿɓéŕ šîñçé one two] + [Ḿéḿɓéŕšĥîþ éñðš one two three] [Ñéхţ ŕéñéŵåļ one two] [Ḿöñţĥļý Çöšţ one two] [Çåñçéļ ḿý ḿéḿɓéŕšĥîþ one two three] [Šéļéçţ å ðéŕéñţ ţîéŕ one two three] [Ḿåñåĝé Šûɓšçŕîþţîöñ one two three] + [Ŕéšţåŕţ ḿý ḿéḿɓéŕšĥîþ one two three] [νîţåé Qûîš ƒåçîļîšî îñţéĝéŕ ñéç ļöɓöŕţîš éţ þûŕûš. Šéð åŕçû öðîö one two three four five six seven] [Þŕéḿîûḿ Ḿéḿɓéŕšĥîþ one two three] [Þåýḿéñţ Ḿéţĥöð one two three] @@ -3955,6 +3958,8 @@ [**Ĝŕåñţéð** »{count}« one two] [Šéţ ţĥé ûñîçöðé éḿöĵî one two three] [€[**¡¡»{user}«¡¡**](ûšéŕĤööķ) ûþðåţéð ţĥé ŕöļé €[**¡¡»{target}«¡¡**](ţåŕĝéţĤööķ) one two three four five six seven eight nine ten eleven twelve thirteen] + [Šéţ ţĥé çĥåññéļ ţö **¡¡»{newValue}«¡¡** one two three four] + [ŔéḿöVéð ţĥé çĥåññéļ one two three] [€[**¡¡»{user}«¡¡**](ûšéŕĤööķ) šçĥéðûļéð ţĥé éVéñţ €[**¡¡»{target}«¡¡**](ţåŕĝéţĤööķ) one two three four five six seven eight nine ten eleven twelve thirteen] [€[**¡¡»{user}«¡¡**](ûšéŕĤööķ) ðéļéţéð ţĥé šçĥéðûļéð éVéñţ €[**¡¡»{target}«¡¡**](ţåŕĝéţĤööķ) one two three four five six seven eight nine ten eleven twelve thirteen fourteen] [Šéţ ţĥé ðéšçŕîþţîöñ ţö **¡¡»{newValue}«¡¡** one two three four] @@ -3962,6 +3967,8 @@ [Ļîñķéð ţö **Ñöţĥîñĝ** one two three] [Ļîñķéð ŵîţĥ å **Šţåĝé** one two three] [Ļîñķéð ŵîţĥ å **νöîçé Çĥåññéļ** one two three four] + [Šéţ ţĥé ļöçåţîöñ ţö **¡¡»{newValue}«¡¡** one two three four] + [ŔéḿöVéð ţĥé ļöçåţîöñ one two three] [Ŵîţĥ ţĥé ñåḿé **¡¡»{newValue}«¡¡** one two three] [Ŵîţĥ å ţîçķéţ one two] [Šéţ ţĥé šţåţûš ţö **ÅçţîVé** one two three four] @@ -5898,8 +5905,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] @@ -6673,13 +6680,18 @@ [ÑéVéŕḿîñð, ķééþ Ñîţŕö one two three] [Ýöûŕ **2 ƒŕéé βööšţš** åñð **30%% βööšţ ðîšçöûñţ** one two three four five six seven eight nine ten eleven] [»{boostCount}«] + [Ýöûŕ **30%% βööšţ ðîšçöûñţ** one two three four] [Åççéšš ţö **çûšţöḿ éḿöĵîš** åñð **šţîçķéŕš** åçŕöšš åļļ öƒ ýöûŕ šéŕVéŕš one two three four five six seven eight] + [Åççéšš ţö **çûšţöḿ éḿöĵîš** åçŕöšš åļļ öƒ ýöûŕ šéŕVéŕš one two three four five six seven] [Åñ **åñîḿåţéð åVåţåŕ**, **þŕöƒîļé ɓåññéŕ**, åñð çûšţöḿ **Ðîšçöŕð Ţåĝ** one two three four five six seven eight nine ten eleven twelve thirteen] [Åñ **åñîḿåţéð åVåţåŕ**, **þŕöƒîļé ɓåññéŕ**, åñð çûšţöḿ **Ðîšçöŕð Ţåĝ** (#»{discriminator}«) one two three four five six seven eight nine ten eleven twelve thirteen fourteen] + [Åñ **åñîḿåţéð åVåţåŕ**, åñð çûšţöḿ **Ðîšçöŕð Ţåĝ** (#»{discriminator}«) one two three four five six seven eight nine ten eleven] + [Åñ **åñîḿåţéð åVåţåŕ**, åñð çûšţöḿ **Ðîšçöŕð Ţåĝ** one two three four five six seven eight nine ten eleven] [Ĥîĝĥéŕ **šçŕééñ šĥåŕé** Qûåļîţý one two three four] [΃ ýöû çåñçéļ, **ýöû ŵîļļ ļöšé ţĥéšé þéŕķš:** one two three four five] [Åŕé ýöû šûŕé ýöû ŵåñţ ţö çåñçéļ¿ one two three four] [βîĝĝéŕ **ûþļöåðš** åñð **ļöñĝéŕ ḿéššåĝéš** one two three four five] + [βîĝĝéŕ **ûþļöåðš** one two three] [Ţĥîš ţåĝ îš îñVåļîð. Ţåĝš ḿûšţ çöñţåîñ 4 ðîĝîţš. one two three four five six] [Ŵĥéñ ýöûŕ Ñîţŕö šûɓšçŕîþţîöñ éñðš, ýöûŕ Ðîšçöŕð Ţåĝ ŵîļļ ɓé ŕåñðöḿîžéð. Åŕé ýöû šûŕé ýöû ŵåñţ ţö çĥåñĝé ýöûŕ Ðîšçöŕð Ţåĝ¿ one two three four five six seven eight nine ten eleven twelve] [Çĥåñĝé Ðîšçöŕð Ţåĝ one two three] @@ -7099,13 +7111,16 @@ [Ýöû’ļļ ļöšé åççéšš ţö þŕöƒîļé çûšţöḿîžåţîöñ, ɓîĝĝéŕ ƒîļé ûþļöåðš, ɓéţţéŕ šçŕééñ šĥåŕé, åñð ḿöŕé »{daysLeft}«. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fiveteen sixteen seventeen] [Ḿåñåĝé Þļåñ one two] [Ýöûŕ Ñîţŕö Çļåššîç åççéšš éñðš »{daysLeft}«. Ŕéñéŵ ñöŵ ţö ķééþ çûšţöḿ éḿöĵî, ɓîĝĝéŕ ûþļöåðš, åñð ḿöŕé. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fiveteen sixteen] - [Ýöûŕ Ñîţŕö åççéšš éñðš ţöðåý. one two three four] [Ðîšḿîšš one two] [Ķééþ Ñîţŕö one two] [΃ ýöû ŕéîñšţåţé Ñîţŕö, ŵé’ļļ ŕéšûḿé çĥåŕĝîñĝ ýöûŕ þåýḿéñţ ḿéţĥöð **»{price}«** åñð çöñţîñûé ţö çĥåŕĝé ýöû **ḿöñţĥļý** ûñţîļ ýöû çåñçéļ ţĥé šûɓšçŕîþţîöñ. Ýöû çåñ çåñçéļ åñý ţîḿé ƒŕöḿ ýöûŕ Šéţţîñĝš þåĝé. 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] + [΃ ýöû ŕéîñšţåţé Ñîţŕö Çļåššîç, ŵé’ļļ ŕéšûḿé çĥåŕĝîñĝ ýöûŕ þåýḿéñţ ḿéţĥöð **»{price}«** åñð çöñţîñûé ţö çĥåŕĝé ýöû **ḿöñţĥļý** ûñţîļ ýöû çåñçéļ ţĥé šûɓšçŕîþţîöñ. Ýöû çåñ çåñçéļ åñý ţîḿé ƒŕöḿ ýöûŕ Šéţţîñĝš þåĝé. 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] [΃ ýöû ŕéîñšţåţé Ñîţŕö, ŵé’ļļ ŕéšûḿé çĥåŕĝîñĝ ýöûŕ þåýḿéñţ ḿéţĥöð **»{price}«** åñð çöñţîñûé ţö çĥåŕĝé ýöû **ýéåŕļý** ûñţîļ ýöû çåñçéļ ţĥé šûɓšçŕîþţîöñ. Ýöû çåñ çåñçéļ åñý ţîḿé ƒŕöḿ ýöûŕ Šéţţîñĝš þåĝé. 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] + [΃ ýöû ŕéîñšţåţé Ñîţŕö Çļåššîç, ŵé’ļļ ŕéšûḿé çĥåŕĝîñĝ ýöûŕ þåýḿéñţ ḿéţĥöð **»{price}«** åñð çöñţîñûé ţö çĥåŕĝé ýöû **ýéåŕļý** ûñţîļ ýöû çåñçéļ ţĥé šûɓšçŕîþţîöñ. Ýöû çåñ çåñçéļ åñý ţîḿé ƒŕöḿ ýöûŕ Šéţţîñĝš þåĝé. 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] [΃ ýöû ðöñ’ţ ķééþ Ñîţŕö, **ýöû ŵîļļ ļöšé:** one two three four five six seven eight nine] - [Ýöûŕ Ñîţŕö åççéšš éñðš îñ »{daysLeft}«. one two three four] + [΃ ýöû ðöñ’ţ ķééþ Ñîţŕö Çļåššîç, **ýöû ŵîļļ ļöšé:** one two three four five six seven eight nine ten eleven] + [Ýöûŕ Ñîţŕö åççéšš éñðš »{daysLeft}«. one two three] + [Ýöûŕ Ñîţŕö Çļåššîç åççéšš éñðš »{daysLeft}«. one two three four] [Ýöûŕ ĝŕåñðƒåţĥéŕéð Ñîţŕö šûɓšçŕîþţîöñ îš åɓöûţ ţö ɓé çĥåñĝéð ţö Ñîţŕö Çļåššîç. ΃ ýöû ŵîšĥ ţö ķééþ ýöûŕ çûŕŕéñţ þéŕķš, îñçļûðîñĝ βööšţš, ûþĝŕåðé ñöŵ. 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] [βööšţ Åðĵûšţḿéñţ one two three] [Ýöû åŕé þûŕçĥåšîñĝ å þļåñ çĥåñĝé. Ýöûŕ ŠéŕVéŕ βööšţš åŕé ɓéîñĝ ûþðåţéð åççöŕðîñĝļý. one two three four five six seven eight nine] diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index fd70083fe1..27d809e5b0 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -6430,7 +6430,6 @@ Tu suscripción Nitro acaba {daysLeft}. Añade un método de pago para seguir usando la personalización de perfil y más. Más información Perderás el acceso a la personalización del perfil, las subidas de archivos más grandes, compartir pantalla mejorado y más en {daysLeft}. - Tu acceso Nitro acaba hoy. Cerrar Conservar Nitro Si vuelves a activar Nitro, reanudaremos el cargo de **{price}** en tu método de pago y seguiremos cobrándote **mensualmente** hasta que canceles la suscripción. Puedes cancelarla en cualquier momento desde la página de Ajustes. diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 9da4a7a4a3..37933f97f2 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -6582,7 +6582,6 @@ Nitro-tilauksesi päättyy {daysLeft} kuluttua. Jos haluat käyttää profiilin mukautusta ja muita etuja myös jatkossa, lisää maksutapa. Lue lisää {daysLeft} kuluttua menetät oikeuden profiilin mukautukseen, suurempiin tiedostojen latauskokoihin, parempaan ruudunjakoon ja moneen muuhun etuun. - Nitro-käyttöoikeutesi päättyy tänään. Sulje Pidä Nitro Jos otat Nitron jälleen käyttöön, veloitamme **{price}** maksutapaasi käyttäen ja teemme veloituksen jatkossa **kuukausittain**, kunnes perut tilauksesi. Voit kuitenkin perua tilauksen koska tahansa asetussivulta. diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 19178aeadc..c3bae93d2b 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -6587,7 +6587,6 @@ Ton abonnement Nitro se termine {daysLeft}. Ajoute un mode de paiement pour continuer à utiliser la personnalisation de profil et les autres avantages. En savoir plus Tu perdras accès à la personnalisation de ton profil, au chargement de fichiers plus volumineux, au partage d\'écran en meilleure qualité et à bien plus dans {daysLeft}. - Ton accès à Nitro se termine aujourd\'hui. Ignorer Conserver l\'abonnement Nitro Si tu réinstalles Nitro, nous recommencerons à facturer ton mode de paiement **{price}** et nous continuerons à te facturer **tous les mois** jusqu\'à ce que tu résilies ton abonnement. Tu peux le résilier à tout moment depuis ta page Paramètres. diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index 9ff9479e01..dd1bbe73b9 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -6582,7 +6582,6 @@ आपका Nitro सब्सक्रिप्शन {daysLeft} खत्म हो रहा है. प्रोफ़ाइल कस्टमाइज़ेशन और भी बहुत कुछ का इस्तेमाल जारी रखने के लिए पेमेंट का तरीका ऐड करें. और ज़्यादा जानें आप {daysLeft} में प्रोफ़ाइल कस्टमाइज़ेशन, बड़ी फ़ाइल को अपलोड करने, बेहतर स्क्रीन शेयर, और भी बहुत कुछ का एक्सेस खो देंगे. - Nitro का एक्सेस आज खत्म हो रहा है. खारिज कर दें Nitro को बनाए रखें अगर आप Nitro को बहाल करते हैं, तो हम आपसे आपके पेमेंट के तरीके से **{price}** चार्ज करना शुरू कर देंगे और आप जब तक अपने सब्सक्रिप्शन को कैंसल नहीं करेंगे तब तक आपको **महीने का** चार्ज देते रहना होगा. आप किसी भी समय अपने सेटिंग्स पेज से इसे कैंसल कर सकते हैं. diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 693b7991bf..55b4cdc43b 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -6582,7 +6582,6 @@ Nitro pretplata će ti isteći {daysLeft}. Dodaj način plaćanja kako bi nastavio koristiti prilagođavanje profila i ostalo. Saznaj više Za {daysLeft} izgubit ćeš pristup prilagođavanjima profila, prenošenju većih datoteka, boljem dijeljenju zaslona i drugome. - Tvoj pristup Nitru završit će danas. Odbaci Zadrži Nitro Ako sada ponovo uđeš u Nitro svijet, nastavit ćemo naplaćivati **{price}** preko tvojeg načina plaćanja **mjesečno** sve dok ne otkažeš pretplatu. Pretplatu možeš otkazati na svojoj stranici Korisničkih postavki. diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 9397e4c47d..067b558d29 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -6581,7 +6581,6 @@ A Nitro-előfizetésed {daysLeft} lejár. Adj hozzá fizetési módot, hogy tovább használhasd a profil testreszabását és más funkciókat. További tájékoztatás {daysLeft} múlva elveszíted a lehetőséget a profil testreszabására, a nagyobb fájlfeltöltésekre, a jobb képernyőmegosztásra és egyéb funkciókra. - A Nitro-hozzáférésed ma lejár. Elvetés Nitro-előfizetés megtartása Ha visszaállítod a Nitrót, folytatjuk a díj beszedését a megadott fizetési móddal **{price}** áron, ami továbbra is **havonta** esedékes, amíg le nem mondod az előfizetésedet. A Beállítások oldalon bármikor lemondhatod. diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index a70015ce67..80dd822f02 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -6588,7 +6588,6 @@ Il tuo abbonamento a Nitro finisce {daysLeft}. Inserisci un metodo di pagamento per continuare a usare la personalizzazione del profilo e molto altro. Scopri di più Tra {daysLeft}, perderai l\'accesso alla personalizzazione del profilo, all\'upload di file di grandi dimensioni, alla condivisione schermo migliorata e a molto altro. - Il tuo accesso a Nitro finisce oggi. Chiudi Conserva Nitro Se ripristini Nitro, riprenderemo ad addebitarti **{price}** con il tuo metodo di pagamento e continueremo a farlo **mensilmente** fino all\'annullamento dell\'abbonamento. Puoi annullare l\'abbonamento quando vuoi dalla schermata Impostazioni. diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 15902fc0ec..22c4e7aa9c 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -6593,7 +6593,6 @@ お客様の Nitro サブスクリプションは{daysLeft}終了します。プロフィールのカスタマイズなどをこれからも利用するには、お支払い方法を追加してください。 詳細 あと {daysLeft}で、プロフィールのカスタマイズ、大容量ファイルのアップロード、高品質な画面共有などがご利用できなくなります。 - Nitro のご利用が本日終了します。 閉じる Nitro を継続 Nitro を再開すると、お客様のお支払い方法への**{price}**のご請求が再開し、サブスクリプションをキャンセルされるまで**毎月**のご請求が継続します。キャンセルは設定ページからいつでもできます。 diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 27c015ef97..0a91b7862e 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -6588,7 +6588,6 @@ Nitro 구독이 {daysLeft} 끝나요. 프로필 맞춤 설정 등을 계속 이용하시려면 결제 수단을 추가하세요. 자세히 알아보기 {daysLeft} 후면 프로필 맞춤 설정, 대용량 파일 업로드, 고품질 화면 공유 등을 이용할 수 없게 돼요. - Nitro 이용이 오늘 종료돼요. 닫기 Nitro 유지하기 Nitro를 다시 이용하시면 구독을 취소할 때까지 선택하신 결제 방식으로 **매월** 구독료 **{price}**(이)가 청구될 거에요. 하지만 설정 페이지에서 언제든지 취소하실 수 있답니다. diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 8082a26763..e69d19aaf2 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -6582,7 +6582,6 @@ Tavo Nitro prenumerata baigiasi {daysLeft}. Kad galėtum ir toliau naudotis profilio tinkinimų ir kitais pranašumais, pridėk mokėjimo būdą. Sužinoti daugiau Po {daysLeft} prarasi prieigą prie profilio tinkinimo, didesnių failų įkėlimo, aukštesnės kokybės ekrano bendrinimo ir kt. - Tavo Nitro prieiga baigiasi šiandien. Atmesti Pasilikti Nitro Jei atkursi Nitro prenumeratą, nuskaičiuosime **{price}** tavo mokėjimo būdu ir šį mokestį nuskaitysime **kas mėnesį**, kol atšauksi prenumeratą. Tačiau gali ją bet kada atšaukti Nustatymų puslapyje. diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index fa93b2f65a..821518bc3a 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -6587,7 +6587,6 @@ Je Nitro-abonnement verloopt {daysLeft}. Voeg een betalingsmethode toe om te blijven profiteren van onder andere profielaanpassing. Meer informatie Je verliest over {daysLeft} toegang tot profielaanpassing, het uploaden van grotere bestanden, beter gedeeld scherm en meer. - Je toegang tot Nitro verloopt vandaag. Afwijzen Nitro behouden Als je opnieuw voor Nitro kiest, zullen we weer **maandelijks** **{price}** afschrijven via de door jou opgegeven betalingsmethode tot je het abonnement opzegt. Je kunt op elk moment opzeggen via je instellingenpagina. diff --git a/app/src/main/res/values-no/strings.xml b/app/src/main/res/values-no/strings.xml index aab8503663..ccca9b69d3 100644 --- a/app/src/main/res/values-no/strings.xml +++ b/app/src/main/res/values-no/strings.xml @@ -6426,7 +6426,6 @@ Nitro-abonnementet ditt avsluttes {daysLeft}. Legg til en betalingsmåte for å fortsatt ha tilgang til profiltilpasning og annet. Mer informasjon Du mister tilpassing av profilen din, opplasting av større filer, bedre skjermdeling og annet om {daysLeft}. - Du mister Nitro-tilgangen i dag. Avvis Behold Nitro Hvis du tar i bruk Nitro igjen, fortsetter vi å belaste betalingsmåten din **{price}** og fortsetter å belaste deg **månedlig** inntil du sier opp abonnementet. Du kan gå til Innstillinger og si opp abonnementet når du vil. diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 6e53ec2927..5c8c531cca 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -6592,7 +6592,6 @@ Twoja subskrypcja Nitro kończy się {daysLeft}. Aby móc nadal korzystać m.in. z możliwości personalizacji profilu, dodaj metodę płatności. Dowiedz się więcej Za {daysLeft} stracisz m.in. dostęp do personalizacji profilu, możliwość przesyłania większych plików oraz większe możliwości w zakresie współdzielenia ekranu. - Twój dostęp do Nitro kończy się dzisiaj. Odrzuć Zachowaj Nitro Jeżeli przywrócisz subskrypcję Nitro, zaczniemy pobierać opłaty zgodnie z wybraną metodą płatności (**{price}**) i będziemy robić to **co miesiąc** aż do momentu anulowania subskrypcji. Można ją anulować w dowolnym momencie na stronie Ustawień. diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index f549dc38c1..42ac580cda 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -6538,7 +6538,6 @@ Sua assinatura Nitro termina em {daysLeft}. Adicione um método de pagamento para continuar usando funções como a personalização de perfil. Saiba mais Você perderá acesso à personalização do perfil, envio de arquivos maiores, compartilhamento de tela melhor, entre outras coisas, em {daysLeft}. - Seu acesso ao Nitro acaba hoje. Ignorar Manter o Nitro Se você reabrir o Nitro, nós voltaremos a cobrar **{price}** do seu método de pagamento **mensalmente** até que você cancele sua assinatura. Você pode cancelá-la a qualquer momento na sua página de Configurações. diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index fa162f5916..ba551e9c74 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -6582,7 +6582,6 @@ Abonamentul Nitro expiră {daysLeft}. Adaugă o metodă de plată pentru a avea în continuare acces la personalizarea profilului și multe altele. Află mai multe În {daysLeft}, vei pierde accesul la personalizarea profilului, la încărcarea fișierelor mai mari, la partajarea ecranului îmbunătățită și la multe altele. - Accesul tău la Nitro se încheie astăzi. Ignoră Păstrează Nitro Dacă reiei abonamentul Nitro, vom începe din nou să percepem **lunar** suma de **{price}** folosindu-ți metoda de plată, până când anulezi abonamentul. Îl poți anula oricând, accesând pagina Setări. diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 577e3dd9c6..9bc8c0f1c3 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -6593,7 +6593,6 @@ Ваша подписка Nitro закончится {daysLeft}. Добавьте способ оплаты, чтобы сохранить доступ к персонализации профиля и другим возможностям. Подробнее Вы потеряете доступ к персонализации профиля, возможности загружать файлы большего размера, более высокому качеству видео при показе экрана и многому другому через {daysLeft}. - Ваша подписка Nitro завершается сегодня. Закрыть Не отменять Nitro Если вы восстановите подписку Nitro, мы возобновим использование вашего способа оплаты (**{price}**) и будем взимать плату **ежемесячно**, пока вы не отмените подписку. Отменить её можно в любое время, зайдя в «Настройки пользователя». diff --git a/app/src/main/res/values-sv-rSE/strings.xml b/app/src/main/res/values-sv-rSE/strings.xml index 6832615535..bc2f536c0e 100644 --- a/app/src/main/res/values-sv-rSE/strings.xml +++ b/app/src/main/res/values-sv-rSE/strings.xml @@ -6430,7 +6430,6 @@ Din Nitro-prenumeration upphör {daysLeft} Lägg till en betalningsmetod för att kunna fortsätta med profilanpassning och annat. Läs mer Om {daysLeft} kommer du att förlora åtkomsten till profilanpassning, större filuppladdningar, bättre skärmdelning och annat. - Din åtkomst till Nitro upphör idag. Avvisa Behåll Nitro Om du återaktiverar Nitro kommer vi att återuppta debiteringen av din betalningsmetod **{price}** och fortsätta att debitera dig **varje månad** tills du säger upp prenumerationen. Du kan avbryta när som helst från din inställningssida. diff --git a/app/src/main/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml index 341a963875..8f712c32fa 100644 --- a/app/src/main/res/values-th/strings.xml +++ b/app/src/main/res/values-th/strings.xml @@ -6587,7 +6587,6 @@ การสมัครสมาชิก Nitro ของคุณกำลังจะหมดอายุลง{daysLeft} เพิ่มวิธีการชำระเงินเพื่อใช้การปรับแต่งโปรไฟล์และอื่น ๆ ต่อ เรียนรู้เพิ่มเติม คุณจะสูญเสียสิทธิ์การเข้าถึงการปรับแต่งโปรไฟล์ การอัปโหลดไฟล์ที่ใหญ่ขึ้น การแบ่งปันหน้าจอที่ดีขึ้น และอื่น ๆ ใน {daysLeft} - สิทธิ์การเข้าถึง Nitro ของคุณจะสิ้นสุดลงวันนี้ ปิด เก็บ Nitro หากคุณกู้คืน Nitro เราจะเรียกเก็บเงินตามวิธีการชำระเงินของคุณ **{price}** และดำเนินการเรียกเก็บเงินคุณต่อเป็น**รายเดือน** จนกว่าคุณจะยกเลิกการเป็นสมาชิก คุณสามารถยกเลิกได้ทุกเมื่อจากหน้าการตั้งค่าของคุณ diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 06d53e1c79..692db0413d 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -6592,7 +6592,6 @@ Nitro aboneliğin {daysLeft} sona eriyor. Profil özelleştirmeleri ve daha fazlasını kullanmaya devam etmek için bir ödeme yöntemi ekle. Daha Fazla Bilgi Edin {daysLeft} içinde profil özelleştirmeleri, daha büyük dosya yükleme, daha iyi ekran paylaşımı gibi birçok özelliğe erişimini kaybedeceksin. - Nitro erişimin bugün sona eriyor. Kapat Nitro\'yu Bırakma Nitro\'yu yeniden etkinleştirirsen ödeme yönteminden **{price}** ücret almaya ve sen aboneliğini iptal edene kadar da **aylık** ücret almaya devam edeceğiz. Ayarlar sayfasından istediğin zaman iptal edebilirsin. diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index da9b34f38d..ec1ae36c37 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -6582,7 +6582,6 @@ Термін дії вашої передплати Nitro спливає {daysLeft}. Додайте спосіб оплати, щоб і далі використовувати персоналізацію профілю та інші вигоди. Дізнатися більше Ви втратите персоналізацію профілю, завантаження більших файлів, кращу якість демонстрації екрана та інші вигоди за {daysLeft}. - Доступ до Nitro завершується сьогодні. Відхилити Зберегти Nitro Якщо ви поновите Nitro, ми через ваш спосіб оплати отримаємо від вас **{price}** та продовжимо знімати цю суму **щомісяця**, доки ви не скасуєте передплату. Ви можете скасувати передплату будь-якої миті на сторінці налаштувань! diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 291027c164..4f8ddbc4ac 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -6576,7 +6576,6 @@ Thêm Thanh Toán Gói đăng ký Nitro của bạn kết thúc vào {daysLeft}. Thêm phương thức thanh toán để tiếp tục sử dụng tùy chỉnh hồ sơ và các tính năng khác. Tìm hiểu thêm - Quyền truy cập Nitro của bạn kết thúc vào hôm nay. Hủy bỏ Giữ lại gói Nitro Nếu bạn khôi phục Nitro, chúng tôi sẽ tiếp tục tính phí phương thức thanh toán của bạn **{price}** và tiếp tục tính phí bạn **hàng tháng** cho đến khi bạn hủy gói đăng ký. Bạn có thể hủy bất kỳ lúc nào từ trang Cài đặt của mình. diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 95dff5fe01..f61f91911a 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -6587,7 +6587,6 @@ 您的 Nitro 订阅将于{daysLeft}到期。添加付款方式,继续使用个人资料自定义及更多特权吧。 了解更多 {daysLeft}后,您将失去个人资料自定义、更大的文件上传尺寸、更好的屏幕分享体验等权限。 - 您的 Nitro 访问权限将于今天到期。 忽略 保留 Nitro 如果您恢复 Nitro,我们将继续从您的付款方式中扣除**{price}**,且依旧**按月**扣除,直至您取消订阅。不过别担心,在“用户设置”页面,您可以随时取消订阅。 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 3c6ba8bd68..2760d9f305 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -6587,7 +6587,6 @@ 您的 Nitro 訂閱將在{daysLeft}結束。只要新增付款方式,就能繼續使用個人資料自訂等功能。 瞭解更多 {daysLeft}後,您將無法使用個人資料自訂、更大的檔案上傳量和更好的畫面分享效能等福利。 - 您的 Nitro 存取權限將在今天結束。 關閉 保留 Nitro 如果您恢復訂閱 Nitro,我們將繼續以您的付款方式收取 **{price}**,並持續**每月**定期向您收費,直到您取消訂閱為止。您可以隨時在「設定」頁面取消訂閱。 diff --git a/app/src/main/res/values/plurals.xml b/app/src/main/res/values/plurals.xml index 215d4bc73c..6a4afed20a 100644 --- a/app/src/main/res/values/plurals.xml +++ b/app/src/main/res/values/plurals.xml @@ -1197,8 +1197,12 @@ in {#} days - {#} day - {#} days + in {#} day + in {#} days + + + in {#} day + in {#} days 1 day diff --git a/app/src/main/res/values/public.xml b/app/src/main/res/values/public.xml index d9c7eb614e..9e71811b31 100644 --- a/app/src/main/res/values/public.xml +++ b/app/src/main/res/values/public.xml @@ -10804,88 +10804,89 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -18015,6424 +18016,6439 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 77408b7d14..5a0d6454a4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1432,7 +1432,7 @@ Select a color Transparency Use Default - b9a001a16f484e74b01aaeb1909e22b7 + 77585dfb50cc4959a2e310a2206bd916 Coming Soon Slash command application {applicationName} {applicationName} application @@ -3508,7 +3508,7 @@ This will send a notification to members that your Stage is live. This will send a notification to members who can see this channel. Server Owner - Applications are paused for the summer. + Applications are currently paused. Which of the following categories best describes your server? Categories Connect your social accounts @@ -3527,7 +3527,7 @@ Do you create content somewhere else? If it\'s not one of the above websites, you can link it here. Do you create content somewhere else? (Optional) - Partner Program applications are currently paused while the team takes a well earned break for the summer. We\'ll start accepting submissions soon as the next season rolls around. Take this extra time to work on your application, and we can’t wait to see you apply for Partnership in the near future! + Partner Program applications are currently paused while the team takes a well earned break. We\'ll start accepting submissions soon as the next season rolls around. Take this extra time to work on your application, and we can’t wait to see you apply for Partnership in the near future! Server Info You\'re a few steps away from being recognized as one of the best servers on Discord! First, we\'ll need a few details about your community. What\'s your community about? @@ -3576,12 +3576,15 @@ You will lose access to {numChannels} exclusive {numChannels} and {numAdditionalBenefits} additional {numAdditionalBenefits} on {subscriptionEndDate}. Nevermind Are you sure you want to cancel? + Canceled Member since + Membership ends Next renewal Monthly Cost Cancel my membership Select a different tier Manage Subscription + Restart my membership Vitae quis facilisi integer nec lobortis et purus. Sed arcu odio Premium Membership Payment Method @@ -3971,6 +3974,8 @@ **Granted** {count} Set the unicode emoji $[**!!{user}!!**](userHook) updated the role $[**!!{target}!!**](targetHook) + Set the channel to **!!{newValue}!!** + Removed the channel $[**!!{user}!!**](userHook) scheduled the event $[**!!{target}!!**](targetHook) $[**!!{user}!!**](userHook) deleted the scheduled event $[**!!{target}!!**](targetHook) Set the description to **!!{newValue}!!** @@ -3978,6 +3983,8 @@ Linked to **Nothing** Linked with a **Stage** Linked with a **Voice Channel** + Set the location to **!!{newValue}!!** + Removed the location With the name **!!{newValue}!!** With a ticket Set the status to **Active** @@ -5917,8 +5924,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 @@ -6699,13 +6706,18 @@ Nevermind, keep Nitro Your **2 free Boosts** and **30%% Boost discount** {boostCount} + Your **30%% Boost discount** Access to **custom emojis** and **stickers** across all of your servers + Access to **custom emojis** across all of your servers An **animated avatar**, **profile banner**, and custom **Discord Tag** An **animated avatar**, **profile banner**, and custom **Discord Tag** (#{discriminator}) + An **animated avatar**, and custom **Discord Tag** (#{discriminator}) + An **animated avatar**, and custom **Discord Tag** Higher **screen share** quality If you cancel, **you will lose these perks:** Are you sure you want to cancel? Bigger **uploads** and **longer messages** + Bigger **uploads** This tag is invalid. Tags must contain 4 digits. When your Nitro subscription ends, your Discord Tag will be randomized. Are you sure you want to change your Discord Tag? Change Discord Tag @@ -7125,13 +7137,16 @@ You’ll lose access to profile customization, bigger file uploads, better screen share, and more {daysLeft}. Manage Plan Your Nitro Classic access ends {daysLeft}. Renew now to keep custom emoji, bigger uploads, and more. - Your Nitro access ends today. Dismiss Keep Nitro If you reinstate Nitro, we’ll resume charging your payment method **{price}** and continue to charge you **monthly** until you cancel the subscription. You can cancel any time from your Settings page. + If you reinstate Nitro Classic, we’ll resume charging your payment method **{price}** and continue to charge you **monthly** until you cancel the subscription. You can cancel any time from your Settings page. If you reinstate Nitro, we’ll resume charging your payment method **{price}** and continue to charge you **yearly** until you cancel the subscription. You can cancel any time from your Settings page. + If you reinstate Nitro Classic, we’ll resume charging your payment method **{price}** and continue to charge you **yearly** until you cancel the subscription. You can cancel any time from your Settings page. If you don’t keep Nitro, **you will lose:** - Your Nitro access ends in {daysLeft}. + If you don’t keep Nitro Classic, **you will lose:** + Your Nitro access ends {daysLeft}. + Your Nitro Classic access ends {daysLeft}. Your grandfathered Nitro subscription is about to be changed to Nitro Classic. If you wish to keep your current perks, including Boosts, upgrade now. Boost Adjustment You are purchasing a plan change. Your Server Boosts are being updated accordingly.