This commit is contained in:
parent
1240a07ef4
commit
d55b3ebcd7
|
@ -32,6 +32,7 @@ import android.view.Menu;
|
||||||
import com.google.firebase.iid.FirebaseInstanceId;
|
import com.google.firebase.iid.FirebaseInstanceId;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.google.gson.GsonBuilder;
|
import com.google.gson.GsonBuilder;
|
||||||
|
import com.keylesspalace.tusky.entity.Account;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
|
@ -120,6 +121,7 @@ public class BaseActivity extends AppCompatActivity {
|
||||||
|
|
||||||
Gson gson = new GsonBuilder()
|
Gson gson = new GsonBuilder()
|
||||||
.registerTypeAdapter(Spanned.class, new SpannedTypeAdapter())
|
.registerTypeAdapter(Spanned.class, new SpannedTypeAdapter())
|
||||||
|
.registerTypeAdapter(StringWithEmoji.class, new StringWithEmojiTypeAdapter())
|
||||||
.create();
|
.create();
|
||||||
|
|
||||||
OkHttpClient okHttpClient = OkHttpUtils.getCompatibleClientBuilder()
|
OkHttpClient okHttpClient = OkHttpUtils.getCompatibleClientBuilder()
|
||||||
|
|
|
@ -208,7 +208,6 @@ public class LoginActivity extends AppCompatActivity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Chain together the key-value pairs into a query string, for either appending to a URL or
|
* Chain together the key-value pairs into a query string, for either appending to a URL or
|
||||||
* as the content of an HTTP request.
|
* as the content of an HTTP request.
|
||||||
|
|
|
@ -122,6 +122,7 @@ public class MyFirebaseMessagingService extends FirebaseMessagingService {
|
||||||
|
|
||||||
Gson gson = new GsonBuilder()
|
Gson gson = new GsonBuilder()
|
||||||
.registerTypeAdapter(Spanned.class, new SpannedTypeAdapter())
|
.registerTypeAdapter(Spanned.class, new SpannedTypeAdapter())
|
||||||
|
.registerTypeAdapter(StringWithEmoji.class, new StringWithEmojiTypeAdapter())
|
||||||
.create();
|
.create();
|
||||||
|
|
||||||
Retrofit retrofit = new Retrofit.Builder()
|
Retrofit retrofit = new Retrofit.Builder()
|
||||||
|
|
|
@ -16,14 +16,9 @@
|
||||||
package com.keylesspalace.tusky;
|
package com.keylesspalace.tusky;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.preference.PreferenceManager;
|
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
import android.support.v7.widget.RecyclerView;
|
import android.support.v7.widget.RecyclerView;
|
||||||
import android.text.SpannableStringBuilder;
|
|
||||||
import android.text.Spanned;
|
import android.text.Spanned;
|
||||||
import android.text.method.LinkMovementMethod;
|
|
||||||
import android.text.style.ClickableSpan;
|
|
||||||
import android.text.style.URLSpan;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.CompoundButton;
|
import android.widget.CompoundButton;
|
||||||
import android.widget.ImageButton;
|
import android.widget.ImageButton;
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
package com.keylesspalace.tusky;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is just a wrapper class for a String.
|
||||||
|
*
|
||||||
|
* It was designed to get around the limitation of a Json deserializer which only allows custom
|
||||||
|
* deserializing based on types, when special handling for a specific field was what was actually
|
||||||
|
* desired (in this case, display names). So, it was most expedient to just make up a type.
|
||||||
|
*/
|
||||||
|
public class StringWithEmoji {
|
||||||
|
public String value;
|
||||||
|
|
||||||
|
public StringWithEmoji(String value) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
package com.keylesspalace.tusky;
|
||||||
|
|
||||||
|
import com.emojione.Emojione;
|
||||||
|
import com.google.gson.JsonDeserializationContext;
|
||||||
|
import com.google.gson.JsonDeserializer;
|
||||||
|
import com.google.gson.JsonElement;
|
||||||
|
import com.google.gson.JsonParseException;
|
||||||
|
|
||||||
|
import java.lang.reflect.Type;
|
||||||
|
|
||||||
|
/** This is a type-based workaround to allow for shortcode conversion when loading display names. */
|
||||||
|
class StringWithEmojiTypeAdapter implements JsonDeserializer<StringWithEmoji> {
|
||||||
|
@Override
|
||||||
|
public StringWithEmoji deserialize(JsonElement json, Type typeOfT,
|
||||||
|
JsonDeserializationContext context) throws JsonParseException {
|
||||||
|
String value = json.getAsString();
|
||||||
|
if (value != null) {
|
||||||
|
return new StringWithEmoji(Emojione.shortnameToUnicode(value, false));
|
||||||
|
} else {
|
||||||
|
return new StringWithEmoji("");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -21,6 +21,7 @@ import android.text.Spanned;
|
||||||
import com.arlib.floatingsearchview.suggestions.model.SearchSuggestion;
|
import com.arlib.floatingsearchview.suggestions.model.SearchSuggestion;
|
||||||
import com.google.gson.annotations.SerializedName;
|
import com.google.gson.annotations.SerializedName;
|
||||||
import com.keylesspalace.tusky.HtmlUtils;
|
import com.keylesspalace.tusky.HtmlUtils;
|
||||||
|
import com.keylesspalace.tusky.StringWithEmoji;
|
||||||
|
|
||||||
public class Account implements SearchSuggestion {
|
public class Account implements SearchSuggestion {
|
||||||
public String id;
|
public String id;
|
||||||
|
@ -32,7 +33,7 @@ public class Account implements SearchSuggestion {
|
||||||
public String username;
|
public String username;
|
||||||
|
|
||||||
@SerializedName("display_name")
|
@SerializedName("display_name")
|
||||||
public String displayName;
|
public StringWithEmoji displayName;
|
||||||
|
|
||||||
public Spanned note;
|
public Spanned note;
|
||||||
|
|
||||||
|
@ -70,11 +71,10 @@ public class Account implements SearchSuggestion {
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getDisplayName() {
|
public String getDisplayName() {
|
||||||
if (displayName.length() == 0) {
|
if (displayName.value.length() == 0) {
|
||||||
return localUsername;
|
return localUsername;
|
||||||
}
|
}
|
||||||
|
return displayName.value;
|
||||||
return displayName;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -92,7 +92,7 @@ public class Account implements SearchSuggestion {
|
||||||
dest.writeString(id);
|
dest.writeString(id);
|
||||||
dest.writeString(localUsername);
|
dest.writeString(localUsername);
|
||||||
dest.writeString(username);
|
dest.writeString(username);
|
||||||
dest.writeString(displayName);
|
dest.writeString(displayName.value);
|
||||||
dest.writeString(HtmlUtils.toHtml(note));
|
dest.writeString(HtmlUtils.toHtml(note));
|
||||||
dest.writeString(url);
|
dest.writeString(url);
|
||||||
dest.writeString(avatar);
|
dest.writeString(avatar);
|
||||||
|
@ -111,7 +111,7 @@ public class Account implements SearchSuggestion {
|
||||||
id = in.readString();
|
id = in.readString();
|
||||||
localUsername = in.readString();
|
localUsername = in.readString();
|
||||||
username = in.readString();
|
username = in.readString();
|
||||||
displayName = in.readString();
|
displayName = new StringWithEmoji(in.readString());
|
||||||
note = HtmlUtils.fromHtml(in.readString());
|
note = HtmlUtils.fromHtml(in.readString());
|
||||||
url = in.readString();
|
url = in.readString();
|
||||||
avatar = in.readString();
|
avatar = in.readString();
|
||||||
|
|
Loading…
Reference in New Issue