443 lines
15 KiB
Java
443 lines
15 KiB
Java
package com.discord.models.domain.emoji;
|
|
|
|
import android.annotation.SuppressLint;
|
|
import android.content.Context;
|
|
import android.os.Parcel;
|
|
import android.os.Parcelable;
|
|
import android.text.TextUtils;
|
|
import b.a.m.a.h0.a;
|
|
import b.a.m.a.h0.b;
|
|
import b.a.m.a.h0.c;
|
|
import com.discord.models.domain.Model;
|
|
import com.discord.widgets.chat.input.MentionUtilsKt;
|
|
import java.io.IOException;
|
|
import java.util.ArrayList;
|
|
import java.util.Collections;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.concurrent.atomic.AtomicReference;
|
|
import java.util.regex.Pattern;
|
|
import java.util.regex.PatternSyntaxException;
|
|
public class ModelEmojiUnicode implements Model, Emoji {
|
|
public static final Parcelable.Creator<ModelEmojiUnicode> CREATOR = new AnonymousClass1();
|
|
private static final String[] DIVERSITY_MODIFIERS = {"🏻", "🏼", "🏽", "🏾", "🏿"};
|
|
private static final String FILENAME_FORMAT = "emoji_%s";
|
|
private static final String SKIN_TONE_SUFFIX = "::skin-tone-";
|
|
private static final String URI_FORMAT = "res:///%d";
|
|
private final AtomicReference<Object> codePoints = new AtomicReference<>();
|
|
private List<ModelEmojiUnicode> diversityChildren;
|
|
private boolean hasDiversity;
|
|
private boolean hasDiversityParent;
|
|
private boolean hasMultiDiversity;
|
|
private boolean hasMultiDiversityParent;
|
|
private List<String> names;
|
|
private String surrogates;
|
|
|
|
/* renamed from: com.discord.models.domain.emoji.ModelEmojiUnicode$1 reason: invalid class name */
|
|
public static class AnonymousClass1 implements Parcelable.Creator<ModelEmojiUnicode> {
|
|
@Override // android.os.Parcelable.Creator
|
|
public ModelEmojiUnicode createFromParcel(Parcel parcel) {
|
|
ArrayList arrayList = new ArrayList();
|
|
parcel.readStringList(arrayList);
|
|
String readString = parcel.readString();
|
|
boolean z2 = parcel.readInt() > 0;
|
|
boolean z3 = parcel.readInt() > 0;
|
|
boolean z4 = parcel.readInt() > 0;
|
|
boolean z5 = parcel.readInt() > 0;
|
|
ArrayList arrayList2 = new ArrayList();
|
|
parcel.readTypedList(arrayList2, this);
|
|
return new ModelEmojiUnicode(arrayList, readString, z2, z3, z4, z5, arrayList2);
|
|
}
|
|
|
|
@Override // android.os.Parcelable.Creator
|
|
public ModelEmojiUnicode[] newArray(int i) {
|
|
return new ModelEmojiUnicode[i];
|
|
}
|
|
}
|
|
|
|
public static class Bundle implements Model {
|
|
private Map<EmojiCategory, List<ModelEmojiUnicode>> emojis = new HashMap();
|
|
|
|
@Override // com.discord.models.domain.Model
|
|
public void assignField(Model.JsonReader jsonReader) throws IOException {
|
|
EmojiCategory byString = EmojiCategory.getByString(jsonReader.nextName());
|
|
if (byString != null) {
|
|
this.emojis.put(byString, jsonReader.nextList(new a(jsonReader)));
|
|
} else {
|
|
jsonReader.skipValue();
|
|
}
|
|
}
|
|
|
|
public boolean canEqual(Object obj) {
|
|
return obj instanceof Bundle;
|
|
}
|
|
|
|
public boolean equals(Object obj) {
|
|
if (obj == this) {
|
|
return true;
|
|
}
|
|
if (!(obj instanceof Bundle)) {
|
|
return false;
|
|
}
|
|
Bundle bundle = (Bundle) obj;
|
|
if (!bundle.canEqual(this)) {
|
|
return false;
|
|
}
|
|
Map<EmojiCategory, List<ModelEmojiUnicode>> emojis = getEmojis();
|
|
Map<EmojiCategory, List<ModelEmojiUnicode>> emojis2 = bundle.getEmojis();
|
|
return emojis != null ? emojis.equals(emojis2) : emojis2 == null;
|
|
}
|
|
|
|
public Map<EmojiCategory, List<ModelEmojiUnicode>> getEmojis() {
|
|
return this.emojis;
|
|
}
|
|
|
|
public int hashCode() {
|
|
Map<EmojiCategory, List<ModelEmojiUnicode>> emojis = getEmojis();
|
|
return 59 + (emojis == null ? 43 : emojis.hashCode());
|
|
}
|
|
|
|
public String toString() {
|
|
StringBuilder R = b.d.b.a.a.R("ModelEmojiUnicode.Bundle(emojis=");
|
|
R.append(getEmojis());
|
|
R.append(")");
|
|
return R.toString();
|
|
}
|
|
}
|
|
|
|
public ModelEmojiUnicode() {
|
|
}
|
|
|
|
public ModelEmojiUnicode(List<String> list, String str, boolean z2, boolean z3, boolean z4, boolean z5, List<ModelEmojiUnicode> list2) {
|
|
this.names = list;
|
|
this.surrogates = str;
|
|
this.hasDiversity = z2;
|
|
this.hasMultiDiversity = z3;
|
|
this.hasDiversityParent = z4;
|
|
this.hasMultiDiversityParent = z5;
|
|
this.diversityChildren = list2;
|
|
}
|
|
|
|
@SuppressLint({"DefaultLocale"})
|
|
public static String getImageUri(String str, Context context) {
|
|
return String.format(URI_FORMAT, Integer.valueOf(context.getResources().getIdentifier(String.format(FILENAME_FORMAT, str), "raw", context.getPackageName())));
|
|
}
|
|
|
|
private String toCodePoint() {
|
|
ArrayList arrayList = new ArrayList();
|
|
int i = 0;
|
|
while (true) {
|
|
char c = 0;
|
|
while (i < this.surrogates.length()) {
|
|
int i2 = i + 1;
|
|
char charAt = this.surrogates.charAt(i);
|
|
if (c != 0) {
|
|
arrayList.add(Integer.toHexString((charAt - 56320) + ((c - 55296) << 10) + 65536));
|
|
i = i2;
|
|
} else {
|
|
if (55296 > charAt || charAt > 56319) {
|
|
arrayList.add(Integer.toHexString(charAt));
|
|
} else {
|
|
c = charAt;
|
|
}
|
|
i = i2;
|
|
}
|
|
}
|
|
return TextUtils.join("_", arrayList);
|
|
}
|
|
}
|
|
|
|
@Override // com.discord.models.domain.Model
|
|
public void assignField(Model.JsonReader jsonReader) throws IOException {
|
|
String nextName = jsonReader.nextName();
|
|
nextName.hashCode();
|
|
char c = 65535;
|
|
switch (nextName.hashCode()) {
|
|
case -2019572390:
|
|
if (nextName.equals("hasMultiDiversity")) {
|
|
c = 0;
|
|
break;
|
|
}
|
|
break;
|
|
case -1212936855:
|
|
if (nextName.equals("hasDiversityParent")) {
|
|
c = 1;
|
|
break;
|
|
}
|
|
break;
|
|
case 104585032:
|
|
if (nextName.equals("names")) {
|
|
c = 2;
|
|
break;
|
|
}
|
|
break;
|
|
case 341058715:
|
|
if (nextName.equals("surrogates")) {
|
|
c = 3;
|
|
break;
|
|
}
|
|
break;
|
|
case 1515109343:
|
|
if (nextName.equals("hasDiversity")) {
|
|
c = 4;
|
|
break;
|
|
}
|
|
break;
|
|
case 1727581860:
|
|
if (nextName.equals("hasMultiDiversityParent")) {
|
|
c = 5;
|
|
break;
|
|
}
|
|
break;
|
|
case 2016033400:
|
|
if (nextName.equals("diversityChildren")) {
|
|
c = 6;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
switch (c) {
|
|
case 0:
|
|
this.hasMultiDiversity = jsonReader.nextBoolean(this.hasMultiDiversity);
|
|
return;
|
|
case 1:
|
|
this.hasDiversityParent = jsonReader.nextBoolean(this.hasDiversityParent);
|
|
return;
|
|
case 2:
|
|
this.names = jsonReader.nextList(new c(jsonReader));
|
|
return;
|
|
case 3:
|
|
this.surrogates = jsonReader.nextString(this.surrogates);
|
|
return;
|
|
case 4:
|
|
this.hasDiversity = jsonReader.nextBoolean(this.hasDiversity);
|
|
return;
|
|
case 5:
|
|
this.hasMultiDiversityParent = jsonReader.nextBoolean(this.hasMultiDiversityParent);
|
|
return;
|
|
case 6:
|
|
this.diversityChildren = jsonReader.nextList(new b(jsonReader));
|
|
return;
|
|
default:
|
|
jsonReader.skipValue();
|
|
return;
|
|
}
|
|
}
|
|
|
|
public boolean canEqual(Object obj) {
|
|
return obj instanceof ModelEmojiUnicode;
|
|
}
|
|
|
|
@Override // android.os.Parcelable
|
|
public int describeContents() {
|
|
return 0;
|
|
}
|
|
|
|
@Override // java.lang.Object
|
|
public boolean equals(Object obj) {
|
|
if (obj == this) {
|
|
return true;
|
|
}
|
|
if (!(obj instanceof ModelEmojiUnicode)) {
|
|
return false;
|
|
}
|
|
ModelEmojiUnicode modelEmojiUnicode = (ModelEmojiUnicode) obj;
|
|
if (!modelEmojiUnicode.canEqual(this) || isHasDiversity() != modelEmojiUnicode.isHasDiversity() || isHasMultiDiversity() != modelEmojiUnicode.isHasMultiDiversity() || isHasDiversityParent() != modelEmojiUnicode.isHasDiversityParent() || isHasMultiDiversityParent() != modelEmojiUnicode.isHasMultiDiversityParent()) {
|
|
return false;
|
|
}
|
|
List<String> names = getNames();
|
|
List<String> names2 = modelEmojiUnicode.getNames();
|
|
if (names != null ? !names.equals(names2) : names2 != null) {
|
|
return false;
|
|
}
|
|
String surrogates = getSurrogates();
|
|
String surrogates2 = modelEmojiUnicode.getSurrogates();
|
|
if (surrogates != null ? !surrogates.equals(surrogates2) : surrogates2 != null) {
|
|
return false;
|
|
}
|
|
List<ModelEmojiUnicode> diversityChildren = getDiversityChildren();
|
|
List<ModelEmojiUnicode> diversityChildren2 = modelEmojiUnicode.getDiversityChildren();
|
|
if (diversityChildren != null ? !diversityChildren.equals(diversityChildren2) : diversityChildren2 != null) {
|
|
return false;
|
|
}
|
|
String codePoints = getCodePoints();
|
|
String codePoints2 = modelEmojiUnicode.getCodePoints();
|
|
return codePoints != null ? codePoints.equals(codePoints2) : codePoints2 == null;
|
|
}
|
|
|
|
public List<ModelEmojiUnicode> getAsDiverse() {
|
|
List<ModelEmojiUnicode> list = this.diversityChildren;
|
|
return list == null ? Collections.emptyList() : list;
|
|
}
|
|
|
|
@Override // com.discord.models.domain.emoji.Emoji
|
|
public String getChatInputText() {
|
|
return getCommand(getFirstName());
|
|
}
|
|
|
|
public String getCodePoints() {
|
|
Object obj = this.codePoints.get();
|
|
if (obj == null) {
|
|
synchronized (this.codePoints) {
|
|
obj = this.codePoints.get();
|
|
if (obj == null) {
|
|
obj = toCodePoint();
|
|
if (obj == null) {
|
|
obj = this.codePoints;
|
|
}
|
|
this.codePoints.set(obj);
|
|
}
|
|
}
|
|
}
|
|
if (obj == this.codePoints) {
|
|
obj = null;
|
|
}
|
|
return (String) obj;
|
|
}
|
|
|
|
@Override // com.discord.models.domain.emoji.Emoji
|
|
public String getCommand(String str) {
|
|
if (str == null) {
|
|
str = getFirstName();
|
|
}
|
|
return String.format(":%s:", str);
|
|
}
|
|
|
|
public List<ModelEmojiUnicode> getDiversityChildren() {
|
|
return this.diversityChildren;
|
|
}
|
|
|
|
@Override // com.discord.models.domain.emoji.Emoji
|
|
public String getFirstName() {
|
|
return this.names.get(0);
|
|
}
|
|
|
|
@Override // com.discord.models.domain.emoji.Emoji
|
|
public String getImageUri(boolean z2, int i, Context context) {
|
|
return getImageUri(getCodePoints(), context);
|
|
}
|
|
|
|
@Override // com.discord.models.domain.emoji.Emoji
|
|
public String getMessageContentReplacement() {
|
|
return this.surrogates;
|
|
}
|
|
|
|
@Override // com.discord.models.domain.emoji.Emoji
|
|
public List<String> getNames() {
|
|
return this.names;
|
|
}
|
|
|
|
@Override // com.discord.models.domain.emoji.Emoji
|
|
public String getReactionKey() {
|
|
return this.surrogates;
|
|
}
|
|
|
|
@Override // com.discord.models.domain.emoji.Emoji
|
|
public Pattern getRegex(String str) {
|
|
if (str == null) {
|
|
str = getFirstName();
|
|
}
|
|
try {
|
|
return Pattern.compile("([^\\\\]|^):" + str + MentionUtilsKt.EMOJIS_AND_STICKERS_CHAR);
|
|
} catch (PatternSyntaxException unused) {
|
|
return Pattern.compile("$^");
|
|
}
|
|
}
|
|
|
|
public String getSurrogates() {
|
|
return this.surrogates;
|
|
}
|
|
|
|
@Override // com.discord.models.domain.emoji.Emoji
|
|
public String getUniqueId() {
|
|
return this.surrogates;
|
|
}
|
|
|
|
@Override // java.lang.Object
|
|
public int hashCode() {
|
|
int i = 79;
|
|
int i2 = ((((((isHasDiversity() ? 79 : 97) + 59) * 59) + (isHasMultiDiversity() ? 79 : 97)) * 59) + (isHasDiversityParent() ? 79 : 97)) * 59;
|
|
if (!isHasMultiDiversityParent()) {
|
|
i = 97;
|
|
}
|
|
int i3 = i2 + i;
|
|
List<String> names = getNames();
|
|
int i4 = 43;
|
|
int hashCode = (i3 * 59) + (names == null ? 43 : names.hashCode());
|
|
String surrogates = getSurrogates();
|
|
int hashCode2 = (hashCode * 59) + (surrogates == null ? 43 : surrogates.hashCode());
|
|
List<ModelEmojiUnicode> diversityChildren = getDiversityChildren();
|
|
int hashCode3 = (hashCode2 * 59) + (diversityChildren == null ? 43 : diversityChildren.hashCode());
|
|
String codePoints = getCodePoints();
|
|
int i5 = hashCode3 * 59;
|
|
if (codePoints != null) {
|
|
i4 = codePoints.hashCode();
|
|
}
|
|
return i5 + i4;
|
|
}
|
|
|
|
@Override // com.discord.models.domain.emoji.Emoji
|
|
public boolean isAvailable() {
|
|
return true;
|
|
}
|
|
|
|
public boolean isHasDiversity() {
|
|
return this.hasDiversity;
|
|
}
|
|
|
|
public boolean isHasDiversityParent() {
|
|
return this.hasDiversityParent;
|
|
}
|
|
|
|
public boolean isHasMultiDiversity() {
|
|
return this.hasMultiDiversity;
|
|
}
|
|
|
|
public boolean isHasMultiDiversityParent() {
|
|
return this.hasMultiDiversityParent;
|
|
}
|
|
|
|
@Override // com.discord.models.domain.emoji.Emoji
|
|
public boolean isUsable() {
|
|
return true;
|
|
}
|
|
|
|
@Override // com.discord.models.domain.emoji.Emoji
|
|
public boolean requiresColons() {
|
|
return true;
|
|
}
|
|
|
|
@Override // java.lang.Object
|
|
public String toString() {
|
|
StringBuilder R = b.d.b.a.a.R("ModelEmojiUnicode(names=");
|
|
R.append(getNames());
|
|
R.append(", surrogates=");
|
|
R.append(getSurrogates());
|
|
R.append(", hasDiversity=");
|
|
R.append(isHasDiversity());
|
|
R.append(", hasMultiDiversity=");
|
|
R.append(isHasMultiDiversity());
|
|
R.append(", hasDiversityParent=");
|
|
R.append(isHasDiversityParent());
|
|
R.append(", hasMultiDiversityParent=");
|
|
R.append(isHasMultiDiversityParent());
|
|
R.append(", diversityChildren=");
|
|
R.append(getDiversityChildren());
|
|
R.append(", codePoints=");
|
|
R.append(getCodePoints());
|
|
R.append(")");
|
|
return R.toString();
|
|
}
|
|
|
|
@Override // android.os.Parcelable
|
|
public void writeToParcel(Parcel parcel, int i) {
|
|
parcel.writeStringList(this.names);
|
|
parcel.writeString(this.surrogates);
|
|
parcel.writeInt(this.hasDiversity ? 1 : 0);
|
|
parcel.writeInt(this.hasMultiDiversity ? 1 : 0);
|
|
parcel.writeInt(this.hasDiversityParent ? 1 : 0);
|
|
parcel.writeInt(this.hasMultiDiversityParent ? 1 : 0);
|
|
parcel.writeTypedList(this.diversityChildren);
|
|
}
|
|
}
|