apkfuckery/com.discord/smali/com/discord/utilities/textprocessing/MessageUtils.smali

635 lines
15 KiB
Smali
Raw Normal View History

2019-07-24 11:27:29 +00:00
.class public final Lcom/discord/utilities/textprocessing/MessageUtils;
.super Ljava/lang/Object;
.source "MessageUtils.kt"
# static fields
.field public static final INSTANCE:Lcom/discord/utilities/textprocessing/MessageUtils;
2019-12-06 03:29:40 +00:00
.field public static final WELCOME_MESSAGES:[I
2019-07-24 11:27:29 +00:00
# direct methods
2019-12-06 03:29:40 +00:00
.method public static constructor <clinit>()V
2019-07-24 11:27:29 +00:00
.locals 1
new-instance v0, Lcom/discord/utilities/textprocessing/MessageUtils;
invoke-direct {v0}, Lcom/discord/utilities/textprocessing/MessageUtils;-><init>()V
sput-object v0, Lcom/discord/utilities/textprocessing/MessageUtils;->INSTANCE:Lcom/discord/utilities/textprocessing/MessageUtils;
const/16 v0, 0x27
new-array v0, v0, [I
fill-array-data v0, :array_0
sput-object v0, Lcom/discord/utilities/textprocessing/MessageUtils;->WELCOME_MESSAGES:[I
return-void
nop
:array_0
.array-data 4
2020-02-12 20:59:48 +00:00
0x7f121212
0x7f121213
0x7f121214
0x7f121215
0x7f121216
0x7f121217
0x7f121218
0x7f121219
0x7f12121a
0x7f12121b
0x7f12121c
0x7f12121d
0x7f12121e
0x7f12121f
0x7f121220
0x7f121221
0x7f121222
0x7f121223
0x7f121224
0x7f121225
0x7f121226
0x7f121227
0x7f121228
0x7f121229
0x7f12122a
0x7f12122b
0x7f12122c
0x7f12122d
0x7f12122e
0x7f12122f
0x7f121230
0x7f121231
0x7f121232
0x7f121233
0x7f121234
0x7f121235
0x7f121236
0x7f121237
0x7f121238
2019-07-24 11:27:29 +00:00
.end array-data
.end method
2019-12-06 03:29:40 +00:00
.method public constructor <init>()V
2019-07-24 11:27:29 +00:00
.locals 0
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
2020-01-16 02:27:13 +00:00
.method private final cleanEmojisInQuotedText(Ljava/lang/String;)Ljava/lang/String;
.locals 2
new-instance v0, Lkotlin/text/Regex;
const-string v1, "<(a)?:([a-zA-Z_0-9]+):(\\d+)>"
invoke-direct {v0, v1}, Lkotlin/text/Regex;-><init>(Ljava/lang/String;)V
new-instance v1, Lcom/discord/utilities/textprocessing/MessageUtils$cleanEmojisInQuotedText$1;
invoke-direct {v1, p1}, Lcom/discord/utilities/textprocessing/MessageUtils$cleanEmojisInQuotedText$1;-><init>(Ljava/lang/String;)V
invoke-virtual {v0, p1, v1}, Lkotlin/text/Regex;->replace(Ljava/lang/CharSequence;Lkotlin/jvm/functions/Function1;)Ljava/lang/String;
move-result-object p1
return-object p1
.end method
2020-01-11 03:15:11 +00:00
.method private final cleanTextOfQuotes(Ljava/lang/String;)Ljava/lang/String;
.locals 10
const/4 v0, 0x1
new-array v1, v0, [C
const/4 v2, 0x0
const/16 v3, 0xa
aput-char v3, v1, v2
const/4 v3, 0x6
invoke-static {p1, v1, v2, v2, v3}, Lt/a0/s;->split$default(Ljava/lang/CharSequence;[CZII)Ljava/util/List;
move-result-object p1
new-instance v1, Ljava/util/ArrayList;
invoke-direct {v1}, Ljava/util/ArrayList;-><init>()V
invoke-interface {p1}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator;
move-result-object p1
:cond_0
:goto_0
invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z
move-result v3
if-eqz v3, :cond_1
invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v3
move-object v4, v3
check-cast v4, Ljava/lang/String;
const/4 v5, 0x2
const-string v6, "> "
invoke-static {v4, v6, v2, v5}, Lt/a0/n;->startsWith$default(Ljava/lang/String;Ljava/lang/String;ZI)Z
move-result v4
xor-int/2addr v4, v0
if-eqz v4, :cond_0
invoke-interface {v1, v3}, Ljava/util/Collection;->add(Ljava/lang/Object;)Z
goto :goto_0
:cond_1
invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object p1
:goto_1
invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z
2020-01-16 02:27:13 +00:00
move-result v3
2020-01-11 03:15:11 +00:00
2020-01-16 02:27:13 +00:00
const/4 v4, -0x1
2020-01-11 03:15:11 +00:00
2020-01-16 02:27:13 +00:00
if-eqz v3, :cond_3
2020-01-11 03:15:11 +00:00
2020-01-16 02:27:13 +00:00
invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
2020-01-11 03:15:11 +00:00
2020-01-16 02:27:13 +00:00
move-result-object v3
2020-01-11 03:15:11 +00:00
2020-01-16 02:27:13 +00:00
check-cast v3, Ljava/lang/String;
2020-01-11 03:15:11 +00:00
2020-01-16 02:27:13 +00:00
invoke-static {v3}, Lt/a0/n;->isBlank(Ljava/lang/CharSequence;)Z
2020-01-11 03:15:11 +00:00
2020-01-16 02:27:13 +00:00
move-result v3
2020-01-11 03:15:11 +00:00
2020-01-16 02:27:13 +00:00
xor-int/2addr v3, v0
2020-01-11 03:15:11 +00:00
2020-01-16 02:27:13 +00:00
if-eqz v3, :cond_2
2020-01-11 03:15:11 +00:00
goto :goto_2
:cond_2
2020-01-16 02:27:13 +00:00
add-int/lit8 v2, v2, 0x1
2020-01-11 03:15:11 +00:00
goto :goto_1
2020-01-16 02:27:13 +00:00
:cond_3
const/4 v2, -0x1
2020-01-11 03:15:11 +00:00
2020-01-16 02:27:13 +00:00
:goto_2
if-ne v2, v4, :cond_4
2020-01-11 03:15:11 +00:00
2020-01-16 02:27:13 +00:00
const/4 p1, 0x0
2020-01-11 03:15:11 +00:00
2020-01-16 02:27:13 +00:00
return-object p1
2020-01-11 03:15:11 +00:00
2020-01-16 02:27:13 +00:00
:cond_4
2020-01-11 03:15:11 +00:00
invoke-interface {v1}, Ljava/util/List;->size()I
move-result p1
2020-01-16 02:27:13 +00:00
invoke-static {v2, p1}, Lt/x/c;->until(II)Lkotlin/ranges/IntRange;
2020-01-11 03:15:11 +00:00
move-result-object p1
invoke-static {v1, p1}, Lt/q/l;->slice(Ljava/util/List;Lkotlin/ranges/IntRange;)Ljava/util/List;
move-result-object v2
const/4 v4, 0x0
const/4 v5, 0x0
const/4 v6, 0x0
const/4 v7, 0x0
const/4 v8, 0x0
const/16 v9, 0x3e
const-string v3, "\n"
invoke-static/range {v2 .. v9}, Lt/q/l;->joinToString$default(Ljava/lang/Iterable;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;I)Ljava/lang/String;
move-result-object p1
return-object p1
.end method
.method private final formatTextAsQuote(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
.locals 11
const-string v0, "\n"
filled-new-array {v0}, [Ljava/lang/String;
move-result-object v0
const/4 v1, 0x0
const/4 v2, 0x6
invoke-static {p1, v0, v1, v1, v2}, Lt/a0/s;->split$default(Ljava/lang/CharSequence;[Ljava/lang/String;ZII)Ljava/util/List;
move-result-object v3
sget-object v9, Lcom/discord/utilities/textprocessing/MessageUtils$formatTextAsQuote$formattedText$1;->INSTANCE:Lcom/discord/utilities/textprocessing/MessageUtils$formatTextAsQuote$formattedText$1;
const-string v4, ""
const/4 v5, 0x0
const/4 v6, 0x0
const/4 v7, 0x0
const/4 v8, 0x0
const/16 v10, 0x1e
invoke-static/range {v3 .. v10}, Lt/q/l;->joinToString$default(Ljava/lang/Iterable;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;I)Ljava/lang/String;
move-result-object p1
if-eqz p2, :cond_0
invoke-static {p1, p2}, Le/e/b/a/a;->a(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object p1
:cond_0
return-object p1
.end method
2019-07-24 11:27:29 +00:00
.method public static final getNickOrUsernames(Lcom/discord/models/domain/ModelMessage;Lcom/discord/models/domain/ModelChannel;Ljava/util/Map;Ljava/util/Map;)Ljava/util/Map;
.locals 2
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/discord/models/domain/ModelMessage;",
"Lcom/discord/models/domain/ModelChannel;",
"Ljava/util/Map<",
"Ljava/lang/Long;",
"+",
"Lcom/discord/models/domain/ModelGuildMember$Computed;",
">;",
"Ljava/util/Map<",
"Ljava/lang/Long;",
"+",
"Lcom/discord/models/domain/ModelChannel$RecipientNick;",
">;)",
"Ljava/util/Map<",
"Ljava/lang/Long;",
"Ljava/lang/String;",
">;"
}
.end annotation
2019-12-06 03:29:40 +00:00
const/4 v0, 0x0
2019-07-24 11:27:29 +00:00
2019-12-06 03:29:40 +00:00
if-eqz p0, :cond_2
2019-07-24 11:27:29 +00:00
2019-12-06 03:29:40 +00:00
if-eqz p2, :cond_1
2019-07-24 11:27:29 +00:00
2019-12-06 03:29:40 +00:00
if-eqz p3, :cond_0
2019-07-24 11:27:29 +00:00
invoke-virtual {p0}, Lcom/discord/models/domain/ModelMessage;->getMentions()Ljava/util/List;
move-result-object v0
const-string v1, "message.mentions"
2019-12-21 01:41:59 +00:00
invoke-static {v0, v1}, Lt/u/b/j;->checkExpressionValueIsNotNull(Ljava/lang/Object;Ljava/lang/String;)V
2019-07-24 11:27:29 +00:00
invoke-virtual {p0}, Lcom/discord/models/domain/ModelMessage;->getAuthor()Lcom/discord/models/domain/ModelUser;
move-result-object p0
2019-12-21 01:41:59 +00:00
invoke-static {v0, p0}, Lt/q/l;->plus(Ljava/util/Collection;Ljava/lang/Object;)Ljava/util/List;
2019-07-24 11:27:29 +00:00
move-result-object p0
invoke-static {p0, p1, p2, p3}, Lcom/discord/utilities/channel/ChannelUtils;->getNickOrUsernames(Ljava/lang/Iterable;Lcom/discord/models/domain/ModelChannel;Ljava/util/Map;Ljava/util/Map;)Ljava/util/Map;
move-result-object p0
return-object p0
2019-12-06 03:29:40 +00:00
:cond_0
const-string p0, "nicks"
2019-12-21 01:41:59 +00:00
invoke-static {p0}, Lt/u/b/j;->a(Ljava/lang/String;)V
2019-12-06 03:29:40 +00:00
throw v0
:cond_1
const-string p0, "channelMembers"
2019-12-21 01:41:59 +00:00
invoke-static {p0}, Lt/u/b/j;->a(Ljava/lang/String;)V
2019-12-06 03:29:40 +00:00
throw v0
:cond_2
const-string p0, "message"
2019-12-21 01:41:59 +00:00
invoke-static {p0}, Lt/u/b/j;->a(Ljava/lang/String;)V
2019-12-06 03:29:40 +00:00
throw v0
2019-07-24 11:27:29 +00:00
.end method
.method public static synthetic getNickOrUsernames$default(Lcom/discord/models/domain/ModelMessage;Lcom/discord/models/domain/ModelChannel;Ljava/util/Map;Ljava/util/Map;ILjava/lang/Object;)Ljava/util/Map;
.locals 0
and-int/lit8 p4, p4, 0x8
if-eqz p4, :cond_0
2019-12-21 01:41:59 +00:00
invoke-static {}, Lt/q/l;->emptyMap()Ljava/util/Map;
2019-07-24 11:27:29 +00:00
move-result-object p3
:cond_0
invoke-static {p0, p1, p2, p3}, Lcom/discord/utilities/textprocessing/MessageUtils;->getNickOrUsernames(Lcom/discord/models/domain/ModelMessage;Lcom/discord/models/domain/ModelChannel;Ljava/util/Map;Ljava/util/Map;)Ljava/util/Map;
move-result-object p0
return-object p0
.end method
.method public static final getSystemMessageUserJoin(Landroid/content/Context;J)I
.locals 3
2019-12-06 03:29:40 +00:00
const/4 v0, 0x0
2019-07-24 11:27:29 +00:00
2019-12-06 03:29:40 +00:00
if-eqz p0, :cond_4
2019-07-24 11:27:29 +00:00
2019-12-06 03:29:40 +00:00
sget v1, Landroid/os/Build$VERSION;->SDK_INT:I
2019-07-24 11:27:29 +00:00
const/16 v2, 0x18
2019-12-06 03:29:40 +00:00
if-lt v1, v2, :cond_0
2019-07-24 11:27:29 +00:00
invoke-virtual {p0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
move-result-object p0
if-eqz p0, :cond_1
invoke-virtual {p0}, Landroid/content/res/Resources;->getConfiguration()Landroid/content/res/Configuration;
move-result-object p0
if-eqz p0, :cond_1
invoke-virtual {p0}, Landroid/content/res/Configuration;->getLocales()Landroid/os/LocaleList;
move-result-object p0
if-eqz p0, :cond_1
2019-12-06 03:29:40 +00:00
const/4 v1, 0x0
2019-07-24 11:27:29 +00:00
2019-12-06 03:29:40 +00:00
invoke-virtual {p0, v1}, Landroid/os/LocaleList;->get(I)Ljava/util/Locale;
2019-07-24 11:27:29 +00:00
move-result-object p0
goto :goto_0
:cond_0
invoke-virtual {p0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
move-result-object p0
if-eqz p0, :cond_1
invoke-virtual {p0}, Landroid/content/res/Resources;->getConfiguration()Landroid/content/res/Configuration;
move-result-object p0
if-eqz p0, :cond_1
iget-object p0, p0, Landroid/content/res/Configuration;->locale:Ljava/util/Locale;
goto :goto_0
:cond_1
2019-12-06 03:29:40 +00:00
move-object p0, v0
2019-07-24 11:27:29 +00:00
:goto_0
2019-12-06 03:29:40 +00:00
new-instance v1, Ljava/util/Locale;
2019-07-24 11:27:29 +00:00
const-string v2, "en"
2019-12-06 03:29:40 +00:00
invoke-direct {v1, v2}, Ljava/util/Locale;-><init>(Ljava/lang/String;)V
2019-07-24 11:27:29 +00:00
if-eqz p0, :cond_2
invoke-virtual {p0}, Ljava/util/Locale;->getLanguage()Ljava/lang/String;
2019-12-06 03:29:40 +00:00
move-result-object v0
2019-07-24 11:27:29 +00:00
:cond_2
2019-12-06 03:29:40 +00:00
invoke-virtual {v1}, Ljava/util/Locale;->getLanguage()Ljava/lang/String;
2019-07-24 11:27:29 +00:00
move-result-object p0
2019-12-21 01:41:59 +00:00
invoke-static {v0, p0}, Lt/u/b/j;->areEqual(Ljava/lang/Object;Ljava/lang/Object;)Z
2019-07-24 11:27:29 +00:00
move-result p0
xor-int/lit8 p0, p0, 0x1
if-eqz p0, :cond_3
const-wide/16 p0, 0x0
goto :goto_1
:cond_3
invoke-static {p1, p2}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
2020-01-10 03:40:06 +00:00
move-result-object p0
2019-07-24 11:27:29 +00:00
2020-01-10 03:40:06 +00:00
invoke-static {p0}, Lcom/discord/utilities/time/TimeUtils;->parseSnowflake(Ljava/lang/Long;)J
2019-07-24 11:27:29 +00:00
move-result-wide p0
sget-object p2, Lcom/discord/utilities/textprocessing/MessageUtils;->WELCOME_MESSAGES:[I
array-length p2, p2
int-to-long v0, p2
rem-long/2addr p0, v0
:goto_1
sget-object p2, Lcom/discord/utilities/textprocessing/MessageUtils;->WELCOME_MESSAGES:[I
long-to-int p1, p0
aget p0, p2, p1
return p0
2019-12-06 03:29:40 +00:00
:cond_4
const-string p0, "context"
2019-12-21 01:41:59 +00:00
invoke-static {p0}, Lt/u/b/j;->a(Ljava/lang/String;)V
2019-12-06 03:29:40 +00:00
throw v0
2019-07-24 11:27:29 +00:00
.end method
2020-01-16 02:27:13 +00:00
# virtual methods
.method public final createQuotedText(Lcom/discord/models/domain/ModelMessage;Lcom/discord/models/domain/ModelChannel;)Ljava/lang/String;
.locals 3
const/4 v0, 0x0
if-eqz p1, :cond_3
if-eqz p2, :cond_2
invoke-virtual {p1}, Lcom/discord/models/domain/ModelMessage;->getContent()Ljava/lang/String;
move-result-object v1
const-string v2, "message.content"
invoke-static {v1, v2}, Lt/u/b/j;->checkExpressionValueIsNotNull(Ljava/lang/Object;Ljava/lang/String;)V
invoke-direct {p0, v1}, Lcom/discord/utilities/textprocessing/MessageUtils;->cleanTextOfQuotes(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
if-eqz v1, :cond_1
invoke-direct {p0, v1}, Lcom/discord/utilities/textprocessing/MessageUtils;->cleanEmojisInQuotedText(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
invoke-virtual {p2}, Lcom/discord/models/domain/ModelChannel;->isDM()Z
move-result p2
if-eqz p2, :cond_0
goto :goto_0
:cond_0
const/16 p2, 0x40
invoke-static {p2}, Le/e/b/a/a;->a(C)Ljava/lang/StringBuilder;
move-result-object p2
invoke-virtual {p1}, Lcom/discord/models/domain/ModelMessage;->getAuthor()Lcom/discord/models/domain/ModelUser;
move-result-object p1
const-string v0, "message.author"
invoke-static {p1, v0}, Lt/u/b/j;->checkExpressionValueIsNotNull(Ljava/lang/Object;Ljava/lang/String;)V
invoke-virtual {p1}, Lcom/discord/models/domain/ModelUser;->getUserNameWithDiscriminator()Ljava/lang/String;
move-result-object p1
invoke-virtual {p2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const/16 p1, 0x20
invoke-virtual {p2, p1}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
invoke-virtual {p2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
:goto_0
invoke-direct {p0, v1, v0}, Lcom/discord/utilities/textprocessing/MessageUtils;->formatTextAsQuote(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object p1
return-object p1
:cond_1
return-object v0
:cond_2
const-string p1, "channel"
invoke-static {p1}, Lt/u/b/j;->a(Ljava/lang/String;)V
throw v0
:cond_3
const-string p1, "message"
invoke-static {p1}, Lt/u/b/j;->a(Ljava/lang/String;)V
throw v0
.end method
.method public final isContentQuotable(Lcom/discord/models/domain/ModelMessage;)Z
.locals 1
2020-01-18 01:53:20 +00:00
if-eqz p1, :cond_2
2020-01-16 02:27:13 +00:00
invoke-virtual {p1}, Lcom/discord/models/domain/ModelMessage;->getContent()Ljava/lang/String;
move-result-object p1
2020-01-18 01:53:20 +00:00
const/4 v0, 0x0
if-nez p1, :cond_0
2020-01-16 02:27:13 +00:00
2020-01-18 01:53:20 +00:00
goto :goto_0
2020-01-16 02:27:13 +00:00
2020-01-18 01:53:20 +00:00
:cond_0
2020-01-16 02:27:13 +00:00
invoke-direct {p0, p1}, Lcom/discord/utilities/textprocessing/MessageUtils;->cleanTextOfQuotes(Ljava/lang/String;)Ljava/lang/String;
move-result-object p1
2020-01-18 01:53:20 +00:00
if-eqz p1, :cond_1
2020-01-16 02:27:13 +00:00
2020-01-18 01:53:20 +00:00
const/4 v0, 0x1
2020-01-16 02:27:13 +00:00
2020-01-18 01:53:20 +00:00
:cond_1
2020-01-16 02:27:13 +00:00
:goto_0
2020-01-18 01:53:20 +00:00
return v0
2020-01-16 02:27:13 +00:00
2020-01-18 01:53:20 +00:00
:cond_2
2020-01-16 02:27:13 +00:00
const-string p1, "message"
invoke-static {p1}, Lt/u/b/j;->a(Ljava/lang/String;)V
const/4 p1, 0x0
throw p1
.end method