From 979739cc21d6c8fd426d6664f21fa553e13b3b56 Mon Sep 17 00:00:00 2001 From: Thomas Date: Thu, 16 Mar 2023 17:36:55 +0100 Subject: [PATCH] improve Peertube instance picker behaviour --- .../activities/ManageInstancesActivity.java | 12 +++++++++--- .../activities/PeertubeMainActivity.java | 6 +++++- .../peertube/drawer/AboutInstanceAdapter.java | 16 +++++++++------- .../layout/drawer_about_instance_peertube.xml | 14 +++++++++++++- 4 files changed, 36 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/app/fedilab/android/peertube/activities/ManageInstancesActivity.java b/app/src/main/java/app/fedilab/android/peertube/activities/ManageInstancesActivity.java index 6fde4ed19..0c4e37f67 100644 --- a/app/src/main/java/app/fedilab/android/peertube/activities/ManageInstancesActivity.java +++ b/app/src/main/java/app/fedilab/android/peertube/activities/ManageInstancesActivity.java @@ -53,14 +53,13 @@ import app.fedilab.android.sqlite.Sqlite; import es.dmoral.toasty.Toasty; -public class ManageInstancesActivity extends BaseBarActivity implements AboutInstanceAdapter.AllInstancesRemoved { +public class ManageInstancesActivity extends BaseBarActivity implements AboutInstanceAdapter.InstanceActions { private ActivityManageInstancesPeertubeBinding binding; private List aboutInstances; private AboutInstanceAdapter aboutInstanceAdapter; - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -108,6 +107,7 @@ public class ManageInstancesActivity extends BaseBarActivity implements AboutIns this.runOnUiThread(() -> { dialog.dismiss(); recreatePeertubeActivity(this); + finish(); }); } else { runOnUiThread(() -> Toasty.error(this, getString(R.string.not_valide_instance), Toast.LENGTH_LONG).show()); @@ -128,7 +128,7 @@ public class ManageInstancesActivity extends BaseBarActivity implements AboutIns }); aboutInstances = new ArrayList<>(); aboutInstanceAdapter = new AboutInstanceAdapter(this.aboutInstances); - aboutInstanceAdapter.allInstancesRemoved = this; + aboutInstanceAdapter.instanceActions = this; binding.lvInstances.setAdapter(aboutInstanceAdapter); LinearLayoutManager layoutManager = new LinearLayoutManager(ManageInstancesActivity.this); @@ -172,4 +172,10 @@ public class ManageInstancesActivity extends BaseBarActivity implements AboutIns binding.noAction.setVisibility(View.VISIBLE); binding.lvInstances.setVisibility(View.GONE); } + + @Override + public void onFinished() { + recreatePeertubeActivity(this); + finish(); + } } diff --git a/app/src/main/java/app/fedilab/android/peertube/activities/PeertubeMainActivity.java b/app/src/main/java/app/fedilab/android/peertube/activities/PeertubeMainActivity.java index 94994dfb3..5add6433b 100644 --- a/app/src/main/java/app/fedilab/android/peertube/activities/PeertubeMainActivity.java +++ b/app/src/main/java/app/fedilab/android/peertube/activities/PeertubeMainActivity.java @@ -121,6 +121,7 @@ public class PeertubeMainActivity extends PeertubeBaseMainActivity { private DisplayOverviewFragment overviewFragment; private ActivityMainPeertubeBinding binding; + private boolean keepRemote = false; private final BroadcastReceiver broadcast_data = new BroadcastReceiver() { @Override @@ -128,6 +129,7 @@ public class PeertubeMainActivity extends PeertubeBaseMainActivity { Bundle b = intent.getExtras(); if (b != null) { if (b.getBoolean(app.fedilab.android.mastodon.helper.Helper.RECEIVE_RECREATE_PEERTUBE_ACTIVITY, false)) { + keepRemote = true; recreate(); } } @@ -147,7 +149,9 @@ public class PeertubeMainActivity extends PeertubeBaseMainActivity { public void onDestroy() { super.onDestroy(); binding = null; - typeOfConnection = TypeOfConnection.NORMAL; + if (!keepRemote) { + typeOfConnection = TypeOfConnection.NORMAL; + } LocalBroadcastManager.getInstance(PeertubeMainActivity.this).unregisterReceiver(broadcast_data); } diff --git a/app/src/main/java/app/fedilab/android/peertube/drawer/AboutInstanceAdapter.java b/app/src/main/java/app/fedilab/android/peertube/drawer/AboutInstanceAdapter.java index adfc952dc..9b0008f19 100644 --- a/app/src/main/java/app/fedilab/android/peertube/drawer/AboutInstanceAdapter.java +++ b/app/src/main/java/app/fedilab/android/peertube/drawer/AboutInstanceAdapter.java @@ -16,7 +16,7 @@ package app.fedilab.android.peertube.drawer; import static androidx.core.text.HtmlCompat.FROM_HTML_MODE_LEGACY; -import static app.fedilab.android.mastodon.helper.Helper.PREF_USER_INSTANCE; +import static app.fedilab.android.mastodon.helper.Helper.PREF_USER_INSTANCE_PEERTUBE_BROWSING; import android.annotation.SuppressLint; import android.content.Context; @@ -53,7 +53,7 @@ public class AboutInstanceAdapter extends RecyclerView.Adapter aboutInstances; - public AllInstancesRemoved allInstancesRemoved; + public InstanceActions instanceActions; private Context context; public AboutInstanceAdapter(List aboutInstances) { @@ -126,12 +126,12 @@ public class AboutInstanceAdapter extends RecyclerView.Adapter { + holder.binding.pickup.setOnClickListener(v -> { final SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(context); SharedPreferences.Editor editor = sharedpreferences.edit(); - editor.putString(PREF_USER_INSTANCE, aboutInstance.getHost()); + editor.putString(PREF_USER_INSTANCE_PEERTUBE_BROWSING, aboutInstance.getHost()); editor.commit(); - //Helper.logoutNoRemoval((Activity) context); + instanceActions.onFinished(); }); holder.binding.instanceMore.setOnClickListener(v -> { PopupMenu popup = new PopupMenu(context, holder.binding.instanceMore); @@ -153,7 +153,7 @@ public class AboutInstanceAdapter extends RecyclerView.Adapter { notifyItemRemoved(i); if (aboutInstances.size() == 0) { - allInstancesRemoved.onAllInstancesRemoved(); + instanceActions.onAllInstancesRemoved(); } }; mainHandler.post(myRunnable); @@ -170,8 +170,10 @@ public class AboutInstanceAdapter extends RecyclerView.Adapter @@ -74,5 +76,15 @@ android:src="@drawable/ic_baseline_more_vert_24" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" /> + +