Merge pull request #1400 from open-keychain/keyserver-preference
Fixe Keyserver Preference crash on empty list
This commit is contained in:
@@ -83,7 +83,6 @@ public class SettingsKeyserverFragment extends Fragment implements RecyclerItemC
|
|||||||
|
|
||||||
String keyservers[] = getArguments().getStringArray(ARG_KEYSERVER_ARRAY);
|
String keyservers[] = getArguments().getStringArray(ARG_KEYSERVER_ARRAY);
|
||||||
mKeyservers = new ArrayList<>(Arrays.asList(keyservers));
|
mKeyservers = new ArrayList<>(Arrays.asList(keyservers));
|
||||||
saveKeyserverList(); // in case user does not make any changes
|
|
||||||
|
|
||||||
mAdapter = new KeyserverListAdapter(mKeyservers);
|
mAdapter = new KeyserverListAdapter(mKeyservers);
|
||||||
|
|
||||||
@@ -146,7 +145,7 @@ public class SettingsKeyserverFragment extends Fragment implements RecyclerItemC
|
|||||||
if (deleted) {
|
if (deleted) {
|
||||||
Notify.create(getActivity(),
|
Notify.create(getActivity(),
|
||||||
getActivity().getString(
|
getActivity().getString(
|
||||||
R.string.keyserver_deleted, mKeyservers.get(position)),
|
R.string.keyserver_preference_deleted, mKeyservers.get(position)),
|
||||||
Notify.Style.OK)
|
Notify.Style.OK)
|
||||||
.show();
|
.show();
|
||||||
deleteKeyserver(position);
|
deleteKeyserver(position);
|
||||||
@@ -222,6 +221,11 @@ public class SettingsKeyserverFragment extends Fragment implements RecyclerItemC
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void deleteKeyserver(int position) {
|
private void deleteKeyserver(int position) {
|
||||||
|
if (mKeyservers.size() == 1) {
|
||||||
|
Notify.create(getActivity(), R.string.keyserver_preference_cannot_delete_last,
|
||||||
|
Notify.Style.ERROR).show();
|
||||||
|
return;
|
||||||
|
}
|
||||||
mKeyservers.remove(position);
|
mKeyservers.remove(position);
|
||||||
// we use this
|
// we use this
|
||||||
mAdapter.notifyItemRemoved(position);
|
mAdapter.notifyItemRemoved(position);
|
||||||
|
|||||||
@@ -138,6 +138,9 @@ public class Preferences {
|
|||||||
public String[] getKeyServers() {
|
public String[] getKeyServers() {
|
||||||
String rawData = mSharedPreferences.getString(Constants.Pref.KEY_SERVERS,
|
String rawData = mSharedPreferences.getString(Constants.Pref.KEY_SERVERS,
|
||||||
Constants.Defaults.KEY_SERVERS);
|
Constants.Defaults.KEY_SERVERS);
|
||||||
|
if (rawData.equals("")) {
|
||||||
|
return new String[0];
|
||||||
|
}
|
||||||
Vector<String> servers = new Vector<>();
|
Vector<String> servers = new Vector<>();
|
||||||
String chunks[] = rawData.split(",");
|
String chunks[] = rawData.split(",");
|
||||||
for (String c : chunks) {
|
for (String c : chunks) {
|
||||||
@@ -150,7 +153,8 @@ public class Preferences {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String getPreferredKeyserver() {
|
public String getPreferredKeyserver() {
|
||||||
return getKeyServers()[0];
|
String[] keyservers = getKeyServers();
|
||||||
|
return keyservers.length == 0 ? null : keyservers[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setKeyServers(String[] value) {
|
public void setKeyServers(String[] value) {
|
||||||
|
|||||||
@@ -685,7 +685,8 @@
|
|||||||
<string name="add_keyserver_without_verification">"Keyserver added without verification."</string>
|
<string name="add_keyserver_without_verification">"Keyserver added without verification."</string>
|
||||||
<string name="add_keyserver_invalid_url">"Invalid URL!"</string>
|
<string name="add_keyserver_invalid_url">"Invalid URL!"</string>
|
||||||
<string name="add_keyserver_connection_failed">"Failed to connect to keyserver. Please check the URL and your internet connection."</string>
|
<string name="add_keyserver_connection_failed">"Failed to connect to keyserver. Please check the URL and your internet connection."</string>
|
||||||
<string name="keyserver_deleted">"%s deleted"</string>
|
<string name="keyserver_preference_deleted">"%s deleted"</string>
|
||||||
|
<string name="keyserver_preference_cannot_delete_last">"Cannot delete last keyserver. At least one is required!"</string>
|
||||||
|
|
||||||
<!-- Navigation Drawer -->
|
<!-- Navigation Drawer -->
|
||||||
<string name="nav_keys">"Keys"</string>
|
<string name="nav_keys">"Keys"</string>
|
||||||
|
|||||||
Reference in New Issue
Block a user