Loading app/src/main/java/app/fedilab/android/helper/CrossActionHelper.java +1 −5 Original line number Diff line number Diff line Loading @@ -27,9 +27,6 @@ import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelStoreOwner; import androidx.preference.PreferenceManager; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import java.io.IOException; import java.util.ArrayList; import java.util.List; Loading Loading @@ -255,10 +252,9 @@ public class CrossActionHelper { .connectTimeout(60, TimeUnit.SECONDS) .proxy(Helper.getProxy(context)) .build(); Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss").create(); Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://" + instance + "/api/v2/") .addConverterFactory(GsonConverterFactory.create(gson)) .addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder())) .client(okHttpClient) .build(); return retrofit.create(MastodonSearchService.class); Loading app/src/main/java/app/fedilab/android/helper/Helper.java +40 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,12 @@ import com.bumptech.glide.Glide; import com.bumptech.glide.load.resource.bitmap.CenterCrop; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.bumptech.glide.request.RequestOptions; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.TypeAdapter; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonToken; import com.google.gson.stream.JsonWriter; import com.jaredrummler.cyanea.Cyanea; import org.conscrypt.Conscrypt; Loading @@ -107,6 +113,7 @@ import java.net.PasswordAuthentication; import java.net.Proxy; import java.security.Security; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Collections; import java.util.Date; Loading @@ -116,6 +123,7 @@ import java.util.Locale; import java.util.Map; import java.util.Objects; import java.util.Random; import java.util.TimeZone; import java.util.UUID; import java.util.regex.Matcher; import java.util.regex.Pattern; Loading Loading @@ -1583,4 +1591,36 @@ public class Helper { void onAttachmentCopied(Attachment attachment); } public static Gson getDateBuilder() { SimpleDateFormat[] formats = new SimpleDateFormat[]{ new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ", Locale.getDefault()), new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.getDefault()), }; return new GsonBuilder() .registerTypeAdapter(Date.class, new TypeAdapter<Date>() { @Override public void write(JsonWriter out, Date value) { } @Override public Date read(JsonReader reader) throws IOException { if (reader.peek() == JsonToken.NULL) { reader.nextNull(); return null; } String dateAsString = reader.nextString(); for (SimpleDateFormat format : formats) { try { format.setTimeZone(TimeZone.getTimeZone("UTC")); return format.parse(dateAsString); } catch (ParseException ignored) { } } return null; } }) .create(); } } app/src/main/java/app/fedilab/android/helper/NotificationsHelper.java +1 −1 Original line number Diff line number Diff line Loading @@ -145,7 +145,7 @@ public class NotificationsHelper { Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss").create(); Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://" + instance + "/api/v1/") .addConverterFactory(GsonConverterFactory.create(gson)) .addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder())) .client(okHttpClient) .build(); return retrofit.create(MastodonNotificationsService.class); Loading app/src/main/java/app/fedilab/android/helper/PushNotifications.java +1 −5 Original line number Diff line number Diff line Loading @@ -26,9 +26,6 @@ import android.os.Looper; import androidx.annotation.NonNull; import androidx.preference.PreferenceManager; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import java.io.IOException; import java.util.Random; import java.util.concurrent.TimeUnit; Loading Loading @@ -137,10 +134,9 @@ public class PushNotifications { .connectTimeout(60, TimeUnit.SECONDS) .proxy(Helper.getProxy(context.getApplicationContext())) .build(); Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss").create(); Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://" + instance + "/api/v1/") .addConverterFactory(GsonConverterFactory.create(gson)) .addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder())) .client(okHttpClient) .build(); return retrofit.create(MastodonNotificationsService.class); Loading app/src/main/java/app/fedilab/android/helper/SpannableHelper.java +3 −0 Original line number Diff line number Diff line Loading @@ -1067,6 +1067,9 @@ public class SpannableHelper { if (status.translationContent != null) { status.span_translate = SpannableHelper.convert(context, status, status.translationContent); } if (status.account == null) { return status; } status.account.span_display_name = SpannableHelper.convertA(context, status.account, status.account.display_name, true); if (status.poll != null) { for (Poll.PollItem pollItem : status.poll.options) { Loading Loading
app/src/main/java/app/fedilab/android/helper/CrossActionHelper.java +1 −5 Original line number Diff line number Diff line Loading @@ -27,9 +27,6 @@ import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelStoreOwner; import androidx.preference.PreferenceManager; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import java.io.IOException; import java.util.ArrayList; import java.util.List; Loading Loading @@ -255,10 +252,9 @@ public class CrossActionHelper { .connectTimeout(60, TimeUnit.SECONDS) .proxy(Helper.getProxy(context)) .build(); Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss").create(); Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://" + instance + "/api/v2/") .addConverterFactory(GsonConverterFactory.create(gson)) .addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder())) .client(okHttpClient) .build(); return retrofit.create(MastodonSearchService.class); Loading
app/src/main/java/app/fedilab/android/helper/Helper.java +40 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,12 @@ import com.bumptech.glide.Glide; import com.bumptech.glide.load.resource.bitmap.CenterCrop; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.bumptech.glide.request.RequestOptions; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.TypeAdapter; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonToken; import com.google.gson.stream.JsonWriter; import com.jaredrummler.cyanea.Cyanea; import org.conscrypt.Conscrypt; Loading @@ -107,6 +113,7 @@ import java.net.PasswordAuthentication; import java.net.Proxy; import java.security.Security; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Collections; import java.util.Date; Loading @@ -116,6 +123,7 @@ import java.util.Locale; import java.util.Map; import java.util.Objects; import java.util.Random; import java.util.TimeZone; import java.util.UUID; import java.util.regex.Matcher; import java.util.regex.Pattern; Loading Loading @@ -1583,4 +1591,36 @@ public class Helper { void onAttachmentCopied(Attachment attachment); } public static Gson getDateBuilder() { SimpleDateFormat[] formats = new SimpleDateFormat[]{ new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ", Locale.getDefault()), new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.getDefault()), }; return new GsonBuilder() .registerTypeAdapter(Date.class, new TypeAdapter<Date>() { @Override public void write(JsonWriter out, Date value) { } @Override public Date read(JsonReader reader) throws IOException { if (reader.peek() == JsonToken.NULL) { reader.nextNull(); return null; } String dateAsString = reader.nextString(); for (SimpleDateFormat format : formats) { try { format.setTimeZone(TimeZone.getTimeZone("UTC")); return format.parse(dateAsString); } catch (ParseException ignored) { } } return null; } }) .create(); } }
app/src/main/java/app/fedilab/android/helper/NotificationsHelper.java +1 −1 Original line number Diff line number Diff line Loading @@ -145,7 +145,7 @@ public class NotificationsHelper { Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss").create(); Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://" + instance + "/api/v1/") .addConverterFactory(GsonConverterFactory.create(gson)) .addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder())) .client(okHttpClient) .build(); return retrofit.create(MastodonNotificationsService.class); Loading
app/src/main/java/app/fedilab/android/helper/PushNotifications.java +1 −5 Original line number Diff line number Diff line Loading @@ -26,9 +26,6 @@ import android.os.Looper; import androidx.annotation.NonNull; import androidx.preference.PreferenceManager; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import java.io.IOException; import java.util.Random; import java.util.concurrent.TimeUnit; Loading Loading @@ -137,10 +134,9 @@ public class PushNotifications { .connectTimeout(60, TimeUnit.SECONDS) .proxy(Helper.getProxy(context.getApplicationContext())) .build(); Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss").create(); Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://" + instance + "/api/v1/") .addConverterFactory(GsonConverterFactory.create(gson)) .addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder())) .client(okHttpClient) .build(); return retrofit.create(MastodonNotificationsService.class); Loading
app/src/main/java/app/fedilab/android/helper/SpannableHelper.java +3 −0 Original line number Diff line number Diff line Loading @@ -1067,6 +1067,9 @@ public class SpannableHelper { if (status.translationContent != null) { status.span_translate = SpannableHelper.convert(context, status, status.translationContent); } if (status.account == null) { return status; } status.account.span_display_name = SpannableHelper.convertA(context, status.account, status.account.display_name, true); if (status.poll != null) { for (Poll.PollItem pollItem : status.poll.options) { Loading