Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,9 @@ public void onFinish() {
adapter.checkForUpdates(db.getNotes());
}
});
db.getNoteServerSyncHelper().downloadNotes();
if (!PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getBoolean(SettingsActivity.SETTINGS_FIRST_RUN, true)) {
db.getNoteServerSyncHelper().downloadNotes();
}
super.onResume();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

import it.niedermann.owncloud.notes.R;
import it.niedermann.owncloud.notes.util.NotesClientUtil;
import it.niedermann.owncloud.notes.util.NotesClientUtil.LoginStatus;

/**
* Allows to set Settings like URL, Username and Password for Server-Synchronization
Expand Down Expand Up @@ -194,7 +195,7 @@ protected void onPostExecute(Boolean o) {
/**
* If Log-In-Credentials are correct, save Credentials to Shared Preferences and finish First Run Wizard.
*/
private class LoginValidatorAsyncTask extends AsyncTask<String, Void, Boolean> {
private class LoginValidatorAsyncTask extends AsyncTask<String, Void, LoginStatus> {
String url, username, password;

@Override
Expand All @@ -208,16 +209,16 @@ protected void onPreExecute() {
* @return isValidLogin Boolean
*/
@Override
protected Boolean doInBackground(String... params) {
protected LoginStatus doInBackground(String... params) {
url = params[0];
username = params[1];
password = params[2];
return NotesClientUtil.isValidLogin(url, username, password);
}

@Override
protected void onPostExecute(Boolean isValidLogin) {
if (isValidLogin) {
protected void onPostExecute(LoginStatus status) {
if (LoginStatus.OK.equals(status)) {
SharedPreferences.Editor editor = preferences.edit();
editor.putString(SETTINGS_URL, url);
editor.putString(SETTINGS_USERNAME, username);
Expand All @@ -238,7 +239,7 @@ protected void onPostExecute(Boolean isValidLogin) {
Log.e("Note", "invalid login");
btn_submit.setText(R.string.settings_submit);
setInputsEnabled(true);
Toast.makeText(getApplicationContext(), getString(R.string.error_invalid_login), Toast.LENGTH_LONG).show();
Toast.makeText(getApplicationContext(), getString(R.string.error_invalid_login, getString(status.str)), Toast.LENGTH_LONG).show();
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,25 +1,29 @@
package it.niedermann.owncloud.notes.persistence;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.AsyncTask;
import android.os.Handler;
import android.os.Message;
import android.preference.PreferenceManager;
import android.view.View;
import android.widget.Toast;

import org.json.JSONException;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import it.niedermann.owncloud.notes.R;
import it.niedermann.owncloud.notes.android.activity.SettingsActivity;
import it.niedermann.owncloud.notes.model.DBStatus;
import it.niedermann.owncloud.notes.model.Note;
import it.niedermann.owncloud.notes.util.ICallback;
import it.niedermann.owncloud.notes.util.NotesClient;
import it.niedermann.owncloud.notes.util.NotesClientUtil.LoginStatus;

/**
* Helps to synchronize the Database to the Server.
Expand Down Expand Up @@ -205,26 +209,32 @@ protected void onPostExecute(Void aVoid) {
}

private class DownloadNotesTask extends AsyncTask<Object, Void, List<Note>> {
private boolean serverError = false;
private LoginStatus status = null;

@Override
protected List<Note> doInBackground(Object... params) {
operationsCount++;
List<Note> notes = new ArrayList<>();
try {
notes = client.getNotes();
} catch (IOException | JSONException e) {
serverError = true;
status = LoginStatus.OK;
} catch (IOException e) {
e.printStackTrace();
status = LoginStatus.CONNECTION_FAILED;
} catch (JSONException e) {
status = LoginStatus.JSON_FAILED;
}
return notes;
}

@Override
protected void onPostExecute(List<Note> result) {
// Clear Database only if there was no Server Error
if (!serverError) {
if (status==LoginStatus.OK) {
db.clearDatabase();
} else {
Context c = db.getContext();
Toast.makeText(c, c.getString(R.string.error_sync, c.getString(status.str)), Toast.LENGTH_LONG).show();
}
for (Note note : result) {
db.addNote(note);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import android.util.Base64;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

Expand All @@ -12,12 +13,27 @@
import java.net.MalformedURLException;
import java.net.URL;

import it.niedermann.owncloud.notes.R;

/**
* Utils for Validation etc
* Created by stefan on 25.09.15.
*/
public class NotesClientUtil {

public enum LoginStatus {
OK(0),
AUTH_FAILED(R.string.error_username_password_invalid),
CONNECTION_FAILED(R.string.error_io),
JSON_FAILED(R.string.error_json),
SERVER_FAILED(R.string.error_server);

public final int str;
LoginStatus(int str) {
this.str = str;
}
}

/**
* Checks if the given url String starts with http:// or https://
*
Expand All @@ -34,7 +50,7 @@ public static boolean isHttp(String url) {
* @param password String
* @return Username and Password are a valid Login-Combination for the given URL.
*/
public static boolean isValidLogin(String url, String username, String password) {
public static LoginStatus isValidLogin(String url, String username, String password) {
try {
String targetURL = url + "index.php/apps/notes/api/v0.2/notes";
HttpURLConnection con = (HttpURLConnection) new URL(targetURL)
Expand All @@ -48,14 +64,27 @@ public static boolean isValidLogin(String url, String username, String password)
con.setConnectTimeout(10 * 1000); // 10 seconds
con.connect();
if (con.getResponseCode() == 200) {
return true;
StringBuilder result = new StringBuilder();
BufferedReader rd = new BufferedReader(new InputStreamReader(con.getInputStream()));
String line;
while ((line = rd.readLine()) != null) {
result.append(line);
}
System.out.println(result.toString());
new JSONArray(result.toString());
return LoginStatus.OK;
} else if (con.getResponseCode() >= 401 && con.getResponseCode() <= 403) {
return LoginStatus.AUTH_FAILED;
} else {
return LoginStatus.SERVER_FAILED;
}
} catch (MalformedURLException e1) {
return false;
} catch (MalformedURLException e) {
return LoginStatus.CONNECTION_FAILED;
} catch (IOException e) {
return false;
return LoginStatus.CONNECTION_FAILED;
} catch (JSONException e) {
return LoginStatus.JSON_FAILED;
}
return false;
}

/**
Expand All @@ -65,7 +94,7 @@ public static boolean isValidLogin(String url, String username, String password)
* @return true if there is a installed instance, false if not
*/
public static boolean isValidURL(String url) {
StringBuffer result = new StringBuffer();
StringBuilder result = new StringBuilder();
try {
HttpURLConnection con = (HttpURLConnection) new URL(url + "status.php")
.openConnection();
Expand Down
8 changes: 5 additions & 3 deletions app/src/main/res/values-de/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,11 @@
<string name="network_disconnected">Kein Netzwerk verfügbar</string>

<!-- Error -->
<string name="error_json">JSON-Fehler</string>
<string name="error_io">IO-Fehler</string>
<string name="error_invalid_login">Login fehlgeschlagen</string>
<string name="error_sync">Synchronisation fehlgeschlagen: %1$s</string>
<string name="error_invalid_login">Login fehlgeschlagen: %1$s</string>
<string name="error_json">ist die Server-App ownCloud Notes aktiviert?</string>
<string name="error_io">Server-Verbindung nicht möglich</string>
<string name="error_server">URL/Server fehlerhaft</string>
<string name="error_url_malformed">URL nicht korrekt</string>
<string name="error_username_password_invalid">Benutzername / Passwort nicht korrekt</string>

Expand Down
2 changes: 1 addition & 1 deletion app/src/main/res/values-fr/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
<!-- Error -->
<string name="error_json">Erreur de JSON</string>
<string name="error_io">Erreur d\'E/S</string>
<string name="error_invalid_login">Détails de connexion incorrects</string>
<string name="error_invalid_login">Détails de connexion incorrects: %1$s</string>
<string name="error_url_malformed">Adresse du serveur incorrecte</string>
<string name="error_username_password_invalid">Identifiant ou mot de passe incorrect</string>

Expand Down
4 changes: 2 additions & 2 deletions app/src/main/res/values-ru/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
<string name="network_disconnected">Сеть недоступна</string>

<!-- Error -->
<string name="error_invalid_login">Неверный логин</string>
<string name="error_invalid_login">Неверный логин: %1$s</string>
<string name="error_io">Ошибка ввода/вывода</string>
<string name="error_json">Ошибка JSON</string>
<string name="error_url_malformed">Неверный адрес</string>
Expand Down Expand Up @@ -85,4 +85,4 @@

<string name="widget_all_notes_title">Все заметки</string>
<string name="widget_single_note_title">Одна заметка</string>
</resources>
</resources>
8 changes: 5 additions & 3 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,11 @@
<string name="network_disconnected">No network available</string>

<!-- Error -->
<string name="error_json">JSON error</string>
<string name="error_io">IO error</string>
<string name="error_invalid_login">Invalid login</string>
<string name="error_sync">Synchronization failed: %1$s</string>
<string name="error_invalid_login">Invalid login: %1$s</string>
<string name="error_json">is the owncloud Notes app activated on the server?</string>
<string name="error_io">server connection is broken</string>
<string name="error_server">URL/Server has errors</string>
<string name="error_url_malformed">Wrong server address</string>
<string name="error_username_password_invalid">Wrong username or password</string>

Expand Down