Loading app/src/main/java/app/fedilab/android/mastodon/helper/Helper.java +2 −0 Original line number Diff line number Diff line Loading @@ -197,6 +197,8 @@ public class Helper { public static final String RECEIVE_ERROR_MESSAGE = "RECEIVE_ERROR_MESSAGE"; public static final String RECEIVE_RECREATE_ACTIVITY = "RECEIVE_RECREATE_ACTIVITY"; public static final String RECEIVE_RECREATE_PEERTUBE_ACTIVITY = "RECEIVE_RECREATE_PEERTUBE_ACTIVITY"; public static final String RECEIVE_NEW_MESSAGE = "RECEIVE_NEW_MESSAGE"; public static final String RECEIVE_COMPOSE_ERROR_MESSAGE = "RECEIVE_COMPOSE_ERROR_MESSAGE"; public static final String RECEIVE_MASTODON_LIST = "RECEIVE_MASTODON_LIST"; Loading app/src/main/java/app/fedilab/android/peertube/activities/ManageInstancesActivity.java +53 −72 Original line number Diff line number Diff line Loading @@ -16,15 +16,11 @@ package app.fedilab.android.peertube.activities; import static app.fedilab.android.mastodon.helper.Helper.PREF_USER_INSTANCE_PEERTUBE_BROWSING; import static app.fedilab.android.mastodon.helper.Helper.addFragment; import static app.fedilab.android.peertube.activities.PeertubeMainActivity.INSTANCE_ADDRESS; import static app.fedilab.android.peertube.activities.PeertubeMainActivity.PICK_INSTANCE; import static app.fedilab.android.peertube.helper.Helper.recreatePeertubeActivity; import android.annotation.SuppressLint; import android.app.Activity; import android.content.SharedPreferences; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.os.Handler; import android.view.MenuItem; import android.view.View; import android.widget.EditText; Loading @@ -32,8 +28,6 @@ import android.widget.LinearLayout; import android.widget.Toast; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.FragmentManager; import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.ViewModelProvider; import androidx.preference.PreferenceManager; import androidx.recyclerview.widget.LinearLayoutManager; Loading @@ -52,7 +46,6 @@ import app.fedilab.android.peertube.client.data.InstanceData; import app.fedilab.android.peertube.client.entities.WellKnownNodeinfo; import app.fedilab.android.peertube.drawer.AboutInstanceAdapter; import app.fedilab.android.peertube.fragment.FragmentLoginPickInstancePeertube; import app.fedilab.android.peertube.helper.Helper; import app.fedilab.android.peertube.helper.HelperInstance; import app.fedilab.android.peertube.sqlite.StoredInstanceDAO; import app.fedilab.android.peertube.viewmodel.InfoInstanceVM; Loading @@ -67,13 +60,26 @@ public class ManageInstancesActivity extends BaseBarActivity implements AboutIns private AboutInstanceAdapter aboutInstanceAdapter; @SuppressLint("ApplySharedPref") public static void showRadioButtonDialogFullInstances(Activity activity, FragmentManager fragmentManager) { SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(activity); AlertDialog.Builder alt_bld = new MaterialAlertDialogBuilder(activity); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); binding = ActivityManageInstancesPeertubeBinding.inflate(getLayoutInflater()); View view = binding.getRoot(); setContentView(view); if (getSupportActionBar() != null) { getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); } binding.loader.setVisibility(View.VISIBLE); binding.noAction.setVisibility(View.GONE); binding.lvInstances.setVisibility(View.GONE); binding.actionButton.setOnClickListener(v -> { SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(this); AlertDialog.Builder alt_bld = new MaterialAlertDialogBuilder(this); alt_bld.setTitle(R.string.instance_choice); String instance = HelperInstance.getLiveInstance(activity); final EditText input = new EditText(activity); String instance = HelperInstance.getLiveInstance(this); final EditText input = new EditText(this); LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); Loading @@ -90,21 +96,21 @@ public class ManageInstancesActivity extends BaseBarActivity implements AboutIns URL url = new URL(newInstance); newInstance = url.getHost(); WellKnownNodeinfo.NodeInfo instanceNodeInfo = new RetrofitPeertubeAPI(activity, newInstance, null).getNodeInfo(); WellKnownNodeinfo.NodeInfo instanceNodeInfo = new RetrofitPeertubeAPI(this, newInstance, null).getNodeInfo(); if (instanceNodeInfo.getSoftware() != null && instanceNodeInfo.getSoftware().getName().trim().toLowerCase().compareTo("peertube") == 0) { SharedPreferences.Editor editor = sharedpreferences.edit(); editor.putString(PREF_USER_INSTANCE_PEERTUBE_BROWSING, newInstance); editor.commit(); newInstance = newInstance.trim().toLowerCase(); InstanceData.AboutInstance aboutInstance = new RetrofitPeertubeAPI(activity, newInstance, null).getAboutInstance(); SQLiteDatabase db = Sqlite.getInstance(activity.getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); new StoredInstanceDAO(activity, db).insertInstance(aboutInstance, newInstance); activity.runOnUiThread(() -> { InstanceData.AboutInstance aboutInstance = new RetrofitPeertubeAPI(this, newInstance, null).getAboutInstance(); SQLiteDatabase db = Sqlite.getInstance(this.getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); new StoredInstanceDAO(this, db).insertInstance(aboutInstance, newInstance); this.runOnUiThread(() -> { dialog.dismiss(); Helper.logoutNoRemoval(activity); recreatePeertubeActivity(this); }); } else { activity.runOnUiThread(() -> Toasty.error(activity, activity.getString(R.string.not_valide_instance), Toast.LENGTH_LONG).show()); runOnUiThread(() -> Toasty.error(this, getString(R.string.not_valide_instance), Toast.LENGTH_LONG).show()); } } catch (Exception e) { e.printStackTrace(); Loading @@ -113,38 +119,13 @@ public class ManageInstancesActivity extends BaseBarActivity implements AboutIns }).start()); alt_bld.setNegativeButton(R.string.cancel, (dialog, which) -> dialog.dismiss()); alt_bld.setNeutralButton(R.string.help, (dialog, which) -> { fragmentManager.setFragmentResultListener(PICK_INSTANCE, (LifecycleOwner) activity, (requestKey, result) -> { new Thread(() -> { String newInstance = result.getString(INSTANCE_ADDRESS); InstanceData.AboutInstance aboutInstance = new RetrofitPeertubeAPI(activity, newInstance, null).getAboutInstance(); SQLiteDatabase db = Sqlite.getInstance(activity, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); new StoredInstanceDAO(activity, db).insertInstance(aboutInstance, newInstance); activity.runOnUiThread(() -> new Handler().post(() -> Helper.logoutNoRemoval(activity))); }).start(); fragmentManager.clearFragmentResultListener(PICK_INSTANCE); }); addFragment( fragmentManager, android.R.id.content, new FragmentLoginPickInstancePeertube(), getSupportFragmentManager(), android.R.id.content, new FragmentLoginPickInstancePeertube(), null, null, FragmentLoginPickInstancePeertube.class.getName()); }); AlertDialog alert = alt_bld.create(); alert.show(); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); binding = ActivityManageInstancesPeertubeBinding.inflate(getLayoutInflater()); View view = binding.getRoot(); setContentView(view); if (getSupportActionBar() != null) { getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); } binding.loader.setVisibility(View.VISIBLE); binding.noAction.setVisibility(View.GONE); binding.lvInstances.setVisibility(View.GONE); binding.actionButton.setOnClickListener(v -> showRadioButtonDialogFullInstances(ManageInstancesActivity.this, getSupportFragmentManager())); }); aboutInstances = new ArrayList<>(); aboutInstanceAdapter = new AboutInstanceAdapter(this.aboutInstances); aboutInstanceAdapter.allInstancesRemoved = this; Loading app/src/main/java/app/fedilab/android/peertube/activities/PeertubeMainActivity.java +56 −11 Original line number Diff line number Diff line Loading @@ -33,7 +33,10 @@ import static app.fedilab.android.peertube.helper.Helper.peertubeInformation; import static app.fedilab.android.peertube.helper.SwitchAccountHelper.switchDialog; import android.annotation.SuppressLint; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; import android.database.sqlite.SQLiteDatabase; import android.net.Uri; Loading @@ -57,6 +60,7 @@ import androidx.drawerlayout.widget.DrawerLayout; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentStatePagerAdapter; import androidx.localbroadcastmanager.content.LocalBroadcastManager; import androidx.preference.PreferenceManager; import androidx.viewpager.widget.PagerAdapter; import androidx.viewpager.widget.ViewPager; Loading Loading @@ -118,6 +122,17 @@ public class PeertubeMainActivity extends PeertubeBaseMainActivity { private ActivityMainPeertubeBinding binding; private final BroadcastReceiver broadcast_data = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Bundle b = intent.getExtras(); if (b != null) { if (b.getBoolean(app.fedilab.android.mastodon.helper.Helper.RECEIVE_RECREATE_PEERTUBE_ACTIVITY, false)) { recreate(); } } } }; private void setTitleCustom(int titleRId) { Toolbar toolbar = findViewById(R.id.toolbar); Loading @@ -132,6 +147,7 @@ public class PeertubeMainActivity extends PeertubeBaseMainActivity { public void onDestroy() { super.onDestroy(); binding = null; LocalBroadcastManager.getInstance(PeertubeMainActivity.this).unregisterReceiver(broadcast_data); } @SuppressLint("ApplySharedPref") Loading @@ -141,7 +157,9 @@ public class PeertubeMainActivity extends PeertubeBaseMainActivity { super.onCreate(savedInstanceState); binding = super.binding; LocalBroadcastManager.getInstance(PeertubeMainActivity.this).registerReceiver( broadcast_data, new IntentFilter(app.fedilab.android.mastodon.helper.Helper.BROADCAST_DATA) ); Intent intentActvity = getIntent(); if (intentActvity != null) { Bundle extras = intentActvity.getExtras(); Loading Loading @@ -389,8 +407,23 @@ public class PeertubeMainActivity extends PeertubeBaseMainActivity { headerMainBinding.headerOptionInfo.setOnClickListener(v -> headerOptionInfoClick(PeertubeMainActivity.this, headerMainBinding, getSupportFragmentManager())); fetchRecentAccounts(PeertubeMainActivity.this, headerMainBinding); } else { new Thread(() -> { if (currentToken == null || currentToken.trim().isEmpty()) { currentToken = sharedpreferences.getString(app.fedilab.android.mastodon.helper.Helper.PREF_USER_TOKEN, null); } try { currentAccount = new Account(PeertubeMainActivity.this).getConnectedAccount(); } catch (DBException e) { e.printStackTrace(); } Handler mainHandler = new Handler(Looper.getMainLooper()); Runnable myRunnable = () -> { binding.navView.inflateMenu(R.menu.bottom_nav_menu_peertube); binding.drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); app.fedilab.android.mastodon.helper.Helper.loadPP(this, binding.profilePicture, currentAccount); }; mainHandler.post(myRunnable); }).start(); } overviewFragment = new DisplayOverviewFragment(); if (!Helper.isLoggedIn()) { Loading Loading @@ -624,20 +657,25 @@ public class PeertubeMainActivity extends PeertubeBaseMainActivity { MenuItem incognitoItem = menu.findItem(R.id.action_incognito); MenuItem changeInstanceItem = menu.findItem(R.id.action_change_instance); MenuItem exitItem = menu.findItem(R.id.action_exit); MenuItem sepiaSearchItem = menu.findItem(R.id.action_sepia_search); switch (typeOfConnection) { case NORMAL: if (Helper.isLoggedIn()) { incognitoItem.setVisible(true); final SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(PeertubeMainActivity.this); boolean checked = sharedpreferences.getBoolean(getString(R.string.set_store_in_history), true); incognitoItem.setChecked(checked); } else { incognitoItem.setVisible(false); } changeInstanceItem.setVisible(false); exitItem.setVisible(false); sepiaSearchItem.setVisible(false); break; case REMOTE_ACCOUNT: case SURFING: incognitoItem.setVisible(false); changeInstanceItem.setVisible(true); exitItem.setVisible(true); sepiaSearchItem.setVisible(true); break; } Loading Loading @@ -709,6 +747,13 @@ public class PeertubeMainActivity extends PeertubeBaseMainActivity { } }).start(); return false; } else if (item.getItemId() == R.id.action_exit) { Intent intent = new Intent(PeertubeMainActivity.this, MainActivity.class); startActivity(intent); finish(); } else if (item.getItemId() == R.id.action_sepia_search) { Intent intent = new Intent(PeertubeMainActivity.this, SepiaSearchActivity.class); startActivity(intent); } return true; } Loading app/src/main/java/app/fedilab/android/peertube/drawer/AboutInstanceAdapter.java +1 −3 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ import static androidx.core.text.HtmlCompat.FROM_HTML_MODE_LEGACY; import static app.fedilab.android.mastodon.helper.Helper.PREF_USER_INSTANCE; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; import android.database.sqlite.SQLiteDatabase; Loading @@ -46,7 +45,6 @@ import java.util.List; import app.fedilab.android.R; import app.fedilab.android.databinding.DrawerAboutInstancePeertubeBinding; import app.fedilab.android.peertube.client.data.InstanceData; import app.fedilab.android.peertube.helper.Helper; import app.fedilab.android.peertube.sqlite.StoredInstanceDAO; import app.fedilab.android.sqlite.Sqlite; Loading Loading @@ -133,7 +131,7 @@ public class AboutInstanceAdapter extends RecyclerView.Adapter<RecyclerView.View SharedPreferences.Editor editor = sharedpreferences.edit(); editor.putString(PREF_USER_INSTANCE, aboutInstance.getHost()); editor.commit(); Helper.logoutNoRemoval((Activity) context); //Helper.logoutNoRemoval((Activity) context); }); holder.binding.instanceMore.setOnClickListener(v -> { PopupMenu popup = new PopupMenu(context, holder.binding.instanceMore); Loading app/src/main/java/app/fedilab/android/peertube/fragment/FragmentLoginPickInstancePeertube.java +18 −7 Original line number Diff line number Diff line Loading @@ -19,8 +19,10 @@ import static app.fedilab.android.mastodon.helper.Helper.PREF_USER_INSTANCE_PEER import static app.fedilab.android.peertube.activities.PeertubeMainActivity.INSTANCE_ADDRESS; import static app.fedilab.android.peertube.activities.PeertubeMainActivity.typeOfConnection; import static app.fedilab.android.peertube.helper.Helper.peertubeInformation; import static app.fedilab.android.peertube.helper.Helper.recreatePeertubeActivity; import android.content.SharedPreferences; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.os.Handler; import android.os.Looper; Loading Loading @@ -61,7 +63,9 @@ import app.fedilab.android.peertube.client.entities.InstanceParams; import app.fedilab.android.peertube.client.entities.PeertubeInformation; import app.fedilab.android.peertube.drawer.InstanceAdapter; import app.fedilab.android.peertube.helper.RoundedBackgroundSpan; import app.fedilab.android.peertube.sqlite.StoredInstanceDAO; import app.fedilab.android.peertube.viewmodel.InstancesVM; import app.fedilab.android.sqlite.Sqlite; import es.dmoral.toasty.Toasty; Loading Loading @@ -300,14 +304,21 @@ public class FragmentLoginPickInstancePeertube extends Fragment implements Insta } @Override public void instance(String instance) { public void instance(final String instance) { if (typeOfConnection == PeertubeMainActivity.TypeOfConnection.REMOTE_ACCOUNT) { new Thread(() -> { final SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(requireActivity()); SharedPreferences.Editor editor = sharedpreferences.edit(); editor.putString(PREF_USER_INSTANCE_PEERTUBE_BROWSING, instance); editor.commit(); requireActivity().recreate(); InstanceData.AboutInstance aboutInstance = new RetrofitPeertubeAPI(requireActivity(), instance, null).getAboutInstance(); SQLiteDatabase db = Sqlite.getInstance(requireActivity(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); new StoredInstanceDAO(requireActivity(), db).insertInstance(aboutInstance, instance); requireActivity().runOnUiThread(() -> { recreatePeertubeActivity(requireActivity()); requireActivity().finish(); }); }).start(); } else { Bundle bundle = new Bundle(); bundle.putString(INSTANCE_ADDRESS, instance); Loading Loading
app/src/main/java/app/fedilab/android/mastodon/helper/Helper.java +2 −0 Original line number Diff line number Diff line Loading @@ -197,6 +197,8 @@ public class Helper { public static final String RECEIVE_ERROR_MESSAGE = "RECEIVE_ERROR_MESSAGE"; public static final String RECEIVE_RECREATE_ACTIVITY = "RECEIVE_RECREATE_ACTIVITY"; public static final String RECEIVE_RECREATE_PEERTUBE_ACTIVITY = "RECEIVE_RECREATE_PEERTUBE_ACTIVITY"; public static final String RECEIVE_NEW_MESSAGE = "RECEIVE_NEW_MESSAGE"; public static final String RECEIVE_COMPOSE_ERROR_MESSAGE = "RECEIVE_COMPOSE_ERROR_MESSAGE"; public static final String RECEIVE_MASTODON_LIST = "RECEIVE_MASTODON_LIST"; Loading
app/src/main/java/app/fedilab/android/peertube/activities/ManageInstancesActivity.java +53 −72 Original line number Diff line number Diff line Loading @@ -16,15 +16,11 @@ package app.fedilab.android.peertube.activities; import static app.fedilab.android.mastodon.helper.Helper.PREF_USER_INSTANCE_PEERTUBE_BROWSING; import static app.fedilab.android.mastodon.helper.Helper.addFragment; import static app.fedilab.android.peertube.activities.PeertubeMainActivity.INSTANCE_ADDRESS; import static app.fedilab.android.peertube.activities.PeertubeMainActivity.PICK_INSTANCE; import static app.fedilab.android.peertube.helper.Helper.recreatePeertubeActivity; import android.annotation.SuppressLint; import android.app.Activity; import android.content.SharedPreferences; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.os.Handler; import android.view.MenuItem; import android.view.View; import android.widget.EditText; Loading @@ -32,8 +28,6 @@ import android.widget.LinearLayout; import android.widget.Toast; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.FragmentManager; import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.ViewModelProvider; import androidx.preference.PreferenceManager; import androidx.recyclerview.widget.LinearLayoutManager; Loading @@ -52,7 +46,6 @@ import app.fedilab.android.peertube.client.data.InstanceData; import app.fedilab.android.peertube.client.entities.WellKnownNodeinfo; import app.fedilab.android.peertube.drawer.AboutInstanceAdapter; import app.fedilab.android.peertube.fragment.FragmentLoginPickInstancePeertube; import app.fedilab.android.peertube.helper.Helper; import app.fedilab.android.peertube.helper.HelperInstance; import app.fedilab.android.peertube.sqlite.StoredInstanceDAO; import app.fedilab.android.peertube.viewmodel.InfoInstanceVM; Loading @@ -67,13 +60,26 @@ public class ManageInstancesActivity extends BaseBarActivity implements AboutIns private AboutInstanceAdapter aboutInstanceAdapter; @SuppressLint("ApplySharedPref") public static void showRadioButtonDialogFullInstances(Activity activity, FragmentManager fragmentManager) { SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(activity); AlertDialog.Builder alt_bld = new MaterialAlertDialogBuilder(activity); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); binding = ActivityManageInstancesPeertubeBinding.inflate(getLayoutInflater()); View view = binding.getRoot(); setContentView(view); if (getSupportActionBar() != null) { getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); } binding.loader.setVisibility(View.VISIBLE); binding.noAction.setVisibility(View.GONE); binding.lvInstances.setVisibility(View.GONE); binding.actionButton.setOnClickListener(v -> { SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(this); AlertDialog.Builder alt_bld = new MaterialAlertDialogBuilder(this); alt_bld.setTitle(R.string.instance_choice); String instance = HelperInstance.getLiveInstance(activity); final EditText input = new EditText(activity); String instance = HelperInstance.getLiveInstance(this); final EditText input = new EditText(this); LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); Loading @@ -90,21 +96,21 @@ public class ManageInstancesActivity extends BaseBarActivity implements AboutIns URL url = new URL(newInstance); newInstance = url.getHost(); WellKnownNodeinfo.NodeInfo instanceNodeInfo = new RetrofitPeertubeAPI(activity, newInstance, null).getNodeInfo(); WellKnownNodeinfo.NodeInfo instanceNodeInfo = new RetrofitPeertubeAPI(this, newInstance, null).getNodeInfo(); if (instanceNodeInfo.getSoftware() != null && instanceNodeInfo.getSoftware().getName().trim().toLowerCase().compareTo("peertube") == 0) { SharedPreferences.Editor editor = sharedpreferences.edit(); editor.putString(PREF_USER_INSTANCE_PEERTUBE_BROWSING, newInstance); editor.commit(); newInstance = newInstance.trim().toLowerCase(); InstanceData.AboutInstance aboutInstance = new RetrofitPeertubeAPI(activity, newInstance, null).getAboutInstance(); SQLiteDatabase db = Sqlite.getInstance(activity.getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); new StoredInstanceDAO(activity, db).insertInstance(aboutInstance, newInstance); activity.runOnUiThread(() -> { InstanceData.AboutInstance aboutInstance = new RetrofitPeertubeAPI(this, newInstance, null).getAboutInstance(); SQLiteDatabase db = Sqlite.getInstance(this.getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); new StoredInstanceDAO(this, db).insertInstance(aboutInstance, newInstance); this.runOnUiThread(() -> { dialog.dismiss(); Helper.logoutNoRemoval(activity); recreatePeertubeActivity(this); }); } else { activity.runOnUiThread(() -> Toasty.error(activity, activity.getString(R.string.not_valide_instance), Toast.LENGTH_LONG).show()); runOnUiThread(() -> Toasty.error(this, getString(R.string.not_valide_instance), Toast.LENGTH_LONG).show()); } } catch (Exception e) { e.printStackTrace(); Loading @@ -113,38 +119,13 @@ public class ManageInstancesActivity extends BaseBarActivity implements AboutIns }).start()); alt_bld.setNegativeButton(R.string.cancel, (dialog, which) -> dialog.dismiss()); alt_bld.setNeutralButton(R.string.help, (dialog, which) -> { fragmentManager.setFragmentResultListener(PICK_INSTANCE, (LifecycleOwner) activity, (requestKey, result) -> { new Thread(() -> { String newInstance = result.getString(INSTANCE_ADDRESS); InstanceData.AboutInstance aboutInstance = new RetrofitPeertubeAPI(activity, newInstance, null).getAboutInstance(); SQLiteDatabase db = Sqlite.getInstance(activity, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); new StoredInstanceDAO(activity, db).insertInstance(aboutInstance, newInstance); activity.runOnUiThread(() -> new Handler().post(() -> Helper.logoutNoRemoval(activity))); }).start(); fragmentManager.clearFragmentResultListener(PICK_INSTANCE); }); addFragment( fragmentManager, android.R.id.content, new FragmentLoginPickInstancePeertube(), getSupportFragmentManager(), android.R.id.content, new FragmentLoginPickInstancePeertube(), null, null, FragmentLoginPickInstancePeertube.class.getName()); }); AlertDialog alert = alt_bld.create(); alert.show(); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); binding = ActivityManageInstancesPeertubeBinding.inflate(getLayoutInflater()); View view = binding.getRoot(); setContentView(view); if (getSupportActionBar() != null) { getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); } binding.loader.setVisibility(View.VISIBLE); binding.noAction.setVisibility(View.GONE); binding.lvInstances.setVisibility(View.GONE); binding.actionButton.setOnClickListener(v -> showRadioButtonDialogFullInstances(ManageInstancesActivity.this, getSupportFragmentManager())); }); aboutInstances = new ArrayList<>(); aboutInstanceAdapter = new AboutInstanceAdapter(this.aboutInstances); aboutInstanceAdapter.allInstancesRemoved = this; Loading
app/src/main/java/app/fedilab/android/peertube/activities/PeertubeMainActivity.java +56 −11 Original line number Diff line number Diff line Loading @@ -33,7 +33,10 @@ import static app.fedilab.android.peertube.helper.Helper.peertubeInformation; import static app.fedilab.android.peertube.helper.SwitchAccountHelper.switchDialog; import android.annotation.SuppressLint; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; import android.database.sqlite.SQLiteDatabase; import android.net.Uri; Loading @@ -57,6 +60,7 @@ import androidx.drawerlayout.widget.DrawerLayout; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentStatePagerAdapter; import androidx.localbroadcastmanager.content.LocalBroadcastManager; import androidx.preference.PreferenceManager; import androidx.viewpager.widget.PagerAdapter; import androidx.viewpager.widget.ViewPager; Loading Loading @@ -118,6 +122,17 @@ public class PeertubeMainActivity extends PeertubeBaseMainActivity { private ActivityMainPeertubeBinding binding; private final BroadcastReceiver broadcast_data = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Bundle b = intent.getExtras(); if (b != null) { if (b.getBoolean(app.fedilab.android.mastodon.helper.Helper.RECEIVE_RECREATE_PEERTUBE_ACTIVITY, false)) { recreate(); } } } }; private void setTitleCustom(int titleRId) { Toolbar toolbar = findViewById(R.id.toolbar); Loading @@ -132,6 +147,7 @@ public class PeertubeMainActivity extends PeertubeBaseMainActivity { public void onDestroy() { super.onDestroy(); binding = null; LocalBroadcastManager.getInstance(PeertubeMainActivity.this).unregisterReceiver(broadcast_data); } @SuppressLint("ApplySharedPref") Loading @@ -141,7 +157,9 @@ public class PeertubeMainActivity extends PeertubeBaseMainActivity { super.onCreate(savedInstanceState); binding = super.binding; LocalBroadcastManager.getInstance(PeertubeMainActivity.this).registerReceiver( broadcast_data, new IntentFilter(app.fedilab.android.mastodon.helper.Helper.BROADCAST_DATA) ); Intent intentActvity = getIntent(); if (intentActvity != null) { Bundle extras = intentActvity.getExtras(); Loading Loading @@ -389,8 +407,23 @@ public class PeertubeMainActivity extends PeertubeBaseMainActivity { headerMainBinding.headerOptionInfo.setOnClickListener(v -> headerOptionInfoClick(PeertubeMainActivity.this, headerMainBinding, getSupportFragmentManager())); fetchRecentAccounts(PeertubeMainActivity.this, headerMainBinding); } else { new Thread(() -> { if (currentToken == null || currentToken.trim().isEmpty()) { currentToken = sharedpreferences.getString(app.fedilab.android.mastodon.helper.Helper.PREF_USER_TOKEN, null); } try { currentAccount = new Account(PeertubeMainActivity.this).getConnectedAccount(); } catch (DBException e) { e.printStackTrace(); } Handler mainHandler = new Handler(Looper.getMainLooper()); Runnable myRunnable = () -> { binding.navView.inflateMenu(R.menu.bottom_nav_menu_peertube); binding.drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); app.fedilab.android.mastodon.helper.Helper.loadPP(this, binding.profilePicture, currentAccount); }; mainHandler.post(myRunnable); }).start(); } overviewFragment = new DisplayOverviewFragment(); if (!Helper.isLoggedIn()) { Loading Loading @@ -624,20 +657,25 @@ public class PeertubeMainActivity extends PeertubeBaseMainActivity { MenuItem incognitoItem = menu.findItem(R.id.action_incognito); MenuItem changeInstanceItem = menu.findItem(R.id.action_change_instance); MenuItem exitItem = menu.findItem(R.id.action_exit); MenuItem sepiaSearchItem = menu.findItem(R.id.action_sepia_search); switch (typeOfConnection) { case NORMAL: if (Helper.isLoggedIn()) { incognitoItem.setVisible(true); final SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(PeertubeMainActivity.this); boolean checked = sharedpreferences.getBoolean(getString(R.string.set_store_in_history), true); incognitoItem.setChecked(checked); } else { incognitoItem.setVisible(false); } changeInstanceItem.setVisible(false); exitItem.setVisible(false); sepiaSearchItem.setVisible(false); break; case REMOTE_ACCOUNT: case SURFING: incognitoItem.setVisible(false); changeInstanceItem.setVisible(true); exitItem.setVisible(true); sepiaSearchItem.setVisible(true); break; } Loading Loading @@ -709,6 +747,13 @@ public class PeertubeMainActivity extends PeertubeBaseMainActivity { } }).start(); return false; } else if (item.getItemId() == R.id.action_exit) { Intent intent = new Intent(PeertubeMainActivity.this, MainActivity.class); startActivity(intent); finish(); } else if (item.getItemId() == R.id.action_sepia_search) { Intent intent = new Intent(PeertubeMainActivity.this, SepiaSearchActivity.class); startActivity(intent); } return true; } Loading
app/src/main/java/app/fedilab/android/peertube/drawer/AboutInstanceAdapter.java +1 −3 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ import static androidx.core.text.HtmlCompat.FROM_HTML_MODE_LEGACY; import static app.fedilab.android.mastodon.helper.Helper.PREF_USER_INSTANCE; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; import android.database.sqlite.SQLiteDatabase; Loading @@ -46,7 +45,6 @@ import java.util.List; import app.fedilab.android.R; import app.fedilab.android.databinding.DrawerAboutInstancePeertubeBinding; import app.fedilab.android.peertube.client.data.InstanceData; import app.fedilab.android.peertube.helper.Helper; import app.fedilab.android.peertube.sqlite.StoredInstanceDAO; import app.fedilab.android.sqlite.Sqlite; Loading Loading @@ -133,7 +131,7 @@ public class AboutInstanceAdapter extends RecyclerView.Adapter<RecyclerView.View SharedPreferences.Editor editor = sharedpreferences.edit(); editor.putString(PREF_USER_INSTANCE, aboutInstance.getHost()); editor.commit(); Helper.logoutNoRemoval((Activity) context); //Helper.logoutNoRemoval((Activity) context); }); holder.binding.instanceMore.setOnClickListener(v -> { PopupMenu popup = new PopupMenu(context, holder.binding.instanceMore); Loading
app/src/main/java/app/fedilab/android/peertube/fragment/FragmentLoginPickInstancePeertube.java +18 −7 Original line number Diff line number Diff line Loading @@ -19,8 +19,10 @@ import static app.fedilab.android.mastodon.helper.Helper.PREF_USER_INSTANCE_PEER import static app.fedilab.android.peertube.activities.PeertubeMainActivity.INSTANCE_ADDRESS; import static app.fedilab.android.peertube.activities.PeertubeMainActivity.typeOfConnection; import static app.fedilab.android.peertube.helper.Helper.peertubeInformation; import static app.fedilab.android.peertube.helper.Helper.recreatePeertubeActivity; import android.content.SharedPreferences; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.os.Handler; import android.os.Looper; Loading Loading @@ -61,7 +63,9 @@ import app.fedilab.android.peertube.client.entities.InstanceParams; import app.fedilab.android.peertube.client.entities.PeertubeInformation; import app.fedilab.android.peertube.drawer.InstanceAdapter; import app.fedilab.android.peertube.helper.RoundedBackgroundSpan; import app.fedilab.android.peertube.sqlite.StoredInstanceDAO; import app.fedilab.android.peertube.viewmodel.InstancesVM; import app.fedilab.android.sqlite.Sqlite; import es.dmoral.toasty.Toasty; Loading Loading @@ -300,14 +304,21 @@ public class FragmentLoginPickInstancePeertube extends Fragment implements Insta } @Override public void instance(String instance) { public void instance(final String instance) { if (typeOfConnection == PeertubeMainActivity.TypeOfConnection.REMOTE_ACCOUNT) { new Thread(() -> { final SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(requireActivity()); SharedPreferences.Editor editor = sharedpreferences.edit(); editor.putString(PREF_USER_INSTANCE_PEERTUBE_BROWSING, instance); editor.commit(); requireActivity().recreate(); InstanceData.AboutInstance aboutInstance = new RetrofitPeertubeAPI(requireActivity(), instance, null).getAboutInstance(); SQLiteDatabase db = Sqlite.getInstance(requireActivity(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); new StoredInstanceDAO(requireActivity(), db).insertInstance(aboutInstance, instance); requireActivity().runOnUiThread(() -> { recreatePeertubeActivity(requireActivity()); requireActivity().finish(); }); }).start(); } else { Bundle bundle = new Bundle(); bundle.putString(INSTANCE_ADDRESS, instance); Loading