Loading app/src/main/AndroidManifest.xml +0 −13 Original line number Diff line number Diff line Loading @@ -355,9 +355,6 @@ </receiver> <activity android:name=".peertube.activities.PeertubeMainActivity" android:configChanges="keyboardHidden|orientation|screenSize" /> <activity android:name=".peertube.activities.PeertubeMainActivity" android:configChanges="keyboardHidden|orientation|screenSize" /> Loading Loading @@ -402,11 +399,6 @@ android:name=".peertube.activities.AllLocalPlaylistsActivity" android:configChanges="orientation|screenSize" android:windowSoftInputMode="stateAlwaysHidden" /> <activity android:name=".peertube.activities.InstancePickerActivity" android:configChanges="orientation|screenSize" android:windowSoftInputMode="stateAlwaysHidden" /> <activity android:name=".peertube.activities.PlaylistsActivity" android:configChanges="orientation|screenSize" Loading Loading @@ -450,11 +442,6 @@ android:configChanges="orientation|screenSize" android:label="@string/settings" android:windowSoftInputMode="stateAlwaysHidden" /> <activity android:name=".peertube.activities.PeertubeRegisterActivity" android:configChanges="orientation|screenSize" android:label="@string/register_account" android:windowSoftInputMode="stateAlwaysHidden" /> <activity android:name=".peertube.activities.PeertubeUploadActivity" android:configChanges="orientation|screenSize" Loading app/src/main/java/app/fedilab/android/peertube/activities/ManageInstancesActivity.java +82 −22 Original line number Diff line number Diff line Loading @@ -14,21 +14,31 @@ package app.fedilab.android.peertube.activities; * You should have received a copy of the GNU General Public License along with Fedilab; if not, * see <http://www.gnu.org/licenses>. */ import static app.fedilab.android.peertube.activities.PeertubeMainActivity.PICK_INSTANCE_SURF; import static app.fedilab.android.peertube.activities.PeertubeMainActivity.showRadioButtonDialogFullInstances; import static app.fedilab.android.mastodon.helper.Helper.PREF_USER_INSTANCE; 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 android.annotation.SuppressLint; import android.app.Activity; import android.content.Intent; 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; import android.widget.LinearLayout; import android.widget.Toast; import androidx.appcompat.app.AlertDialog; import androidx.lifecycle.ViewModelProvider; import androidx.preference.PreferenceManager; import androidx.recyclerview.widget.LinearLayoutManager; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import java.net.URL; import java.util.ArrayList; import java.util.List; Loading @@ -37,11 +47,15 @@ import app.fedilab.android.databinding.ActivityManageInstancesPeertubeBinding; import app.fedilab.android.mastodon.activities.BaseBarActivity; import app.fedilab.android.peertube.client.RetrofitPeertubeAPI; 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; import app.fedilab.android.sqlite.Sqlite; import es.dmoral.toasty.Toasty; public class ManageInstancesActivity extends BaseBarActivity implements AboutInstanceAdapter.AllInstancesRemoved { Loading @@ -64,7 +78,7 @@ public class ManageInstancesActivity extends BaseBarActivity implements AboutIns binding.loader.setVisibility(View.VISIBLE); binding.noAction.setVisibility(View.GONE); binding.lvInstances.setVisibility(View.GONE); binding.actionButton.setOnClickListener(v -> showRadioButtonDialogFullInstances(ManageInstancesActivity.this, true)); binding.actionButton.setOnClickListener(v -> showRadioButtonDialogFullInstances(ManageInstancesActivity.this)); aboutInstances = new ArrayList<>(); aboutInstanceAdapter = new AboutInstanceAdapter(this.aboutInstances); aboutInstanceAdapter.allInstancesRemoved = this; Loading @@ -76,6 +90,70 @@ public class ManageInstancesActivity extends BaseBarActivity implements AboutIns viewModelInfoInstance.getInstances().observe(ManageInstancesActivity.this, this::manageVIewInfoInstance); } @SuppressLint("ApplySharedPref") private void showRadioButtonDialogFullInstances(Activity activity) { SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(activity); AlertDialog.Builder alt_bld = new MaterialAlertDialogBuilder(activity, app.fedilab.android.mastodon.helper.Helper.dialogStyle()); alt_bld.setTitle(R.string.instance_choice); String instance = HelperInstance.getLiveInstance(activity); final EditText input = new EditText(activity); LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); input.setLayoutParams(lp); alt_bld.setView(input); input.setText(instance); alt_bld.setPositiveButton(R.string.validate, (dialog, which) -> new Thread(() -> { try { String newInstance = input.getText().toString().trim(); if (!newInstance.startsWith("http")) { newInstance = "http://" + newInstance; } URL url = new URL(newInstance); newInstance = url.getHost(); WellKnownNodeinfo.NodeInfo instanceNodeInfo = new RetrofitPeertubeAPI(activity, 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, 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(() -> { dialog.dismiss(); Helper.logoutNoRemoval(activity); }); } else { activity.runOnUiThread(() -> Toasty.error(activity, activity.getString(R.string.not_valide_instance), Toast.LENGTH_LONG).show()); } } catch (Exception e) { e.printStackTrace(); } }).start()); alt_bld.setNegativeButton(R.string.cancel, (dialog, which) -> dialog.dismiss()); alt_bld.setNeutralButton(R.string.help, (dialog, which) -> { getSupportFragmentManager().setFragmentResultListener(PICK_INSTANCE, this, (requestKey, result) -> { new Thread(() -> { String newInstance = result.getString(INSTANCE_ADDRESS); InstanceData.AboutInstance aboutInstance = new RetrofitPeertubeAPI(ManageInstancesActivity.this, newInstance, null).getAboutInstance(); SQLiteDatabase db = Sqlite.getInstance(getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); new StoredInstanceDAO(ManageInstancesActivity.this, db).insertInstance(aboutInstance, newInstance); runOnUiThread(() -> new Handler().post(() -> Helper.logoutNoRemoval(ManageInstancesActivity.this))); }).start(); getSupportFragmentManager().clearFragmentResultListener(PICK_INSTANCE); }); addFragment( getSupportFragmentManager(), android.R.id.content, new FragmentLoginPickInstancePeertube(), null, null, FragmentLoginPickInstancePeertube.class.getName()); }); AlertDialog alert = alt_bld.create(); alert.show(); } private void manageVIewInfoInstance(List<InstanceData.AboutInstance> aboutInstances) { binding.loader.setVisibility(View.GONE); if (aboutInstances == null || aboutInstances.size() == 0) { Loading Loading @@ -106,24 +184,6 @@ public class ManageInstancesActivity extends BaseBarActivity implements AboutIns return super.onOptionsItemSelected(item); } @SuppressLint("ApplySharedPref") @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == PICK_INSTANCE_SURF && resultCode == Activity.RESULT_OK) { if (data != null && data.getData() != null) { new Thread(() -> { String newInstance = data.getData().toString().trim().toLowerCase(); InstanceData.AboutInstance aboutInstance = new RetrofitPeertubeAPI(ManageInstancesActivity.this, newInstance, null).getAboutInstance(); SQLiteDatabase db = Sqlite.getInstance(getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); new StoredInstanceDAO(ManageInstancesActivity.this, db).insertInstance(aboutInstance, newInstance); runOnUiThread(() -> new Handler().post(() -> Helper.logoutNoRemoval(ManageInstancesActivity.this))); }).start(); } } } @Override public void onAllInstancesRemoved() { binding.noAction.setVisibility(View.VISIBLE); Loading app/src/main/java/app/fedilab/android/peertube/activities/PeertubeMainActivity.java +18 −98 Original line number Diff line number Diff line Loading @@ -25,14 +25,13 @@ import static app.fedilab.android.mastodon.helper.Helper.PREF_USER_ID; import static app.fedilab.android.mastodon.helper.Helper.PREF_USER_INSTANCE; import static app.fedilab.android.mastodon.helper.Helper.PREF_USER_SOFTWARE; import static app.fedilab.android.mastodon.helper.Helper.PREF_USER_TOKEN; import static app.fedilab.android.mastodon.helper.Helper.addFragment; import static app.fedilab.android.peertube.helper.Helper.peertubeInformation; import static app.fedilab.android.peertube.helper.SwitchAccountHelper.switchDialog; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.database.sqlite.SQLiteDatabase; import android.net.Uri; import android.os.Build; import android.os.Bundle; Loading @@ -42,11 +41,8 @@ import android.util.TypedValue; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.EditText; import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.SearchView; Loading @@ -66,7 +62,6 @@ import com.kobakei.ratethisapp.RateThisApp; import org.jetbrains.annotations.NotNull; import java.net.URL; import java.util.LinkedHashMap; import java.util.List; import java.util.Set; Loading @@ -92,24 +87,18 @@ import app.fedilab.android.peertube.client.entities.PeertubeInformation; import app.fedilab.android.peertube.client.entities.Token; import app.fedilab.android.peertube.client.entities.UserMe; import app.fedilab.android.peertube.client.entities.UserSettings; import app.fedilab.android.peertube.client.entities.WellKnownNodeinfo; import app.fedilab.android.peertube.fragment.DisplayOverviewFragment; import app.fedilab.android.peertube.fragment.DisplayVideosFragment; 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.services.RetrieveInfoService; import app.fedilab.android.peertube.sqlite.StoredInstanceDAO; import app.fedilab.android.peertube.viewmodel.TimelineVM; import app.fedilab.android.sqlite.Sqlite; import es.dmoral.toasty.Toasty; public class PeertubeMainActivity extends PeertubeBaseMainActivity { public static int PICK_INSTANCE = 5641; public static int PICK_INSTANCE_SURF = 5642; public static String PICK_INSTANCE = "pick_instance"; public static String INSTANCE_ADDRESS = "instance_address"; public static UserMe userMe; public static InstanceData.InstanceConfig instanceConfig; public static TypeOfConnection typeOfConnection = TypeOfConnection.NORMAL; Loading Loading @@ -143,71 +132,6 @@ public class PeertubeMainActivity extends PeertubeBaseMainActivity { return true; }; @SuppressLint("ApplySharedPref") public static void showRadioButtonDialogFullInstances(Activity activity, boolean storeInDb) { SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(activity); AlertDialog.Builder alt_bld = new MaterialAlertDialogBuilder(activity, app.fedilab.android.mastodon.helper.Helper.dialogStyle()); alt_bld.setTitle(R.string.instance_choice); String instance = HelperInstance.getLiveInstance(activity); final EditText input = new EditText(activity); LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); input.setLayoutParams(lp); alt_bld.setView(input); input.setText(instance); alt_bld.setPositiveButton(R.string.validate, (dialog, which) -> new Thread(() -> { try { String newInstance = input.getText().toString().trim(); if (!newInstance.startsWith("http")) { newInstance = "http://" + newInstance; } URL url = new URL(newInstance); newInstance = url.getHost(); WellKnownNodeinfo.NodeInfo instanceNodeInfo = new RetrofitPeertubeAPI(activity, 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, newInstance); editor.commit(); if (storeInDb) { 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(() -> { dialog.dismiss(); Helper.logoutNoRemoval(activity); }); } else { activity.runOnUiThread(() -> { dialog.dismiss(); Intent intent = new Intent(activity, PeertubeMainActivity.class); activity.startActivity(intent); }); } } else { activity.runOnUiThread(() -> Toasty.error(activity, activity.getString(R.string.not_valide_instance), Toast.LENGTH_LONG).show()); } } catch (Exception e) { e.printStackTrace(); } }).start()); alt_bld.setNegativeButton(R.string.cancel, (dialog, which) -> dialog.dismiss()); alt_bld.setNeutralButton(R.string.help, (dialog, which) -> { Intent intent = new Intent(activity, InstancePickerActivity.class); if (storeInDb) { activity.startActivityForResult(intent, PICK_INSTANCE_SURF); } else { activity.startActivityForResult(intent, PICK_INSTANCE); } }); AlertDialog alert = alt_bld.create(); alert.show(); } private void setTitleCustom(int titleRId) { Toolbar toolbar = findViewById(R.id.toolbar); Loading @@ -224,6 +148,7 @@ public class PeertubeMainActivity extends PeertubeBaseMainActivity { binding = null; } @SuppressLint("ApplySharedPref") @Override protected void onCreate(Bundle savedInstanceState) { Loading Loading @@ -448,8 +373,19 @@ public class PeertubeMainActivity extends PeertubeBaseMainActivity { //Instance if (HelperInstance.getLiveInstance(PeertubeMainActivity.this) == null) { Intent intent = new Intent(PeertubeMainActivity.this, InstancePickerActivity.class); startActivityForResult(intent, PICK_INSTANCE); getSupportFragmentManager().setFragmentResultListener(PICK_INSTANCE, this, (requestKey, result) -> { String instance = result.getString(INSTANCE_ADDRESS, null); if (instance != null) { SharedPreferences.Editor editor = sharedpreferences.edit(); editor.putString(PREF_USER_INSTANCE, instance); editor.commit(); PeertubeMainActivity.this.recreate(); } getSupportFragmentManager().clearFragmentResultListener(requestKey); }); addFragment( getSupportFragmentManager(), android.R.id.content, new FragmentLoginPickInstancePeertube(), null, null, FragmentLoginPickInstancePeertube.class.getName()); } fetchRecentAccounts(PeertubeMainActivity.this, headerMainBinding); Loading Loading @@ -758,22 +694,6 @@ public class PeertubeMainActivity extends PeertubeBaseMainActivity { } } @SuppressLint("ApplySharedPref") @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == PICK_INSTANCE && resultCode == Activity.RESULT_OK) { if (data != null && data.getData() != null) { final SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(PeertubeMainActivity.this); SharedPreferences.Editor editor = sharedpreferences.edit(); editor.putString(PREF_USER_INSTANCE, String.valueOf(data.getData())); editor.commit(); recreate(); } } } public enum TypeOfConnection { NORMAL, SURFING Loading app/src/main/java/app/fedilab/android/peertube/drawer/InstanceAdapter.java +6 −9 Original line number Diff line number Diff line Loading @@ -15,14 +15,10 @@ package app.fedilab.android.peertube.drawer; * see <http://www.gnu.org/licenses>. */ import static android.app.Activity.RESULT_OK; import static androidx.core.text.HtmlCompat.FROM_HTML_MODE_LEGACY; import static app.fedilab.android.peertube.helper.Helper.peertubeInformation; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Build; import android.text.Html; import android.text.SpannableString; Loading Loading @@ -52,6 +48,8 @@ public class InstanceAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde private Context context; public ActionClick actionClick; public InstanceAdapter(List<Instance> instances) { this.instances = instances; } Loading Loading @@ -146,11 +144,7 @@ public class InstanceAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde holder.binding.followersInstance.setText(context.getString(R.string.followers_instance, String.valueOf(instance.getTotalInstanceFollowers()))); holder.binding.pickup.setOnClickListener(v -> { Intent data = new Intent(); String instanceHost = instance.getHost(); data.setData(Uri.parse(instanceHost)); ((Activity) context).setResult(RESULT_OK, data); ((Activity) context).finish(); actionClick.instance(instance.getHost()); }); } Loading @@ -174,4 +168,7 @@ public class InstanceAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde } } public interface ActionClick { void instance(String instance); } } No newline at end of file app/src/main/java/app/fedilab/android/peertube/activities/InstancePickerActivity.java→app/src/main/java/app/fedilab/android/peertube/fragment/FragmentLoginPickInstancePeertube.java +40 −41 File changed and moved.Preview size limit exceeded, changes collapsed. Show changes Loading
app/src/main/AndroidManifest.xml +0 −13 Original line number Diff line number Diff line Loading @@ -355,9 +355,6 @@ </receiver> <activity android:name=".peertube.activities.PeertubeMainActivity" android:configChanges="keyboardHidden|orientation|screenSize" /> <activity android:name=".peertube.activities.PeertubeMainActivity" android:configChanges="keyboardHidden|orientation|screenSize" /> Loading Loading @@ -402,11 +399,6 @@ android:name=".peertube.activities.AllLocalPlaylistsActivity" android:configChanges="orientation|screenSize" android:windowSoftInputMode="stateAlwaysHidden" /> <activity android:name=".peertube.activities.InstancePickerActivity" android:configChanges="orientation|screenSize" android:windowSoftInputMode="stateAlwaysHidden" /> <activity android:name=".peertube.activities.PlaylistsActivity" android:configChanges="orientation|screenSize" Loading Loading @@ -450,11 +442,6 @@ android:configChanges="orientation|screenSize" android:label="@string/settings" android:windowSoftInputMode="stateAlwaysHidden" /> <activity android:name=".peertube.activities.PeertubeRegisterActivity" android:configChanges="orientation|screenSize" android:label="@string/register_account" android:windowSoftInputMode="stateAlwaysHidden" /> <activity android:name=".peertube.activities.PeertubeUploadActivity" android:configChanges="orientation|screenSize" Loading
app/src/main/java/app/fedilab/android/peertube/activities/ManageInstancesActivity.java +82 −22 Original line number Diff line number Diff line Loading @@ -14,21 +14,31 @@ package app.fedilab.android.peertube.activities; * You should have received a copy of the GNU General Public License along with Fedilab; if not, * see <http://www.gnu.org/licenses>. */ import static app.fedilab.android.peertube.activities.PeertubeMainActivity.PICK_INSTANCE_SURF; import static app.fedilab.android.peertube.activities.PeertubeMainActivity.showRadioButtonDialogFullInstances; import static app.fedilab.android.mastodon.helper.Helper.PREF_USER_INSTANCE; 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 android.annotation.SuppressLint; import android.app.Activity; import android.content.Intent; 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; import android.widget.LinearLayout; import android.widget.Toast; import androidx.appcompat.app.AlertDialog; import androidx.lifecycle.ViewModelProvider; import androidx.preference.PreferenceManager; import androidx.recyclerview.widget.LinearLayoutManager; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import java.net.URL; import java.util.ArrayList; import java.util.List; Loading @@ -37,11 +47,15 @@ import app.fedilab.android.databinding.ActivityManageInstancesPeertubeBinding; import app.fedilab.android.mastodon.activities.BaseBarActivity; import app.fedilab.android.peertube.client.RetrofitPeertubeAPI; 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; import app.fedilab.android.sqlite.Sqlite; import es.dmoral.toasty.Toasty; public class ManageInstancesActivity extends BaseBarActivity implements AboutInstanceAdapter.AllInstancesRemoved { Loading @@ -64,7 +78,7 @@ public class ManageInstancesActivity extends BaseBarActivity implements AboutIns binding.loader.setVisibility(View.VISIBLE); binding.noAction.setVisibility(View.GONE); binding.lvInstances.setVisibility(View.GONE); binding.actionButton.setOnClickListener(v -> showRadioButtonDialogFullInstances(ManageInstancesActivity.this, true)); binding.actionButton.setOnClickListener(v -> showRadioButtonDialogFullInstances(ManageInstancesActivity.this)); aboutInstances = new ArrayList<>(); aboutInstanceAdapter = new AboutInstanceAdapter(this.aboutInstances); aboutInstanceAdapter.allInstancesRemoved = this; Loading @@ -76,6 +90,70 @@ public class ManageInstancesActivity extends BaseBarActivity implements AboutIns viewModelInfoInstance.getInstances().observe(ManageInstancesActivity.this, this::manageVIewInfoInstance); } @SuppressLint("ApplySharedPref") private void showRadioButtonDialogFullInstances(Activity activity) { SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(activity); AlertDialog.Builder alt_bld = new MaterialAlertDialogBuilder(activity, app.fedilab.android.mastodon.helper.Helper.dialogStyle()); alt_bld.setTitle(R.string.instance_choice); String instance = HelperInstance.getLiveInstance(activity); final EditText input = new EditText(activity); LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); input.setLayoutParams(lp); alt_bld.setView(input); input.setText(instance); alt_bld.setPositiveButton(R.string.validate, (dialog, which) -> new Thread(() -> { try { String newInstance = input.getText().toString().trim(); if (!newInstance.startsWith("http")) { newInstance = "http://" + newInstance; } URL url = new URL(newInstance); newInstance = url.getHost(); WellKnownNodeinfo.NodeInfo instanceNodeInfo = new RetrofitPeertubeAPI(activity, 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, 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(() -> { dialog.dismiss(); Helper.logoutNoRemoval(activity); }); } else { activity.runOnUiThread(() -> Toasty.error(activity, activity.getString(R.string.not_valide_instance), Toast.LENGTH_LONG).show()); } } catch (Exception e) { e.printStackTrace(); } }).start()); alt_bld.setNegativeButton(R.string.cancel, (dialog, which) -> dialog.dismiss()); alt_bld.setNeutralButton(R.string.help, (dialog, which) -> { getSupportFragmentManager().setFragmentResultListener(PICK_INSTANCE, this, (requestKey, result) -> { new Thread(() -> { String newInstance = result.getString(INSTANCE_ADDRESS); InstanceData.AboutInstance aboutInstance = new RetrofitPeertubeAPI(ManageInstancesActivity.this, newInstance, null).getAboutInstance(); SQLiteDatabase db = Sqlite.getInstance(getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); new StoredInstanceDAO(ManageInstancesActivity.this, db).insertInstance(aboutInstance, newInstance); runOnUiThread(() -> new Handler().post(() -> Helper.logoutNoRemoval(ManageInstancesActivity.this))); }).start(); getSupportFragmentManager().clearFragmentResultListener(PICK_INSTANCE); }); addFragment( getSupportFragmentManager(), android.R.id.content, new FragmentLoginPickInstancePeertube(), null, null, FragmentLoginPickInstancePeertube.class.getName()); }); AlertDialog alert = alt_bld.create(); alert.show(); } private void manageVIewInfoInstance(List<InstanceData.AboutInstance> aboutInstances) { binding.loader.setVisibility(View.GONE); if (aboutInstances == null || aboutInstances.size() == 0) { Loading Loading @@ -106,24 +184,6 @@ public class ManageInstancesActivity extends BaseBarActivity implements AboutIns return super.onOptionsItemSelected(item); } @SuppressLint("ApplySharedPref") @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == PICK_INSTANCE_SURF && resultCode == Activity.RESULT_OK) { if (data != null && data.getData() != null) { new Thread(() -> { String newInstance = data.getData().toString().trim().toLowerCase(); InstanceData.AboutInstance aboutInstance = new RetrofitPeertubeAPI(ManageInstancesActivity.this, newInstance, null).getAboutInstance(); SQLiteDatabase db = Sqlite.getInstance(getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); new StoredInstanceDAO(ManageInstancesActivity.this, db).insertInstance(aboutInstance, newInstance); runOnUiThread(() -> new Handler().post(() -> Helper.logoutNoRemoval(ManageInstancesActivity.this))); }).start(); } } } @Override public void onAllInstancesRemoved() { binding.noAction.setVisibility(View.VISIBLE); Loading
app/src/main/java/app/fedilab/android/peertube/activities/PeertubeMainActivity.java +18 −98 Original line number Diff line number Diff line Loading @@ -25,14 +25,13 @@ import static app.fedilab.android.mastodon.helper.Helper.PREF_USER_ID; import static app.fedilab.android.mastodon.helper.Helper.PREF_USER_INSTANCE; import static app.fedilab.android.mastodon.helper.Helper.PREF_USER_SOFTWARE; import static app.fedilab.android.mastodon.helper.Helper.PREF_USER_TOKEN; import static app.fedilab.android.mastodon.helper.Helper.addFragment; import static app.fedilab.android.peertube.helper.Helper.peertubeInformation; import static app.fedilab.android.peertube.helper.SwitchAccountHelper.switchDialog; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.database.sqlite.SQLiteDatabase; import android.net.Uri; import android.os.Build; import android.os.Bundle; Loading @@ -42,11 +41,8 @@ import android.util.TypedValue; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.EditText; import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.SearchView; Loading @@ -66,7 +62,6 @@ import com.kobakei.ratethisapp.RateThisApp; import org.jetbrains.annotations.NotNull; import java.net.URL; import java.util.LinkedHashMap; import java.util.List; import java.util.Set; Loading @@ -92,24 +87,18 @@ import app.fedilab.android.peertube.client.entities.PeertubeInformation; import app.fedilab.android.peertube.client.entities.Token; import app.fedilab.android.peertube.client.entities.UserMe; import app.fedilab.android.peertube.client.entities.UserSettings; import app.fedilab.android.peertube.client.entities.WellKnownNodeinfo; import app.fedilab.android.peertube.fragment.DisplayOverviewFragment; import app.fedilab.android.peertube.fragment.DisplayVideosFragment; 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.services.RetrieveInfoService; import app.fedilab.android.peertube.sqlite.StoredInstanceDAO; import app.fedilab.android.peertube.viewmodel.TimelineVM; import app.fedilab.android.sqlite.Sqlite; import es.dmoral.toasty.Toasty; public class PeertubeMainActivity extends PeertubeBaseMainActivity { public static int PICK_INSTANCE = 5641; public static int PICK_INSTANCE_SURF = 5642; public static String PICK_INSTANCE = "pick_instance"; public static String INSTANCE_ADDRESS = "instance_address"; public static UserMe userMe; public static InstanceData.InstanceConfig instanceConfig; public static TypeOfConnection typeOfConnection = TypeOfConnection.NORMAL; Loading Loading @@ -143,71 +132,6 @@ public class PeertubeMainActivity extends PeertubeBaseMainActivity { return true; }; @SuppressLint("ApplySharedPref") public static void showRadioButtonDialogFullInstances(Activity activity, boolean storeInDb) { SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(activity); AlertDialog.Builder alt_bld = new MaterialAlertDialogBuilder(activity, app.fedilab.android.mastodon.helper.Helper.dialogStyle()); alt_bld.setTitle(R.string.instance_choice); String instance = HelperInstance.getLiveInstance(activity); final EditText input = new EditText(activity); LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); input.setLayoutParams(lp); alt_bld.setView(input); input.setText(instance); alt_bld.setPositiveButton(R.string.validate, (dialog, which) -> new Thread(() -> { try { String newInstance = input.getText().toString().trim(); if (!newInstance.startsWith("http")) { newInstance = "http://" + newInstance; } URL url = new URL(newInstance); newInstance = url.getHost(); WellKnownNodeinfo.NodeInfo instanceNodeInfo = new RetrofitPeertubeAPI(activity, 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, newInstance); editor.commit(); if (storeInDb) { 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(() -> { dialog.dismiss(); Helper.logoutNoRemoval(activity); }); } else { activity.runOnUiThread(() -> { dialog.dismiss(); Intent intent = new Intent(activity, PeertubeMainActivity.class); activity.startActivity(intent); }); } } else { activity.runOnUiThread(() -> Toasty.error(activity, activity.getString(R.string.not_valide_instance), Toast.LENGTH_LONG).show()); } } catch (Exception e) { e.printStackTrace(); } }).start()); alt_bld.setNegativeButton(R.string.cancel, (dialog, which) -> dialog.dismiss()); alt_bld.setNeutralButton(R.string.help, (dialog, which) -> { Intent intent = new Intent(activity, InstancePickerActivity.class); if (storeInDb) { activity.startActivityForResult(intent, PICK_INSTANCE_SURF); } else { activity.startActivityForResult(intent, PICK_INSTANCE); } }); AlertDialog alert = alt_bld.create(); alert.show(); } private void setTitleCustom(int titleRId) { Toolbar toolbar = findViewById(R.id.toolbar); Loading @@ -224,6 +148,7 @@ public class PeertubeMainActivity extends PeertubeBaseMainActivity { binding = null; } @SuppressLint("ApplySharedPref") @Override protected void onCreate(Bundle savedInstanceState) { Loading Loading @@ -448,8 +373,19 @@ public class PeertubeMainActivity extends PeertubeBaseMainActivity { //Instance if (HelperInstance.getLiveInstance(PeertubeMainActivity.this) == null) { Intent intent = new Intent(PeertubeMainActivity.this, InstancePickerActivity.class); startActivityForResult(intent, PICK_INSTANCE); getSupportFragmentManager().setFragmentResultListener(PICK_INSTANCE, this, (requestKey, result) -> { String instance = result.getString(INSTANCE_ADDRESS, null); if (instance != null) { SharedPreferences.Editor editor = sharedpreferences.edit(); editor.putString(PREF_USER_INSTANCE, instance); editor.commit(); PeertubeMainActivity.this.recreate(); } getSupportFragmentManager().clearFragmentResultListener(requestKey); }); addFragment( getSupportFragmentManager(), android.R.id.content, new FragmentLoginPickInstancePeertube(), null, null, FragmentLoginPickInstancePeertube.class.getName()); } fetchRecentAccounts(PeertubeMainActivity.this, headerMainBinding); Loading Loading @@ -758,22 +694,6 @@ public class PeertubeMainActivity extends PeertubeBaseMainActivity { } } @SuppressLint("ApplySharedPref") @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == PICK_INSTANCE && resultCode == Activity.RESULT_OK) { if (data != null && data.getData() != null) { final SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(PeertubeMainActivity.this); SharedPreferences.Editor editor = sharedpreferences.edit(); editor.putString(PREF_USER_INSTANCE, String.valueOf(data.getData())); editor.commit(); recreate(); } } } public enum TypeOfConnection { NORMAL, SURFING Loading
app/src/main/java/app/fedilab/android/peertube/drawer/InstanceAdapter.java +6 −9 Original line number Diff line number Diff line Loading @@ -15,14 +15,10 @@ package app.fedilab.android.peertube.drawer; * see <http://www.gnu.org/licenses>. */ import static android.app.Activity.RESULT_OK; import static androidx.core.text.HtmlCompat.FROM_HTML_MODE_LEGACY; import static app.fedilab.android.peertube.helper.Helper.peertubeInformation; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Build; import android.text.Html; import android.text.SpannableString; Loading Loading @@ -52,6 +48,8 @@ public class InstanceAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde private Context context; public ActionClick actionClick; public InstanceAdapter(List<Instance> instances) { this.instances = instances; } Loading Loading @@ -146,11 +144,7 @@ public class InstanceAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde holder.binding.followersInstance.setText(context.getString(R.string.followers_instance, String.valueOf(instance.getTotalInstanceFollowers()))); holder.binding.pickup.setOnClickListener(v -> { Intent data = new Intent(); String instanceHost = instance.getHost(); data.setData(Uri.parse(instanceHost)); ((Activity) context).setResult(RESULT_OK, data); ((Activity) context).finish(); actionClick.instance(instance.getHost()); }); } Loading @@ -174,4 +168,7 @@ public class InstanceAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde } } public interface ActionClick { void instance(String instance); } } No newline at end of file
app/src/main/java/app/fedilab/android/peertube/activities/InstancePickerActivity.java→app/src/main/java/app/fedilab/android/peertube/fragment/FragmentLoginPickInstancePeertube.java +40 −41 File changed and moved.Preview size limit exceeded, changes collapsed. Show changes