Merge pull request #5945 from ByteHamster/remove-gpodder

Remove default gpodder sync server
This commit is contained in:
ByteHamster 2022-06-21 19:17:29 +02:00 committed by GitHub
commit c0cfb4cf24
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 90 additions and 156 deletions

View File

@ -2,7 +2,6 @@ package de.danoeh.antennapod.fragment.preferences.synchronization;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Paint;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
@ -12,31 +11,20 @@ import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.ViewFlipper;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
import com.google.android.material.button.MaterialButton;
import com.google.android.material.textfield.TextInputLayout;
import java.util.List;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.core.sync.SynchronizationCredentials;
import de.danoeh.antennapod.core.service.download.AntennapodHttpClient;
import de.danoeh.antennapod.core.sync.SyncService;
import de.danoeh.antennapod.core.sync.SynchronizationCredentials;
import de.danoeh.antennapod.core.sync.SynchronizationProviderViewData;
import de.danoeh.antennapod.core.sync.SynchronizationSettings;
import de.danoeh.antennapod.core.util.FileNameGenerator;
import de.danoeh.antennapod.core.util.IntentUtils;
import de.danoeh.antennapod.net.sync.gpoddernet.GpodnetService;
import de.danoeh.antennapod.net.sync.gpoddernet.model.GpodnetDevice;
import io.reactivex.Completable;
@ -44,6 +32,11 @@ import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
import java.util.List;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Guides the user through the authentication process.
*/
@ -70,7 +63,7 @@ public class GpodderAuthenticationFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
AlertDialog.Builder dialog = new AlertDialog.Builder(getContext());
dialog.setTitle(GpodnetService.DEFAULT_BASE_HOST);
dialog.setTitle(R.string.gpodnetauth_login_butLabel);
dialog.setNegativeButton(R.string.cancel_label, null);
dialog.setCancelable(false);
this.setCancelable(false);
@ -85,23 +78,13 @@ public class GpodderAuthenticationFragment extends DialogFragment {
private void setupHostView(View view) {
final Button selectHost = view.findViewById(R.id.chooseHostButton);
final RadioGroup serverRadioGroup = view.findViewById(R.id.serverRadioGroup);
final EditText serverUrlText = view.findViewById(R.id.serverUrlText);
if (!GpodnetService.DEFAULT_BASE_HOST.equals(SynchronizationCredentials.getHosturl())) {
serverUrlText.setText(SynchronizationCredentials.getHosturl());
}
final TextInputLayout serverUrlTextInput = view.findViewById(R.id.serverUrlTextInput);
serverRadioGroup.setOnCheckedChangeListener((group, checkedId) -> {
serverUrlTextInput.setVisibility(checkedId == R.id.customServerRadio ? View.VISIBLE : View.GONE);
});
selectHost.setOnClickListener(v -> {
SynchronizationCredentials.clear(getContext());
if (serverRadioGroup.getCheckedRadioButtonId() == R.id.customServerRadio) {
SynchronizationCredentials.setHosturl(serverUrlText.getText().toString());
} else {
SynchronizationCredentials.setHosturl(GpodnetService.DEFAULT_BASE_HOST);
if (serverUrlText.getText().length() == 0) {
return;
}
SynchronizationCredentials.clear(getContext());
SynchronizationCredentials.setHosturl(serverUrlText.getText().toString());
service = new GpodnetService(AntennapodHttpClient.getHttpClient(),
SynchronizationCredentials.getHosturl(), SynchronizationCredentials.getDeviceID(),
SynchronizationCredentials.getUsername(), SynchronizationCredentials.getPassword());
@ -116,12 +99,8 @@ public class GpodderAuthenticationFragment extends DialogFragment {
final Button login = view.findViewById(R.id.butLogin);
final TextView txtvError = view.findViewById(R.id.credentialsError);
final ProgressBar progressBar = view.findViewById(R.id.progBarLogin);
final TextView createAccount = view.findViewById(R.id.createAccountButton);
final TextView createAccountWarning = view.findViewById(R.id.createAccountWarning);
createAccount.setPaintFlags(createAccount.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
createAccount.setOnClickListener(v -> IntentUtils.openInBrowser(getContext(), "https://gpodder.net/register/"));
if (SynchronizationCredentials.getHosturl().startsWith("http://")) {
createAccountWarning.setVisibility(View.VISIBLE);
}

View File

@ -1,107 +1,84 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginBottom="8dp">
<ImageView
android:layout_width="64dp"
android:layout_height="64dp"
app:srcCompat="@drawable/gpodder_icon"/>
<TextView
android:id="@+id/createAccountButton"
android:layout_width="0dp"
android:textAlignment="textEnd"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:textColor="?colorAccent"
android:layout_weight="1"
android:layout_gravity="center_vertical|end"
android:text="@string/create_account"/>
</LinearLayout>
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/createAccountWarning"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/gpodnetauth_encryption_warning"
android:textColor="#F44336"
android:textStyle="bold"
android:visibility="invisible" />
android:id="@+id/createAccountWarning"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/gpodnetauth_encryption_warning"
android:textColor="#F44336"
android:textStyle="bold"
android:visibility="invisible" />
<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/etxtUsername"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/username_label"
android:lines="1"
android:imeOptions="actionNext|flagNoFullscreen"/>
android:id="@+id/etxtUsername"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/username_label"
android:lines="1"
android:imeOptions="actionNext|flagNoFullscreen" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/etxtPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/password_label"
android:inputType="textPassword"
android:lines="1"
android:imeOptions="actionNext|flagNoFullscreen"
android:imeActionLabel="@string/gpodnetauth_login_butLabel"/>
android:id="@+id/etxtPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/password_label"
android:inputType="textPassword"
android:lines="1"
android:imeOptions="actionNext|flagNoFullscreen"
android:imeActionLabel="@string/gpodnetauth_login_butLabel" />
</com.google.android.material.textfield.TextInputLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="end|center_vertical">
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="end|center_vertical">
<TextView
android:id="@+id/credentialsError"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:textColor="@color/download_failed_red"
android:textSize="@dimen/text_size_small"
android:maxLines="2"
android:ellipsize="end"
android:gravity="center"
tools:text="Error message"
tools:background="@android:color/holo_green_dark"/>
android:id="@+id/credentialsError"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textColor="@color/download_failed_red"
android:textSize="@dimen/text_size_small"
android:maxLines="2"
android:ellipsize="end"
android:gravity="center"
tools:text="Error message"
tools:background="@android:color/holo_green_dark" />
<ProgressBar
android:id="@+id/progBarLogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:layout_gravity="right"/>
android:id="@+id/progBarLogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:layout_gravity="right" />
<Button
android:id="@+id/butLogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/gpodnetauth_login_butLabel"/>
android:id="@+id/butLogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/gpodnetauth_login_butLabel" />
</LinearLayout>
</LinearLayout>

View File

@ -1,50 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RadioGroup
android:id="@+id/serverRadioGroup"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RadioButton
android:id="@+id/officialServerRadio"
android:text="@string/gpodnetauth_server_official"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:checked="true"/>
<RadioButton
android:id="@+id/customServerRadio"
android:text="@string/gpodnetauth_server_custom"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</RadioGroup>
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/serverUrlTextInput"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/serverUrlText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/gpodnetauth_host"
android:inputType="textNoSuggestions"
android:lines="1"
android:imeOptions="actionNext|flagNoFullscreen" />
android:id="@+id/serverUrlText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/gpodnetauth_host"
android:inputType="textNoSuggestions"
android:lines="1"
android:imeOptions="actionNext|flagNoFullscreen" />
</com.google.android.material.textfield.TextInputLayout>
<Button
android:id="@+id/chooseHostButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|end"
android:text="@string/gpodnetauth_select_server"/>
android:id="@+id/chooseHostButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|end"
android:text="@string/gpodnetauth_select_server" />
</LinearLayout>
</LinearLayout>

View File

@ -46,7 +46,7 @@ import okhttp3.ResponseBody;
*/
public class GpodnetService implements ISyncService {
public static final String TAG = "GpodnetService";
public static final String DEFAULT_BASE_HOST = "gpodder.net";
private static final String DEFAULT_BASE_HOST = "gpodder.net";
private static final int UPLOAD_BULK_SIZE = 30;
private static final MediaType TEXT = MediaType.parse("plain/text; charset=utf-8");
private static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");

View File

@ -625,12 +625,9 @@
<!-- gpodder.net -->
<string name="gpodnetauth_login_butLabel">Login</string>
<string name="gpodnetauth_encryption_warning">Password and data are not encrypted!</string>
<string name="create_account">Create account</string>
<string name="username_label">Username</string>
<string name="password_label">Password</string>
<string name="gpodnet_description">Gpodder.net is an open-source podcast synchronization service that is independent of the AntennaPod project.</string>
<string name="gpodnetauth_server_official">Official gpodder.net server</string>
<string name="gpodnetauth_server_custom">Custom server</string>
<string name="gpodnet_description">Gpodder.net is an open-source podcast synchronization service that you can install on your own server. Gpodder.net is independent of the AntennaPod project.</string>
<string name="gpodnetauth_host">Hostname</string>
<string name="gpodnetauth_select_server">Select server</string>
<string name="gpodnetauth_device_name">Device name</string>