diff --git a/app/build.gradle b/app/build.gradle index 4eeba64d2..df0147226 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ android { defaultConfig { minSdk 21 targetSdk 31 - versionCode 16 - versionName "beta-16" + versionCode 17 + versionName "beta-17" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/java/app/fedilab/android/activities/MastodonListActivity.java b/app/src/main/java/app/fedilab/android/activities/MastodonListActivity.java index 890db3733..74d125fdd 100644 --- a/app/src/main/java/app/fedilab/android/activities/MastodonListActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/MastodonListActivity.java @@ -253,6 +253,9 @@ public class MastodonListActivity extends BaseActivity implements MastodonListAd if (popupAddListBinding.addList.getText() != null && popupAddListBinding.addList.getText().toString().trim().length() > 0) { timelinesVM.createList(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, popupAddListBinding.addList.getText().toString().trim(), null) .observe(MastodonListActivity.this, newMastodonList -> { + if (mastodonListList == null) { + mastodonListList = new ArrayList<>(); + } if (newMastodonList != null) { mastodonListList.add(0, newMastodonList); mastodonListAdapter.notifyItemInserted(0); diff --git a/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonTimeline.java b/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonTimeline.java index 6d607d1da..44acdfcd3 100644 --- a/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonTimeline.java +++ b/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonTimeline.java @@ -481,7 +481,9 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter. * @param direction - DIRECTION null if first call, then is set to TOP or BOTTOM depending of scroll */ private void route(DIRECTION direction, boolean fetchingMissing) { - + if (!isAdded()) { + return; + } new Thread(() -> { QuickLoad quickLoad = new QuickLoad(requireActivity()).getSavedValue(MainActivity.currentUserID, MainActivity.currentInstance, timelineType, ident); if (binding == null) { diff --git a/app/src/main/java/app/fedilab/android/viewmodel/mastodon/AccountsVM.java b/app/src/main/java/app/fedilab/android/viewmodel/mastodon/AccountsVM.java index 7a7ad78e1..105004f1c 100644 --- a/app/src/main/java/app/fedilab/android/viewmodel/mastodon/AccountsVM.java +++ b/app/src/main/java/app/fedilab/android/viewmodel/mastodon/AccountsVM.java @@ -24,6 +24,9 @@ import androidx.lifecycle.AndroidViewModel; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + import java.util.LinkedHashMap; import java.util.List; import java.util.concurrent.TimeUnit; @@ -92,9 +95,10 @@ public class AccountsVM extends AndroidViewModel { } private MastodonAccountsService init(String instance) { + Gson gson = new GsonBuilder().setDateFormat("MMM dd, yyyy HH:mm:ss").create(); Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://" + instance + "/api/v1/") - .addConverterFactory(GsonConverterFactory.create()) + .addConverterFactory(GsonConverterFactory.create(gson)) .client(okHttpClient) .build(); return retrofit.create(MastodonAccountsService.class); diff --git a/app/src/main/java/app/fedilab/android/viewmodel/mastodon/NotificationsVM.java b/app/src/main/java/app/fedilab/android/viewmodel/mastodon/NotificationsVM.java index 15faaf606..b72976ccc 100644 --- a/app/src/main/java/app/fedilab/android/viewmodel/mastodon/NotificationsVM.java +++ b/app/src/main/java/app/fedilab/android/viewmodel/mastodon/NotificationsVM.java @@ -23,6 +23,9 @@ import androidx.lifecycle.AndroidViewModel; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + import java.util.List; import java.util.concurrent.TimeUnit; @@ -60,9 +63,10 @@ public class NotificationsVM extends AndroidViewModel { } private MastodonNotificationsService init(@NonNull String instance) { + Gson gson = new GsonBuilder().setDateFormat("MMM dd, yyyy HH:mm:ss").create(); Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://" + instance + "/api/v1/") - .addConverterFactory(GsonConverterFactory.create()) + .addConverterFactory(GsonConverterFactory.create(gson)) .client(okHttpClient) .build(); return retrofit.create(MastodonNotificationsService.class); diff --git a/app/src/main/java/app/fedilab/android/viewmodel/mastodon/SearchVM.java b/app/src/main/java/app/fedilab/android/viewmodel/mastodon/SearchVM.java index c1b097616..53772b81e 100644 --- a/app/src/main/java/app/fedilab/android/viewmodel/mastodon/SearchVM.java +++ b/app/src/main/java/app/fedilab/android/viewmodel/mastodon/SearchVM.java @@ -23,6 +23,9 @@ import androidx.lifecycle.AndroidViewModel; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; @@ -55,9 +58,10 @@ public class SearchVM extends AndroidViewModel { } private MastodonSearchService init(@NonNull String instance) { + Gson gson = new GsonBuilder().setDateFormat("MMM dd, yyyy HH:mm:ss").create(); Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://" + instance + "/api/v2/") - .addConverterFactory(GsonConverterFactory.create()) + .addConverterFactory(GsonConverterFactory.create(gson)) .client(okHttpClient) .build(); return retrofit.create(MastodonSearchService.class); diff --git a/app/src/main/java/app/fedilab/android/viewmodel/mastodon/StatusesVM.java b/app/src/main/java/app/fedilab/android/viewmodel/mastodon/StatusesVM.java index 71d68934e..a773fc0e0 100644 --- a/app/src/main/java/app/fedilab/android/viewmodel/mastodon/StatusesVM.java +++ b/app/src/main/java/app/fedilab/android/viewmodel/mastodon/StatusesVM.java @@ -25,6 +25,9 @@ import androidx.lifecycle.AndroidViewModel; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + import java.util.Date; import java.util.List; import java.util.concurrent.TimeUnit; @@ -86,9 +89,10 @@ public class StatusesVM extends AndroidViewModel { } private MastodonStatusesService init(@NonNull String instance) { + Gson gson = new GsonBuilder().setDateFormat("MMM dd, yyyy HH:mm:ss").create(); Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://" + instance + "/api/v1/") - .addConverterFactory(GsonConverterFactory.create()) + .addConverterFactory(GsonConverterFactory.create(gson)) .client(getOkHttpClient()) .build(); return retrofit.create(MastodonStatusesService.class); diff --git a/app/src/main/java/app/fedilab/android/viewmodel/mastodon/TimelinesVM.java b/app/src/main/java/app/fedilab/android/viewmodel/mastodon/TimelinesVM.java index d40df65e0..e1aa9d995 100644 --- a/app/src/main/java/app/fedilab/android/viewmodel/mastodon/TimelinesVM.java +++ b/app/src/main/java/app/fedilab/android/viewmodel/mastodon/TimelinesVM.java @@ -24,6 +24,9 @@ import androidx.lifecycle.AndroidViewModel; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + import java.util.List; import java.util.concurrent.TimeUnit; @@ -75,9 +78,10 @@ public class TimelinesVM extends AndroidViewModel { private MastodonTimelinesService init(String instance) { + Gson gson = new GsonBuilder().setDateFormat("MMM dd, yyyy HH:mm:ss").create(); Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://" + instance + "/api/v1/") - .addConverterFactory(GsonConverterFactory.create()) + .addConverterFactory(GsonConverterFactory.create(gson)) .client(okHttpClient) .build(); return retrofit.create(MastodonTimelinesService.class);