diff --git a/app/build.gradle b/app/build.gradle index 48c3c2f04a..02d511726f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ android { applicationId 'com.discord' minSdkVersion 21 targetSdkVersion 29 - versionCode 95201 - versionName "95.1 - Alpha" + versionCode 95202 + versionName "95.2 - Alpha" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a2903046f5..98fa71cf53 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/TrackAgeGateSubmitted.java b/app/src/main/java/com/discord/analytics/generated/events/TrackAgeGateSubmitted.java index b313a31d20..c5fb429c2b 100644 --- a/app/src/main/java/com/discord/analytics/generated/events/TrackAgeGateSubmitted.java +++ b/app/src/main/java/com/discord/analytics/generated/events/TrackAgeGateSubmitted.java @@ -10,19 +10,39 @@ import com.discord.api.utcdatetime.UtcDateTime; import d0.z.d.m; /* compiled from: TrackAgeGateSubmitted.kt */ public final class TrackAgeGateSubmitted implements AnalyticsSchema, TrackBaseReceiver, TrackSourceMetadataReceiver { - private final transient String analyticsSchemaTypeName = "age_gate_submitted"; - private final UtcDateTime dob = null; - private final Long dobDay = null; - private final Long dobMonth = null; - private final Long dobYear = null; + private final transient String analyticsSchemaTypeName; + private final UtcDateTime dob; + private final Long dobDay; + private final Long dobMonth; + private final Long dobYear; private TrackBase trackBase; private TrackSourceMetadata trackSourceMetadata; + public TrackAgeGateSubmitted() { + this.dob = null; + this.dobDay = null; + this.dobMonth = null; + this.dobYear = null; + this.analyticsSchemaTypeName = "age_gate_submitted"; + } + + public TrackAgeGateSubmitted(UtcDateTime utcDateTime, Long l, Long l2, Long l3) { + this.dob = utcDateTime; + this.dobDay = l; + this.dobMonth = l2; + this.dobYear = l3; + this.analyticsSchemaTypeName = "age_gate_submitted"; + } + @Override // com.discord.api.science.AnalyticsSchema public String b() { return this.analyticsSchemaTypeName; } + public void c(TrackSourceMetadata trackSourceMetadata) { + this.trackSourceMetadata = trackSourceMetadata; + } + public boolean equals(Object obj) { if (this == obj) { return true; diff --git a/app/src/main/java/com/discord/analytics/generated/events/TrackGuildDefaultDmsUpdated.java b/app/src/main/java/com/discord/analytics/generated/events/TrackGuildDefaultDmsUpdated.java new file mode 100644 index 0000000000..e533cc7cba --- /dev/null +++ b/app/src/main/java/com/discord/analytics/generated/events/TrackGuildDefaultDmsUpdated.java @@ -0,0 +1,48 @@ +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.api.science.AnalyticsSchema; +import d0.z.d.m; +/* compiled from: TrackGuildDefaultDmsUpdated.kt */ +public final class TrackGuildDefaultDmsUpdated implements AnalyticsSchema, TrackBaseReceiver { + private final transient String analyticsSchemaTypeName = "guild_default_dms_updated"; + private final Boolean appliedToExistingGuilds = null; + private final Boolean defaultGuildsRestricted = null; + private TrackBase trackBase; + + @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 TrackGuildDefaultDmsUpdated)) { + return false; + } + TrackGuildDefaultDmsUpdated trackGuildDefaultDmsUpdated = (TrackGuildDefaultDmsUpdated) obj; + return m.areEqual(this.defaultGuildsRestricted, trackGuildDefaultDmsUpdated.defaultGuildsRestricted) && m.areEqual(this.appliedToExistingGuilds, trackGuildDefaultDmsUpdated.appliedToExistingGuilds); + } + + public int hashCode() { + Boolean bool = this.defaultGuildsRestricted; + int i = 0; + int hashCode = (bool != null ? bool.hashCode() : 0) * 31; + Boolean bool2 = this.appliedToExistingGuilds; + if (bool2 != null) { + i = bool2.hashCode(); + } + return hashCode + i; + } + + public String toString() { + StringBuilder P = a.P("TrackGuildDefaultDmsUpdated(defaultGuildsRestricted="); + P.append(this.defaultGuildsRestricted); + P.append(", appliedToExistingGuilds="); + return a.C(P, this.appliedToExistingGuilds, ")"); + } +} diff --git a/app/src/main/java/com/discord/analytics/generated/events/TrackGuildDefaultDmsUpdatedReceiver.java b/app/src/main/java/com/discord/analytics/generated/events/TrackGuildDefaultDmsUpdatedReceiver.java new file mode 100644 index 0000000000..f8ff9e0df0 --- /dev/null +++ b/app/src/main/java/com/discord/analytics/generated/events/TrackGuildDefaultDmsUpdatedReceiver.java @@ -0,0 +1,6 @@ +package com.discord.analytics.generated.events; + +import com.discord.api.science.AnalyticsSchema; +/* compiled from: TrackGuildDefaultDmsUpdated.kt */ +public interface TrackGuildDefaultDmsUpdatedReceiver extends AnalyticsSchema { +} diff --git a/app/src/main/java/com/discord/analytics/generated/events/TrackPaymentRefunded.java b/app/src/main/java/com/discord/analytics/generated/events/TrackPaymentRefunded.java index bb77ced429..fe3d1e9cb9 100644 --- a/app/src/main/java/com/discord/analytics/generated/events/TrackPaymentRefunded.java +++ b/app/src/main/java/com/discord/analytics/generated/events/TrackPaymentRefunded.java @@ -23,6 +23,8 @@ public final class TrackPaymentRefunded implements AnalyticsSchema, TrackBaseRec private final CharSequence paymentType = null; private final Long price = null; private final CharSequence refundReason = null; + private final Long refundedBy = null; + private final Long refunderType = null; private final Long skuId = null; private final Long skuSubscriptionPlanId = null; private final Long skuType = null; @@ -50,7 +52,7 @@ public final class TrackPaymentRefunded implements AnalyticsSchema, TrackBaseRec return false; } TrackPaymentRefunded trackPaymentRefunded = (TrackPaymentRefunded) obj; - return m.areEqual(this.paymentId, trackPaymentRefunded.paymentId) && m.areEqual(this.createdAt, trackPaymentRefunded.createdAt) && m.areEqual(this.paymentType, trackPaymentRefunded.paymentType) && m.areEqual(this.paymentGateway, trackPaymentRefunded.paymentGateway) && m.areEqual(this.price, trackPaymentRefunded.price) && m.areEqual(this.currency, trackPaymentRefunded.currency) && m.areEqual(this.amount, trackPaymentRefunded.amount) && m.areEqual(this.amountRefunded, trackPaymentRefunded.amountRefunded) && m.areEqual(this.tax, trackPaymentRefunded.tax) && m.areEqual(this.taxInclusive, trackPaymentRefunded.taxInclusive) && m.areEqual(this.skuId, trackPaymentRefunded.skuId) && m.areEqual(this.skuType, trackPaymentRefunded.skuType) && m.areEqual(this.skuSubscriptionPlanId, trackPaymentRefunded.skuSubscriptionPlanId) && m.areEqual(this.subscriptionId, trackPaymentRefunded.subscriptionId) && m.areEqual(this.subscriptionType, trackPaymentRefunded.subscriptionType) && m.areEqual(this.subscriptionPaymentGatewayPlanId, trackPaymentRefunded.subscriptionPaymentGatewayPlanId) && m.areEqual(this.subscriptionPlanId, trackPaymentRefunded.subscriptionPlanId) && m.areEqual(this.subscriptionCreatedAt, trackPaymentRefunded.subscriptionCreatedAt) && m.areEqual(this.subscriptionCurrentPeriodStart, trackPaymentRefunded.subscriptionCurrentPeriodStart) && m.areEqual(this.subscriptionCurrentPeriodEnd, trackPaymentRefunded.subscriptionCurrentPeriodEnd) && m.areEqual(this.paymentSourceId, trackPaymentRefunded.paymentSourceId) && m.areEqual(this.paymentSourceCountry, trackPaymentRefunded.paymentSourceCountry) && m.areEqual(this.failureMessage, trackPaymentRefunded.failureMessage) && m.areEqual(this.isGift, trackPaymentRefunded.isGift) && m.areEqual(this.refundReason, trackPaymentRefunded.refundReason) && m.areEqual(this.captured, trackPaymentRefunded.captured); + return m.areEqual(this.paymentId, trackPaymentRefunded.paymentId) && m.areEqual(this.createdAt, trackPaymentRefunded.createdAt) && m.areEqual(this.paymentType, trackPaymentRefunded.paymentType) && m.areEqual(this.paymentGateway, trackPaymentRefunded.paymentGateway) && m.areEqual(this.price, trackPaymentRefunded.price) && m.areEqual(this.currency, trackPaymentRefunded.currency) && m.areEqual(this.amount, trackPaymentRefunded.amount) && m.areEqual(this.amountRefunded, trackPaymentRefunded.amountRefunded) && m.areEqual(this.tax, trackPaymentRefunded.tax) && m.areEqual(this.taxInclusive, trackPaymentRefunded.taxInclusive) && m.areEqual(this.skuId, trackPaymentRefunded.skuId) && m.areEqual(this.skuType, trackPaymentRefunded.skuType) && m.areEqual(this.skuSubscriptionPlanId, trackPaymentRefunded.skuSubscriptionPlanId) && m.areEqual(this.subscriptionId, trackPaymentRefunded.subscriptionId) && m.areEqual(this.subscriptionType, trackPaymentRefunded.subscriptionType) && m.areEqual(this.subscriptionPaymentGatewayPlanId, trackPaymentRefunded.subscriptionPaymentGatewayPlanId) && m.areEqual(this.subscriptionPlanId, trackPaymentRefunded.subscriptionPlanId) && m.areEqual(this.subscriptionCreatedAt, trackPaymentRefunded.subscriptionCreatedAt) && m.areEqual(this.subscriptionCurrentPeriodStart, trackPaymentRefunded.subscriptionCurrentPeriodStart) && m.areEqual(this.subscriptionCurrentPeriodEnd, trackPaymentRefunded.subscriptionCurrentPeriodEnd) && m.areEqual(this.paymentSourceId, trackPaymentRefunded.paymentSourceId) && m.areEqual(this.paymentSourceCountry, trackPaymentRefunded.paymentSourceCountry) && m.areEqual(this.failureMessage, trackPaymentRefunded.failureMessage) && m.areEqual(this.isGift, trackPaymentRefunded.isGift) && m.areEqual(this.refundReason, trackPaymentRefunded.refundReason) && m.areEqual(this.captured, trackPaymentRefunded.captured) && m.areEqual(this.refunderType, trackPaymentRefunded.refunderType) && m.areEqual(this.refundedBy, trackPaymentRefunded.refundedBy); } public int hashCode() { @@ -106,10 +108,14 @@ public final class TrackPaymentRefunded implements AnalyticsSchema, TrackBaseRec CharSequence charSequence6 = this.refundReason; int hashCode25 = (hashCode24 + (charSequence6 != null ? charSequence6.hashCode() : 0)) * 31; Boolean bool3 = this.captured; - if (bool3 != null) { - i = bool3.hashCode(); + int hashCode26 = (hashCode25 + (bool3 != null ? bool3.hashCode() : 0)) * 31; + Long l14 = this.refunderType; + int hashCode27 = (hashCode26 + (l14 != null ? l14.hashCode() : 0)) * 31; + Long l15 = this.refundedBy; + if (l15 != null) { + i = l15.hashCode(); } - return hashCode25 + i; + return hashCode27 + i; } public String toString() { @@ -164,6 +170,10 @@ public final class TrackPaymentRefunded implements AnalyticsSchema, TrackBaseRec P.append(", refundReason="); P.append(this.refundReason); P.append(", captured="); - return a.C(P, this.captured, ")"); + P.append(this.captured); + P.append(", refunderType="); + P.append(this.refunderType); + P.append(", refundedBy="); + return a.F(P, this.refundedBy, ")"); } } diff --git a/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionContactSyncInputName.java b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionContactSyncInputName.java index 6c27ca8890..6f3b13cb70 100644 --- a/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionContactSyncInputName.java +++ b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionContactSyncInputName.java @@ -24,4 +24,8 @@ public final class TrackImpressionContactSyncInputName implements AnalyticsSchem public String b() { return this.analyticsSchemaTypeName; } + + public void c(TrackImpressionMetadata trackImpressionMetadata) { + this.trackImpressionMetadata = trackImpressionMetadata; + } } diff --git a/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionContactSyncStart.java b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionContactSyncStart.java index e68d648d02..3411d6a56a 100644 --- a/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionContactSyncStart.java +++ b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionContactSyncStart.java @@ -24,4 +24,8 @@ public final class TrackImpressionContactSyncStart implements AnalyticsSchema, T public String b() { return this.analyticsSchemaTypeName; } + + public void c(TrackImpressionMetadata trackImpressionMetadata) { + this.trackImpressionMetadata = trackImpressionMetadata; + } } diff --git a/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionContactSyncSuggestions.java b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionContactSyncSuggestions.java index 55107f5836..3da12fbeee 100644 --- a/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionContactSyncSuggestions.java +++ b/app/src/main/java/com/discord/analytics/generated/events/impression/TrackImpressionContactSyncSuggestions.java @@ -24,4 +24,8 @@ public final class TrackImpressionContactSyncSuggestions implements AnalyticsSch public String b() { return this.analyticsSchemaTypeName; } + + public void c(TrackImpressionMetadata trackImpressionMetadata) { + this.trackImpressionMetadata = trackImpressionMetadata; + } } diff --git a/app/src/main/java/com/discord/analytics/generated/traits/TrackSourceMetadata.java b/app/src/main/java/com/discord/analytics/generated/traits/TrackSourceMetadata.java index 2b740edbe6..14accb5392 100644 --- a/app/src/main/java/com/discord/analytics/generated/traits/TrackSourceMetadata.java +++ b/app/src/main/java/com/discord/analytics/generated/traits/TrackSourceMetadata.java @@ -4,11 +4,27 @@ import c.d.b.a.a; import d0.z.d.m; /* compiled from: TrackSourceMetadata.kt */ public final class TrackSourceMetadata { - private final CharSequence sourceObject = null; - private final CharSequence sourceObjectType = null; - private final CharSequence sourcePage = null; - private final Long sourcePromotionId = null; - private final CharSequence sourceSection = null; + private final CharSequence sourceObject; + private final CharSequence sourceObjectType; + private final CharSequence sourcePage; + private final Long sourcePromotionId; + private final CharSequence sourceSection; + + public TrackSourceMetadata() { + this(null, null, null, null, null, 31); + } + + public TrackSourceMetadata(CharSequence charSequence, CharSequence charSequence2, CharSequence charSequence3, CharSequence charSequence4, Long l, int i) { + int i2 = i & 2; + int i3 = i & 4; + int i4 = i & 8; + int i5 = i & 16; + this.sourcePage = (i & 1) != 0 ? null : charSequence; + this.sourceSection = null; + this.sourceObject = null; + this.sourceObjectType = null; + this.sourcePromotionId = null; + } public boolean equals(Object obj) { if (this == obj) { diff --git a/app/src/main/java/com/discord/analytics/utils/ImpressionGroups.java b/app/src/main/java/com/discord/analytics/utils/ImpressionGroups.java index afb0e1dad8..d8b9b92742 100644 --- a/app/src/main/java/com/discord/analytics/utils/ImpressionGroups.java +++ b/app/src/main/java/com/discord/analytics/utils/ImpressionGroups.java @@ -2,6 +2,7 @@ package com.discord.analytics.utils; /* compiled from: ImpressionGroups.kt */ public final class ImpressionGroups { public static final String CHANNEL_ADD_FLOW = "channel_add_flow"; + public static final String CONTACT_SYNC_FLOW = "contact_sync_flow"; public static final String GUILD_ADD_FLOW = "guild_add_flow"; public static final String GUILD_ADD_NUF = "guild_add_nuf"; public static final ImpressionGroups INSTANCE = new ImpressionGroups(); diff --git a/app/src/main/java/com/discord/app/AppFragment.java b/app/src/main/java/com/discord/app/AppFragment.java index b3684054fe..cfc45e931c 100644 --- a/app/src/main/java/com/discord/app/AppFragment.java +++ b/app/src/main/java/com/discord/app/AppFragment.java @@ -478,7 +478,7 @@ public abstract class AppFragment extends Fragment implements AppComponent, AppP if (appLogger.a || z4) { appLogger.b = invoke; appLogger.a = true; - appLogger.d.track(invoke); + appLogger.a(invoke); } return; } @@ -487,7 +487,7 @@ public abstract class AppFragment extends Fragment implements AppComponent, AppP } appLogger.b = invoke; appLogger.a = true; - appLogger.d.track(invoke); + appLogger.a(invoke); } } } diff --git a/app/src/main/java/com/discord/app/AppLogger.java b/app/src/main/java/com/discord/app/AppLogger.java index 23dc7baecc..73cc42cde8 100644 --- a/app/src/main/java/com/discord/app/AppLogger.java +++ b/app/src/main/java/com/discord/app/AppLogger.java @@ -4,6 +4,7 @@ import com.discord.api.science.AnalyticsSchema; import com.discord.utilities.analytics.AnalyticsUtils; import com.discord.utilities.features.GrowthTeamFeatures; import d0.z.d.m; +import kotlin.jvm.functions.Function0; /* compiled from: AppLogger.kt */ public final class AppLogger { public boolean a; @@ -28,4 +29,17 @@ public final class AppLogger { this.d = instance; this.e = z2; } + + public final void a(AnalyticsSchema analyticsSchema) { + Function0 function0; + AnalyticsSchema invoke; + if (analyticsSchema != null) { + this.d.track(analyticsSchema); + return; + } + LoggingConfig loggingConfig = this.f1608c.getLoggingConfig(); + if (loggingConfig != null && (function0 = loggingConfig.f1610c) != null && (invoke = function0.mo1invoke()) != null) { + this.d.track(invoke); + } + } } diff --git a/app/src/main/java/com/discord/models/member/GuildMember.java b/app/src/main/java/com/discord/models/member/GuildMember.java index d89431bf73..761739869e 100644 --- a/app/src/main/java/com/discord/models/member/GuildMember.java +++ b/app/src/main/java/com/discord/models/member/GuildMember.java @@ -100,8 +100,10 @@ public final class GuildMember { GuildRole guildRole2 = null; for (Long l : list) { long longValue = l.longValue(); - if (!(map == null || (guildRole = map.get(Long.valueOf(longValue))) == null || guildRole.d() == null || !RoleUtils.rankIsHigher(guildRole, guildRole2))) { - guildRole2 = guildRole; + if (!(map == null || (guildRole = map.get(Long.valueOf(longValue))) == null)) { + if (((guildRole.d() == null && guildRole.j() == null) ? false : true) && RoleUtils.rankIsHigher(guildRole, guildRole2)) { + guildRole2 = guildRole; + } } } return guildRole2; diff --git a/app/src/main/java/com/discord/stores/StoreAudioManagerV2.java b/app/src/main/java/com/discord/stores/StoreAudioManagerV2.java index 2814634a94..885d527581 100644 --- a/app/src/main/java/com/discord/stores/StoreAudioManagerV2.java +++ b/app/src/main/java/com/discord/stores/StoreAudioManagerV2.java @@ -30,7 +30,6 @@ public final class StoreAudioManagerV2 extends StoreV2 { public static final Companion Companion = new Companion(null); private static final State DEFAULT_STATE; private static final List VOICE_ONLY_DEVICE_PRIORITIZATION; - private final StoreAnalytics analyticsStore; private Handler audioManagerHandler; private final HandlerThread audioManagerThread = new HandlerThread("AudioManagerThread", -1); private final StoreChannels channelsStore; @@ -244,13 +243,12 @@ public final class StoreAudioManagerV2 extends StoreV2 { VOICE_ONLY_DEVICE_PRIORITIZATION = n.listOf((Object[]) new DiscordAudioManager.DeviceTypes[]{DiscordAudioManager.DeviceTypes.SPEAKERPHONE, deviceTypes, DiscordAudioManager.DeviceTypes.BLUETOOTH_HEADSET, DiscordAudioManager.DeviceTypes.WIRED_HEADSET}); } - public StoreAudioManagerV2(ObservationDeck observationDeck, Dispatcher dispatcher, StoreVoiceChannelSelected storeVoiceChannelSelected, StoreChannels storeChannels, StoreStreamRtcConnection storeStreamRtcConnection, StoreAnalytics storeAnalytics, VideoUseDetector videoUseDetector, StoreExperiments storeExperiments) { + public StoreAudioManagerV2(ObservationDeck observationDeck, Dispatcher dispatcher, StoreVoiceChannelSelected storeVoiceChannelSelected, StoreChannels storeChannels, StoreStreamRtcConnection storeStreamRtcConnection, VideoUseDetector videoUseDetector, StoreExperiments storeExperiments) { m.checkNotNullParameter(observationDeck, "observationDeck"); m.checkNotNullParameter(dispatcher, "dispatcher"); m.checkNotNullParameter(storeVoiceChannelSelected, "voiceChannelSelectedStore"); m.checkNotNullParameter(storeChannels, "channelsStore"); m.checkNotNullParameter(storeStreamRtcConnection, "streamRtcConnectionStore"); - m.checkNotNullParameter(storeAnalytics, "analyticsStore"); m.checkNotNullParameter(videoUseDetector, "videoUseDetector"); m.checkNotNullParameter(storeExperiments, "experimentsStore"); this.observationDeck = observationDeck; @@ -258,7 +256,6 @@ public final class StoreAudioManagerV2 extends StoreV2 { this.voiceChannelSelectedStore = storeVoiceChannelSelected; this.channelsStore = storeChannels; this.streamRtcConnectionStore = storeStreamRtcConnection; - this.analyticsStore = storeAnalytics; this.videoUseDetector = videoUseDetector; this.experimentsStore = storeExperiments; State state = new State(null, null, 3, null); @@ -442,15 +439,11 @@ public final class StoreAudioManagerV2 extends StoreV2 { public final void selectOutputDevice(DiscordAudioManager.DeviceTypes deviceTypes) { m.checkNotNullParameter(deviceTypes, "device"); - DiscordAudioManager.DeviceTypes activeAudioDevice = this.state.getActiveAudioDevice(); Handler handler = this.audioManagerHandler; if (handler == null) { m.throwUninitializedPropertyAccessException("audioManagerHandler"); } handler.post(new StoreAudioManagerV2$selectOutputDevice$1(deviceTypes)); - if (deviceTypes != activeAudioDevice) { - this.analyticsStore.trackVoiceAudioOutputModeSelected(this.voiceChannelSelectedStore.getSelectedVoiceChannelId(), activeAudioDevice, deviceTypes); - } } public final void setState$app_productionCanaryRelease(State state) { diff --git a/app/src/main/java/com/discord/stores/StoreContactSync$createContactSyncNotice$1.java b/app/src/main/java/com/discord/stores/StoreContactSync$createContactSyncNotice$1.java index 55fa0473a5..f6e2954bb0 100644 --- a/app/src/main/java/com/discord/stores/StoreContactSync$createContactSyncNotice$1.java +++ b/app/src/main/java/com/discord/stores/StoreContactSync$createContactSyncNotice$1.java @@ -4,7 +4,7 @@ import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; import com.discord.utilities.analytics.AnalyticsTracker; import com.discord.utilities.analytics.Traits; -import com.discord.widgets.contact_sync.ContactSyncAnalytics; +import com.discord.widgets.contact_sync.ContactSyncFlowAnalytics; import com.discord.widgets.contact_sync.ContactSyncUpsellSheet; import d0.t.g0; import d0.z.d.m; @@ -28,7 +28,7 @@ public final class StoreContactSync$createContactSyncNotice$1 extends o implemen public final boolean invoke(FragmentActivity fragmentActivity) { m.checkNotNullParameter(fragmentActivity, "appActivity"); AnalyticsTracker.INSTANCE.openPopout("Contact Sync", new Traits.Location("Release Upsell", null, null, null, null, 30, null)); - ContactSyncAnalytics.Companion.trackStart$default(ContactSyncAnalytics.Companion, false, g0.mapOf(d0.o.to("location_page", "Release Upsell")), 1, null); + ContactSyncFlowAnalytics.Companion.trackStart$default(ContactSyncFlowAnalytics.Companion, false, g0.mapOf(d0.o.to("location_page", "Release Upsell")), 1, null); ContactSyncUpsellSheet.Companion companion = ContactSyncUpsellSheet.Companion; FragmentManager supportFragmentManager = fragmentActivity.getSupportFragmentManager(); m.checkNotNullExpressionValue(supportFragmentManager, "appActivity.supportFragmentManager"); diff --git a/app/src/main/java/com/discord/stores/StoreNavigation$ActivityNavigationLifecycleCallbacks$inviteCodeNavHandler$1.java b/app/src/main/java/com/discord/stores/StoreNavigation$ActivityNavigationLifecycleCallbacks$inviteCodeNavHandler$1.java index ebd3d6c901..3064bf8b23 100644 --- a/app/src/main/java/com/discord/stores/StoreNavigation$ActivityNavigationLifecycleCallbacks$inviteCodeNavHandler$1.java +++ b/app/src/main/java/com/discord/stores/StoreNavigation$ActivityNavigationLifecycleCallbacks$inviteCodeNavHandler$1.java @@ -6,7 +6,7 @@ import com.discord.models.experiments.domain.Experiment; import com.discord.stores.StoreInviteSettings; import com.discord.stores.StoreNavigation; import com.discord.stores.StoreNux; -import com.discord.widgets.contact_sync.ContactSyncAnalytics; +import com.discord.widgets.contact_sync.ContactSyncFlowAnalytics; import com.discord.widgets.contact_sync.ContactSyncMode; import com.discord.widgets.contact_sync.WidgetContactSync; import com.discord.widgets.guilds.invite.WidgetGuildInvite; @@ -67,7 +67,7 @@ public final class StoreNavigation$ActivityNavigationLifecycleCallbacks$inviteCo WidgetGuildInvite.Companion.launch(appActivity, inviteCode); StoreNavigation.ActivityNavigationLifecycleCallbacks.access$getStream$p(this.this$0).getNux$app_productionCanaryRelease().updateNux(AnonymousClass1.INSTANCE); } else if (!appActivity.h(a0.getOrCreateKotlinClass(WidgetContactSync.class))) { - ContactSyncAnalytics.Companion.trackStart(true, g0.mapOf(d0.o.to("location_page", "Onboarding"))); + ContactSyncFlowAnalytics.Companion.trackStart(true, g0.mapOf(d0.o.to("location_page", "Onboarding"))); WidgetContactSync.Companion.launch$default(WidgetContactSync.Companion, appActivity, ContactSyncMode.ONBOARDING, false, false, false, 28, null); } return true; diff --git a/app/src/main/java/com/discord/stores/StoreNavigation$ActivityNavigationLifecycleCallbacks$nuxStateNavHandler$1.java b/app/src/main/java/com/discord/stores/StoreNavigation$ActivityNavigationLifecycleCallbacks$nuxStateNavHandler$1.java index 8a79b381a1..9447f81242 100644 --- a/app/src/main/java/com/discord/stores/StoreNavigation$ActivityNavigationLifecycleCallbacks$nuxStateNavHandler$1.java +++ b/app/src/main/java/com/discord/stores/StoreNavigation$ActivityNavigationLifecycleCallbacks$nuxStateNavHandler$1.java @@ -7,7 +7,7 @@ import com.discord.models.experiments.domain.Experiment; import com.discord.stores.StoreNavigation; import com.discord.stores.StoreNux; import com.discord.utilities.features.GrowthTeamFeatures; -import com.discord.widgets.contact_sync.ContactSyncAnalytics; +import com.discord.widgets.contact_sync.ContactSyncFlowAnalytics; import com.discord.widgets.contact_sync.ContactSyncMode; import com.discord.widgets.contact_sync.WidgetContactSync; import com.discord.widgets.guilds.create.CreateGuildTrigger; @@ -78,7 +78,7 @@ public final class StoreNavigation$ActivityNavigationLifecycleCallbacks$nuxState StoreNavigation.ActivityNavigationLifecycleCallbacks.access$getStream$p(this.this$0).getNux$app_productionCanaryRelease().updateNux(AnonymousClass1.INSTANCE); } } else if (!appActivity.h(a0.getOrCreateKotlinClass(WidgetContactSync.class))) { - ContactSyncAnalytics.Companion.trackStart(true, g0.mapOf(d0.o.to("location_page", "Onboarding"))); + ContactSyncFlowAnalytics.Companion.trackStart(true, g0.mapOf(d0.o.to("location_page", "Onboarding"))); WidgetContactSync.Companion.launch$default(WidgetContactSync.Companion, appActivity, ContactSyncMode.ONBOARDING, false, false, false, 28, null); } return true; diff --git a/app/src/main/java/com/discord/stores/StoreStream.java b/app/src/main/java/com/discord/stores/StoreStream.java index 26e49016fe..ca82f55a86 100644 --- a/app/src/main/java/com/discord/stores/StoreStream.java +++ b/app/src/main/java/com/discord/stores/StoreStream.java @@ -923,7 +923,7 @@ public final class StoreStream { this.mfa = new StoreMFA(this, this.dispatcher, ObservationDeckProvider.get()); StoreStreamRtcConnection storeStreamRtcConnection = new StoreStreamRtcConnection(storeMediaEngine, this.users, this, this.dispatcher, this.clock, this.analytics, storeRtcConnection, null, null, null, 896, null); this.streamRtcConnection = storeStreamRtcConnection; - StoreAudioManagerV2 storeAudioManagerV2 = new StoreAudioManagerV2(ObservationDeckProvider.get(), this.dispatcher, storeVoiceChannelSelected, this.channels, storeStreamRtcConnection, this.analytics, videoUseDetector, this.experiments); + StoreAudioManagerV2 storeAudioManagerV2 = new StoreAudioManagerV2(ObservationDeckProvider.get(), this.dispatcher, storeVoiceChannelSelected, this.channels, storeStreamRtcConnection, videoUseDetector, this.experiments); this.audioManagerV2 = storeAudioManagerV2; StoreApplicationStreamPreviews storeApplicationStreamPreviews = new StoreApplicationStreamPreviews(this.dispatcher, this.clock, null, null, 12, null); this.applicationStreamPreviews = storeApplicationStreamPreviews; diff --git a/app/src/main/java/com/discord/utilities/ShareUtils$updateDirectShareTargets$4.java b/app/src/main/java/com/discord/utilities/ShareUtils$updateDirectShareTargets$4.java index fd1dc4a21c..b6a6acc708 100644 --- a/app/src/main/java/com/discord/utilities/ShareUtils$updateDirectShareTargets$4.java +++ b/app/src/main/java/com/discord/utilities/ShareUtils$updateDirectShareTargets$4.java @@ -1,6 +1,7 @@ package com.discord.utilities; import android.graphics.Bitmap; +import android.os.Build; import com.discord.utilities.images.MGImages; import com.discord.utilities.images.MGImagesBitmap; import d0.o; @@ -39,7 +40,7 @@ public final class ShareUtils$updateDirectShareTargets$4 implements b 24); } } diff --git a/app/src/main/java/com/discord/utilities/analytics/AnalyticsTracker.java b/app/src/main/java/com/discord/utilities/analytics/AnalyticsTracker.java index c2313a29bf..8a0fc65d8c 100644 --- a/app/src/main/java/com/discord/utilities/analytics/AnalyticsTracker.java +++ b/app/src/main/java/com/discord/utilities/analytics/AnalyticsTracker.java @@ -12,7 +12,9 @@ import co.discord.media_engine.VideoInputDeviceDescription; import com.adjust.sdk.Adjust; import com.adjust.sdk.AdjustAttribution; import com.adjust.sdk.AdjustEvent; +import com.discord.analytics.generated.events.TrackAgeGateSubmitted; import com.discord.analytics.generated.events.impression.TrackImpressionInviteAccept; +import com.discord.analytics.generated.traits.TrackSourceMetadata; import com.discord.api.activity.ActivityPlatform; import com.discord.api.application.Application; import com.discord.api.channel.Channel; @@ -24,6 +26,7 @@ import com.discord.api.stageinstance.StageInstance; import com.discord.api.sticker.Sticker; import com.discord.api.thread.ThreadMemberFlags; import com.discord.api.user.User; +import com.discord.api.utcdatetime.UtcDateTime; import com.discord.api.voice.state.VoiceState; import com.discord.app.AppLog; import com.discord.models.domain.ModelApplicationStream; @@ -82,8 +85,10 @@ import d0.t.n; import d0.t.r; import d0.t.u; import d0.z.d.m; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collection; +import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; @@ -92,6 +97,7 @@ import java.util.Locale; import java.util.Map; import java.util.Objects; import java.util.Set; +import java.util.TimeZone; import kotlin.Lazy; import kotlin.NoWhenBranchMatchedException; import kotlin.Pair; @@ -1013,10 +1019,26 @@ public final class AnalyticsTracker { public final void ageGateSubmitted(long j, String str) { m.checkNotNullParameter(str, "sourcePage"); - HashMap hashMap = new HashMap(); - hashMap.put("dob", Long.valueOf(j)); - hashMap.put("source_page", str); - tracker.track("age_gate_submitted", hashMap); + AnalyticsUtils.Tracker tracker2 = tracker; + UtcDateTime utcDateTime = new UtcDateTime(j); + Locale locale = Locale.ROOT; + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd", locale); + simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); + String format = simpleDateFormat.format(new Date(j)); + m.checkNotNullExpressionValue(format, "formatter.format(Date(this))"); + Long valueOf = Long.valueOf(Long.parseLong(format)); + SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("MM", locale); + simpleDateFormat2.setTimeZone(TimeZone.getTimeZone("UTC")); + String format2 = simpleDateFormat2.format(new Date(j)); + m.checkNotNullExpressionValue(format2, "formatter.format(Date(this))"); + Long valueOf2 = Long.valueOf(Long.parseLong(format2)); + SimpleDateFormat simpleDateFormat3 = new SimpleDateFormat("yyyy", locale); + simpleDateFormat3.setTimeZone(TimeZone.getTimeZone("UTC")); + String format3 = simpleDateFormat3.format(new Date(j)); + m.checkNotNullExpressionValue(format3, "formatter.format(Date(this))"); + TrackAgeGateSubmitted trackAgeGateSubmitted = new TrackAgeGateSubmitted(utcDateTime, valueOf, valueOf2, Long.valueOf(Long.parseLong(format3))); + trackAgeGateSubmitted.c(new TrackSourceMetadata(str, null, null, null, null, 30)); + tracker2.track(trackAgeGateSubmitted); } public final void appCrashed() { diff --git a/app/src/main/java/com/discord/utilities/fcm/NotificationRenderer.java b/app/src/main/java/com/discord/utilities/fcm/NotificationRenderer.java index 1e4bf86e05..250381e002 100644 --- a/app/src/main/java/com/discord/utilities/fcm/NotificationRenderer.java +++ b/app/src/main/java/com/discord/utilities/fcm/NotificationRenderer.java @@ -128,9 +128,10 @@ public final class NotificationRenderer { contentIntent.setFullScreenIntent(fullScreenIntent, true); contentIntent.setVisibility(1); } + Uri uri = null; if (!extras.isEmpty()) { contentIntent.setNumber(extras.size()); - contentIntent.setStyle(getMessageStyle(context, notificationData, extras, new MGImagesBitmap.CloseableBitmaps(h0.emptyMap()))); + contentIntent.setStyle(getMessageStyle(context, notificationData, extras, new MGImagesBitmap.CloseableBitmaps(h0.emptyMap(), false, 2, null))); } if (notificationData.getShouldUseBigText()) { contentIntent.setStyle(new NotificationCompat.BigTextStyle().bigText(notificationData.getContent(context))); @@ -143,11 +144,11 @@ public final class NotificationRenderer { } Uri notificationSound = notificationData.getNotificationSound(context); if (notificationSound != null) { - if (!(!settingsV2.isDisableSound())) { - notificationSound = null; + if (!settingsV2.isDisableSound()) { + uri = notificationSound; } - if (notificationSound != null) { - contentIntent.setSound(notificationSound).setDefaults(INSTANCE.getNotificationDefaults(settingsV2.isDisableSound(), settingsV2.isDisableVibrate()) & -2); + if (uri != null) { + contentIntent.setSound(uri).setDefaults(INSTANCE.getNotificationDefaults(settingsV2.isDisableSound(), settingsV2.isDisableVibrate()) & -2); } } } diff --git a/app/src/main/java/com/discord/utilities/features/GrowthTeamFeatures.java b/app/src/main/java/com/discord/utilities/features/GrowthTeamFeatures.java index c23313f5b6..f4234642b9 100644 --- a/app/src/main/java/com/discord/utilities/features/GrowthTeamFeatures.java +++ b/app/src/main/java/com/discord/utilities/features/GrowthTeamFeatures.java @@ -25,6 +25,10 @@ public final class GrowthTeamFeatures { return StoreStream.Companion.getExperiments().getGuildExperiment("2021-06_welcome_cta", j, z2); } + public final boolean imbalancedAndroidSplashNoop() { + return isExperimentEnabled$default(this, "2021-09_imbalanced_android_splash_noop", 0, 1, null); + } + public final boolean isAndroidSmsAutofillEnabled() { return isExperimentEnabled$default(this, "2021-09_android_sms_autofill", 0, 1, null); } diff --git a/app/src/main/java/com/discord/utilities/images/MGImagesBitmap$getBitmaps$4.java b/app/src/main/java/com/discord/utilities/images/MGImagesBitmap$getBitmaps$4.java index 9b673c3817..3a3027c6e9 100644 --- a/app/src/main/java/com/discord/utilities/images/MGImagesBitmap$getBitmaps$4.java +++ b/app/src/main/java/com/discord/utilities/images/MGImagesBitmap$getBitmaps$4.java @@ -11,6 +11,6 @@ public final class MGImagesBitmap$getBitmaps$4 implements b map) { m.checkNotNullExpressionValue(map, "it"); - return new MGImagesBitmap.CloseableBitmaps(map); + return new MGImagesBitmap.CloseableBitmaps(map, false, 2, null); } } diff --git a/app/src/main/java/com/discord/utilities/images/MGImagesBitmap.java b/app/src/main/java/com/discord/utilities/images/MGImagesBitmap.java index 3bb56e123b..abb3b19a73 100644 --- a/app/src/main/java/com/discord/utilities/images/MGImagesBitmap.java +++ b/app/src/main/java/com/discord/utilities/images/MGImagesBitmap.java @@ -19,6 +19,7 @@ import java.util.Map; import java.util.Set; import java.util.function.BiFunction; import java.util.function.Function; +import kotlin.jvm.internal.DefaultConstructorMarker; import rx.Observable; /* compiled from: MGImagesBitmap.kt */ public final class MGImagesBitmap { @@ -26,11 +27,18 @@ public final class MGImagesBitmap { /* compiled from: MGImagesBitmap.kt */ public static final class CloseableBitmaps implements Map, Closeable, a { + private final boolean recycleBitmaps; private final Map underlyingMap; - public CloseableBitmaps(Map map) { + public CloseableBitmaps(Map map, boolean z2) { m.checkNotNullParameter(map, "underlyingMap"); this.underlyingMap = map; + this.recycleBitmaps = z2; + } + + /* JADX INFO: this call moved to the top of the method (can break code semantics) */ + public /* synthetic */ CloseableBitmaps(Map map, boolean z2, int i, DefaultConstructorMarker defaultConstructorMarker) { + this(map, (i & 2) != 0 ? true : z2); } @Override // java.util.Map @@ -40,8 +48,10 @@ public final class MGImagesBitmap { @Override // java.io.Closeable, java.lang.AutoCloseable public void close() { - for (Map.Entry entry : this.underlyingMap.entrySet()) { - entry.getValue().recycle(); + if (this.recycleBitmaps) { + for (Map.Entry entry : this.underlyingMap.entrySet()) { + entry.getValue().recycle(); + } } } diff --git a/app/src/main/java/com/discord/utilities/intent/RouteHandlers$selectFeature$settingMap$9.java b/app/src/main/java/com/discord/utilities/intent/RouteHandlers$selectFeature$settingMap$9.java index 5b70bae188..ae6a9b6845 100644 --- a/app/src/main/java/com/discord/utilities/intent/RouteHandlers$selectFeature$settingMap$9.java +++ b/app/src/main/java/com/discord/utilities/intent/RouteHandlers$selectFeature$settingMap$9.java @@ -1,7 +1,7 @@ package com.discord.utilities.intent; import androidx.fragment.app.FragmentActivity; -import com.discord.widgets.contact_sync.ContactSyncAnalytics; +import com.discord.widgets.contact_sync.ContactSyncFlowAnalytics; import com.discord.widgets.contact_sync.WidgetContactSync; import d0.t.g0; import d0.z.d.m; @@ -26,7 +26,7 @@ public final class RouteHandlers$selectFeature$settingMap$9 extends o implements public final void invoke(FragmentActivity fragmentActivity) { m.checkNotNullParameter(fragmentActivity, "ctx"); - ContactSyncAnalytics.Companion.trackStart$default(ContactSyncAnalytics.Companion, false, g0.mapOf(d0.o.to("location_page", "Deep Link")), 1, null); + ContactSyncFlowAnalytics.Companion.trackStart$default(ContactSyncFlowAnalytics.Companion, false, g0.mapOf(d0.o.to("location_page", "Deep Link")), 1, null); WidgetContactSync.Companion.launch$default(WidgetContactSync.Companion, fragmentActivity, null, false, false, false, 30, null); } } diff --git a/app/src/main/java/com/discord/widgets/auth/WidgetAuthLanding.java b/app/src/main/java/com/discord/widgets/auth/WidgetAuthLanding.java index d88caf92ea..84e7b5cee3 100644 --- a/app/src/main/java/com/discord/widgets/auth/WidgetAuthLanding.java +++ b/app/src/main/java/com/discord/widgets/auth/WidgetAuthLanding.java @@ -18,6 +18,7 @@ import com.discord.stores.StoreStream; import com.discord.utilities.auth.GoogleSmartLockManager; import com.discord.utilities.auth.RegistrationFlowRepo; import com.discord.utilities.color.ColorCompat; +import com.discord.utilities.features.GrowthTeamFeatures; import com.discord.utilities.rx.ObservableExtensionsKt; import com.discord.utilities.rx.ObservableExtensionsKt$filterNull$1; import com.discord.utilities.rx.ObservableExtensionsKt$filterNull$2; @@ -169,5 +170,6 @@ public final class WidgetAuthLanding extends AppFragment { m.checkNotNullExpressionValue(F2, "StoreStream.getExperimen…experiment?.bucket == 1 }"); ObservableExtensionsKt.appSubscribe$default(ObservableExtensionsKt.bindToComponentLifecycle$default(F2, this, null, 2, null), WidgetAuthLanding.class, (Context) null, (Function1) null, (Function1) null, (Function0) null, (Function0) null, new WidgetAuthLanding$onViewBoundOrOnResume$2(this), 62, (Object) null); ObservableExtensionsKt.appSubscribe$default(ObservableExtensionsKt.bindToComponentLifecycle$default(getViewModel().observeEvents(), this, null, 2, null), WidgetAuthLanding.class, (Context) null, (Function1) null, (Function1) null, (Function0) null, (Function0) null, new WidgetAuthLanding$onViewBoundOrOnResume$3(this), 62, (Object) null); + GrowthTeamFeatures.INSTANCE.imbalancedAndroidSplashNoop(); } } diff --git a/app/src/main/java/com/discord/widgets/channels/list/WidgetChannelsListItemChannelActions.java b/app/src/main/java/com/discord/widgets/channels/list/WidgetChannelsListItemChannelActions.java index cacb8f6c73..0aaf6b4140 100644 --- a/app/src/main/java/com/discord/widgets/channels/list/WidgetChannelsListItemChannelActions.java +++ b/app/src/main/java/com/discord/widgets/channels/list/WidgetChannelsListItemChannelActions.java @@ -171,9 +171,10 @@ public final class WidgetChannelsListItemChannelActions extends AppBottomSheet { return this.guild; } - public final CharSequence getMuteChannelText(Context context) { + public final CharSequence getMuteChannelText(Context context, Channel channel) { m.checkNotNullParameter(context, "context"); - return this.isMuted ? b.h(context, R.string.unmute_channel_generic, new Object[0], null, 4) : b.h(context, R.string.mute_channel_generic, new Object[0], null, 4); + m.checkNotNullParameter(channel, "channel"); + return (!this.isMuted || !AnimatableValueParser.f1(channel)) ? (this.isMuted || !AnimatableValueParser.f1(channel)) ? this.isMuted ? b.h(context, R.string.unmute_channel_generic, new Object[0], null, 4) : b.h(context, R.string.mute_channel_generic, new Object[0], null, 4) : b.h(context, R.string.mute_category, new Object[0], null, 4) : b.h(context, R.string.unmute_category, new Object[0], null, 4); } public final int getMuteIconResId(Context context) { @@ -283,7 +284,7 @@ public final class WidgetChannelsListItemChannelActions extends AppBottomSheet { textView4.setCompoundDrawablesWithIntrinsicBounds(model.getMuteIconResId(context), 0, 0, 0); Context context2 = textView4.getContext(); m.checkNotNullExpressionValue(context2, "context"); - textView4.setText(model.getMuteChannelText(context2)); + textView4.setText(model.getMuteChannelText(context2, model.getChannel())); TextView textView5 = getBinding().l; textView5.setVisibility(ThreadUtils.INSTANCE.isThreadsEnabled(model.getChannel().f()) && AnimatableValueParser.C1(model.getChannel()) && !model.getChannel().o() ? 0 : 8); setOnClickAndDismissListener(textView5, new WidgetChannelsListItemChannelActions$configureUI$$inlined$apply$lambda$4(textView5, this, model)); diff --git a/app/src/main/java/com/discord/widgets/contact_sync/ContactSyncAnalytics.java b/app/src/main/java/com/discord/widgets/contact_sync/ContactSyncFlowAnalytics.java similarity index 78% rename from app/src/main/java/com/discord/widgets/contact_sync/ContactSyncAnalytics.java rename to app/src/main/java/com/discord/widgets/contact_sync/ContactSyncFlowAnalytics.java index 7bf54e1155..960618d17d 100644 --- a/app/src/main/java/com/discord/widgets/contact_sync/ContactSyncAnalytics.java +++ b/app/src/main/java/com/discord/widgets/contact_sync/ContactSyncFlowAnalytics.java @@ -8,8 +8,8 @@ import d0.t.h0; import d0.z.d.m; import java.util.Map; import kotlin.jvm.internal.DefaultConstructorMarker; -/* compiled from: ContactSyncAnalytics.kt */ -public final class ContactSyncAnalytics { +/* compiled from: ContactSyncFlowAnalytics.kt */ +public final class ContactSyncFlowAnalytics { private static final String CONTACT_SYNC_FLOW_KEY = "Contact Sync"; public static final Companion Companion = new Companion(null); private final Clock clock; @@ -17,7 +17,7 @@ public final class ContactSyncAnalytics { private String lastStep; private long lastStepTimestamp; - /* compiled from: ContactSyncAnalytics.kt */ + /* compiled from: ContactSyncFlowAnalytics.kt */ public static final class Companion { private Companion() { } @@ -26,7 +26,7 @@ public final class ContactSyncAnalytics { this(); } - /* JADX DEBUG: Multi-variable search result rejected for r0v0, resolved type: com.discord.widgets.contact_sync.ContactSyncAnalytics$Companion */ + /* JADX DEBUG: Multi-variable search result rejected for r0v0, resolved type: com.discord.widgets.contact_sync.ContactSyncFlowAnalytics$Companion */ /* JADX WARN: Multi-variable type inference failed */ public static /* synthetic */ void trackStart$default(Companion companion, boolean z2, Map map, int i, Object obj) { if ((i & 1) != 0) { @@ -42,18 +42,18 @@ public final class ContactSyncAnalytics { Map mutableMap = h0.toMutableMap(map != null ? map : h0.emptyMap()); mutableMap.put("has_phone_number", Boolean.valueOf(StoreStream.Companion.getUsers().getMe().getPhoneNumber() != null)); AnalyticsTracker analyticsTracker = AnalyticsTracker.INSTANCE; - analyticsTracker.relationshipSyncFlow(ContactSyncAnalytics.CONTACT_SYNC_FLOW_KEY, "Flow Initialized", "Landing", 0, false, false, mutableMap); + analyticsTracker.relationshipSyncFlow(ContactSyncFlowAnalytics.CONTACT_SYNC_FLOW_KEY, "Flow Initialized", "Landing", 0, false, false, mutableMap); if (z2) { - AnalyticsTracker.newUserOnboarding$default(analyticsTracker, ContactSyncAnalytics.CONTACT_SYNC_FLOW_KEY, "Flow Initialized", "Landing", null, false, 24, null); + AnalyticsTracker.newUserOnboarding$default(analyticsTracker, ContactSyncFlowAnalytics.CONTACT_SYNC_FLOW_KEY, "Flow Initialized", "Landing", null, false, 24, null); } } } - public ContactSyncAnalytics() { + public ContactSyncFlowAnalytics() { this(false, null, 3, null); } - public ContactSyncAnalytics(boolean z2, Clock clock) { + public ContactSyncFlowAnalytics(boolean z2, Clock clock) { m.checkNotNullParameter(clock, "clock"); this.isOnboarding = z2; this.clock = clock; @@ -62,26 +62,26 @@ public final class ContactSyncAnalytics { } /* JADX INFO: this call moved to the top of the method (can break code semantics) */ - public /* synthetic */ ContactSyncAnalytics(boolean z2, Clock clock, int i, DefaultConstructorMarker defaultConstructorMarker) { + public /* synthetic */ ContactSyncFlowAnalytics(boolean z2, Clock clock, int i, DefaultConstructorMarker defaultConstructorMarker) { this((i & 1) != 0 ? false : z2, (i & 2) != 0 ? ClockFactory.get() : clock); } - /* JADX DEBUG: Multi-variable search result rejected for r0v0, resolved type: com.discord.widgets.contact_sync.ContactSyncAnalytics */ + /* JADX DEBUG: Multi-variable search result rejected for r0v0, resolved type: com.discord.widgets.contact_sync.ContactSyncFlowAnalytics */ /* JADX WARN: Multi-variable type inference failed */ - public static /* synthetic */ void trackEnd$default(ContactSyncAnalytics contactSyncAnalytics, boolean z2, Map map, int i, Object obj) { + public static /* synthetic */ void trackEnd$default(ContactSyncFlowAnalytics contactSyncFlowAnalytics, boolean z2, Map map, int i, Object obj) { if ((i & 2) != 0) { map = null; } - contactSyncAnalytics.trackEnd(z2, map); + contactSyncFlowAnalytics.trackEnd(z2, map); } - /* JADX DEBUG: Multi-variable search result rejected for r0v0, resolved type: com.discord.widgets.contact_sync.ContactSyncAnalytics */ + /* JADX DEBUG: Multi-variable search result rejected for r0v0, resolved type: com.discord.widgets.contact_sync.ContactSyncFlowAnalytics */ /* JADX WARN: Multi-variable type inference failed */ - public static /* synthetic */ void trackFlowStep$default(ContactSyncAnalytics contactSyncAnalytics, String str, boolean z2, boolean z3, Map map, int i, Object obj) { + public static /* synthetic */ void trackFlowStep$default(ContactSyncFlowAnalytics contactSyncFlowAnalytics, String str, boolean z2, boolean z3, Map map, int i, Object obj) { if ((i & 8) != 0) { map = null; } - contactSyncAnalytics.trackFlowStep(str, z2, z3, map); + contactSyncFlowAnalytics.trackFlowStep(str, z2, z3, map); } public final Clock getClock() { diff --git a/app/src/main/java/com/discord/widgets/contact_sync/WidgetContactSync$loggingConfig$1.java b/app/src/main/java/com/discord/widgets/contact_sync/WidgetContactSync$loggingConfig$1.java new file mode 100644 index 0000000000..da2a08fe52 --- /dev/null +++ b/app/src/main/java/com/discord/widgets/contact_sync/WidgetContactSync$loggingConfig$1.java @@ -0,0 +1,44 @@ +package com.discord.widgets.contact_sync; + +import com.discord.analytics.generated.events.impression.TrackImpressionContactSyncInputName; +import com.discord.analytics.generated.events.impression.TrackImpressionContactSyncStart; +import com.discord.analytics.generated.events.impression.TrackImpressionContactSyncSuggestions; +import com.discord.api.science.AnalyticsSchema; +import com.discord.widgets.contact_sync.WidgetContactSyncViewModel; +import d0.z.d.o; +import kotlin.jvm.functions.Function0; +/* compiled from: WidgetContactSync.kt */ +public final class WidgetContactSync$loggingConfig$1 extends o implements Function0 { + public final /* synthetic */ WidgetContactSync this$0; + + /* JADX INFO: super call moved to the top of the method (can break code semantics) */ + public WidgetContactSync$loggingConfig$1(WidgetContactSync widgetContactSync) { + super(0); + this.this$0 = widgetContactSync; + } + + @Override // kotlin.jvm.functions.Function0 + /* renamed from: invoke */ + public final AnalyticsSchema mo1invoke() { + int access$getDisplayedChildIndex$p = WidgetContactSync.access$getDisplayedChildIndex$p(this.this$0); + if (access$getDisplayedChildIndex$p == WidgetContactSyncViewModel.Views.VIEW_LANDING.ordinal()) { + TrackImpressionContactSyncStart trackImpressionContactSyncStart = new TrackImpressionContactSyncStart(); + trackImpressionContactSyncStart.c(WidgetContactSync.access$getImpressionMetadata$p(this.this$0)); + return trackImpressionContactSyncStart; + } else if (access$getDisplayedChildIndex$p == WidgetContactSyncViewModel.Views.VIEW_NAME_INPUT.ordinal()) { + TrackImpressionContactSyncInputName trackImpressionContactSyncInputName = new TrackImpressionContactSyncInputName(); + trackImpressionContactSyncInputName.c(WidgetContactSync.access$getImpressionMetadata$p(this.this$0)); + return trackImpressionContactSyncInputName; + } else if (access$getDisplayedChildIndex$p == WidgetContactSyncViewModel.Views.VIEW_SUGGESTIONS.ordinal()) { + TrackImpressionContactSyncSuggestions trackImpressionContactSyncSuggestions = new TrackImpressionContactSyncSuggestions(); + trackImpressionContactSyncSuggestions.c(WidgetContactSync.access$getImpressionMetadata$p(this.this$0)); + return trackImpressionContactSyncSuggestions; + } else if (access$getDisplayedChildIndex$p != WidgetContactSyncViewModel.Views.VIEW_SUGGESTIONS_EMPTY.ordinal()) { + return null; + } else { + TrackImpressionContactSyncSuggestions trackImpressionContactSyncSuggestions2 = new TrackImpressionContactSyncSuggestions(); + trackImpressionContactSyncSuggestions2.c(WidgetContactSync.access$getImpressionMetadata$p(this.this$0)); + return trackImpressionContactSyncSuggestions2; + } + } +} diff --git a/app/src/main/java/com/discord/widgets/contact_sync/WidgetContactSync.java b/app/src/main/java/com/discord/widgets/contact_sync/WidgetContactSync.java index b62447e3ea..172a3c37be 100644 --- a/app/src/main/java/com/discord/widgets/contact_sync/WidgetContactSync.java +++ b/app/src/main/java/com/discord/widgets/contact_sync/WidgetContactSync.java @@ -14,9 +14,12 @@ import c.a.d.j; import c.a.k.b; import c.d.b.a.a; import com.discord.R; +import com.discord.analytics.generated.traits.TrackImpressionMetadata; +import com.discord.analytics.utils.ImpressionGroups; import com.discord.app.AppActivity; import com.discord.app.AppFragment; import com.discord.app.AppViewFlipper; +import com.discord.app.LoggingConfig; import com.discord.databinding.WidgetContactSyncBinding; import com.discord.utilities.accessibility.AccessibilityUtils; import com.discord.utilities.analytics.AnalyticsTracker; @@ -38,7 +41,6 @@ import d0.z.d.m; import java.io.Serializable; import java.util.Objects; import kotlin.Lazy; -import kotlin.NoWhenBranchMatchedException; import kotlin.jvm.functions.Function0; import kotlin.jvm.functions.Function1; import kotlin.jvm.internal.DefaultConstructorMarker; @@ -54,6 +56,8 @@ public final class WidgetContactSync extends AppFragment { private final FragmentViewBindingDelegate binding$delegate = FragmentViewBindingDelegateKt.viewBinding$default(this, WidgetContactSync$binding$2.INSTANCE, null, 2, null); private int displayedChildIndex; private ContactSyncFriendSuggestionListAdapter friendSuggestionsAdapter; + private final TrackImpressionMetadata impressionMetadata = new TrackImpressionMetadata(null, null, null, ImpressionGroups.CONTACT_SYNC_FLOW, 7); + private final LoggingConfig loggingConfig = new LoggingConfig(false, null, new WidgetContactSync$loggingConfig$1(this), 3); private String phoneNumber; private final Lazy viewModel$delegate = FragmentViewModelLazyKt.createViewModelLazy(this, a0.getOrCreateKotlinClass(WidgetContactSyncViewModel.class), new WidgetContactSync$appActivityViewModels$$inlined$activityViewModels$1(this), new e0(new WidgetContactSync$viewModel$2(this))); @@ -102,22 +106,6 @@ public final class WidgetContactSync extends AppFragment { } } - public final /* synthetic */ class WhenMappings { - public static final /* synthetic */ int[] $EnumSwitchMapping$0; - - static { - WidgetContactSyncViewModel.Views.values(); - int[] iArr = new int[6]; - $EnumSwitchMapping$0 = iArr; - iArr[WidgetContactSyncViewModel.Views.VIEW_LANDING.ordinal()] = 1; - iArr[WidgetContactSyncViewModel.Views.VIEW_ADD_PHONE.ordinal()] = 2; - iArr[WidgetContactSyncViewModel.Views.VIEW_VERIFY_PHONE.ordinal()] = 3; - iArr[WidgetContactSyncViewModel.Views.VIEW_NAME_INPUT.ordinal()] = 4; - iArr[WidgetContactSyncViewModel.Views.VIEW_SUGGESTIONS.ordinal()] = 5; - iArr[WidgetContactSyncViewModel.Views.VIEW_SUGGESTIONS_EMPTY.ordinal()] = 6; - } - } - public WidgetContactSync() { super(R.layout.widget_contact_sync); } @@ -130,6 +118,14 @@ public final class WidgetContactSync extends AppFragment { return widgetContactSync.getBinding(); } + public static final /* synthetic */ int access$getDisplayedChildIndex$p(WidgetContactSync widgetContactSync) { + return widgetContactSync.displayedChildIndex; + } + + public static final /* synthetic */ TrackImpressionMetadata access$getImpressionMetadata$p(WidgetContactSync widgetContactSync) { + return widgetContactSync.impressionMetadata; + } + public static final /* synthetic */ WidgetContactSyncViewModel access$getViewModel$p(WidgetContactSync widgetContactSync) { return widgetContactSync.getViewModel(); } @@ -150,6 +146,10 @@ public final class WidgetContactSync extends AppFragment { widgetContactSync.onPermissionsGranted(); } + public static final /* synthetic */ void access$setDisplayedChildIndex$p(WidgetContactSync widgetContactSync, int i) { + widgetContactSync.displayedChildIndex = i; + } + private final void configureToolbar(WidgetContactSyncViewModel.ToolbarConfig toolbarConfig) { setActionBarDisplayHomeAsUpEnabled(toolbarConfig.getShowBackButton()); setActionBarOptionsMenu(R.menu.menu_contact_sync, new WidgetContactSync$configureToolbar$1(this), new WidgetContactSync$configureToolbar$2(toolbarConfig)); @@ -211,26 +211,12 @@ public final class WidgetContactSync extends AppFragment { private final void configureViewFlipper(WidgetContactSyncViewModel.Views views) { int i; int ordinal = views.ordinal(); - boolean z2 = false; - int i2 = 5; - if (ordinal == 0) { - i2 = 0; - } else if (ordinal == 1) { - i2 = 1; - } else if (ordinal == 2) { - i2 = 2; - } else if (ordinal == 3) { - i2 = 3; - } else if (ordinal == 4) { - i2 = 4; - } else if (ordinal != 5) { - throw new NoWhenBranchMatchedException(); - } - if (i2 != this.displayedChildIndex) { + boolean z2 = true; + if (ordinal != this.displayedChildIndex) { AppFragment.hideKeyboard$default(this, null, 1, null); } - if (views == WidgetContactSyncViewModel.Views.VIEW_LANDING && ((i = this.displayedChildIndex) == 2 || i == 3)) { - z2 = true; + if (!(views == WidgetContactSyncViewModel.Views.VIEW_LANDING && ((i = this.displayedChildIndex) == 2 || i == 3))) { + z2 = false; } if (AccessibilityUtils.INSTANCE.isReducedMotionEnabled()) { AppViewFlipper appViewFlipper = getBinding().h; @@ -240,15 +226,15 @@ public final class WidgetContactSync extends AppFragment { m.checkNotNullExpressionValue(appViewFlipper2, "binding.contactSyncViewFlipper"); appViewFlipper2.setOutAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.anim_fade_out_fast)); } else { - int i3 = this.displayedChildIndex; - if (i2 > i3 || z2) { + int i2 = this.displayedChildIndex; + if (ordinal > i2 || z2) { AppViewFlipper appViewFlipper3 = getBinding().h; m.checkNotNullExpressionValue(appViewFlipper3, "binding.contactSyncViewFlipper"); appViewFlipper3.setInAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.activity_slide_horizontal_open_in)); AppViewFlipper appViewFlipper4 = getBinding().h; m.checkNotNullExpressionValue(appViewFlipper4, "binding.contactSyncViewFlipper"); appViewFlipper4.setOutAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.activity_slide_horizontal_open_out)); - } else if (i2 < i3) { + } else if (ordinal < i2) { AppViewFlipper appViewFlipper5 = getBinding().h; m.checkNotNullExpressionValue(appViewFlipper5, "binding.contactSyncViewFlipper"); appViewFlipper5.setInAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.activity_slide_horizontal_close_in)); @@ -259,8 +245,9 @@ public final class WidgetContactSync extends AppFragment { } AppViewFlipper appViewFlipper7 = getBinding().h; m.checkNotNullExpressionValue(appViewFlipper7, "binding.contactSyncViewFlipper"); - appViewFlipper7.setDisplayedChild(i2); - this.displayedChildIndex = i2; + appViewFlipper7.setDisplayedChild(ordinal); + this.displayedChildIndex = ordinal; + getAppLogger().a(null); } private final WidgetContactSyncBinding getBinding() { @@ -347,6 +334,11 @@ public final class WidgetContactSync extends AppFragment { requestContacts(new WidgetContactSync$requestContactsPermissions$1(this), new WidgetContactSync$requestContactsPermissions$2(this)); } + @Override // com.discord.app.AppFragment, com.discord.app.AppLogger.a + public LoggingConfig getLoggingConfig() { + return this.loggingConfig; + } + @Override // com.discord.app.AppFragment, androidx.fragment.app.Fragment public void onResume() { super.onResume(); diff --git a/app/src/main/java/com/discord/widgets/contact_sync/WidgetContactSyncViewModel.java b/app/src/main/java/com/discord/widgets/contact_sync/WidgetContactSyncViewModel.java index 61a553d039..03847948ca 100644 --- a/app/src/main/java/com/discord/widgets/contact_sync/WidgetContactSyncViewModel.java +++ b/app/src/main/java/com/discord/widgets/contact_sync/WidgetContactSyncViewModel.java @@ -56,7 +56,7 @@ public final class WidgetContactSyncViewModel extends AppViewModel { private final PublishSubject eventsSubject; private boolean initialized; private final RestAPI restAPI; - private final ContactSyncAnalytics tracker; + private final ContactSyncFlowAnalytics tracker; /* compiled from: WidgetContactSyncViewModel.kt */ /* renamed from: com.discord.widgets.contact_sync.WidgetContactSyncViewModel$1 reason: invalid class name */ @@ -817,19 +817,28 @@ public final class WidgetContactSyncViewModel extends AppViewModel { /* compiled from: WidgetContactSyncViewModel.kt */ public enum Views { - VIEW_LANDING, - VIEW_ADD_PHONE, - VIEW_VERIFY_PHONE, - VIEW_NAME_INPUT, - VIEW_SUGGESTIONS, - VIEW_SUGGESTIONS_EMPTY + VIEW_LANDING("Landing"), + VIEW_ADD_PHONE("Add Phone Number"), + VIEW_VERIFY_PHONE("Verify Phone Number"), + VIEW_NAME_INPUT("Name Input"), + VIEW_SUGGESTIONS("Suggestions Results"), + VIEW_SUGGESTIONS_EMPTY("Suggestions Results"); + + private final String trackingStep; + + private Views(String str) { + this.trackingStep = str; + } + + public final String getTrackingStep() { + return this.trackingStep; + } } public final /* synthetic */ class WhenMappings { public static final /* synthetic */ int[] $EnumSwitchMapping$0; public static final /* synthetic */ int[] $EnumSwitchMapping$1; public static final /* synthetic */ int[] $EnumSwitchMapping$2; - public static final /* synthetic */ int[] $EnumSwitchMapping$3; static { ContactSyncMode.values(); @@ -842,43 +851,28 @@ public final class WidgetContactSyncViewModel extends AppViewModel { Views.values(); int[] iArr2 = new int[6]; $EnumSwitchMapping$1 = iArr2; - Views views = Views.VIEW_LANDING; - iArr2[views.ordinal()] = 1; - Views views2 = Views.VIEW_NAME_INPUT; - iArr2[views2.ordinal()] = 2; - Views views3 = Views.VIEW_SUGGESTIONS; - iArr2[views3.ordinal()] = 3; - Views views4 = Views.VIEW_SUGGESTIONS_EMPTY; - iArr2[views4.ordinal()] = 4; - Views views5 = Views.VIEW_ADD_PHONE; - iArr2[views5.ordinal()] = 5; - Views views6 = Views.VIEW_VERIFY_PHONE; - iArr2[views6.ordinal()] = 6; - Views.values(); - int[] iArr3 = new int[6]; - $EnumSwitchMapping$2 = iArr3; - iArr3[views.ordinal()] = 1; - iArr3[views2.ordinal()] = 2; - iArr3[views3.ordinal()] = 3; - iArr3[views4.ordinal()] = 4; - iArr3[views5.ordinal()] = 5; - iArr3[views6.ordinal()] = 6; + iArr2[Views.VIEW_LANDING.ordinal()] = 1; + iArr2[Views.VIEW_NAME_INPUT.ordinal()] = 2; + iArr2[Views.VIEW_SUGGESTIONS.ordinal()] = 3; + iArr2[Views.VIEW_SUGGESTIONS_EMPTY.ordinal()] = 4; + iArr2[Views.VIEW_ADD_PHONE.ordinal()] = 5; + iArr2[Views.VIEW_VERIFY_PHONE.ordinal()] = 6; ContactSyncMode.values(); - int[] iArr4 = new int[2]; - $EnumSwitchMapping$3 = iArr4; - iArr4[contactSyncMode.ordinal()] = 1; - iArr4[contactSyncMode2.ordinal()] = 2; + int[] iArr3 = new int[2]; + $EnumSwitchMapping$2 = iArr3; + iArr3[contactSyncMode.ordinal()] = 1; + iArr3[contactSyncMode2.ordinal()] = 2; } } /* JADX WARNING: Illegal instructions before constructor call */ - public WidgetContactSyncViewModel(ContactSyncMode contactSyncMode, boolean z2, boolean z3, RestAPI restAPI, Observable observable, ContactSyncAnalytics contactSyncAnalytics, boolean z4) { + public WidgetContactSyncViewModel(ContactSyncMode contactSyncMode, boolean z2, boolean z3, RestAPI restAPI, Observable observable, ContactSyncFlowAnalytics contactSyncFlowAnalytics, boolean z4) { super(new ViewState(false, contactSyncMode, null, null, r10, "", null, false, false, r15, z2, z3, null, r19, r20, r5)); ToolbarConfig toolbarConfig; m.checkNotNullParameter(contactSyncMode, "mode"); m.checkNotNullParameter(restAPI, "restAPI"); m.checkNotNullParameter(observable, "storeObservable"); - m.checkNotNullParameter(contactSyncAnalytics, "tracker"); + m.checkNotNullParameter(contactSyncFlowAnalytics, "tracker"); PhoneCountryCode default_country_code = PhoneCountryCode.Companion.getDEFAULT_COUNTRY_CODE(); Views views = Views.VIEW_LANDING; List emptyList = n.emptyList(); @@ -892,16 +886,16 @@ public final class WidgetContactSyncViewModel extends AppViewModel { throw new NoWhenBranchMatchedException(); } this.restAPI = restAPI; - this.tracker = contactSyncAnalytics; + this.tracker = contactSyncFlowAnalytics; this.initialized = z4; this.eventsSubject = PublishSubject.j0(); ObservableExtensionsKt.appSubscribe$default(ObservableExtensionsKt.ui$default(observable, this, null, 2, null), WidgetContactSyncViewModel.class, (Context) null, (Function1) null, (Function1) null, (Function0) null, (Function0) null, new AnonymousClass1(this), 62, (Object) null); } /* JADX WARNING: Illegal instructions before constructor call */ - public /* synthetic */ WidgetContactSyncViewModel(ContactSyncMode contactSyncMode, boolean z2, boolean z3, RestAPI restAPI, Observable observable, ContactSyncAnalytics contactSyncAnalytics, boolean z4, int i, DefaultConstructorMarker defaultConstructorMarker) { + public /* synthetic */ WidgetContactSyncViewModel(ContactSyncMode contactSyncMode, boolean z2, boolean z3, RestAPI restAPI, Observable observable, ContactSyncFlowAnalytics contactSyncFlowAnalytics, boolean z4, int i, DefaultConstructorMarker defaultConstructorMarker) { this(contactSyncMode, r0, r2, r3, r4, r5, (i & 64) == 0 ? z4 : r6); - ContactSyncAnalytics contactSyncAnalytics2; + ContactSyncFlowAnalytics contactSyncFlowAnalytics2; boolean z5 = true; boolean z6 = (i & 2) != 0 ? true : z2; boolean z7 = (i & 4) != 0 ? true : z3; @@ -909,9 +903,9 @@ public final class WidgetContactSyncViewModel extends AppViewModel { Observable observeStores = (i & 16) != 0 ? Companion.observeStores() : observable; boolean z8 = false; if ((i & 32) != 0) { - contactSyncAnalytics2 = new ContactSyncAnalytics(contactSyncMode != ContactSyncMode.ONBOARDING ? false : z5, ClockFactory.get()); + contactSyncFlowAnalytics2 = new ContactSyncFlowAnalytics(contactSyncMode != ContactSyncMode.ONBOARDING ? false : z5, ClockFactory.get()); } else { - contactSyncAnalytics2 = contactSyncAnalytics; + contactSyncFlowAnalytics2 = contactSyncFlowAnalytics; } } @@ -1015,9 +1009,9 @@ public final class WidgetContactSyncViewModel extends AppViewModel { return; } if (bulkFriendSuggestions.b().isEmpty()) { - ContactSyncAnalytics contactSyncAnalytics = this.tracker; + ContactSyncFlowAnalytics contactSyncFlowAnalytics = this.tracker; Views views = Views.VIEW_SUGGESTIONS_EMPTY; - contactSyncAnalytics.trackFlowStep(viewToTrackingStep(views), false, false, g0.mapOf(d0.o.to("num_contacts_found", 0))); + contactSyncFlowAnalytics.trackFlowStep(views.getTrackingStep(), false, false, g0.mapOf(d0.o.to("num_contacts_found", 0))); updateViewState(ViewState.copy$default(viewState, false, null, null, null, null, null, null, false, false, views, false, false, null, null, null, new ToolbarConfig(false, false), 32127, null)); return; } @@ -1051,7 +1045,7 @@ public final class WidgetContactSyncViewModel extends AppViewModel { if (!z2) { } } - this.tracker.trackFlowStep(viewToTrackingStep(Views.VIEW_SUGGESTIONS), false, false, g0.mapOf(d0.o.to("num_contacts_found", Integer.valueOf(arrayList.size())))); + this.tracker.trackFlowStep(Views.VIEW_SUGGESTIONS.getTrackingStep(), false, false, g0.mapOf(d0.o.to("num_contacts_found", Integer.valueOf(arrayList.size())))); String a2 = bulkFriendSuggestions.a(); ArrayList arrayList2 = new ArrayList(d0.t.o.collectionSizeOrDefault(arrayList, 10)); for (FriendSuggestion friendSuggestion : arrayList) { @@ -1098,9 +1092,9 @@ public final class WidgetContactSyncViewModel extends AppViewModel { private final void handlePhoneSubmitted() { ViewState viewState = getViewState(); if (viewState != null) { - ContactSyncAnalytics contactSyncAnalytics = this.tracker; + ContactSyncFlowAnalytics contactSyncFlowAnalytics = this.tracker; Views views = Views.VIEW_VERIFY_PHONE; - ContactSyncAnalytics.trackFlowStep$default(contactSyncAnalytics, viewToTrackingStep(views), false, false, null, 8, null); + ContactSyncFlowAnalytics.trackFlowStep$default(contactSyncFlowAnalytics, views.getTrackingStep(), false, false, null, 8, null); updateViewState(ViewState.copy$default(viewState, false, null, null, null, null, null, null, false, false, views, false, false, null, null, null, null, 65023, null)); } } @@ -1163,32 +1157,12 @@ public final class WidgetContactSyncViewModel extends AppViewModel { } } - private final String viewToTrackingStep(Views views) { - int ordinal = views.ordinal(); - if (ordinal == 0) { - return "Landing"; - } - if (ordinal == 1) { - return "Add Phone Number"; - } - if (ordinal == 2) { - return "Verify Phone Number"; - } - if (ordinal == 3) { - return "Name Input"; - } - if (ordinal == 4 || ordinal == 5) { - return "Suggestions Results"; - } - throw new NoWhenBranchMatchedException(); - } - @MainThread public final void dismissUpsell() { StoreStream.Companion.getContactSync().dismissUpsell(); } - public final ContactSyncAnalytics getTracker() { + public final ContactSyncFlowAnalytics getTracker() { return this.tracker; } @@ -1251,9 +1225,9 @@ public final class WidgetContactSyncViewModel extends AppViewModel { return; } if (viewState.getPhoneNumber() == null) { - ContactSyncAnalytics contactSyncAnalytics = this.tracker; + ContactSyncFlowAnalytics contactSyncFlowAnalytics = this.tracker; Views views = Views.VIEW_ADD_PHONE; - ContactSyncAnalytics.trackFlowStep$default(contactSyncAnalytics, viewToTrackingStep(views), false, false, null, 8, null); + ContactSyncFlowAnalytics.trackFlowStep$default(contactSyncFlowAnalytics, views.getTrackingStep(), false, false, null, 8, null); updateViewState(ViewState.copy$default(viewState, false, null, null, null, null, null, null, false, false, views, false, false, null, null, null, WidgetContactSyncViewModelKt.access$getTOOLBAR_CONFIG_DEFAULT$p(), 32255, null)); return; } @@ -1307,7 +1281,7 @@ public final class WidgetContactSyncViewModel extends AppViewModel { @MainThread public final void onPermissionsDenied() { - this.tracker.trackFlowStep(viewToTrackingStep(Views.VIEW_LANDING), true, false, g0.mapOf(d0.o.to("mobile_contacts_permission", "denied"))); + this.tracker.trackFlowStep(Views.VIEW_LANDING.getTrackingStep(), true, false, g0.mapOf(d0.o.to("mobile_contacts_permission", "denied"))); AnalyticsTracker.INSTANCE.permissionsAcked("contacts", false); ViewState viewState = getViewState(); if (viewState != null) { @@ -1320,9 +1294,9 @@ public final class WidgetContactSyncViewModel extends AppViewModel { ViewState viewState = getViewState(); if (viewState != null && viewState.getDisplayedChild() != Views.VIEW_SUGGESTIONS && viewState.getDisplayedChild() != Views.VIEW_SUGGESTIONS_EMPTY) { AnalyticsTracker.INSTANCE.permissionsAcked("contacts", true); - ContactSyncAnalytics contactSyncAnalytics = this.tracker; + ContactSyncFlowAnalytics contactSyncFlowAnalytics = this.tracker; Views views = Views.VIEW_NAME_INPUT; - ContactSyncAnalytics.trackFlowStep$default(contactSyncAnalytics, viewToTrackingStep(views), false, false, null, 8, null); + ContactSyncFlowAnalytics.trackFlowStep$default(contactSyncFlowAnalytics, views.getTrackingStep(), false, false, null, 8, null); if (viewState.getName() != null) { onNameSubmitted(viewState.getName()); } else { @@ -1354,7 +1328,7 @@ public final class WidgetContactSyncViewModel extends AppViewModel { @MainThread public final void requestingPermissions() { - ContactSyncAnalytics.trackFlowStep$default(this.tracker, "Contacts Permission Requested", false, false, null, 8, null); + ContactSyncFlowAnalytics.trackFlowStep$default(this.tracker, "Contacts Permission Requested", false, false, null, 8, null); } public final void skip() { @@ -1362,17 +1336,17 @@ public final class WidgetContactSyncViewModel extends AppViewModel { if (viewState != null) { int ordinal = viewState.getDisplayedChild().ordinal(); if (ordinal == 0) { - ContactSyncAnalytics.trackEnd$default(this.tracker, true, null, 2, null); + ContactSyncFlowAnalytics.trackEnd$default(this.tracker, true, null, 2, null); handleComplete(); } else if (ordinal == 1) { - ContactSyncAnalytics contactSyncAnalytics = this.tracker; + ContactSyncFlowAnalytics contactSyncFlowAnalytics = this.tracker; Views views = Views.VIEW_LANDING; - ContactSyncAnalytics.trackFlowStep$default(contactSyncAnalytics, viewToTrackingStep(views), false, true, null, 8, null); + ContactSyncFlowAnalytics.trackFlowStep$default(contactSyncFlowAnalytics, views.getTrackingStep(), false, true, null, 8, null); updateViewState(ViewState.copy$default(viewState, false, null, null, null, null, null, null, false, false, views, false, false, null, null, null, getLandingToolbarConfig(viewState.getMode()), 32255, null)); } else if (ordinal == 2) { - ContactSyncAnalytics contactSyncAnalytics2 = this.tracker; + ContactSyncFlowAnalytics contactSyncFlowAnalytics2 = this.tracker; Views views2 = Views.VIEW_ADD_PHONE; - ContactSyncAnalytics.trackFlowStep$default(contactSyncAnalytics2, viewToTrackingStep(views2), false, true, null, 8, null); + ContactSyncFlowAnalytics.trackFlowStep$default(contactSyncFlowAnalytics2, views2.getTrackingStep(), false, true, null, 8, null); updateViewState(ViewState.copy$default(viewState, false, null, null, null, null, null, null, false, false, views2, false, false, null, null, null, null, 65023, null)); } else if (ordinal == 3) { onNameSubmitted(""); diff --git a/app/src/main/java/com/discord/widgets/directories/WidgetDirectoryChannel$onViewBound$5.java b/app/src/main/java/com/discord/widgets/directories/WidgetDirectoryChannel$onViewBound$5.java index 97aaa7a169..4d304c1705 100644 --- a/app/src/main/java/com/discord/widgets/directories/WidgetDirectoryChannel$onViewBound$5.java +++ b/app/src/main/java/com/discord/widgets/directories/WidgetDirectoryChannel$onViewBound$5.java @@ -39,7 +39,7 @@ public final class WidgetDirectoryChannel$onViewBound$5 extends o implements Fun GuildMember member = companion.getGuilds().getMember(selectedGuildId, companion.getUsers().getMe().getId()); if (member != null && (guild = companion.getGuilds().getGuild(selectedGuildId)) != null && (context = this.this$0.getContext()) != null) { m.checkNotNullExpressionValue(context, "context ?: return@appSubscribe"); - if (selectedGuildId == j && guild.isHub()) { + if (this.this$0.isVisible() && selectedGuildId == j && guild.isHub()) { String nick = member.getNick(); if ((nick == null || t.isBlank(nick)) && !companion.getDirectories().getAndSetSeenNamePrompt(selectedGuildId) && !GrowthTeamFeatures.INSTANCE.isHubNameKillSwitchEnabled()) { j.d(context, WidgetHubAddName.class, new HubAddNameArgs(guild.getId())); diff --git a/app/src/main/java/com/discord/widgets/friends/EmptyFriendsStateContactSyncView$updateView$1.java b/app/src/main/java/com/discord/widgets/friends/EmptyFriendsStateContactSyncView$updateView$1.java index f2dd120729..1a7d720f1f 100644 --- a/app/src/main/java/com/discord/widgets/friends/EmptyFriendsStateContactSyncView$updateView$1.java +++ b/app/src/main/java/com/discord/widgets/friends/EmptyFriendsStateContactSyncView$updateView$1.java @@ -4,7 +4,7 @@ import android.view.View; import c.d.b.a.a; import com.discord.utilities.analytics.AnalyticsTracker; import com.discord.utilities.analytics.Traits; -import com.discord.widgets.contact_sync.ContactSyncAnalytics; +import com.discord.widgets.contact_sync.ContactSyncFlowAnalytics; import com.discord.widgets.contact_sync.WidgetContactSync; import d0.o; import d0.t.g0; @@ -15,7 +15,7 @@ public final class EmptyFriendsStateContactSyncView$updateView$1 implements View @Override // android.view.View.OnClickListener public final void onClick(View view) { AnalyticsTracker.INSTANCE.openModal("Contact Sync", new Traits.Location("Friends List Empty State", null, null, null, null, 30, null)); - ContactSyncAnalytics.Companion.trackStart$default(ContactSyncAnalytics.Companion, false, g0.mapOf(o.to("location_page", "Friends List Empty State")), 1, null); + ContactSyncFlowAnalytics.Companion.trackStart$default(ContactSyncFlowAnalytics.Companion, false, g0.mapOf(o.to("location_page", "Friends List Empty State")), 1, null); WidgetContactSync.Companion.launch$default(WidgetContactSync.Companion, a.x(view, "it", "it.context"), null, false, false, false, 30, null); } } diff --git a/app/src/main/java/com/discord/widgets/friends/WidgetFriendsList$configureToolbar$1.java b/app/src/main/java/com/discord/widgets/friends/WidgetFriendsList$configureToolbar$1.java index 9d85dc678c..abb4b3f73e 100644 --- a/app/src/main/java/com/discord/widgets/friends/WidgetFriendsList$configureToolbar$1.java +++ b/app/src/main/java/com/discord/widgets/friends/WidgetFriendsList$configureToolbar$1.java @@ -9,7 +9,7 @@ import com.discord.utilities.analytics.Traits; import com.discord.widgets.channels.WidgetGroupInviteFriends; import com.discord.widgets.channels.invite.GroupInviteFriendsSheet; import com.discord.widgets.channels.invite.GroupInviteFriendsSheetFeatureFlag; -import com.discord.widgets.contact_sync.ContactSyncAnalytics; +import com.discord.widgets.contact_sync.ContactSyncFlowAnalytics; import com.discord.widgets.contact_sync.WidgetContactSync; import com.discord.widgets.friends.WidgetFriendsAdd; import d0.o; @@ -33,7 +33,7 @@ public final class WidgetFriendsList$configureToolbar$1 implements Actio WidgetFriendsAdd.Companion.show$default(companion, context, null, "Friends", 2, null); return; case R.id.menu_friends_contact_sync /* 2131364198 */: - ContactSyncAnalytics.Companion.trackStart$default(ContactSyncAnalytics.Companion, false, g0.mapOf(o.to("location_page", "Friends List Icon")), 1, null); + ContactSyncFlowAnalytics.Companion.trackStart$default(ContactSyncFlowAnalytics.Companion, false, g0.mapOf(o.to("location_page", "Friends List Icon")), 1, null); AnalyticsTracker.INSTANCE.openModal("Contact Sync", new Traits.Location("Friends List Icon", null, null, null, null, 30, null)); WidgetContactSync.Companion companion2 = WidgetContactSync.Companion; m.checkNotNullExpressionValue(context, "context"); diff --git a/app/src/main/java/com/discord/widgets/friends/WidgetFriendsList$onViewBound$7.java b/app/src/main/java/com/discord/widgets/friends/WidgetFriendsList$onViewBound$7.java index 32736ca6c2..9d861a33a9 100644 --- a/app/src/main/java/com/discord/widgets/friends/WidgetFriendsList$onViewBound$7.java +++ b/app/src/main/java/com/discord/widgets/friends/WidgetFriendsList$onViewBound$7.java @@ -2,7 +2,7 @@ package com.discord.widgets.friends; import com.discord.utilities.analytics.AnalyticsTracker; import com.discord.utilities.analytics.Traits; -import com.discord.widgets.contact_sync.ContactSyncAnalytics; +import com.discord.widgets.contact_sync.ContactSyncFlowAnalytics; import com.discord.widgets.contact_sync.WidgetContactSync; import d0.t.g0; import d0.z.d.o; @@ -21,7 +21,7 @@ public final class WidgetFriendsList$onViewBound$7 extends o implements Function @Override // kotlin.jvm.functions.Function0 /* renamed from: invoke */ public final void mo1invoke() { - ContactSyncAnalytics.Companion.trackStart$default(ContactSyncAnalytics.Companion, false, g0.mapOf(d0.o.to("location_page", "Friends List Upsell")), 1, null); + ContactSyncFlowAnalytics.Companion.trackStart$default(ContactSyncFlowAnalytics.Companion, false, g0.mapOf(d0.o.to("location_page", "Friends List Upsell")), 1, null); AnalyticsTracker.INSTANCE.openModal("Contact Sync", new Traits.Location("Friends List Upsell", null, null, null, null, 30, null)); WidgetContactSync.Companion.launch$default(WidgetContactSync.Companion, this.this$0.requireContext(), null, false, false, false, 30, null); } diff --git a/app/src/main/java/com/discord/widgets/home/WidgetHome$onViewBoundOrOnResume$8.java b/app/src/main/java/com/discord/widgets/home/WidgetHome$onViewBoundOrOnResume$8.java index 94fd3f4052..6e5d4f27ed 100644 --- a/app/src/main/java/com/discord/widgets/home/WidgetHome$onViewBoundOrOnResume$8.java +++ b/app/src/main/java/com/discord/widgets/home/WidgetHome$onViewBoundOrOnResume$8.java @@ -1,13 +1,37 @@ package com.discord.widgets.home; +import com.discord.models.guild.Guild; import com.discord.stores.StoreNux; +import com.discord.stores.StoreStream; import com.discord.utilities.features.GrowthTeamFeatures; import j0.k.b; +import java.util.Collection; +import java.util.Iterator; /* compiled from: WidgetHome.kt */ public final class WidgetHome$onViewBoundOrOnResume$8 implements b { public static final WidgetHome$onViewBoundOrOnResume$8 INSTANCE = new WidgetHome$onViewBoundOrOnResume$8(); public final Boolean call(StoreNux.NuxState nuxState) { - return Boolean.valueOf(GrowthTeamFeatures.INSTANCE.isHubEmailConnectionEnabled()); + boolean z2; + Collection values = StoreStream.Companion.getGuilds().getGuilds().values(); + boolean z3 = false; + if (!(values instanceof Collection) || !values.isEmpty()) { + Iterator it = values.iterator(); + while (true) { + if (it.hasNext()) { + if (!(!it.next().isHub())) { + z2 = false; + break; + } + } else { + break; + } + } + } + z2 = true; + if (z2 && GrowthTeamFeatures.INSTANCE.isHubEmailConnectionEnabled()) { + z3 = true; + } + return Boolean.valueOf(z3); } } diff --git a/app/src/main/java/com/discord/widgets/home/WidgetHome.java b/app/src/main/java/com/discord/widgets/home/WidgetHome.java index 5e4801e77b..7355fe6ef7 100644 --- a/app/src/main/java/com/discord/widgets/home/WidgetHome.java +++ b/app/src/main/java/com/discord/widgets/home/WidgetHome.java @@ -651,7 +651,7 @@ public final class WidgetHome extends AppFragment implements OnTabSelectedListen m.checkNotNullExpressionValue(x3, "StoreStream\n .get… .filter { it.firstOpen }"); ObservableExtensionsKt.appSubscribe$default(ObservableExtensionsKt.ui$default(ObservableExtensionsKt.takeSingleUntilTimeout$default(x3, 0, false, 1, null), this, null, 2, null), WidgetHome.class, (Context) null, (Function1) null, (Function1) null, (Function0) null, (Function0) null, new WidgetHome$onViewBoundOrOnResume$7(this), 62, (Object) null); Observable x4 = companion.getNux().getNuxState().x(WidgetHome$onViewBoundOrOnResume$8.INSTANCE); - m.checkNotNullExpressionValue(x4, "StoreStream\n .get…mailConnectionEnabled() }"); + m.checkNotNullExpressionValue(x4, "StoreStream\n .get…ectionEnabled()\n }"); ObservableExtensionsKt.appSubscribe$default(ObservableExtensionsKt.ui$default(ObservableExtensionsKt.takeSingleUntilTimeout$default(x4, 0, false, 1, null), this, null, 2, null), WidgetHome.class, (Context) null, (Function1) null, (Function1) null, (Function0) null, (Function0) null, new WidgetHome$onViewBoundOrOnResume$9(this), 62, (Object) null); Observable x5 = StoreUser.observeMe$default(companion.getUsers(), false, 1, null).x(WidgetHome$onViewBoundOrOnResume$10.INSTANCE); m.checkNotNullExpressionValue(x5, "StoreStream\n .get…hasUnreadUrgentMessages }"); diff --git a/app/src/main/java/com/discord/widgets/roles/RoleIconView.java b/app/src/main/java/com/discord/widgets/roles/RoleIconView.java index ffb612a742..0bb8437df8 100644 --- a/app/src/main/java/com/discord/widgets/roles/RoleIconView.java +++ b/app/src/main/java/com/discord/widgets/roles/RoleIconView.java @@ -76,7 +76,7 @@ public final class RoleIconView extends FrameLayout { private final void showRoleIconToast(Context context, GuildRole guildRole) { ModelEmojiUnicode modelEmojiUnicode; - EmojiNode emojiNode = hasIcon(guildRole) ? new EmojiNode(guildRole.g(), new RoleIconView$showRoleIconToast$1(guildRole), new EmojiNode.EmojiIdAndType.Unicode(""), DimenUtils.dpToPixels(24), DimenUtils.dpToPixels(24)) : (!hasUnicodeEmoji(guildRole) || (modelEmojiUnicode = StoreStream.Companion.getEmojis().getUnicodeEmojisNamesMap().get(guildRole.j())) == null) ? null : EmojiNode.Companion.from(modelEmojiUnicode, DimenUtils.dpToPixels(24)); + EmojiNode emojiNode = hasIcon(guildRole) ? new EmojiNode(guildRole.g(), new RoleIconView$showRoleIconToast$1(guildRole), new EmojiNode.EmojiIdAndType.Unicode(""), DimenUtils.dpToPixels(24), DimenUtils.dpToPixels(24)) : (!hasUnicodeEmoji(guildRole) || (modelEmojiUnicode = StoreStream.Companion.getEmojis().getUnicodeEmojiSurrogateMap().get(guildRole.j())) == null) ? null : EmojiNode.Companion.from(modelEmojiUnicode, DimenUtils.dpToPixels(24)); if (emojiNode != null) { RoleIconView$showRoleIconToast$renderContext$1 roleIconView$showRoleIconToast$renderContext$1 = new RoleIconView$showRoleIconToast$renderContext$1(context); Set singleton = Collections.singleton(emojiNode); @@ -97,7 +97,7 @@ public final class RoleIconView extends FrameLayout { m.checkNotNullExpressionValue(simpleDraweeView, "binding.roleIconIv"); IconUtils.setIcon$default(simpleDraweeView, guildRole, (int) R.dimen.role_icon_size, (MGImages.ChangeDetector) null, 8, (Object) null); } else if (hasUnicodeEmoji(guildRole)) { - ModelEmojiUnicode modelEmojiUnicode = StoreStream.Companion.getEmojis().getUnicodeEmojisNamesMap().get(guildRole.j()); + ModelEmojiUnicode modelEmojiUnicode = StoreStream.Companion.getEmojis().getUnicodeEmojiSurrogateMap().get(guildRole.j()); String imageUri = ModelEmojiUnicode.getImageUri(modelEmojiUnicode != null ? modelEmojiUnicode.getCodePoints() : null, getContext()); SimpleDraweeView simpleDraweeView2 = this.binding.b; m.checkNotNullExpressionValue(simpleDraweeView2, "binding.roleIconIv"); diff --git a/app/src/main/java/com/discord/widgets/settings/WidgetSettings.java b/app/src/main/java/com/discord/widgets/settings/WidgetSettings.java index 42363a1a3f..7255ffa5b3 100644 --- a/app/src/main/java/com/discord/widgets/settings/WidgetSettings.java +++ b/app/src/main/java/com/discord/widgets/settings/WidgetSettings.java @@ -314,7 +314,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 + " - 95.1 - Alpha (95201)"); + textView.setText(string + " - 95.2 - Alpha (95202)"); binding.A.setOnClickListener(new WidgetSettings$onViewBound$$inlined$with$lambda$3(this)); binding.u.setOnClickListener(WidgetSettings$onViewBound$1$5.INSTANCE); binding.q.setOnClickListener(WidgetSettings$onViewBound$1$6.INSTANCE); diff --git a/app/src/main/java/com/discord/widgets/settings/WidgetSettingsPrivacy$configureContactSyncOptions$2.java b/app/src/main/java/com/discord/widgets/settings/WidgetSettingsPrivacy$configureContactSyncOptions$2.java index e1dc1b1e10..b47e2d6e3d 100644 --- a/app/src/main/java/com/discord/widgets/settings/WidgetSettingsPrivacy$configureContactSyncOptions$2.java +++ b/app/src/main/java/com/discord/widgets/settings/WidgetSettingsPrivacy$configureContactSyncOptions$2.java @@ -4,7 +4,7 @@ import android.view.View; import com.discord.utilities.analytics.AnalyticsTracker; import com.discord.utilities.analytics.Traits; import com.discord.views.CheckedSetting; -import com.discord.widgets.contact_sync.ContactSyncAnalytics; +import com.discord.widgets.contact_sync.ContactSyncFlowAnalytics; import com.discord.widgets.contact_sync.WidgetContactSync; import com.discord.widgets.settings.WidgetSettingsPrivacy; import d0.o; @@ -36,7 +36,7 @@ public final class WidgetSettingsPrivacy$configureContactSyncOptions$2 implement WidgetSettingsPrivacy.access$toggleContactSync(this.this$0, this.$model.getContactSyncConnection(), z2); } else if (z2) { AnalyticsTracker.INSTANCE.openModal("Contact Sync", new Traits.Location(Traits.Location.Page.USER_SETTINGS, null, null, null, null, 30, null)); - ContactSyncAnalytics.Companion.trackStart$default(ContactSyncAnalytics.Companion, false, g0.mapOf(o.to("location_page", Traits.Location.Page.USER_SETTINGS)), 1, null); + ContactSyncFlowAnalytics.Companion.trackStart$default(ContactSyncFlowAnalytics.Companion, false, g0.mapOf(o.to("location_page", Traits.Location.Page.USER_SETTINGS)), 1, null); WidgetContactSync.Companion.launch$default(WidgetContactSync.Companion, this.this$0.requireContext(), null, false, false, false, 30, null); } } diff --git a/app/src/main/res/layout-v22/contact_sync_upsell_sheet.xml b/app/src/main/res/layout-v22/contact_sync_upsell_sheet.xml index 0e0eb81548..d968f7e66e 100644 --- a/app/src/main/res/layout-v22/contact_sync_upsell_sheet.xml +++ b/app/src/main/res/layout-v22/contact_sync_upsell_sheet.xml @@ -1,7 +1,7 @@ - + diff --git a/app/src/main/res/layout-v22/layout_contact_sync_landing.xml b/app/src/main/res/layout-v22/layout_contact_sync_landing.xml index 937f2700d5..72d96b84b6 100644 --- a/app/src/main/res/layout-v22/layout_contact_sync_landing.xml +++ b/app/src/main/res/layout-v22/layout_contact_sync_landing.xml @@ -1,7 +1,7 @@ - + diff --git a/app/src/main/res/layout/contact_sync_upsell_sheet.xml b/app/src/main/res/layout/contact_sync_upsell_sheet.xml index ee7285ffee..706ae6ba42 100644 --- a/app/src/main/res/layout/contact_sync_upsell_sheet.xml +++ b/app/src/main/res/layout/contact_sync_upsell_sheet.xml @@ -1,7 +1,7 @@ - + diff --git a/app/src/main/res/layout/layout_contact_sync_landing.xml b/app/src/main/res/layout/layout_contact_sync_landing.xml index 50563c5dae..04a389e93f 100644 --- a/app/src/main/res/layout/layout_contact_sync_landing.xml +++ b/app/src/main/res/layout/layout_contact_sync_landing.xml @@ -1,7 +1,7 @@ - + diff --git a/app/src/main/res/values-ar-rXB/strings.xml b/app/src/main/res/values-ar-rXB/strings.xml index cc20548226..a9312a90cd 100644 --- a/app/src/main/res/values-ar-rXB/strings.xml +++ b/app/src/main/res/values-ar-rXB/strings.xml @@ -35,8 +35,8 @@ ‏‮Collapse‬‏ ‏‮About‬‏ ‏‮this‬‏ ‏‮App‬‏ ‏‮Accept‬‏ - ‏‮Accept‬‏ ‏‮DM‬‏ ‏‮from‬‏ ‏‮{user}‬‏‏‮?‬‏ - ‏‮They‬‏ ‏‮will‬‏ ‏‮only‬‏ ‏‮be‬‏ ‏‮notified‬‏ ‏‮if‬‏ ‏‮you‬‏ ‏‮Accept‬‏ ‏‮and‬‏ ‏‮reply.‬‏ + ‏‮New‬‏ ‏‮direct‬‏ ‏‮message‬‏ + ‏‮Accept‬‏ ‏‮to‬‏ ‏‮start‬‏ ‏‮chatting.‬‏ ‏‮They‬‏ ‏‮will‬‏ ‏‮only‬‏ ‏‮be‬‏ ‏‮notified‬‏ ‏‮if‬‏ ‏‮you‬‏ ‏‮message‬‏ ‏‮them‬‏ ‏‮back.‬‏ ‏‮Accept‬‏ ‏‮Invite‬‏ ‏‮Request‬‏ ‏‮Accepted‬‏ ‏‮Accessibility‬‏ @@ -1397,6 +1397,7 @@ ‏‮Close‬‏ ‏‮Close‬‏ ‏‮action‬‏ ‏‮sheet‬‏ ‏‮Close‬‏ ‏‮DM‬‏ + ‏‮Not‬‏ ‏‮interested?‬‏ ‏‮Ignore‬‏ ‏‮to‬‏ ‏‮close‬‏ ‏‮this‬‏ ‏‮DM.‬‏ ‏‮Close‬‏ ‏‮drawer‬‏ ‏‮Close‬‏ ‏‮Stream‬‏ ‏‮Close‬‏ ‏‮Window‬‏ @@ -1552,7 +1553,6 @@ ‏‮Voice‬‏ ‏‮Connected‬‏ ‏‮Verified‬‏ ‏‮Connections‬‏ - ‏‮Discord‬‏ ‏‮can‬‏ ‏‮connect‬‏ ‏‮you‬‏ ‏‮with‬‏ ‏‮your‬‏ ‏‮friends‬‏ ‏‮and‬‏ ‏‮help‬‏ ‏‮them‬‏ ‏‮find‬‏ ‏‮you.‬‏ ‏‮Add‬‏ ‏‮friends‬‏ ‏‮from‬‏ ‏‮your‬‏ ‏‮contacts‬‏ ‏‮automatically‬‏ ‏‮Sync‬‏ ‏‮your‬‏ ‏‮contacts‬‏ ‏‮Add‬‏ ‏‮friends‬‏ ‏‮from‬‏ ‏‮your‬‏ ‏‮contacts‬‏ ‏‮and‬‏ ‏‮let‬‏ ‏‮them‬‏ ‏‮know‬‏ ‏‮you’re‬‏ ‏‮on‬‏ ‏‮Discord.‬‏ @@ -2227,6 +2227,7 @@ ‏‮Move‬‏ ‏‮Start‬‏ ‏‮Drag‬‏ ‏‮and‬‏ ‏‮Drop‬‏ ‏‮Done‬‏ + ‏‮Don\'t‬‏ ‏‮ask‬‏ ‏‮again‬‏ ‏‮Don\'t‬‏ ‏‮show‬‏ ‏‮me‬‏ ‏‮this‬‏ ‏‮again.‬‏ ‏‮Download‬‏ ‏‮Download‬‏ ‏‮App‬‏ @@ -2361,6 +2362,7 @@ ‏‮Medium‬‏ ‏‮skin‬‏ ‏‮tone‬‏ ‏‮None‬‏ ‏‮!!‬‏‏‮{names}‬‏‏‮!!,‬‏ ‏‮favorited‬‏ + ‏‮Upload‬‏ ‏‮an‬‏ ‏‮emoji‬‏ ‏‮to‬‏ ‏‮this‬‏ ‏‮server‬‏ ‏‮Use‬‏ ‏‮these‬‏ ‏‮emoji‬‏ ‏‮and‬‏ ‏‮more‬‏ ‏‮by‬‏ ‏‮subscribing‬‏ ‏‮to‬‏ ‏‮Nitro.‬‏ ‏‮Get‬‏ ‏‮Nitro‬‏ ‏‮This‬‏ ‏‮emoji‬‏ ‏‮is‬‏ ‏‮from‬‏ ‏‮this‬‏ ‏‮server.‬‏ ‏‮Get‬‏ ‏‮Nitro‬‏ ‏‮to‬‏ ‏‮use‬‏ ‏‮it‬‏ ‏‮everywhere.‬‏ @@ -3336,6 +3338,7 @@ ‏‮You‬‏ ‏‮must‬‏ ‏‮first‬‏ ‏‮choose‬‏ ‏‮an‬‏ ‏‮event‬‏ ‏‮location.‬‏ ‏‮What\'s‬‏ ‏‮your‬‏ ‏‮event‬‏ ‏‮about?‬‏ ‏‮A‬‏ ‏‮location‬‏ ‏‮is‬‏ ‏‮required.‬‏ + ‏‮You‬‏ ‏‮cannot‬‏ ‏‮edit‬‏ ‏‮the‬‏ ‏‮start‬‏ ‏‮time‬‏ ‏‮of‬‏ ‏‮an‬‏ ‏‮already‬‏ ‏‮active‬‏ ‏‮event.‬‏ ‏‮An‬‏ ‏‮event‬‏ ‏‮topic‬‏ ‏‮is‬‏ ‏‮required.‬‏ ‏‮Event‬‏ ‏‮Topic‬‏ ‏‮What\'s‬‏ ‏‮your‬‏ ‏‮event?‬‏ @@ -4100,6 +4103,9 @@ ‏‮Alias‬‏ ‏‮Enter‬‏ ‏‮Alias‬‏ ‏‮Add‬‏ ‏‮up‬‏ ‏‮to‬‏ ‏‮{count}‬‏ ‏‮custom‬‏ ‏‮emoji‬‏ ‏‮that‬‏ ‏‮anyone‬‏ ‏‮can‬‏ ‏‮use‬‏ ‏‮in‬‏ ‏‮this‬‏ ‏‮server.‬‏ ‏‮Animated‬‏ ‏‮GIF‬‏ ‏‮emoji‬‏ ‏‮may‬‏ ‏‮be‬‏ ‏‮used‬‏ ‏‮by‬‏ ‏‮members‬‏ ‏‮with‬‏ ‏‮Discord‬‏ ‏‮Nitro.‬‏ ‏‮Emoji‬‏ ‏‮names‬‏ ‏‮must‬‏ ‏‮be‬‏ ‏‮at‬‏ ‏‮least‬‏ ‏‮2‬‏ ‏‮characters‬‏ ‏‮long‬‏ ‏‮and‬‏ ‏‮can‬‏ ‏‮only‬‏ ‏‮contain‬‏ ‏‮alphanumeric‬‏ ‏‮characters‬‏ ‏‮and‬‏ ‏‮underscores.‬‏ ‏‮Emoji‬‏ ‏‮must‬‏ ‏‮be‬‏ ‏‮under‬‏ ‏‮{maxSize}‬‏‏‮kb‬‏ ‏‮in‬‏ ‏‮size.‬‏ + ‏‮Boost‬‏ ‏‮your‬‏ ‏‮server‬‏ ‏‮to‬‏ ‏‮Level‬‏ ‏‮{level}‬‏ ‏‮to‬‏ ‏‮unlock‬‏ ‏‮more‬‏ ‏‮emoji‬‏ ‏‮slots!‬‏ + ‏‮Level‬‏ ‏‮{level}‬‏ ‏‮emojis‬‏ ‏‮lost‬‏ + ‏‮Boost‬‏ ‏‮your‬‏ ‏‮server‬‏ ‏‮to‬‏ ‏‮Level‬‏ ‏‮{level}‬‏ ‏‮or‬‏ ‏‮buy‬‏ ‏‮a‬‏ ‏‮level‬‏ ‏‮to‬‏ ‏‮unlock‬‏ ‏‮your‬‏ ‏‮emojis!‬‏ ‏‮Enable‬‏ ‏‮Discovery‬‏ ‏‮Here\'s‬‏ ‏‮an‬‏ ‏‮example!‬‏ ‏‮Filter‬‏ ‏‮by‬‏ ‏‮Action‬‏ @@ -5870,8 +5876,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‬‏ @@ -7438,6 +7444,7 @@ ‏‮Tap‬‏ ‏‮to‬‏ ‏‮see‬‏ ‏‮sticker‬‏ ‏‮Replying‬‏ ‏‮to‬‏ ‏‮$[](userHook)‬‏ ‏‮Report‬‏ + ‏‮Report‬‏ ‏‮spam‬‏ ‏‮or‬‏ ‏‮abuse‬‏ ‏‮and‬‏ ‏‮close‬‏ ‏‮this‬‏ ‏‮DM.‬‏ ‏‮Report‬‏ ‏‮Message‬‏ ‏‮Posted‬‏ ‏‮by‬‏ ‏‮!!‬‏‏‮{name}‬‏‏‮!!‬‏ ‏‮Report‬‏ ‏‮Message‬‏ ‏‮Block‬‏ ‏‮user‬‏ @@ -8011,7 +8018,7 @@ ‏‮Search‬‏ ‏‮with‬‏ ‏‮Google‬‏ ‏‮Searching…‬‏ ‏‮Security‬‏ - ‏‮See‬‏ ‏‮Details‬‏ + ‏‮Event‬‏ ‏‮Details‬‏ ‏‮See‬‏ ‏‮Thread‬‏ ‏‮›‬‏ ‏‮›‬‏ ‏‮Select‬‏ @@ -9710,6 +9717,8 @@ ‏‮Open‬‏ ‏‮voice‬‏ ‏‮call‬‏ ‏‮actions‬‏ ‏‮{count}‬‏ ‏‮Voice‬‏ ‏‮Channel‬‏ + ‏‮Looks‬‏ ‏‮like‬‏ ‏‮you\'re‬‏ ‏‮in‬‏ ‏‮another‬‏ ‏‮voice‬‏ ‏‮channel.‬‏ ‏‮Are‬‏ ‏‮you‬‏ ‏‮sure‬‏ ‏‮you‬‏ ‏‮want‬‏ ‏‮to‬‏ ‏‮switch‬‏ ‏‮to‬‏ ‏‮**!!‬‏‏‮{channel}‬‏‏‮!!**?‬‏ + ‏‮You‬‏ ‏‮sure?‬‏ ‏‮Deafened‬‏ ‏‮Connect‬‏ ‏‮to‬‏ ‏‮live‬‏ ‏‮audio‬‏ ‏‮for‬‏ ‏‮group‬‏ ‏‮conversations‬‏ ‏‮Feelin\'‬‏ ‏‮lonely?‬‏ ‏‮Add‬‏ ‏‮friends‬‏ ‏‮to‬‏ ‏‮this‬‏ ‏‮voice‬‏ ‏‮channel‬‏ ‏‮by‬‏ ‏‮creating‬‏ ‏‮an‬‏ ‏‮invite‬‏ ‏‮link.‬‏ diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index aa1544f9da..353611efd2 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -1478,7 +1478,6 @@ Свързано гласово устройство Потвърдено Връзки - Discord може да те свърже с приятелите ти и да им помогне да те намерят. Добави приятели от контактите си автоматично Синхронизиране на контактите ти Добави приятели от контактите си и им съобщи, че си в Discord. @@ -3174,7 +3173,6 @@ Къде е събитието ти? Избери канал Избери гласов канал - Създай събития, за да има повод сървърът ти да се събере. Няма предстоящи събития. Място Инфо за събитието @@ -4194,7 +4192,6 @@ Помогни на ученическия хъб за !!{guildName}!! да се разрасне Към сървъра Назад към хъба - Твоят сървър е създаден и добавен към !!{guildName}!!! Ученически хъб Персонализирай своя сървър Помогни на други ученици да намерят !!{guildName}!! Дай на сървъра си описание и категория, за да могат хората по-лесно да го намират. diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index d673737218..50511104d6 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -1478,7 +1478,6 @@ Hlas připojen Ověřeno Propojení - Discord ti může pomoct najít tvé přátele a spojit se s nimi. Automaticky přidávat přátele z tvých kontaktů Synchronizovat kontakty Přidej si přátele ze svých kontaktů a dej jim vědět, že jsi na Discordu. @@ -3179,7 +3178,6 @@ Kde tvoje událost probíhá? Vybrat kanál Vyber hlasový kanál - Vytvoř pro svůj server události, kde se budete moci všichni setkat. Nejsou naplánované žádné události. Umístění Informace o události @@ -4197,7 +4195,6 @@ Pomáhej budovat studentské centrum !!{guildName}!! Přejít na server Zpět do centra - Tvůj server je na světě a stal se součástí studentského centra !!{guildName}!!! Server dle tvého gusta Pomoz dalším studentům najít !!{guildName}!! Přidej svému serveru popis a kategorii, aby ho lidé mohli lépe najít. diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index e947ace3c4..9cfaa0da8a 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -1483,7 +1483,6 @@ Stemmetilsluttet Bekræftet Forbindelser - Discord kan forbinde dig med dine venner og hjælpe dem med at finde dig. Tilføj automatisk venner fra dine kontakter Synkroniser dine kontakter Tilføj venner fra dine kontakter, og fortæl dem, at du er på Discord. @@ -3179,7 +3178,6 @@ Hvor er dit event? Vælg en kanal Vælg en talekanal - Opret nogle events til din server, så I kan mødes. Der er ingen fremtidige events. Sted Event-oplysninger @@ -4197,7 +4195,6 @@ Hjælp med at udvikle Elevhubben for !!{guildName}!! Gå til serveren Tilbage til hub - Din server er blevet oprettet og tilføjet til Elevhubben for !!{guildName}!!! Elevhub Tilpas din server Hjælp andre studerende med at finde !!{guildName}!! Tilføj en beskrivelse og en kategori til din server, så folk lettere kan finde den. diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index ffc2cf0823..ea939e227f 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -1487,7 +1487,6 @@ Sprachchat verbunden Verifiziert Verknüpfungen - Discord kann dich mit deinen Freunden verbinden und dir helfen, sie zu finden. Füge Freunde aus deinen Kontakten automatisch hinzu Synchronisiere deine Kontakte Füge Freunde aus deinen Kontakten hinzu, damit sie wissen, dass du bei Discord bist. @@ -3188,7 +3187,6 @@ Wo ist dein Event? Kanal auswählen Wähle einen Sprachkanal - Erstelle Events, an denen alle Servermitglieder teilnehmen können. Es stehen keine Events an. Verzeichnis Eventinformationen @@ -4206,7 +4204,6 @@ Hilf dem Bildungshub für !!{guildName}!! zu wachsen Zum Server Zurück zum Hub - Dein Server wurde erstellt und zum Bildungshub für !!{guildName}!! hinzugefügt! Passe deinen Server an Hilf anderen dabei, !!{guildName}!! zu finden! Füge deinem Server eine Beschreibung und Kategorie hinzu, damit andere ihn finden können. diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 652d8e236c..929af4be5a 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -1478,7 +1478,6 @@ Η φωνή συνδέθηκε Επαληθευμένο Συνδέσεις - Το Discord μπορεί να σε συνδέσει με τους φίλους σου και να τους βοηθήσει να σε βρουν. Πρόσθεσε αυτόματα φίλους από τις επαφές σου Συγχρόνισε τις επαφές σου Πρόσθεσε φίλους από τις επαφές σου και ενημέρωσέ τους ότι είσαι στο Discord. @@ -3174,7 +3173,6 @@ Πού βρίσκεται η εκδήλωσή σου; Επέλεξε ένα κανάλι Επιλέξτε ένα κανάλι ομιλίας - Δημιούργησε εκδηλώσεις για να φέρεις πιο κοντά τον διακομιστή σου. Δεν υπάρχουν προσεχείς εκδηλώσεις. Τοποθεσία Πληροφορίες εκδήλωσης @@ -4192,7 +4190,6 @@ Βοήθησε το Φοιτητικό Hub του !!{guildName}!! να μεγαλώσει Μετάβαση στον διακομιστή Πίσω στο Hub - Ο διακομιστής σου δημιουργήθηκε και προστέθηκε στο Φοιτητικό Hub του !!{guildName}!! Προσάρμοσε τον διακομιστή σου Βοήθησε άλλους φοιτητές να βρουν το !!{guildName}!! Δώσε στον διακομιστή σου περιγραφή και κατηγορία για να βοηθήσεις τους άλλους να τον βρουν. diff --git a/app/src/main/res/values-en-rXA/strings.xml b/app/src/main/res/values-en-rXA/strings.xml index e97fe249ba..c1ac77b4f2 100644 --- a/app/src/main/res/values-en-rXA/strings.xml +++ b/app/src/main/res/values-en-rXA/strings.xml @@ -35,8 +35,8 @@ [Çöļļåþšé one two] [Åɓöûţ ţĥîš Åþþ one two three] [Åççéþţ one two] - [Åççéþţ ÐḾ ƒŕöḿ »{user}«¿ one two three] - [Ţĥéý ŵîļļ öñļý ɓé ñöţîƒîéð îƒ ýöû Åççéþţ åñð ŕéþļý. one two three four five six] + [Ñéŵ ðîŕéçţ ḿéššåĝé one two three] + [Åççéþţ ţö šţåŕţ çĥåţţîñĝ. Ţĥéý ŵîļļ öñļý ɓé ñöţîƒîéð îƒ ýöû ḿéššåĝé ţĥéḿ ɓåçķ. one two three four five six seven eight nine] [Åççéþţ ÎñVîţé one two] [ŔéQûéšţ Åççéþţéð one two three] [Åççéššîɓîļîţý one two] @@ -1397,6 +1397,7 @@ [Çļöšé one] [Çļöšé åçţîöñ šĥééţ one two three] [Çļöšé ÐḾ one two] + [Ñöţ îñţéŕéšţéð¿ Îĝñöŕé ţö çļöšé ţĥîš ÐḾ. one two three four five] [Çļöšé ðŕåŵéŕ one two] [Çļöšé Šţŕéåḿ one two] [Çļöšé Ŵîñðöŵ one two] @@ -1552,7 +1553,6 @@ [νöîçé Çöññéçţéð one two three] [νéŕîƒîéð one two] [Çöññéçţîöñš one two] - [Ðîšçöŕð çåñ çöññéçţ ýöû ŵîţĥ ýöûŕ ƒŕîéñðš åñð ĥéļþ ţĥéḿ ƒîñð ýöû. one two three four five six seven] [Åðð ƒŕîéñðš ƒŕöḿ ýöûŕ çöñţåçţš åûţöḿåţîçåļļý one two three four five] [Šýñç ýöûŕ çöñţåçţš one two three] [Åðð ƒŕîéñðš ƒŕöḿ ýöûŕ çöñţåçţš åñð ļéţ ţĥéḿ ķñöŵ ýöû’ŕé öñ Ðîšçöŕð. one two three four five six seven eight] @@ -2227,6 +2227,7 @@ [ḾöVé one] [Šţåŕţ Ðŕåĝ åñð Ðŕöþ one two three] [Ðöñé one] + [Ðöñ\'ţ åšķ åĝåîñ one two three] [Ðöñ\'ţ šĥöŵ ḿé ţĥîš åĝåîñ. one two three] [Ðöŵñļöåð one two] [Ðöŵñļöåð Åþþ one two] @@ -2361,6 +2362,7 @@ [Ḿéðîûḿ šķîñ ţöñé one two three] [Ñöñé one] [¡¡»{names}«¡¡, ƒåVöŕîţéð one two three] + [Ûþļöåð åñ éḿöĵî ţö ţĥîš šéŕVéŕ one two three four] [Ûšé ţĥéšé éḿöĵî åñð ḿöŕé ɓý šûɓšçŕîɓîñĝ ţö Ñîţŕö. one two three four five six] [Ĝéţ Ñîţŕö one two] [Ţĥîš éḿöĵî îš ƒŕöḿ ţĥîš šéŕVéŕ. Ĝéţ Ñîţŕö ţö ûšé îţ éVéŕýŵĥéŕé. one two three four five six seven] @@ -3336,6 +3338,7 @@ [Ýöû ḿûšţ ƒîŕšţ çĥööšé åñ éVéñţ ļöçåţîöñ. one two three four five] [Ŵĥåţ\'š ýöûŕ éVéñţ åɓöûţ¿ one two three] [Å ļöçåţîöñ îš ŕéQûîŕéð. one two three] + [Ýöû çåññöţ éðîţ ţĥé šţåŕţ ţîḿé öƒ åñ åļŕéåðý åçţîVé éVéñţ. one two three four five six seven] [Åñ éVéñţ ţöþîç îš ŕéQûîŕéð. one two three four] [ÉVéñţ Ţöþîç one two] [Ŵĥåţ\'š ýöûŕ éVéñţ¿ one two three] @@ -4100,6 +4103,9 @@ [Åļîåš one] [Éñţéŕ Åļîåš one two] [Åðð ûþ ţö »{count}« çûšţöḿ éḿöĵî ţĥåţ åñýöñé çåñ ûšé îñ ţĥîš šéŕVéŕ. Åñîḿåţéð ĜÎF éḿöĵî ḿåý ɓé ûšéð ɓý ḿéḿɓéŕš ŵîţĥ Ðîšçöŕð Ñîţŕö. Éḿöĵî ñåḿéš ḿûšţ ɓé åţ ļéåšţ 2 çĥåŕåçţéŕš ļöñĝ åñð çåñ öñļý çöñţåîñ åļþĥåñûḿéŕîç çĥåŕåçţéŕš åñð ûñðéŕšçöŕéš. Éḿöĵî ḿûšţ ɓé ûñðéŕ »{maxSize}«ķɓ îñ šîžé. 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] + [βööšţ ýöûŕ šéŕVéŕ ţö ĻéVéļ »{level}« ţö ûñļöçķ ḿöŕé éḿöĵî šļöţš¡ one two three four five six seven] + [ĻéVéļ »{level}« éḿöĵîš ļöšţ one two three] + [βööšţ ýöûŕ šéŕVéŕ ţö ĻéVéļ »{level}« öŕ ɓûý å ļéVéļ ţö ûñļöçķ ýöûŕ éḿöĵîš¡ one two three four five six seven] [Éñåɓļé ÐîšçöVéŕý one two three] [Ĥéŕé\'š åñ éхåḿþļé¡ one two three] [Fîļţéŕ ɓý Åçţîöñ one two three] @@ -5870,8 +5876,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] @@ -7438,6 +7444,7 @@ [Ţåþ ţö šéé šţîçķéŕ one two three] [Ŕéþļýîñĝ ţö €[](ûšéŕĤööķ) one two three] [Ŕéþöŕţ one two] + [Ŕéþöŕţ šþåḿ öŕ åɓûšé åñð çļöšé ţĥîš ÐḾ. one two three four five] [Ŕéþöŕţ Ḿéššåĝé Þöšţéð ɓý ¡¡»{name}«¡¡ one two three four] [Ŕéþöŕţ Ḿéššåĝé one two three] [βļöçķ ûšéŕ one two] @@ -8011,7 +8018,7 @@ [Šéåŕçĥ ŵîţĥ Ĝööĝļé one two three] [Šéåŕçĥîñĝ… one two] [Šéçûŕîţý one two] - [Šéé Ðéţåîļš one two] + [ÉVéñţ Ðéţåîļš one two] [Šéé Ţĥŕéåð › one two] [› one] [Šéļéçţ one two] @@ -9710,6 +9717,8 @@ [Öþéñ Vöîçé çåļļ åçţîöñš one two three] [»{count}«] [νöîçé Çĥåññéļ one two] + [Ļööķš ļîķé ýöû\'ŕé îñ åñöţĥéŕ Vöîçé çĥåññéļ. Åŕé ýöû šûŕé ýöû ŵåñţ ţö šŵîţçĥ ţö **¡¡»{channel}«¡¡**¿ one two three four five six seven eight nine ten eleven twelve thirteen fourteen fiveteen] + [Ýöû šûŕé¿ one two] [Ðéåƒéñéð one two] [Çöññéçţ ţö ļîVé åûðîö ƒöŕ ĝŕöûþ çöñVéŕšåţîöñš one two three four five] [Fééļîñ\' ļöñéļý¿ Åðð ƒŕîéñðš ţö ţĥîš Vöîçé çĥåññéļ ɓý çŕéåţîñĝ åñ îñVîţé ļîñķ. one two three four five six seven eight] diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index 988b299193..00d8316e38 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -1439,7 +1439,6 @@ Voz conectada Verificado Conexiones - Discord puede conectar con tus amigos y ayudarte a encontrarlos. Añade amigos de tus contactos de forma automática Sincroniza tus contactos Añade amigos de tus contactos y avísalos de que estás en Discord. @@ -3078,7 +3077,6 @@ ¿Dónde es tu evento? Selecciona un canal Seleccionar un canal de voz - Crea eventos para reunir a tu servidor. No hay eventos próximamente. Ubicación Información del evento @@ -4096,7 +4094,6 @@ Ayuda a que crezca el Centro de Estudiantes de !!{guildName}!! Ir al servidor Volver al Centro - ¡Tu servidor se ha creado y añadido al Centro de Estudiantes de !!{guildName}!!! Personaliza tu servidor Ayuda a otros estudiantes a encontrar !!{guildName}!! Añade una descripción y una categoría a tu servidor para que la gente pueda encontrarlo con más facilidad. diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index bfd05585db..2466d093b9 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -1478,7 +1478,6 @@ Äänet yhdistetty Vahvistettu Yhteydet - Discord voi yhdistää sinut kavereihisi ja auttaa kavereitasi löytämään sinut. Lisää yhteystietosi kavereiksi automaattisesti Synkronoi yhteystietosi Lisää yhteystiedoissasi olevat henkilöt kavereiksesi ja ilmoita heille, että olet Discordissa. @@ -3174,7 +3173,6 @@ Missä tapahtumasi järjestetään? Valitse kanava Valitse puhekanava - Kokoa palvelin yhteen luomalla tapahtumia. Tulevia tapahtumia ei ole. Sijainti Tapahtuman tiedot @@ -4192,7 +4190,6 @@ Auta kasvattamaan oppilaitoksen !!{guildName}!! oppilaskeskusta Siirry palvelimelle Takaisin keskukseen - Palvelimesi on luotu ja lisätty oppilaskeskukseen (!!{guildName}!!)! Mukauta palvelintasi Auta muita opiskelijoita löytämään tiensä tänne: !!{guildName}!! Kirjoita palvelimesi kuvaus ja valitse sille luokka, jonka avulla ihmiset löytävät sen. diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index a904558640..1a4fc09f4e 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -1488,7 +1488,6 @@ Voix connectée Vérifiée Connexions - Discord te connecte avec tes amis et leur permet de te retrouver plus facilement. Ajouter des amis automatiquement à partir des contacts Synchroniser tes contacts Ajoute tes amis depuis tes contacts et dis-leur que tu es sur Discord. @@ -3184,7 +3183,6 @@ Où se trouve ton événement ? Sélectionne un salon Sélectionner un salon vocal - Crée des événements pour rassembler ton serveur. Aucun événement à venir. Emplacement Infos de l\'événement @@ -4202,7 +4200,6 @@ Aide à faire grandir le Pôle étudiant de !!{guildName}!! Aller sur le serveur Retour au Pôle - Ton serveur a été créé et ajouté au Pôle étudiant de !!{guildName}!! ! Personnalise ton serveur Aide d\'autres étudiants à retrouver !!{guildName}!! Donne une description et une catégorie à ton serveur pour aider les gens à le retrouver. diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index fb6d895d79..aab79a6be3 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -1478,7 +1478,6 @@ वॉयस कनेक्ट हो गई है वेरीफाई किया गया कनेक्शन - Discord आपको आपके फ्रेंड्स से कनेक्ट करके उन्हें आपको ढूंढने में भी मदद कर सकता है. अपने कांटेक्ट में से फ्रेंड्स को खुद से ऐड करें अपने कांटेक्ट को सिंक्रोनाइज़ करें अपने कॉन्टैक्ट्स से फ्रेंड्स को ऐड करें और उन्हें बताएं कि आप भी Discord पर आ गए हैं. @@ -3174,7 +3173,6 @@ आपका इवेंट कहां पर है? चैनल को सलेक्ट करें एक वॉयस चैनल सलेक्ट करें - अपने सर्वर को एक साथ लाने के लिए कुछ इवेंट्स क्रिएट करें. कोई भी आगामी (अपकमिंग) इवेंट्स नहीं हैं. लोकेशन इवेंट की जानकारी @@ -4192,7 +4190,6 @@ !!{guildName}!! के लिए स्टूडेंट हब को बढ़ाने में मदद करो सर्वर पर जाएं हब पर वापस जाएं - आपका सर्वर !!{guildName}!!के लिए क्रिएट और स्टूडेंट हब के साथ ऐड किया गया है अपना सर्वर कस्टमाइज़ करें बाकी स्टूडेंट्स की !!{guildName}!! को ढूंढ़ने में मदद करें लोगों को आपका सर्वर ढूंढ़ने में मदद करने के लिए उन्हें सर्वर का डिस्क्रिप्शन और कैटेगरी बताएं. diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 691d847d55..dfa1275419 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -1478,7 +1478,6 @@ Glas povezan Potvrđeno Veze - Discord te može spojiti s vlastitim prijateljima, a i pomoći im da te lociraju. Automatski dodaj prijatelje iz svojih kontakata Sinkroniziraj svoje kontakte Automatski dodaj prijatelje iz svojih kontakata i javi im da si na Discordu. @@ -3174,7 +3173,6 @@ Gdje je tvoj događaj? Odaberi kanal Odaberi neki glasovni kanal - Napravi poneki događaj kako bi se ekipa s tvojeg servera mogla okupiti. Nema nadolazećih događaja. Mjesto Informacije o događaju @@ -4192,7 +4190,6 @@ Pomozi da Učenički Hub !!{guildName}!! naraste Idi na Server Natrag na Hub - Tvoj server je stvoren i dodan u Hub za !!{guildName}!!! Učenički Hub Prilagodi svoj server Pomozi drugim učenicima da pronađu !!{guildName}!! Daj svom serveru opis i kategoriju kako bi ga ljudi lakše našli. diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index a629fccc9a..809968b3fd 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -1478,7 +1478,6 @@ Hang csatlakoztatva Hitelesítve Kapcsolatok - A Discord összeköthet barátaiddal és segíthet abban, hogy megtaláljanak. Barátok automatikus hozzáadása a kapcsolatokból Szinkronizáld a kapcsolatokat Add hozzá a kapcsolataidat barátként és értesítsd őket, hogy te is használod a Discordot. @@ -3174,7 +3173,6 @@ Hol van az eseményed? Válassz csatornát Hangcsatorna választása - Szervezz eseményeket a szerverednek, hogy együtt lehessenek. Nincsenek közelgő események. Hely Esemény infó @@ -4192,7 +4190,6 @@ Segíts !!{guildName}!! diákcsomópontjának gyarapításában! Ugrás a szerverre Vissza a csomópontra - Létrehoztad a szerveredet és hozzáadtad a következő diákcsomópontjához: !!{guildName}!! A szervered személyre szabása Segíts, hogy mások is rátaláljanak: !!{guildName}!! Add meg szervered leírását és kategóriáját, hogy mások is megtalálják! diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 5332bd08b4..324c2a1e85 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -1488,7 +1488,6 @@ Connesso al canale vocale Verificato Collegamenti - Discord può metterti in contatto con i tuoi amici e può aiutare loro a trovare te. Aggiungi automaticamente amici dalla tua lista contatti Sincronizza i tuoi contatti Aggiungi gli amici dalla tua lista contatti e fagli sapere che sei su Discord. @@ -3184,7 +3183,6 @@ Dov\'è il tuo evento? Seleziona un canale Seleziona un canale vocale - Crea degli eventi per dare occasione al tuo server di ritrovarsi. Non ci sono eventi in programma. Posizione Informazioni evento @@ -4202,7 +4200,6 @@ Aiuta a far crescere l\'hub studenti di !!{guildName}!! Vai al server Torna all\'hub - Il server è stato creato e aggiunto all\'hub studenti di !!{guildName}!!! Personalizza il tuo server Aiuta altri studenti a trovare !!{guildName}!! Inserisci una descrizione e una categoria per il tuo server per renderlo più facile da trovare. diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 7213f0b61d..cd2b0677be 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -1488,7 +1488,6 @@ 通話中 認証済み 接続 - Discordで友達を見つけたり、友達があなたを追加したりできます。 連絡先から自動的に友達を追加しよう 連絡先の同期 連絡先から友達を追加して、あなたがDiscordに入ったことを友達に知らせましょう。 @@ -3189,7 +3188,6 @@ イベントはどこで行われますか? チャンネルを選択 ボイスチャンネルを選択 - サーバーの仲間が集まって楽しめるイベントを計画しましょう。 予定されているイベントはありません。 場所 イベントの情報 @@ -4207,7 +4205,6 @@ !!{guildName}!!の Student Hub を成長させよう サーバーへ移動 Hub に戻る - サーバーが作成され、!!{guildName}!!の Student Hub に追加されました! サーバーをカスタマイズ 他の学生たちが !!{guildName}!! を探しやすくする サーバーに概要とカテゴリーを追加し、探しやすくしましょう。 diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index c18235166d..432010c786 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -1488,7 +1488,6 @@ 음성 연결됨 인증됨 연결 - Discord에서 친구를 찾거나 친구가 나를 찾을 수 있어요. 자동으로 연락처의 친구 추가 연락처 동기화 연락처의 친구를 추가하고 회원님이 Discord에 가입했음을 알려주세요. @@ -3184,7 +3183,6 @@ 이벤트의 위치가 어디인가요? 채널 선택하기 음성 채널 선택 - 서버를 위한 이벤트를 만들어서 사람들이 모이게 해보세요. 다가오는 이벤트가 없어요. 위치 이벤트 정보 @@ -4202,7 +4200,6 @@ !!{guildName}!!를 위한 학생 허브가 성장하도록 도와주세요 서버로 가기 Hub로 돌아가기 - 서버가 생성되어 !!{guildName}!!에 추가되었어요! 학생 허브 서버 커스터마이징하기 다른 학생들이 !!{guildName}!!을(를) 찾을 수 있게 해주세요 서버에 설명과 카테고리를 제공해서 사람들이 찾을 수 있게 해주세요. diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 2c501df242..7f2cabfbd4 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -1478,7 +1478,6 @@ Prisijungta Prie Pokalbio Patvirtinta Sąsajos - Discord gali susieti tave su tavo draugais ir padėti jiems tave surasti. Automatiškai pridėk draugus iš savo kontaktų Sinchronizuok savo kontaktus Pridėk draugus iš savo kontaktų ir pranešk jiems, kad esi Discord. @@ -3174,7 +3173,6 @@ Kur tavo renginys vyks? Pasirink kanalą Pasirinkite balso kanalą - Sukurk keletą renginių ir stiprink savo serverio bendruomenę. Artėjančių renginių nėra. Vieta Renginio informacija @@ -4192,7 +4190,6 @@ Padėk !!{guildName}!! Student Hub augti Eiti į serverį Atgal į Hub - Tavo serveris sukurtas ir pridėtas į !!{guildName}!!! Student Hub Tinkink savo serverį Padėk kietiems moksleiviams / studentams rasti !!{guildName}!! Pateik savo serverio aprašą ir nurodyk jo kategoriją, kad serverį lengviau rastų kiti. diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 4d3d03d314..5c06b83d66 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -1488,7 +1488,6 @@ Spraak gekoppeld Geverifieerd Verbindingen - Discord kan je verbinden met je vrienden en kan hen helpen jou te vinden. Automatisch vrienden uit je contactpersonen toevoegen Je contactpersonen synchroniseren Voeg vrienden uit je contactpersonen toe en laat ze weten dat je op Discord zit. @@ -3184,7 +3183,6 @@ Waar bevindt je evenement zich? Selecteer een kanaal Selecteer een spraakkanaal - Organiseer wat evenementen om je server samen te brengen. Er zijn geen komende evenementen. Locatie Evenementinformatie @@ -4202,7 +4200,6 @@ Help om de studentenhub van !!{guildName}!! te laten groeien Naar server gaan Terug naar hub - Je server is aangemaakt en toegevoegd aan de studentenhub van !!{guildName}!!! Je server aanpassen Help andere studenten om !!{guildName}!! te kunnen vinden Geef je server een beschrijving en categorie zodat mensen hem makkelijker kunnen vinden. diff --git a/app/src/main/res/values-no/strings.xml b/app/src/main/res/values-no/strings.xml index 76137284f9..b8e04f9626 100644 --- a/app/src/main/res/values-no/strings.xml +++ b/app/src/main/res/values-no/strings.xml @@ -1430,7 +1430,6 @@ Tale er tilkoblet Bekreftet Tilkoblinger - Discord kan sette deg i kontakt med venner og hjelpe dem med å finne deg. Legg til venner fra kontaktene dine automatisk Synkroniser kontaktene dine Legg til venner fra kontaktene dine og gi dem beskjed om at du er på Discord. @@ -3069,7 +3068,6 @@ Hvor foregår eventen? Velg en kanal Velg en talekanal - Lag noen eventer som serveren din kan samles rundt. Det er ingen kommende eventer. Posisjon Info om event @@ -4087,7 +4085,6 @@ Bidra til at skolehuben for !!{guildName}!! vokser Gå til server Tilbake til huben - Serveren din ble opprettet og lagt til skolehuben for !!{guildName}!!! Tilpass serveren din Hjelp andre med å finne !!{guildName}!! Gi serveren en beskrivelse og kategori, så det blir enklere for andre å finne den. diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index b0f6a7be6b..014a8be19f 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -1488,7 +1488,6 @@ Połączono z czatem głosowym Zweryfikowane Połączone konta - Discord może dodać Twoich znajomych i pomóc im znaleźć Ciebie. Automatycznie dodaj znajomych z kontaktów Zsynchronizuj swoje kontakty Dodaj znajomych z kontaktów i poinformuj ich, że korzystasz z Discorda. @@ -3189,7 +3188,6 @@ Gdzie odbywa się Twoje wydarzenie? Wybierz kanał Wybierz kanał głosowy - Stwórz dla swojego serwera kilka wydarzeń integracyjnych. Brak zbliżających się wydarzeń. Lokalizacja Informacje o wydarzeniu @@ -4207,7 +4205,6 @@ Pomóż rozwijać centrum szkolne dla: !!{guildName}!! Przejdź do serwera Wróć do centrum - Twój serwer został utworzony i dodany do centrum szkolnego dla: !!{guildName}!! Spersonalizuj swój serwer Pomóż innym uczniom/studentom odnaleźć: !!{guildName}!! Dodaj opis i kategorię swojego serwera, aby inni mogli go łatwiej znaleźć. @@ -6142,6 +6139,7 @@ Nitro kosztuje teraz !!{price}!! Rzuć okiem! Dzięki Nitro możesz ustawić unikalny awatar na każdym serwerze. I nie tylko! + Obniżyliśmy cenę Nitro w Twoim kraju! Sprawdź nasze najnowsze korzyści Nitro – a wśród nich m. in. awatary serwerowe, dzięki którym na każdym serwerze możesz korzystać z innego awatara. Nowe letnie udoskonalenia! Przesyłaj i używaj animowanych awatarów i emoji Dziel się własnymi emoji na wszystkich serwerach diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 164d892985..54c6b75317 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -1488,7 +1488,6 @@ Voz conectada Verificado Conexões - O Discord pode conectar você com seus amigos e ajudá-los a encontrar você. Adicione amigos automaticamente dos seus contatos Sincronizar seus contatos Adicione amigos a partir dos seus contatos e avise-os que você está no Discord. @@ -3135,7 +3134,6 @@ Onde é seu evento? Selecione um canal Escolha um canal de voz - Crie alguns eventos no seu servidor para reunir a galera. Não há eventos futuros. Localização Informações do evento @@ -4153,7 +4151,6 @@ Ajude a Central de Estudantes de !!{guildName}!! a crescer Ir para o Servidor Voltar à Central - Seu servidor foi criado e adicionado à Central de !!{guildName}!! Personalize seu servidor Ajude outros estudantes a encontrar !!{guildName}!! Dê uma descrição e uma categoria ao seu servidor e ajude as pessoas a encontrá-lo. @@ -6087,6 +6084,7 @@ O Nitro agora custa !!{price}!! Dê uma olhada! Carregue um avatar único para cada servidor e muito mais com o Nitro. + Baixamos o preço do Nitro no seu país! Confira as mais novas vantagens Nitro, incluindo avatares de servidor, que permite utilizar avatares diferentes em cada servidor. Novas atualizações de verão! Envie e use avatares animados e emojis Compartilhe emojis personalizados em todos os servidores diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index 7d5254b3c5..698d2213f4 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -1478,7 +1478,6 @@ Voce conectată Verificat Conexiuni - Discord te poate conecta cu prietenii și îi poate ajuta să te găsească. Adaugă automat contactele ca prieteni Sincronizează-ți contactele Adaugă prieteni din lista de contacte și dă-le de știre că ești pe Discord. @@ -3174,7 +3173,6 @@ Unde se ține evenimentul tău? Alege un canal Selectează un canal de voce - Creează evenimente la care să poată participa serverul tău. Nu există evenimente viitoare. Locație Informații eveniment @@ -4192,7 +4190,6 @@ Ajută hub-ul studențesc pentru !!{guildName}!! să se dezvolte Mergi la server Înapoi la hub - Serverul tău a fost creat și adăugat în hub-ul studențesc pentru !!{guildName}!!! Personalizează-ți server-ul Ajută alți studenți sau elevi să găsească !!{guildName}!! Adaugă descrierea și categoria serverului tău, pentru a-l face mai ușor de găsit. diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 58ce79b371..03d1a82823 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -1488,7 +1488,6 @@ Голосовая связь подключена Проверено Интеграции - Discord поможет вашим друзьям найти вас. Автоматически добавьте друзей из контактов Синхронизируйте свои контакты Добавьте друзей из контактов и сообщите им о том, что вы теперь используете Discord. @@ -3189,7 +3188,6 @@ Где пройдёт ваше событие? Выбрать канал Выберите голосовой канал - Организуйте события для своего сервера. Нет предстоящих событий. Место Сведения о событии @@ -4207,7 +4205,6 @@ Помогите студенческому центру «!!{guildName}!!» вырасти Перейти на сервер Вернуться в центр - Ваш сервер был создан и добавлен в студенческий центр «!!{guildName}!!» Персонализируйте свой сервер Помогите другим учащимся найти «!!{guildName}!!» Добавьте к своему серверу описание и категорию, чтобы его было проще найти. diff --git a/app/src/main/res/values-sv-rSE/strings.xml b/app/src/main/res/values-sv-rSE/strings.xml index 18b2858bcd..1243240331 100644 --- a/app/src/main/res/values-sv-rSE/strings.xml +++ b/app/src/main/res/values-sv-rSE/strings.xml @@ -1439,7 +1439,6 @@ Röst ansluten Verifierad Anslutningar - Discord kan hjälpa dig att få kontakt med dina vänner och hjälpa dem hitta dig. Lägg till vänner från dina kontakter automatiskt Synka dina kontakter Lägg till vänner från dina kontakter och låt dem veta att du finns på Discord. @@ -3078,7 +3077,6 @@ Var hålls ditt event? Välj en kanal Välj en röstkanal - Skapa några event som för samman din server. Det finns inga kommande event. Plats Eventinfo @@ -4096,7 +4094,6 @@ Hjälp till med att få studenthubben för !!{guildName}!! att växa Gå till server Tillbaka till hubben - Din server har skapats och lagts till i studenthubben för !!{guildName}!!! Specialanpassa din server Hjälp andra studenter hitta !!{guildName}!! Ge din server en beskrivning och en kategori för att hjälpa folk att hitta den. diff --git a/app/src/main/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml index 6f9e67654c..c7ed79f721 100644 --- a/app/src/main/res/values-th/strings.xml +++ b/app/src/main/res/values-th/strings.xml @@ -1478,7 +1478,6 @@ เชื่อมต่อเสียงแล้ว ยืนยันแล้ว การเชื่อมต่อ - Discord สามารถเชื่อมต่อคุณกับเพื่อน ๆ และช่วยให้พวกเขาหาคุณพบ เพิ่มเพื่อนจากรายชื่อผู้ติดต่อของคุณโดยอัตโนมัติ ซิงก์รายชื่อติดต่อของคุณ เพิ่มเพื่อน ๆ จากรายชื่อติดต่อของคุณแล้วแจ้งให้พวกเขารู้ว่าคุณอยู่บน Discord แล้ว @@ -3174,7 +3173,6 @@ กิจกรรมของคุณจัดขึ้นที่ใด เลือกช่อง เลือกช่องสำหรับพูดคุย - สร้างกิจกรรมให้เซิร์ฟเวอร์ของคุณมารวมตัวกัน ไม่มีกิจกรรมที่กำลังจะมาถึง ตำแหน่ง ข้อมูลกิจกรรม @@ -4192,7 +4190,6 @@ ช่วยสร้างการเติบโตให้ Student Hub สำหรับ !!{guildName}!! ไปที่เซิร์ฟเวอร์ กลับไปที่ Hub - เซิร์ฟเวอร์ของคุณถูกสร้างและเพิ่มไปยัง Student Hub สำหรับ !!{guildName}!! แล้ว! ปรับแต่งเซิร์ฟเวอร์ของคุณ ช่วยให้นักเรียนนักศึกษาคนอื่นค้นเจอ !!{guildName}!! ระบุคำบรรยายและหมวดหมู่ให้เซิร์ฟเวอร์ของคุณ เพื่อช่วยให้ผู้คนค้นพบเซิร์ฟเวอร์ diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index fa6a8cdede..4f2ccb8416 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -1488,7 +1488,6 @@ Ses Bağlantısı Kuruldu Doğrulandı Bağlantılar - Discord, arkadaşlarınla bağlantı kurmana ve onların seni bulmalarına yardımcı olur. Kişilerinden otomatik olarak arkadaş ekle Kişilerini senkronize et Kişilerinden arkadaş ekle ve onları Discord\'da olduğundan haberdar et. @@ -3189,7 +3188,6 @@ Etkinliğin nerede olacak? Bir kanal seç Bir ses kanalı seç - Sunucunun bir araya gelmesi için birkaç etkinlik oluştur. Yakında bir etkinlik yok. Konum Etkinlik Bilgisi @@ -4207,7 +4205,6 @@ !!{guildName}!! için Öğrenci Merkezi\'ni büyütmeye yardım et Sunucuya git Merkez\'e dön - Sunucun oluşturuldu ve !!{guildName}!! için Öğrenci Merkezi\'ne eklendi! Sunucunu özelleştir Diğer öğrencilerin !!{guildName}!! guild\'ini bulmasına yardımcı ol İnsanların bulabilmesi için sunucuna bir açıklama ve kategori ver. @@ -6142,6 +6139,7 @@ Nitro şimdi !!{price}!! Hemen göz at! Nitro ile her sunucu için eşsiz bir avatar yükle ve daha fazlasını yap. + Ülkende Nitro fiyatını düşürdük! Her sunucuda farklı bir avatar kullanmanı sağlayan sunucu avatarları gibi en yeni Nitro avantajlarına göz at. Yeni Yaz Güncellemeleri! Hareketli avatarlar ve emojiler yükle ve kullan Tüm sunucularda özel emojiler paylaş diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 2f1a8e8d33..4e123a0b7a 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -1478,7 +1478,6 @@ Голосовий зв\'язок підключено Перевірено З\'єднання - Discord може з\'єднувати вас з вашими друзями і допомагати їм знаходити вас. Автоматично додавай друзів зі свого списку контактів Синхронізуй свої контакти Додай друзів зі свого списку контактів, щоб вони знали, що ти є в Discord. @@ -3174,7 +3173,6 @@ Де відбудеться подія? Оберіть канал Оберіть голосовий канал - Створіть декілька подій, щоби зібрати сервер. Немає запланованих подій. Місце розташування Інфо про подію @@ -4192,7 +4190,6 @@ Допоможіть розвивати Студентський хаб закладу !!{guildName}!! Піти на сервер Повернутися до хабу - Ваш сервер було створено та додано до студентського хабу закладу !!{guildName}!!! Персоналізуй свій сервер Допоможіть іншим студентам знайти !!{guildName}!! Опишіть сервер та визначте категорію, щоби людям було легше знайти його. diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 6c097e4067..f3cea1ef97 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -1478,7 +1478,6 @@ Đã Kết Nối Giọng Nói Đã được xác định Kết nối - Discord có thể kết nối và giúp bạn bè của bạn tìm thấy bạn. Tự động thêm bạn bè từ danh bạ Đồng bộ hóa danh bạ Thêm bạn bè từ danh bạ và cho họ biết bạn đang sử dụng Discord. @@ -3174,7 +3173,6 @@ Sự kiện của bạn diễn ra ở đâu? Chọn kênh Chọn một kênh thoại - Tạo một số sự kiện để máy chủ của bạn cùng tham gia. Không có sự kiện nào sắp diễn ra. Thư mục Thông tin sự kiện @@ -4194,7 +4192,6 @@ Giúp phát triển Student Hub dành cho !!{guildName}!! Đi tới máy chủ Quay về Hub - Máy chủ của bạn đã được tạo và thêm vào !!{guildName}!!! Student Hub Tùy chỉnh máy chủ của bạn Giúp những sinh viên khác tìm !!{guildName}!! Cung cấp cho máy chủ của bạn mô tả và danh mục để giúp mọi người có thể tìm nó. diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index d63e23941c..f5302cec69 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -1488,7 +1488,6 @@ 语音已连接 已验证 连接​​​​​​​​ - Discord 可将您和您的好友联系起来,帮助他们找到您。 自动从您的联系人中添加好友 同步您的联系人 从联系人中添加好友,并告知他们您加入了Discord。 @@ -3184,7 +3183,6 @@ 您活动的位置是? 选择一个频道 选择一个语音频道 - 为您的服务器创办一些活动,让大家聚在一起。 没有临期活动。 位置 活动信息 @@ -4202,7 +4200,6 @@ 助力!!{guildName}!!的 Student Hub 成长 前往服务器 返回至 Hub - 您的服务器已被创建并添加至!!{guildName}!!的 Student Hub! 自定义您的服务器 帮助其他同学找到!!{guildName}!! 为您的服务器添加描述与类别,从而帮助大家找到它。 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 24fc31c31f..cd396a3fea 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -1483,7 +1483,6 @@ 語音已連線 已驗證 連接 - Discord 可以聯絡您的好友,並幫助他們找到您。 自動從您的聯絡人資訊新增好友 同步您的聯絡人資訊 透過您的聯絡人資訊添加好友,讓他們知道您在使用 Discord。 @@ -3179,7 +3178,6 @@ 您的活動在哪裡舉行? 選擇一個頻道 選擇語音頻道 - 建立幾場活動,讓您的伺服器好友相聚在一起。 目前沒有即將開始的活動。 位置 活動資訊 @@ -4197,7 +4195,6 @@ 幫助 !!{guildName}!! 專用的學生中心成長茁壯 前往伺服器 返回中心 - 您的伺服器已建立並新增至 !!{guildName}!! 的學生中心! 將你的伺服器個人化 幫助其他學生找到 !!{guildName}!! 幫您的伺服器新增描述跟類別,幫助其他人找到它。 diff --git a/app/src/main/res/values/public.xml b/app/src/main/res/values/public.xml index 88aed3c53d..242689dacd 100644 --- a/app/src/main/res/values/public.xml +++ b/app/src/main/res/values/public.xml @@ -15804,8479 +15804,8488 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3dcfdf55a8..7e5410bf36 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -35,8 +35,8 @@ Collapse About this App Accept - Accept DM from {user}? - They will only be notified if you Accept and reply. + New direct message + Accept to start chatting. They will only be notified if you message them back. Accept Invite Request Accepted Accessibility @@ -1400,6 +1400,7 @@ Close Close action sheet Close DM + Not interested? Ignore to close this DM. Close drawer Close Stream Close Window @@ -1426,7 +1427,7 @@ Select a color Transparency Use Default - a13d6c1d7ce2414eaf92197e14b59933 + 0c2a5d273223415f820afc976c5ef272 Coming Soon Slash command application {applicationName} {applicationName} application @@ -1556,7 +1557,6 @@ Voice Connected Verified Connections - Discord can connect you with your friends and help them find you. Add friends from your contacts automatically Sync your contacts Add friends from your contacts and let them know you’re on Discord. @@ -2233,6 +2233,7 @@ Move Start Drag and Drop Done + Don\'t ask again Don\'t show me this again. Download Download App @@ -2367,6 +2368,7 @@ Medium skin tone None !!{names}!!, favorited + Upload an emoji to this server Use these emoji and more by subscribing to Nitro. Get Nitro This emoji is from this server. Get Nitro to use it everywhere. @@ -3352,6 +3354,7 @@ You must first choose an event location. What\'s your event about? A location is required. + You cannot edit the start time of an already active event. An event topic is required. Event Topic What\'s your event? @@ -4116,6 +4119,9 @@ Alias Enter Alias Add up to {count} custom emoji that anyone can use in this server. Animated GIF emoji may be used by members with Discord Nitro. Emoji names must be at least 2 characters long and can only contain alphanumeric characters and underscores. Emoji must be under {maxSize}kb in size. + Boost your server to Level {level} to unlock more emoji slots! + Level {level} emojis lost + Boost your server to Level {level} or buy a level to unlock your emojis! Enable Discovery Here\'s an example! Filter by Action @@ -5889,8 +5895,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 @@ -7465,6 +7471,7 @@ Tap to see sticker Replying to $[](userHook) Report + Report spam or abuse and close this DM. Report Message Posted by !!{name}!! Report Message Block user @@ -8038,7 +8045,7 @@ Search with Google Searching… Security - See Details + Event Details See Thread › Select @@ -9739,6 +9746,8 @@ Open voice call actions {count} Voice Channel + Looks like you\'re in another voice channel. Are you sure you want to switch to **!!{channel}!!**? + You sure? Deafened Connect to live audio for group conversations Feelin\' lonely? Add friends to this voice channel by creating an invite link.