116.2 - Alpha (116202)

This commit is contained in:
Juby210 2022-02-17 09:52:29 +00:00
parent 705cf6991b
commit 0afcaaf121
21 changed files with 9374 additions and 9194 deletions

View File

@ -10,8 +10,8 @@ android {
applicationId 'com.discord'
minSdkVersion 21
targetSdkVersion 30
versionCode 116201
versionName "116.1 - Alpha"
versionCode 116202
versionName "116.2 - Alpha"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="116201" android:versionName="116.1 - Alpha" android:installLocation="auto" android:compileSdkVersion="30" android:compileSdkVersionCodename="11" package="com.discord" platformBuildVersionCode="30" platformBuildVersionName="11">
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="116202" android:versionName="116.2 - Alpha" android:installLocation="auto" android:compileSdkVersion="30" android:compileSdkVersionCodename="11" package="com.discord" platformBuildVersionCode="30" platformBuildVersionName="11">
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="30"/>
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>

View File

@ -0,0 +1,26 @@
package com.discord.analytics.generated.events.network_action;
import com.discord.analytics.generated.traits.TrackBase;
import com.discord.analytics.generated.traits.TrackBaseReceiver;
import com.discord.analytics.generated.traits.TrackLocationMetadata;
import com.discord.analytics.generated.traits.TrackLocationMetadataReceiver;
import com.discord.analytics.generated.traits.TrackNetworkMetadata;
import com.discord.analytics.generated.traits.TrackNetworkMetadataReceiver;
import com.discord.api.science.AnalyticsSchema;
/* compiled from: TrackNetworkActionAuthorizePayment.kt */
public final class TrackNetworkActionAuthorizePayment implements AnalyticsSchema, TrackBaseReceiver, TrackLocationMetadataReceiver, TrackNetworkMetadataReceiver {
private final transient String analyticsSchemaTypeName = "network_action_authorize_payment";
private TrackBase trackBase;
private TrackLocationMetadata trackLocationMetadata;
private TrackNetworkMetadata trackNetworkMetadata;
@Override // com.discord.analytics.generated.traits.TrackNetworkMetadataReceiver
public void a(TrackNetworkMetadata trackNetworkMetadata) {
this.trackNetworkMetadata = trackNetworkMetadata;
}
@Override // com.discord.api.science.AnalyticsSchema
public String b() {
return this.analyticsSchemaTypeName;
}
}

View File

@ -0,0 +1,6 @@
package com.discord.analytics.generated.events.network_action;
import com.discord.api.science.AnalyticsSchema;
/* compiled from: TrackNetworkActionAuthorizePayment.kt */
public interface TrackNetworkActionAuthorizePaymentReceiver extends AnalyticsSchema {
}

View File

@ -28,5 +28,6 @@ public enum GuildFeature {
ROLE_ICONS,
ANIMATED_BANNER,
TEXT_IN_VOICE_ENABLED,
HAS_DIRECTORY_ENTRY
HAS_DIRECTORY_ENTRY,
EXPOSED_TO_BOOSTING_TIERS_EXPERIMENT
}

View File

@ -814,6 +814,10 @@ public final class Message {
return copy$default(this, o, g, m, e, i, C, j, D, r, t, s2, d, k, x2, v, w, F, E, a, b2, c, u, l, A, z2, y2, p, B, h, f, null, false, null, null, null, null, null, null, -1073741824, 63, null);
}
public final boolean shouldShowReplyPreviewAsAttachment() {
return (this.activity == null || this.application == null) ? false : true;
}
public final com.discord.api.message.Message synthesizeApiMessage() {
return new com.discord.api.message.Message(this.f2721id, this.channelId, this.author, this.content, this.timestamp, this.editedTimestamp, this.tts, this.mentionEveryone, this.mentions, this.mentionRoles, this.attachments, this.embeds, this.reactions, this.nonce, this.pinned, this.webhookId, this.type, this.activity, this.application, this.applicationId, this.messageReference, this.flags, this.stickers, this.stickerItems, this.referencedMessage, this.interaction, this.thread, this.components, this.call, this.guildId, null, null, -1073741824);
}

View File

@ -4,8 +4,11 @@ public final class GuildConstantsKt {
public static final int FILE_SIZE_STANDARD_8MB = 8;
public static final int GLOBAL_SEARCH_LARGE_GUILD_THRESHOLD = 200;
public static final int GUILD_TIER_1_BOOSTS = 2;
public static final int GUILD_TIER_1_BOOSTS_EXP = 2;
public static final int GUILD_TIER_2_BOOSTS = 7;
public static final int GUILD_TIER_2_BOOSTS_EXP = 5;
public static final int GUILD_TIER_3_BOOSTS = 14;
public static final int GUILD_TIER_3_BOOSTS_EXP = 7;
public static final int INVITE_LARGE_GUILD_THRESHOLD = 200;
public static final int MAX_GUILD_MEMBERS_NOTIFY_ALL_MESSAGES = 2500;
public static final int PREMIUM_TIER_1_FILE_SIZE_50MB = 50;

View File

@ -1,13 +1,18 @@
package com.discord.utilities.premium;
import com.discord.api.guild.GuildFeature;
import com.discord.app.AppLog;
import com.discord.models.domain.ModelSubscription;
import com.discord.models.domain.premium.SubscriptionPlanType;
import com.discord.models.experiments.domain.Experiment;
import com.discord.models.guild.Guild;
import com.discord.stores.StoreExperiments;
import com.discord.stores.StoreGuildBoost;
import com.discord.stores.StoreGuilds;
import com.discord.stores.StoreStream;
import com.discord.utilities.analytics.Traits;
import com.discord.utilities.logging.Logger;
import com.discord.utilities.rest.RestAPI;
import d0.t.n;
import d0.t.u;
import d0.z.d.m;
import j0.p.a;
@ -33,24 +38,61 @@ public final class GuildBoostUtils {
private GuildBoostUtils() {
}
private final int getCurrentTierSubs(int i) {
public static /* synthetic */ int calculatePercentToNextTier$default(GuildBoostUtils guildBoostUtils, long j, int i, int i2, StoreExperiments storeExperiments, StoreGuilds storeGuilds, int i3, Object obj) {
if ((i3 & 8) != 0) {
storeExperiments = StoreStream.Companion.getExperiments();
}
if ((i3 & 16) != 0) {
storeGuilds = StoreStream.Companion.getGuilds();
}
return guildBoostUtils.calculatePercentToNextTier(j, i, i2, storeExperiments, storeGuilds);
}
public static /* synthetic */ int calculateTotalProgress$default(GuildBoostUtils guildBoostUtils, long j, int i, int i2, StoreExperiments storeExperiments, StoreGuilds storeGuilds, int i3, Object obj) {
if ((i3 & 8) != 0) {
storeExperiments = StoreStream.Companion.getExperiments();
}
if ((i3 & 16) != 0) {
storeGuilds = StoreStream.Companion.getGuilds();
}
return guildBoostUtils.calculateTotalProgress(j, i, i2, storeExperiments, storeGuilds);
}
public static /* synthetic */ int getBoostTier$default(GuildBoostUtils guildBoostUtils, long j, int i, StoreExperiments storeExperiments, StoreGuilds storeGuilds, int i2, Object obj) {
if ((i2 & 4) != 0) {
storeExperiments = StoreStream.Companion.getExperiments();
}
if ((i2 & 8) != 0) {
storeGuilds = StoreStream.Companion.getGuilds();
}
return guildBoostUtils.getBoostTier(j, i, storeExperiments, storeGuilds);
}
public static /* synthetic */ int getBoostsRequiredForTier$default(GuildBoostUtils guildBoostUtils, long j, int i, StoreExperiments storeExperiments, StoreGuilds storeGuilds, int i2, Object obj) {
if ((i2 & 4) != 0) {
storeExperiments = StoreStream.Companion.getExperiments();
}
if ((i2 & 8) != 0) {
storeGuilds = StoreStream.Companion.getGuilds();
}
return guildBoostUtils.getBoostsRequiredForTier(j, i, storeExperiments, storeGuilds);
}
private final int getCurrentTierSubs(boolean z2, int i) {
if (i == 1) {
return 2;
}
if (i != 2) {
return i != 3 ? 0 : 14;
if (i == 2) {
return z2 ? 5 : 7;
}
return 7;
if (i != 3) {
return 0;
}
return z2 ? 7 : 14;
}
private final int getNextTierSubs(int i) {
if (i == 1) {
return 7;
}
if (i != 2) {
return i != 3 ? 2 : 0;
}
return 14;
private final int getNextTierSubs(boolean z2, int i) {
return i != 1 ? i != 2 ? i != 3 ? 2 : 0 : z2 ? 7 : 14 : z2 ? 5 : 7;
}
private final Observable<ModifyGuildBoostSlotResult> modifyGuildBoostSlot(RestAPI restAPI, long j, ModelSubscription modelSubscription, boolean z2, StoreGuildBoost storeGuildBoost) {
@ -59,73 +101,77 @@ public final class GuildBoostUtils {
return z3;
}
/* JADX DEBUG: Multi-variable search result rejected for r5v8, resolved type: java.lang.Object */
/* JADX WARN: Multi-variable type inference failed */
public final List<ModelSubscription.SubscriptionAdditionalPlan> calculateAdditionalPlansWithGuildBoostAdjustment(ModelSubscription modelSubscription, int i) {
List<ModelSubscription.SubscriptionAdditionalPlan> list;
Object obj;
boolean z2;
m.checkNotNullParameter(modelSubscription, Traits.Payment.Type.SUBSCRIPTION);
ModelSubscription.SubscriptionRenewalMutations renewalMutations = modelSubscription.getRenewalMutations();
if (renewalMutations == null) {
list = modelSubscription.getPremiumAdditionalPlans();
} else {
list = renewalMutations.getPremiumAdditionalPlans();
if (list == null) {
list = n.emptyList();
List<ModelSubscription.SubscriptionAdditionalPlan> premiumAdditionalPlans = renewalMutations == null ? modelSubscription.getPremiumAdditionalPlans() : renewalMutations.getPremiumAdditionalPlans();
Iterator<T> it = premiumAdditionalPlans.iterator();
while (true) {
if (!it.hasNext()) {
obj = null;
break;
}
obj = it.next();
ModelSubscription.SubscriptionAdditionalPlan subscriptionAdditionalPlan = (ModelSubscription.SubscriptionAdditionalPlan) obj;
if (subscriptionAdditionalPlan.getPlanId() == SubscriptionPlanType.PREMIUM_GUILD_MONTH.getPlanId() || subscriptionAdditionalPlan.getPlanId() == SubscriptionPlanType.PREMIUM_GUILD_YEAR.getPlanId()) {
z2 = true;
continue;
} else {
z2 = false;
continue;
}
if (z2) {
break;
}
}
ModelSubscription.SubscriptionAdditionalPlan subscriptionAdditionalPlan = null;
if (list != null) {
Iterator<T> it = list.iterator();
while (true) {
if (!it.hasNext()) {
break;
}
Object next = it.next();
ModelSubscription.SubscriptionAdditionalPlan subscriptionAdditionalPlan2 = (ModelSubscription.SubscriptionAdditionalPlan) next;
if (subscriptionAdditionalPlan2.getPlanId() == SubscriptionPlanType.PREMIUM_GUILD_MONTH.getPlanId() || subscriptionAdditionalPlan2.getPlanId() == SubscriptionPlanType.PREMIUM_GUILD_YEAR.getPlanId()) {
z2 = true;
continue;
} else {
z2 = false;
continue;
}
if (z2) {
subscriptionAdditionalPlan = next;
break;
}
}
subscriptionAdditionalPlan = subscriptionAdditionalPlan;
}
int quantity = (subscriptionAdditionalPlan != null ? subscriptionAdditionalPlan.getQuantity() : 0) + i;
if (quantity < 0 || subscriptionAdditionalPlan == null) {
ModelSubscription.SubscriptionAdditionalPlan subscriptionAdditionalPlan2 = (ModelSubscription.SubscriptionAdditionalPlan) obj;
int quantity = (subscriptionAdditionalPlan2 != null ? subscriptionAdditionalPlan2.getQuantity() : 0) + i;
if (quantity < 0 || subscriptionAdditionalPlan2 == null) {
AppLog appLog = AppLog.g;
Logger.e$default(appLog, "Error calculating additional_plans adjustment, new sub count:" + quantity, null, null, 6, null);
return modelSubscription.getPremiumAdditionalPlans();
}
ArrayList arrayList = new ArrayList();
for (Object obj : list) {
ModelSubscription.SubscriptionAdditionalPlan subscriptionAdditionalPlan3 = (ModelSubscription.SubscriptionAdditionalPlan) obj;
for (Object obj2 : premiumAdditionalPlans) {
ModelSubscription.SubscriptionAdditionalPlan subscriptionAdditionalPlan3 = (ModelSubscription.SubscriptionAdditionalPlan) obj2;
if ((subscriptionAdditionalPlan3.getPlanId() == SubscriptionPlanType.PREMIUM_GUILD_MONTH.getPlanId() || subscriptionAdditionalPlan3.getPlanId() == SubscriptionPlanType.PREMIUM_GUILD_YEAR.getPlanId()) ? false : true) {
arrayList.add(obj);
arrayList.add(obj2);
}
}
return quantity == 0 ? arrayList : u.plus((Collection) arrayList, (Iterable) d0.t.m.listOf(new ModelSubscription.SubscriptionAdditionalPlan(subscriptionAdditionalPlan.getPlanId(), quantity)));
return quantity == 0 ? arrayList : u.plus((Collection) arrayList, (Iterable) d0.t.m.listOf(new ModelSubscription.SubscriptionAdditionalPlan(subscriptionAdditionalPlan2.getPlanId(), quantity)));
}
public final int calculatePercentToNextTier(int i, int i2) {
public final int calculatePercentToNextTier(long j, int i, int i2, StoreExperiments storeExperiments, StoreGuilds storeGuilds) {
Guild guild;
m.checkNotNullParameter(storeExperiments, "storeExperiments");
m.checkNotNullParameter(storeGuilds, "storeGuilds");
if (i >= 3) {
return 100;
}
return d0.a0.a.roundToInt((((float) (i2 - getCurrentTierSubs(i))) / ((float) getNextTierSubs(i))) * ((float) 100));
boolean z2 = true;
Experiment guildExperiment = storeExperiments.getGuildExperiment("2022-02_boosting_tiers", j, true);
if (guildExperiment == null || guildExperiment.getBucket() != 1 || (guild = storeGuilds.getGuild(j)) == null || !guild.hasFeature(GuildFeature.EXPOSED_TO_BOOSTING_TIERS_EXPERIMENT)) {
z2 = false;
}
return d0.a0.a.roundToInt((((float) (i2 - getCurrentTierSubs(z2, i))) / ((float) getNextTierSubs(z2, i))) * ((float) 100));
}
public final int calculateTotalProgress(int i, int i2) {
public final int calculateTotalProgress(long j, int i, int i2, StoreExperiments storeExperiments, StoreGuilds storeGuilds) {
Guild guild;
m.checkNotNullParameter(storeExperiments, "storeExperiments");
m.checkNotNullParameter(storeGuilds, "storeGuilds");
if (i >= 3) {
return 100;
}
int nextTierSubs = getNextTierSubs(i);
int currentTierSubs = getCurrentTierSubs(i);
boolean z2 = true;
Experiment guildExperiment = storeExperiments.getGuildExperiment("2022-02_boosting_tiers", j, true);
if (guildExperiment == null || guildExperiment.getBucket() != 1 || (guild = storeGuilds.getGuild(j)) == null || !guild.hasFeature(GuildFeature.EXPOSED_TO_BOOSTING_TIERS_EXPERIMENT)) {
z2 = false;
}
int nextTierSubs = getNextTierSubs(z2, i);
int currentTierSubs = getCurrentTierSubs(z2, i);
return d0.a0.a.roundToInt(((((float) (i2 - currentTierSubs)) / ((float) (nextTierSubs - currentTierSubs))) * 33.3f) + (((float) i) * 33.3f));
}
@ -136,14 +182,49 @@ public final class GuildBoostUtils {
return modifyGuildBoostSlot(restAPI, j, modelSubscription, true, storeGuildBoost);
}
public final int getBoostTier(int i) {
if (i >= 14) {
public final int getBoostTier(long j, int i, StoreExperiments storeExperiments, StoreGuilds storeGuilds) {
Guild guild;
m.checkNotNullParameter(storeExperiments, "storeExperiments");
m.checkNotNullParameter(storeGuilds, "storeGuilds");
Experiment guildExperiment = storeExperiments.getGuildExperiment("2022-02_boosting_tiers", j, true);
if (guildExperiment != null && guildExperiment.getBucket() == 1 && (guild = storeGuilds.getGuild(j)) != null && guild.hasFeature(GuildFeature.EXPOSED_TO_BOOSTING_TIERS_EXPERIMENT)) {
if (i >= 7) {
return 3;
}
if (i >= 5) {
return 2;
}
return i >= 2 ? 1 : 0;
} else if (i >= 14) {
return 3;
} else {
if (i >= 7) {
return 2;
}
return i >= 2 ? 1 : 0;
}
if (i >= 7) {
}
public final int getBoostsRequiredForTier(long j, int i, StoreExperiments storeExperiments, StoreGuilds storeGuilds) {
Guild guild;
m.checkNotNullParameter(storeExperiments, "storeExperiments");
m.checkNotNullParameter(storeGuilds, "storeGuilds");
Experiment guildExperiment = storeExperiments.getGuildExperiment("2022-02_boosting_tiers", j, true);
boolean z2 = guildExperiment != null && guildExperiment.getBucket() == 1 && (guild = storeGuilds.getGuild(j)) != null && guild.hasFeature(GuildFeature.EXPOSED_TO_BOOSTING_TIERS_EXPERIMENT);
if (i == 1) {
return 2;
}
return i >= 2 ? 1 : 0;
if (i != 2) {
if (i != 3) {
return 0;
}
if (!z2) {
return 14;
}
} else if (z2) {
return 5;
}
return 7;
}
public final Observable<ModifyGuildBoostSlotResult> uncancelGuildBoostSlot(RestAPI restAPI, long j, ModelSubscription modelSubscription, StoreGuildBoost storeGuildBoost) {

View File

@ -57,9 +57,9 @@ public final class GuildBoostConfirmationView extends CardView {
public final void b(Guild guild, int i) {
m.checkNotNullParameter(guild, "guild");
int boostTier = GuildBoostUtils.INSTANCE.getBoostTier(guild.getPremiumSubscriptionCount() + i);
int boostTier$default = GuildBoostUtils.getBoostTier$default(GuildBoostUtils.INSTANCE, guild.getId(), guild.getPremiumSubscriptionCount() + i, null, null, 12, null);
boolean z2 = true;
char c = boostTier > guild.getPremiumTier() ? 1 : boostTier < guild.getPremiumTier() ? (char) 2 : 3;
char c = boostTier$default > guild.getPremiumTier() ? 1 : boostTier$default < guild.getPremiumTier() ? (char) 2 : 3;
SimpleDraweeView simpleDraweeView = this.j.f122b;
m.checkNotNullExpressionValue(simpleDraweeView, "binding.guildBoostConfirmationAvatar");
IconUtils.setIcon$default(simpleDraweeView, IconUtils.getForGuild$default(guild, null, false, null, 14, null), 0, (Function1) null, (MGImages.ChangeDetector) null, 28, (Object) null);
@ -92,10 +92,10 @@ public final class GuildBoostConfirmationView extends CardView {
ColorCompatKt.tintWithColorResource(imageView2, i3);
Chip chip4 = this.j.e;
m.checkNotNullExpressionValue(chip4, "binding.guildBoostConfirmationLevelInfoUpgrade");
chip4.setChipIcon(ContextCompat.getDrawable(getContext(), c(boostTier)));
chip4.setChipIcon(ContextCompat.getDrawable(getContext(), c(boostTier$default)));
Chip chip5 = this.j.e;
m.checkNotNullExpressionValue(chip5, "binding.guildBoostConfirmationLevelInfoUpgrade");
chip5.setText(d(boostTier));
chip5.setText(d(boostTier$default));
}
}

View File

@ -43,7 +43,7 @@ public final class GuildBoostProgressView extends FrameLayout {
throw new NullPointerException("Missing required view with ID: ".concat(inflate.getResources().getResourceName(i)));
}
public final void a(int i, int i2) {
public final void a(long j, int i, int i2) {
ImageView imageView = this.j.f201b;
int i3 = 0;
if (i == 0) {
@ -63,6 +63,6 @@ public final class GuildBoostProgressView extends FrameLayout {
textView.setText(i != 0 ? i != 1 ? i != 2 ? i != 3 ? "" : getContext().getString(R.string.premium_guild_tier_3) : getContext().getString(R.string.premium_guild_tier_2) : getContext().getString(R.string.premium_guild_tier_1) : getContext().getString(R.string.premium_guild_header_badge_no_tier));
ProgressBar progressBar = this.j.d;
m.checkNotNullExpressionValue(progressBar, "binding.progressProgress");
progressBar.setProgress(GuildBoostUtils.INSTANCE.calculatePercentToNextTier(i, i2));
progressBar.setProgress(GuildBoostUtils.calculatePercentToNextTier$default(GuildBoostUtils.INSTANCE, j, i, i2, null, null, 24, null));
}
}

View File

@ -25,6 +25,7 @@ import com.discord.api.permission.Permission;
import com.discord.api.role.GuildRole;
import com.discord.api.user.User;
import com.discord.api.utcdatetime.UtcDateTime;
import com.discord.app.AppLog;
import com.discord.models.member.GuildMember;
import com.discord.models.message.Message;
import com.discord.models.user.CoreUser;
@ -37,6 +38,7 @@ import com.discord.utilities.color.ColorCompat;
import com.discord.utilities.guilds.PublicGuildUtils;
import com.discord.utilities.icon.IconUtils;
import com.discord.utilities.images.MGImages;
import com.discord.utilities.logging.Logger;
import com.discord.utilities.message.MessageUtils;
import com.discord.utilities.permissions.PermissionUtils;
import com.discord.utilities.textprocessing.DiscordParser;
@ -398,8 +400,11 @@ public final class WidgetChatListAdapterItemMessage extends WidgetChatListItem {
configureReplyLayoutDirection();
} else if (message2.hasStickers()) {
configureReplyContentWithResourceId(R.string.reply_quote_sticker_mobile);
} else if (message2.hasAttachments() || message2.hasEmbeds()) {
} else if (message2.hasAttachments() || message2.shouldShowReplyPreviewAsAttachment() || message2.hasEmbeds()) {
configureReplyContentWithResourceId(R.string.reply_quote_no_text_content_mobile);
} else {
AppLog appLog = AppLog.g;
Logger.e$default(appLog, "Unhandled reply preview: " + messageEntry2, null, null, 6, null);
}
}
}

View File

@ -40,6 +40,7 @@ import com.discord.utilities.drawable.DrawableCompat;
import com.discord.utilities.icon.IconUtils;
import com.discord.utilities.images.MGImages;
import com.discord.utilities.permissions.PermissionUtils;
import com.discord.utilities.premium.GuildBoostUtils;
import com.discord.utilities.premium.PremiumUtils;
import com.discord.utilities.resources.StringResourceUtilsKt;
import com.discord.utilities.rx.ObservableExtensionsKt;
@ -423,10 +424,10 @@ public final class WidgetServerSettingsOverview extends AppFragment {
FloatingActionButton floatingActionButton = getBinding().h.f;
m.checkNotNullExpressionValue(floatingActionButton, "binding.uploadBanner.uploadBannerFab");
ViewExtensions.setEnabledAlpha$default(floatingActionButton, false, 0.0f, 2, null);
int premiumSubscriptionCount = 7 - guild.getPremiumSubscriptionCount();
int boostsRequiredForTier$default = GuildBoostUtils.getBoostsRequiredForTier$default(GuildBoostUtils.INSTANCE, guild.getId(), 2, null, null, 12, null) - guild.getPremiumSubscriptionCount();
Resources resources2 = getResources();
m.checkNotNullExpressionValue(resources2, "resources");
CharSequence quantityString = StringResourceUtilsKt.getQuantityString(resources2, requireContext(), (int) R.plurals.guild_settings_overview_boost_unlock_boosts, premiumSubscriptionCount, Integer.valueOf(premiumSubscriptionCount));
CharSequence quantityString = StringResourceUtilsKt.getQuantityString(resources2, requireContext(), (int) R.plurals.guild_settings_overview_boost_unlock_boosts, boostsRequiredForTier$default, Integer.valueOf(boostsRequiredForTier$default));
TextView textView7 = getBinding().h.i;
m.checkNotNullExpressionValue(textView7, "binding.uploadBanner.uploadBannerUnlock");
ViewExtensions.setTextAndVisibilityBy(textView7, b.k(this, R.string.guild_settings_overview_boost_unlock, new Object[]{quantityString}, null, 4));
@ -586,10 +587,10 @@ public final class WidgetServerSettingsOverview extends AppFragment {
FloatingActionButton floatingActionButton = getBinding().i.c;
m.checkNotNullExpressionValue(floatingActionButton, "binding.uploadSplash.ser…gsOverviewUploadSplashFab");
ViewExtensions.setEnabledAlpha$default(floatingActionButton, false, 0.0f, 2, null);
int premiumSubscriptionCount = 2 - guild.getPremiumSubscriptionCount();
int boostsRequiredForTier$default = GuildBoostUtils.getBoostsRequiredForTier$default(GuildBoostUtils.INSTANCE, guild.getId(), 1, null, null, 12, null) - guild.getPremiumSubscriptionCount();
Resources resources2 = getResources();
m.checkNotNullExpressionValue(resources2, "resources");
CharSequence quantityString = StringResourceUtilsKt.getQuantityString(resources2, requireContext(), (int) R.plurals.guild_settings_overview_boost_unlock_boosts, premiumSubscriptionCount, Integer.valueOf(premiumSubscriptionCount));
CharSequence quantityString = StringResourceUtilsKt.getQuantityString(resources2, requireContext(), (int) R.plurals.guild_settings_overview_boost_unlock_boosts, boostsRequiredForTier$default, Integer.valueOf(boostsRequiredForTier$default));
TextView textView7 = getBinding().i.h;
m.checkNotNullExpressionValue(textView7, "binding.uploadSplash.uploadSplashUnlock");
ViewExtensions.setTextAndVisibilityBy(textView7, b.k(this, R.string.guild_settings_overview_boost_unlock, new Object[]{quantityString}, null, 4));

View File

@ -15,6 +15,7 @@ import com.discord.utilities.color.ColorCompat;
import com.discord.utilities.drawable.DrawableCompat;
import com.discord.utilities.guilds.GuildUtilsKt;
import com.discord.utilities.mg_recycler.MGRecyclerAdapter;
import com.discord.utilities.premium.GuildBoostUtils;
import com.discord.utilities.premium.PremiumUtils;
import com.discord.utilities.resources.StringResourceUtilsKt;
import com.discord.utilities.threads.ThreadUtils;
@ -75,15 +76,15 @@ public final class GuildBoostPerkView extends RelativeLayout {
this.binding.c.addOnItemTouchListener(new GuildBoostPerkView$initialize$1());
}
/* JADX DEBUG: Can't convert new array creation: APUT found in different block: 0x030b: APUT
(r1v9 com.discord.widgets.servers.guildboost.GuildBoostPerkViewAdapter$GuildBoostPerkViewListItem[])
/* JADX DEBUG: Can't convert new array creation: APUT found in different block: 0x030a: APUT
(r2v18 com.discord.widgets.servers.guildboost.GuildBoostPerkViewAdapter$GuildBoostPerkViewListItem[])
(6 ??[int, float, short, byte, char])
(r3v16 com.discord.widgets.servers.guildboost.GuildBoostPerkViewAdapter$GuildBoostPerkViewListItem)
(r3v21 com.discord.widgets.servers.guildboost.GuildBoostPerkViewAdapter$GuildBoostPerkViewListItem)
*/
/* JADX DEBUG: Can't convert new array creation: APUT found in different block: 0x041e: APUT
(r1v4 com.discord.widgets.servers.guildboost.GuildBoostPerkViewAdapter$GuildBoostPerkViewListItem[])
/* JADX DEBUG: Can't convert new array creation: APUT found in different block: 0x041d: APUT
(r2v16 com.discord.widgets.servers.guildboost.GuildBoostPerkViewAdapter$GuildBoostPerkViewListItem[])
(6 ??[int, float, short, byte, char])
(r14v1 com.discord.widgets.servers.guildboost.GuildBoostPerkViewAdapter$GuildBoostPerkViewListItem)
(r8v2 com.discord.widgets.servers.guildboost.GuildBoostPerkViewAdapter$GuildBoostPerkViewListItem)
*/
public final void configure(int i, int i2, long j) {
List list;
@ -94,15 +95,15 @@ public final class GuildBoostPerkView extends RelativeLayout {
} else {
this.binding.d.setBackgroundColor(ColorCompat.getThemedColor(this, (int) R.attr.primary_700));
}
int i3 = i != 1 ? i != 2 ? i != 3 ? 0 : 14 : 7 : 2;
int boostsRequiredForTier$default = GuildBoostUtils.getBoostsRequiredForTier$default(GuildBoostUtils.INSTANCE, j, i, null, null, 12, null);
TextView textView = this.binding.f;
m.checkNotNullExpressionValue(textView, "binding.perksLevelHeaderText");
GuildBoostPerkViewAdapter.GuildBoostPerkViewListItem guildBoostPerkViewListItem = null;
b.n(textView, i != 1 ? i != 2 ? i != 3 ? 0 : R.string.guild_settings_guild_premium_perks_title_tier_3 : R.string.guild_settings_guild_premium_perks_title_tier_2 : R.string.guild_settings_guild_premium_perks_title_tier_1, new Object[0], null, 4);
int i4 = i != 1 ? i != 2 ? i != 3 ? 0 : z2 ? R.drawable.ic_perk_tier_3_boosted : R.drawable.ic_perk_tier_3_unboosted : z2 ? R.drawable.ic_perk_tier_2_boosted : R.drawable.ic_perk_tier_2_unboosted : z2 ? R.drawable.ic_perk_tier_1_boosted : R.drawable.ic_perk_tier_1_unboosted;
int i3 = i != 1 ? i != 2 ? i != 3 ? 0 : z2 ? R.drawable.ic_perk_tier_3_boosted : R.drawable.ic_perk_tier_3_unboosted : z2 ? R.drawable.ic_perk_tier_2_boosted : R.drawable.ic_perk_tier_2_unboosted : z2 ? R.drawable.ic_perk_tier_1_boosted : R.drawable.ic_perk_tier_1_unboosted;
TextView textView2 = this.binding.f;
m.checkNotNullExpressionValue(textView2, "binding.perksLevelHeaderText");
DrawableCompat.setCompoundDrawablesCompat$default(textView2, i4, 0, 0, 0, 14, (Object) null);
DrawableCompat.setCompoundDrawablesCompat$default(textView2, i3, 0, 0, 0, 14, (Object) null);
this.binding.f.setTextColor(z2 ? ColorCompat.getColor(getContext(), (int) R.color.white) : ColorCompat.getThemedColor(getContext(), (int) R.attr.primary_300));
TextView textView3 = this.binding.e;
m.checkNotNullExpressionValue(textView3, "binding.perksLevelHeaderBoosts");
@ -110,7 +111,7 @@ public final class GuildBoostPerkView extends RelativeLayout {
m.checkNotNullExpressionValue(resources, "resources");
Context context = getContext();
m.checkNotNullExpressionValue(context, "context");
textView3.setText(StringResourceUtilsKt.getQuantityString(resources, context, (int) R.plurals.guild_settings_premium_guild_tier_requirement_required, i3, Integer.valueOf(i3)));
textView3.setText(StringResourceUtilsKt.getQuantityString(resources, context, (int) R.plurals.guild_settings_premium_guild_tier_requirement_required, boostsRequiredForTier$default, Integer.valueOf(boostsRequiredForTier$default)));
TextView textView4 = this.binding.e;
m.checkNotNullExpressionValue(textView4, "binding.perksLevelHeaderBoosts");
textView4.setVisibility(z2 ^ true ? 0 : 8);

View File

@ -238,10 +238,10 @@ public final class WidgetGuildBoost extends AppFragment {
}
}
private final void configureProgressBar(int i, int i2) {
private final void configureProgressBar(long j, int i, int i2) {
ProgressBar progressBar = getBinding().l.f194b;
m.checkNotNullExpressionValue(progressBar, "binding.progress.boostBarProgressBar");
progressBar.setProgress(GuildBoostUtils.INSTANCE.calculateTotalProgress(i, i2));
progressBar.setProgress(GuildBoostUtils.calculateTotalProgress$default(GuildBoostUtils.INSTANCE, j, i, i2, null, null, 24, null));
ProgressBar progressBar2 = getBinding().l.f194b;
m.checkNotNullExpressionValue(progressBar2, "binding.progress.boostBarProgressBar");
boolean z2 = false;
@ -288,7 +288,7 @@ public final class WidgetGuildBoost extends AppFragment {
int premiumTier = loaded.getGuild().getPremiumTier();
int premiumSubscriptionCount = loaded.getGuild().getPremiumSubscriptionCount();
configureToolbar(loaded.getGuild().getName());
configureProgressBar(premiumTier, premiumSubscriptionCount);
configureProgressBar(loaded.getGuild().getId(), premiumTier, premiumSubscriptionCount);
configureViewpager(premiumTier, premiumSubscriptionCount);
getBinding().e.a(loaded.getMeUser().getPremiumTier(), new WidgetGuildBoost$configureUI$2(this));
getBinding().f.a(loaded.getMeUser().getPremiumTier(), false);

View File

@ -346,7 +346,7 @@ public final class WidgetSettings extends AppFragment implements OnTabSelectedLi
TextView textView = binding.f;
m.checkNotNullExpressionValue(textView, "appInfoHeader");
String string = getString(R.string.app_information);
textView.setText(string + " - 116.1 - Alpha (116201)");
textView.setText(string + " - 116.2 - Alpha (116202)");
binding.B.setOnClickListener(new WidgetSettings$onViewBound$$inlined$with$lambda$3(this));
binding.u.setOnClickListener(WidgetSettings$onViewBound$1$5.INSTANCE);
binding.q.setOnClickListener(WidgetSettings$onViewBound$1$6.INSTANCE);

View File

@ -76,7 +76,7 @@ public final class SettingsGuildBoostSampleGuildAdapter extends MGRecyclerAdapte
TextView textView2 = this.binding.f2200b;
m.checkNotNullExpressionValue(textView2, "binding.boostedSampleGuildCount");
textView2.setText(StringResourceUtilsKt.getI18nPluralString(a.x(this.itemView, "itemView", "itemView.context"), R.plurals.premium_guild_subscription_available_numSubscriptions, premiumSubscriptionCount, Integer.valueOf(premiumSubscriptionCount)));
this.binding.e.a(item.getGuild().getPremiumTier(), premiumSubscriptionCount);
this.binding.e.a(item.getGuild().getId(), item.getGuild().getPremiumTier(), premiumSubscriptionCount);
this.itemView.setOnClickListener(new SettingsGuildBoostSampleGuildAdapter$GuildListItem$onConfigure$1(this, item));
}
}

View File

@ -286,7 +286,7 @@ public final class WidgetSettingsGuildBoostSubscriptionAdapter extends MGRecycle
TextView textView2 = this.binding.e;
m.checkNotNullExpressionValue(textView2, "binding.boostedSampleGuildCount");
textView2.setText(b.h(context, R.string.premium_guild_subscription_guild_subsription_subtitle, new Object[]{i18nPluralString}, null, 4));
this.binding.d.a(guildItem.getGuild().getPremiumTier(), guildItem.getGuild().getPremiumSubscriptionCount());
this.binding.d.a(guildItem.getGuild().getId(), guildItem.getGuild().getPremiumTier(), guildItem.getGuild().getPremiumSubscriptionCount());
return;
}
}

View File

@ -852,6 +852,7 @@
<string name="beta">Beta</string>
<string name="bg">Bulgarian</string>
<string name="billing">Billing</string>
<string name="billing_accept_terms_paid_services_tooltip">Accept the Terms of Service and Paid Services Terms to continue</string>
<string name="billing_accept_terms_tooltip">Accept the Terms of Service to continue</string>
<string name="billing_account_credit">Account Credit</string>
<string name="billing_account_credit_description">When you accept a gift while you have a running subscription, or accept a gift that differs from your current subscription, it will appear here as credit.</string>
@ -919,7 +920,9 @@
<string name="billing_is_gift_purchase">Is this a gift?</string>
<string name="billing_legal_mumbo_jumbo">Legal Mumbo Jumbo</string>
<string name="billing_legal_mumbo_jumbo_label">I agree to the [Discord Terms of Service]({url})</string>
<string name="billing_legal_mumbo_jumbo_terms_label">I agree to the [Discord Terms of Service]({termsURL}) and [Paid Services Terms]({paidURL})</string>
<string name="billing_legal_mumbo_jumbo_trial_label">I agree to the [Discord Terms of Service]({url}) and that my subscription will renew for **{rate}** on **{renewalDate}**. I can cancel anytime under User Settings &gt; Subscriptions, and previous charges wont be refunded unless required by law.</string>
<string name="billing_legal_mumbo_jumbo_trial_terms_label">I agree to the [Discord Terms of Service]({termsURL}), [Paid Services Terms]({paidURL}), and that my subscription will renew for **{rate}** on **{renewalDate}**. I can cancel anytime under User Settings &gt; Subscriptions, and previous charges wont be refunded unless required by law.</string>
<string name="billing_manage_billing">Change Payment Method</string>
<string name="billing_manage_on_google_play">Manage subscription in Google Play</string>
<string name="billing_manage_subscription">Manage Subscription</string>
@ -936,6 +939,8 @@
<string name="billing_payment_premium_description">These are your current subscriptions. They will be billed on the same billing cycle. You can update any subscription at any time.</string>
<string name="billing_payment_premium_legalese_monthly">By purchasing a Discord subscription, you agree to our [Terms of Service]({termsUrl}) and [Privacy Policy]({privacyUrl}). Nitro and Server Boost are auto-recurring subscriptions. You authorize Discord to immediately charge the payment method provided at !!{price}!! and to continue to do so automatically monthly until you cancel. You may cancel anytime.</string>
<string name="billing_payment_premium_legalese_yearly">By purchasing a Discord subscription, you agree to our [Terms of Service]({termsUrl}) and [Privacy Policy]({privacyUrl}). Nitro and Server Boost are auto-recurring subscriptions. You authorize Discord to immediately charge the payment method provided at !!{price}!! and to continue to do so automatically yearly until you cancel. You may cancel anytime.</string>
<string name="billing_payment_premium_terms_legalese_monthly">By purchasing a Discord subscription, you agree to our [Terms of Service]({termsUrl}), [Paid Services Terms]({paidURL}), and [Privacy Policy]({privacyUrl}). Nitro and Server Boost are auto-recurring subscriptions. You authorize Discord to immediately charge the payment method provided at !!{price}!! and to continue to do so automatically monthly until you cancel. You may cancel anytime.</string>
<string name="billing_payment_premium_terms_legalese_yearly">By purchasing a Discord subscription, you agree to our [Terms of Service]({termsUrl}), [Paid Services Terms]({paidURL}), and [Privacy Policy]({privacyUrl}). Nitro and Server Boost are auto-recurring subscriptions. You authorize Discord to immediately charge the payment method provided at !!{price}!! and to continue to do so automatically yearly until you cancel. You may cancel anytime.</string>
<string name="billing_payment_source_invalid">This payment source is invalid.</string>
<string name="billing_payment_sources">Payment Methods</string>
<string name="billing_payment_table_header_amount">Amount</string>
@ -5954,6 +5959,7 @@
<string name="member_verification_form_item_rules">Server Rules</string>
<string name="member_verification_form_item_text_input">Short Answer</string>
<string name="member_verification_form_item_verification">Connections</string>
<string name="member_verification_form_passed_requirements">Passed Verification Level</string>
<string name="member_verification_form_required_item">This field is required</string>
<string name="member_verification_form_rules_label">Read and agree to the server rules</string>
<string name="member_verification_form_verification_settings">To change this, [go to Moderation settings](onSettingsClick)</string>
@ -6167,8 +6173,8 @@
<string name="move_members_description">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.</string>
<string name="move_to">Move To</string>
<string name="move_to_success">User has been moved to the selected channel.</string>
<string name="res_2131892266_msg_alert_cleared">Alert Cleared</string>
<string name="res_2131892267_msg_no_alert_showing">No Alert Showing</string>
<string name="res_2131892272_msg_alert_cleared">Alert Cleared</string>
<string name="res_2131892273_msg_no_alert_showing">No Alert Showing</string>
<string name="mtrl_badge_numberless_content_description">New notification</string>
<string name="mtrl_chip_close_icon_content_description">Remove %1$s</string>
<string name="mtrl_exceed_max_badge_number_content_description">More than %1$d new notifications</string>
@ -6667,6 +6673,7 @@
<string name="pagination_slide_label">Slide {pageNumber}</string>
<string name="paginator_current_page">Page !!{currentPage}!!</string>
<string name="paginator_of_pages">Page !!{currentPage}!! of !!{numPages}!!</string>
<string name="paid_services_terms">[Paid Services Terms]({url})</string>
<string name="partial_outage">{count}</string>
<string name="partial_outage_a11y">{count} Discord\'s Twitter should have more information.</string>
<string name="partner_badge_tooltip">Partnered Server Owner</string>
@ -6704,6 +6711,8 @@
<string name="paste">Paste</string>
<string name="pause">Pause</string>
<string name="payment_account_verifying">Connecting with your payment source</string>
<string name="payment_auth_expired_suggestion">Please try to make the purchase again.</string>
<string name="payment_auth_succeeded_suggestion">If you followed this link after trying to make a purchase on the desktop or mobile app, please go back and try again.</string>
<string name="payment_authentication_modal_button">Continue</string>
<string name="payment_authentication_modal_button_cancel_payment">Cancel Payment</string>
<string name="payment_authentication_modal_canceled">Your payment for **!!{item}!!** has been canceled.</string>
@ -6714,6 +6723,9 @@
<string name="payment_authentication_modal_title_canceled">Payment Canceled</string>
<string name="payment_authentication_modal_title_fail">Payment Authentication Failed</string>
<string name="payment_authentication_modal_title_success">Payment Authenticated</string>
<string name="payment_authorization_expired">Payment authorization link has expired.</string>
<string name="payment_authorization_succeeded">Payment Authorized</string>
<string name="payment_authorizing">Authorizing</string>
<string name="payment_currency">Currency</string>
<string name="payment_currency_paying_in">Paying in</string>
<string name="payment_method_confirmation_error">Unable to confirm payment method</string>
@ -7303,6 +7315,7 @@
<string name="premium_subscription_required_body">Hold up! You need Nitro to get this loot.</string>
<string name="premium_subscription_show_details">Show Subscription Details</string>
<string name="premium_subscription_subscriptions_link">Trying to manage your Nitro subscription? Go to your [Subscriptions](onSubscriptionsClick) page.</string>
<string name="premium_subscription_terms_policy_ios">By purchasing a Nitro subscription, you agree to our [Terms of Service]({termsURL}), [Paid Services Terms]({paidURL}), and [Privacy Policy]({privacyURL}). Payment will be charged to your Apple ID account at the confirmation of purchase. Subscription automatically renews unless it is canceled at least 24 hours before the end of the current period. Your account will be charged for renewal within 24 hours prior to the end of the current period. You can manage and cancel your subscriptions by going to your account settings on the App Store after purchase.</string>
<string name="premium_subscription_updates">Subscription Updates</string>
<string name="premium_survey_thank_you">Thank you!</string>
<string name="premium_survey_we_appreciate_it">Thanks for your feedback. We appreciate it!</string>

View File

@ -852,6 +852,7 @@
<string name="beta">[βéţå one]</string>
<string name="bg">[βûļĝåŕîåñ one two]</string>
<string name="billing">[βîļļîñĝ one two]</string>
<string name="billing_accept_terms_paid_services_tooltip">[Åççéþţ ţĥé Ţéŕḿš öƒ ŠéŕVîçé åñð Þåîð ŠéŕVîçéš Ţéŕḿš ţö çöñţîñûé one two three four five six seven]</string>
<string name="billing_accept_terms_tooltip">[Åççéþţ ţĥé Ţéŕḿš öƒ ŠéŕVîçé ţö çöñţîñûé one two three four five]</string>
<string name="billing_account_credit">[Åççöûñţ Çŕéðîţ one two three]</string>
<string name="billing_account_credit_description">[Ŵĥéñ ýöû åççéþţ å ĝîƒţ ŵĥîļé ýöû ĥåVé å ŕûññîñĝ šûɓšçŕîþţîöñ, öŕ åççéþţ å ĝîƒţ ţĥåţ ðéŕš ƒŕöḿ ýöûŕ çûŕŕéñţ šûɓšçŕîþţîöñ, îţ ŵîļļ åþþéåŕ ĥéŕé åš çŕéðîţ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen]</string>
@ -919,7 +920,9 @@
<string name="billing_is_gift_purchase">[Κ ţĥîš å ĝîƒţ¿ one two three]</string>
<string name="billing_legal_mumbo_jumbo">[Ļéĝåļ Ḿûḿɓö Ĵûḿɓö one two three]</string>
<string name="billing_legal_mumbo_jumbo_label">[Î åĝŕéé ţö ţĥé [Ðîšçöŕð Ţéŕḿš öƒ ŠéŕVîçé](»{url}«) one two three four five]</string>
<string name="billing_legal_mumbo_jumbo_terms_label">[Î åĝŕéé ţö ţĥé [Ðîšçöŕð Ţéŕḿš öƒ ŠéŕVîçé](»{termsURL}«) åñð [Þåîð ŠéŕVîçéš Ţéŕḿš](»{paidURL}«) one two three four five six seven eight nine ten eleven twelve thirteen fourteen]</string>
<string name="billing_legal_mumbo_jumbo_trial_label">[Î åĝŕéé ţö ţĥé [Ðîšçöŕð Ţéŕḿš öƒ ŠéŕVîçé](»{url}«) åñð ţĥåţ ḿý šûɓšçŕîþţîöñ ŵîļļ ŕéñéŵ ƒöŕ **»{rate}«** öñ **»{renewalDate}«**. Î çåñ çåñçéļ åñýţîḿé ûñðéŕ Ûšéŕ Šéţţîñĝš &gt; Šûɓšçŕîþţîöñš, åñð þŕéVîöûš çĥåŕĝéš ŵöñ’ţ ɓé ŕéƒûñðéð ûñļéšš ŕéQûîŕéð ɓý ļåŵ. 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]</string>
<string name="billing_legal_mumbo_jumbo_trial_terms_label">[Î åĝŕéé ţö ţĥé [Ðîšçöŕð Ţéŕḿš öƒ ŠéŕVîçé](»{termsURL}«), [Þåîð ŠéŕVîçéš Ţéŕḿš](»{paidURL}«), åñð ţĥåţ ḿý šûɓšçŕîþţîöñ ŵîļļ ŕéñéŵ ƒöŕ **»{rate}«** öñ **»{renewalDate}«**. Î çåñ çåñçéļ åñýţîḿé ûñðéŕ Ûšéŕ Šéţţîñĝš &gt; Šûɓšçŕîþţîöñš, åñð þŕéVîöûš çĥåŕĝéš ŵöñ’ţ ɓé ŕéƒûñðéð ûñļéšš ŕéQûîŕéð ɓý ļåŵ. 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]</string>
<string name="billing_manage_billing">[Çĥåñĝé Þåýḿéñţ Ḿéţĥöð one two three]</string>
<string name="billing_manage_on_google_play">[Ḿåñåĝé šûɓšçŕîþţîöñ îñ Ĝööĝļé Þļåý one two three four]</string>
<string name="billing_manage_subscription">[Ḿåñåĝé Šûɓšçŕîþţîöñ one two three]</string>
@ -936,6 +939,8 @@
<string name="billing_payment_premium_description">[Ţĥéšé åŕé ýöûŕ çûŕŕéñţ šûɓšçŕîþţîöñš. Ţĥéý ŵîļļ ɓé ɓîļļéð öñ ţĥé šåḿé ɓîļļîñĝ çýçļé. Ýöû çåñ ûþðåţé åñý šûɓšçŕîþţîöñ åţ åñý ţîḿé. one two three four five six seven eight nine ten eleven twelve thirteen]</string>
<string name="billing_payment_premium_legalese_monthly">[βý þûŕçĥåšîñĝ å Ðîšçöŕð šûɓšçŕîþţîöñ, ýöû åĝŕéé ţö öûŕ [Ţéŕḿš öƒ ŠéŕVîçé](»{termsUrl}«) åñð [ÞŕîVåçý Þöļîçý](»{privacyUrl}«). Ñîţŕö åñð ŠéŕVéŕ βööšţ åŕé åûţö-ŕéçûŕŕîñĝ šûɓšçŕîþţîöñš. Ýöû åûţĥöŕîžé Ðîšçöŕð ţö îḿḿéðîåţéļý çĥåŕĝé ţĥé þåýḿéñţ ḿéţĥöð þŕöVîðéð åţ ¡¡»{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 fiveteen sixteen seventeen nineteen twenty one two three four five six seven eight nine ten eleven twelve thirteen fourteen]</string>
<string name="billing_payment_premium_legalese_yearly">[βý þûŕçĥåšîñĝ å Ðîšçöŕð šûɓšçŕîþţîöñ, ýöû åĝŕéé ţö öûŕ [Ţéŕḿš öƒ ŠéŕVîçé](»{termsUrl}«) åñð [ÞŕîVåçý Þöļîçý](»{privacyUrl}«). Ñîţŕö åñð ŠéŕVéŕ βööšţ åŕé åûţö-ŕéçûŕŕîñĝ šûɓšçŕîþţîöñš. Ýöû åûţĥöŕîžé Ðîšçöŕð ţö îḿḿéðîåţéļý çĥåŕĝé ţĥé þåýḿéñţ ḿéţĥöð þŕöVîðéð åţ ¡¡»{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 fiveteen sixteen seventeen nineteen twenty one two three four five six seven eight nine ten eleven twelve thirteen fourteen]</string>
<string name="billing_payment_premium_terms_legalese_monthly">[βý þûŕçĥåšîñĝ å Ðîšçöŕð šûɓšçŕîþţîöñ, ýöû åĝŕéé ţö öûŕ [Ţéŕḿš öƒ ŠéŕVîçé](»{termsUrl}«), [Þåîð ŠéŕVîçéš Ţéŕḿš](»{paidURL}«), åñð [ÞŕîVåçý Þöļîçý](»{privacyUrl}«). Ñîţŕö åñð ŠéŕVéŕ βööšţ åŕé åûţö-ŕéçûŕŕîñĝ šûɓšçŕîþţîöñš. Ýöû åûţĥöŕîžé Ðîšçöŕð ţö îḿḿéðîåţéļý çĥåŕĝé ţĥé þåýḿéñţ ḿéţĥöð þŕöVîðéð åţ ¡¡»{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 fiveteen sixteen seventeen nineteen twenty one two three four five six seven eight nine ten eleven twelve thirteen fourteen fiveteen sixteen seventeen]</string>
<string name="billing_payment_premium_terms_legalese_yearly">[βý þûŕçĥåšîñĝ å Ðîšçöŕð šûɓšçŕîþţîöñ, ýöû åĝŕéé ţö öûŕ [Ţéŕḿš öƒ ŠéŕVîçé](»{termsUrl}«), [Þåîð ŠéŕVîçéš Ţéŕḿš](»{paidURL}«), åñð [ÞŕîVåçý Þöļîçý](»{privacyUrl}«). Ñîţŕö åñð ŠéŕVéŕ βööšţ åŕé åûţö-ŕéçûŕŕîñĝ šûɓšçŕîþţîöñš. Ýöû åûţĥöŕîžé Ðîšçöŕð ţö îḿḿéðîåţéļý çĥåŕĝé ţĥé þåýḿéñţ ḿéţĥöð þŕöVîðéð åţ ¡¡»{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 fiveteen sixteen seventeen nineteen twenty one two three four five six seven eight nine ten eleven twelve thirteen fourteen fiveteen sixteen seventeen]</string>
<string name="billing_payment_source_invalid">[Ţĥîš þåýḿéñţ šöûŕçé îš îñVåļîð. one two three four]</string>
<string name="billing_payment_sources">[Þåýḿéñţ Ḿéţĥöðš one two three]</string>
<string name="billing_payment_table_header_amount">[Åḿöûñţ one two]</string>
@ -5954,6 +5959,7 @@
<string name="member_verification_form_item_rules">[ŠéŕVéŕ Ŕûļéš one two]</string>
<string name="member_verification_form_item_text_input">[Šĥöŕţ Åñšŵéŕ one two]</string>
<string name="member_verification_form_item_verification">[Çöññéçţîöñš one two]</string>
<string name="member_verification_form_passed_requirements">[Þåššéð νéŕîƒîçåţîöñ ĻéVéļ one two three]</string>
<string name="member_verification_form_required_item">[Ţĥîš ƒîéļð îš ŕéQûîŕéð one two three]</string>
<string name="member_verification_form_rules_label">[Ŕéåð åñð åĝŕéé ţö ţĥé šéŕVéŕ ŕûļéš one two three four]</string>
<string name="member_verification_form_verification_settings">[Ţö çĥåñĝé ţĥîš, [ĝö ţö Ḿöðéŕåţîöñ šéţţîñĝš](öñŠéţţîñĝšÇļîçķ) one two three four five six seven]</string>
@ -6167,8 +6173,8 @@
<string name="move_members_description">[Ḿéḿɓéŕš ŵîţĥ ţĥîš þéŕḿîššîöñ çåñ ðŕåĝ öţĥéŕ ḿéḿɓéŕš öûţ öƒ ţĥîš çĥåññéļ. Ţĥéý çåñ öñļý ḿöVé ḿéḿɓéŕš ɓéţŵééñ çĥåññéļš ɓöţĥ ţĥéý åñð ţĥé ḿéḿɓéŕ ţĥéý åŕé ḿöVîñĝ ĥåVé åççéšš. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fiveteen]</string>
<string name="move_to">[ḾöVé Ţö one two]</string>
<string name="move_to_success">[Ûšéŕ ĥåš ɓééñ ḿöVéð ţö ţĥé šéļéçţéð çĥåññéļ. one two three four five]</string>
<string name="res_2131892266_msg_alert_cleared">[Åļéŕţ Çļéåŕéð one two]</string>
<string name="res_2131892267_msg_no_alert_showing">[Ñö Åļéŕţ Šĥöŵîñĝ one two three]</string>
<string name="res_2131892272_msg_alert_cleared">[Åļéŕţ Çļéåŕéð one two]</string>
<string name="res_2131892273_msg_no_alert_showing">[Ñö Åļéŕţ Šĥöŵîñĝ one two three]</string>
<string name="mtrl_badge_numberless_content_description">[Ñéŵ ñöţîƒîçåţîöñ one two three]</string>
<string name="mtrl_chip_close_icon_content_description">[ŔéḿöVé »%1$s« one two]</string>
<string name="mtrl_exceed_max_badge_number_content_description">[Ḿöŕé ţĥåñ %1$d ñéŵ ñöţîƒîçåţîöñš one two three four]</string>
@ -6667,6 +6673,7 @@
<string name="pagination_slide_label">[Šļîðé »{pageNumber}« one two]</string>
<string name="paginator_current_page">[Þåĝé ¡¡»{currentPage}«¡¡ one two]</string>
<string name="paginator_of_pages">[Þåĝé ¡¡»{currentPage}«¡¡ öƒ ¡¡»{numPages}«¡¡ one two three]</string>
<string name="paid_services_terms">[[Þåîð ŠéŕVîçéš Ţéŕḿš](»{url}«) one two three]</string>
<string name="partial_outage">[»{count}«]</string>
<string name="partial_outage_a11y">[»{count}« Ðîšçöŕð\'š Ţŵîţţéŕ šĥöûļð ĥåVé ḿöŕé îñƒöŕḿåţîöñ. one two three four five six]</string>
<string name="partner_badge_tooltip">[Þåŕţñéŕéð ŠéŕVéŕ Öŵñéŕ one two three]</string>
@ -6704,6 +6711,8 @@
<string name="paste">[Þåšţé one]</string>
<string name="pause">[Þåûšé one]</string>
<string name="payment_account_verifying">[Çöññéçţîñĝ ŵîţĥ ýöûŕ þåýḿéñţ šöûŕçé one two three four]</string>
<string name="payment_auth_expired_suggestion">[Þļéåšé ţŕý ţö ḿåķé ţĥé þûŕçĥåšé åĝåîñ. one two three four five]</string>
<string name="payment_auth_succeeded_suggestion">[΃ ýöû ƒöļļöŵéð ţĥîš ļîñķ åƒţéŕ ţŕýîñĝ ţö ḿåķé å þûŕçĥåšé öñ ţĥé ðéšķţöþ öŕ ḿöɓîļé åþþ, þļéåšé ĝö ɓåçķ åñð ţŕý åĝåîñ. one two three four five six seven eight nine ten eleven twelve]</string>
<string name="payment_authentication_modal_button">[Çöñţîñûé one two]</string>
<string name="payment_authentication_modal_button_cancel_payment">[Çåñçéļ Þåýḿéñţ one two three]</string>
<string name="payment_authentication_modal_canceled">[Ýöûŕ þåýḿéñţ ƒöŕ **¡¡»{item}«¡¡** ĥåš ɓééñ çåñçéļéð. one two three four five]</string>
@ -6714,6 +6723,9 @@
<string name="payment_authentication_modal_title_canceled">[Þåýḿéñţ Çåñçéļéð one two three]</string>
<string name="payment_authentication_modal_title_fail">[Þåýḿéñţ Åûţĥéñţîçåţîöñ Fåîļéð one two three four]</string>
<string name="payment_authentication_modal_title_success">[Þåýḿéñţ Åûţĥéñţîçåţéð one two three]</string>
<string name="payment_authorization_expired">[Þåýḿéñţ åûţĥöŕîžåţîöñ ļîñķ ĥåš éхþîŕéð. one two three four five]</string>
<string name="payment_authorization_succeeded">[Þåýḿéñţ Åûţĥöŕîžéð one two three]</string>
<string name="payment_authorizing">[Åûţĥöŕîžîñĝ one two]</string>
<string name="payment_currency">[Çûŕŕéñçý one two]</string>
<string name="payment_currency_paying_in">[Þåýîñĝ îñ one two]</string>
<string name="payment_method_confirmation_error">[Ûñåɓļé ţö çöñƒîŕḿ þåýḿéñţ ḿéţĥöð one two three four]</string>
@ -7303,6 +7315,7 @@
<string name="premium_subscription_required_body">[Ĥöļð ûþ¡ Ýöû ñééð Ñîţŕö ţö ĝéţ ţĥîš ļööţ. one two three four five]</string>
<string name="premium_subscription_show_details">[Šĥöŵ Šûɓšçŕîþţîöñ Ðéţåîļš one two three]</string>
<string name="premium_subscription_subscriptions_link">[Ţŕýîñĝ ţö ḿåñåĝé ýöûŕ Ñîţŕö šûɓšçŕîþţîöñ¿ Ĝö ţö ýöûŕ [Šûɓšçŕîþţîöñš](öñŠûɓšçŕîþţîöñšÇļîçķ) þåĝé. one two three four five six seven eight nine ten eleven]</string>
<string name="premium_subscription_terms_policy_ios">[βý þûŕçĥåšîñĝ å Ñîţŕö šûɓšçŕîþţîöñ, ýöû åĝŕéé ţö öûŕ [Ţéŕḿš öƒ ŠéŕVîçé](»{termsURL}«), [Þåîð ŠéŕVîçéš Ţéŕḿš](»{paidURL}«), åñð [ÞŕîVåçý Þöļîçý](»{privacyURL}«). Þåýḿéñţ ŵîļļ ɓé çĥåŕĝéð ţö ýöûŕ Åþþļé ÎÐ åççöûñţ åţ ţĥé çöñƒîŕḿåţîöñ öƒ þûŕçĥåšé. Šûɓšçŕîþţîöñ åûţöḿåţîçåļļý ŕéñéŵš ûñļéšš îţ îš çåñçéļéð åţ ļéåšţ 24 ĥöûŕš ɓéƒöŕé ţĥé éñð öƒ ţĥé çûŕŕéñţ þéŕîöð. Ýöûŕ åççöûñţ ŵîļļ ɓé çĥåŕĝéð ƒöŕ ŕéñéŵåļ ŵîţĥîñ 24 ĥöûŕš þŕîöŕ ţö ţĥé éñð öƒ ţĥé çûŕŕéñţ þéŕîöð. Ýöû çåñ ḿåñåĝé åñð çåñçéļ ýöûŕ šûɓšçŕîþţîöñš ɓý ĝöîñĝ ţö ýöûŕ åççöûñţ šéţţîñĝš öñ ţĥé Åþþ Šţöŕé åƒţéŕ þûŕçĥåšé. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fiveteen sixteen seventeen nineteen twenty one two three four five six seven eight nine ten eleven twelve thirteen fourteen fiveteen sixteen seventeen nineteen twenty one two three four five six seven eight nine ten eleven twelve thirteen fourteen fiveteen sixteen 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]</string>
<string name="premium_subscription_updates">[Šûɓšçŕîþţîöñ Ûþðåţéš one two three]</string>
<string name="premium_survey_thank_you">[Ţĥåñķ ýöû¡ one two]</string>
<string name="premium_survey_we_appreciate_it">[Ţĥåñķš ƒöŕ ýöûŕ ƒééðɓåçķ. Ŵé åþþŕéçîåţé îţ¡ one two three four five]</string>

File diff suppressed because it is too large Load Diff

View File

@ -853,6 +853,7 @@
<string name="beta">Beta</string>
<string name="bg">Bulgarian</string>
<string name="billing">Billing</string>
<string name="billing_accept_terms_paid_services_tooltip">Accept the Terms of Service and Paid Services Terms to continue</string>
<string name="billing_accept_terms_tooltip">Accept the Terms of Service to continue</string>
<string name="billing_account_credit">Account Credit</string>
<string name="billing_account_credit_description">When you accept a gift while you have a running subscription, or accept a gift that differs from your current subscription, it will appear here as credit.</string>
@ -920,7 +921,9 @@
<string name="billing_is_gift_purchase">Is this a gift?</string>
<string name="billing_legal_mumbo_jumbo">Legal Mumbo Jumbo</string>
<string name="billing_legal_mumbo_jumbo_label">I agree to the [Discord Terms of Service]({url})</string>
<string name="billing_legal_mumbo_jumbo_terms_label">I agree to the [Discord Terms of Service]({termsURL}) and [Paid Services Terms]({paidURL})</string>
<string name="billing_legal_mumbo_jumbo_trial_label">I agree to the [Discord Terms of Service]({url}) and that my subscription will renew for **{rate}** on **{renewalDate}**. I can cancel anytime under User Settings &gt; Subscriptions, and previous charges wont be refunded unless required by law.</string>
<string name="billing_legal_mumbo_jumbo_trial_terms_label">I agree to the [Discord Terms of Service]({termsURL}), [Paid Services Terms]({paidURL}), and that my subscription will renew for **{rate}** on **{renewalDate}**. I can cancel anytime under User Settings &gt; Subscriptions, and previous charges wont be refunded unless required by law.</string>
<string name="billing_manage_billing">Change Payment Method</string>
<string name="billing_manage_on_google_play">Manage subscription in Google Play</string>
<string name="billing_manage_subscription">Manage Subscription</string>
@ -937,6 +940,8 @@
<string name="billing_payment_premium_description">These are your current subscriptions. They will be billed on the same billing cycle. You can update any subscription at any time.</string>
<string name="billing_payment_premium_legalese_monthly">By purchasing a Discord subscription, you agree to our [Terms of Service]({termsUrl}) and [Privacy Policy]({privacyUrl}). Nitro and Server Boost are auto-recurring subscriptions. You authorize Discord to immediately charge the payment method provided at !!{price}!! and to continue to do so automatically monthly until you cancel. You may cancel anytime.</string>
<string name="billing_payment_premium_legalese_yearly">By purchasing a Discord subscription, you agree to our [Terms of Service]({termsUrl}) and [Privacy Policy]({privacyUrl}). Nitro and Server Boost are auto-recurring subscriptions. You authorize Discord to immediately charge the payment method provided at !!{price}!! and to continue to do so automatically yearly until you cancel. You may cancel anytime.</string>
<string name="billing_payment_premium_terms_legalese_monthly">By purchasing a Discord subscription, you agree to our [Terms of Service]({termsUrl}), [Paid Services Terms]({paidURL}), and [Privacy Policy]({privacyUrl}). Nitro and Server Boost are auto-recurring subscriptions. You authorize Discord to immediately charge the payment method provided at !!{price}!! and to continue to do so automatically monthly until you cancel. You may cancel anytime.</string>
<string name="billing_payment_premium_terms_legalese_yearly">By purchasing a Discord subscription, you agree to our [Terms of Service]({termsUrl}), [Paid Services Terms]({paidURL}), and [Privacy Policy]({privacyUrl}). Nitro and Server Boost are auto-recurring subscriptions. You authorize Discord to immediately charge the payment method provided at !!{price}!! and to continue to do so automatically yearly until you cancel. You may cancel anytime.</string>
<string name="billing_payment_source_invalid">This payment source is invalid.</string>
<string name="billing_payment_sources">Payment Methods</string>
<string name="billing_payment_table_header_amount">Amount</string>
@ -1480,7 +1485,7 @@
<string name="color_picker_custom">Custom</string>
<string name="color_picker_presets">Presets</string>
<string name="color_picker_use_default">Use Default</string>
<string name="res_2131887560_com_crashlytics_android_build_id">e823b85126164ff49a1096e67978d527</string>
<string name="res_2131887565_com_crashlytics_android_build_id">1dc2dd74be294fa2a9890f5c495225f1</string>
<string name="command_accessibility_desc_app_header_item">Slash command application {applicationName}</string>
<string name="command_accessibility_desc_app_item">{applicationName} application</string>
<string name="command_accessibility_desc_app_item_selected">{applicationName} application selected</string>
@ -5973,6 +5978,7 @@
<string name="member_verification_form_item_rules">Server Rules</string>
<string name="member_verification_form_item_text_input">Short Answer</string>
<string name="member_verification_form_item_verification">Connections</string>
<string name="member_verification_form_passed_requirements">Passed Verification Level</string>
<string name="member_verification_form_required_item">This field is required</string>
<string name="member_verification_form_rules_label">Read and agree to the server rules</string>
<string name="member_verification_form_verification_settings">To change this, [go to Moderation settings](onSettingsClick)</string>
@ -6186,8 +6192,8 @@
<string name="move_members_description">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.</string>
<string name="move_to">Move To</string>
<string name="move_to_success">User has been moved to the selected channel.</string>
<string name="res_2131892266_msg_alert_cleared">Alert Cleared</string>
<string name="res_2131892267_msg_no_alert_showing">No Alert Showing</string>
<string name="res_2131892272_msg_alert_cleared">Alert Cleared</string>
<string name="res_2131892273_msg_no_alert_showing">No Alert Showing</string>
<string name="mtrl_badge_numberless_content_description">New notification</string>
<string name="mtrl_chip_close_icon_content_description">Remove %1$s</string>
<string name="mtrl_exceed_max_badge_number_content_description">More than %1$d new notifications</string>
@ -6689,6 +6695,7 @@
<string name="pagination_slide_label">Slide {pageNumber}</string>
<string name="paginator_current_page">Page !!{currentPage}!!</string>
<string name="paginator_of_pages">Page !!{currentPage}!! of !!{numPages}!!</string>
<string name="paid_services_terms">[Paid Services Terms]({url})</string>
<string name="partial_outage">{count}</string>
<string name="partial_outage_a11y">{count} Discord\'s Twitter should have more information.</string>
<string name="partner_badge_tooltip">Partnered Server Owner</string>
@ -6730,6 +6737,8 @@
<string name="path_password_strike_through">M3.27,4.27 L19.74,20.74</string>
<string name="pause">Pause</string>
<string name="payment_account_verifying">Connecting with your payment source</string>
<string name="payment_auth_expired_suggestion">Please try to make the purchase again.</string>
<string name="payment_auth_succeeded_suggestion">If you followed this link after trying to make a purchase on the desktop or mobile app, please go back and try again.</string>
<string name="payment_authentication_modal_button">Continue</string>
<string name="payment_authentication_modal_button_cancel_payment">Cancel Payment</string>
<string name="payment_authentication_modal_canceled">Your payment for **!!{item}!!** has been canceled.</string>
@ -6740,6 +6749,9 @@
<string name="payment_authentication_modal_title_canceled">Payment Canceled</string>
<string name="payment_authentication_modal_title_fail">Payment Authentication Failed</string>
<string name="payment_authentication_modal_title_success">Payment Authenticated</string>
<string name="payment_authorization_expired">Payment authorization link has expired.</string>
<string name="payment_authorization_succeeded">Payment Authorized</string>
<string name="payment_authorizing">Authorizing</string>
<string name="payment_currency">Currency</string>
<string name="payment_currency_paying_in">Paying in</string>
<string name="payment_method_confirmation_error">Unable to confirm payment method</string>
@ -7329,6 +7341,7 @@
<string name="premium_subscription_required_body">Hold up! You need Nitro to get this loot.</string>
<string name="premium_subscription_show_details">Show Subscription Details</string>
<string name="premium_subscription_subscriptions_link">Trying to manage your Nitro subscription? Go to your [Subscriptions](onSubscriptionsClick) page.</string>
<string name="premium_subscription_terms_policy_ios">By purchasing a Nitro subscription, you agree to our [Terms of Service]({termsURL}), [Paid Services Terms]({paidURL}), and [Privacy Policy]({privacyURL}). Payment will be charged to your Apple ID account at the confirmation of purchase. Subscription automatically renews unless it is canceled at least 24 hours before the end of the current period. Your account will be charged for renewal within 24 hours prior to the end of the current period. You can manage and cancel your subscriptions by going to your account settings on the App Store after purchase.</string>
<string name="premium_subscription_updates">Subscription Updates</string>
<string name="premium_survey_thank_you">Thank you!</string>
<string name="premium_survey_we_appreciate_it">Thanks for your feedback. We appreciate it!</string>