mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-27 06:17:27 +00:00
wip checkin with proper data fetch
This commit is contained in:
1 parent
b0138f8ca8
commit
3456da7e35
3 files changed
+136
-79
No files matched your search
@@ -2,5 +2,9 @@
|
||||
<resources>
|
||||
|
||||
<string name="notify_user_api_call_failed">Bei der Kommunikation mit dem Server ist ein Fehler aufgetreten. Bitte versuchen Sie es noch einmal.</string>
|
||||
<string name="confirm_data_hello_name">Hallo {full_name}</string>
|
||||
<string name="confirm_data_you_are_signed_in_as_sail_id">Sie sind als {sail_id} gemeldet</string>
|
||||
<string name="confirm_data_is_correct">Stimmt</string>
|
||||
<string name="decline_data_is_incorrect">Das bin nicht ich!</string>
|
||||
|
||||
</resources>
|
||||
@@ -12,5 +12,9 @@
|
||||
<string name="confirm_picture">Declaration of consent</string>
|
||||
<string name="confirm_picture_usage">I agree that the pictures made by me in the tracking app can be used by SAP.</string>
|
||||
<string name="notify_user_api_call_failed">An error occurred while contacting the server. Please try again.</string>
|
||||
<string name="confirm_data_hello_name">Hello {full_name}</string>
|
||||
<string name="confirm_data_you_are_signed_in_as_sail_id">You are signing in as {sail_id}</string>
|
||||
<string name="confirm_data_is_correct">Correct</string>
|
||||
<string name="decline_data_is_incorrect">That\'s not me!</string>
|
||||
|
||||
</resources>
|
||||
+128
-79
@@ -21,6 +21,7 @@ import android.content.pm.ResolveInfo;
|
||||
import android.database.Cursor;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.preference.DialogPreference;
|
||||
import android.support.v4.app.LoaderManager.LoaderCallbacks;
|
||||
import android.support.v4.content.CursorLoader;
|
||||
import android.support.v4.content.Loader;
|
||||
@@ -187,7 +188,7 @@ public class HomeFragment extends BaseFragment implements LoaderCallbacks<Cursor
|
||||
public void onResponse(JSONObject response) {
|
||||
System.out.println("got response: " + response);
|
||||
// TODO: get data, eventually save to db
|
||||
displayUserConfirmationScreen("TODO", "TODO");
|
||||
displayUserConfirmationScreen("TODO", "TODO");
|
||||
}
|
||||
}, new ErrorListener() {
|
||||
|
||||
@@ -239,10 +240,10 @@ public class HomeFragment extends BaseFragment implements LoaderCallbacks<Cursor
|
||||
//
|
||||
//
|
||||
// DeviceMappingRequest dataRequest = new DeviceMappingRequest(deviceMapping, eventJson,
|
||||
// new DeviceMappingListener(), new DeviceMappingErrorListener());
|
||||
//
|
||||
|
||||
// new DeviceMappingListener(), new DeviceMappingErrorListener());
|
||||
// VolleyHelper.getInstance(getActivity()).addRequest(dataRequest, REQUEST_TAG);
|
||||
//
|
||||
|
||||
} else if (resultCode == Activity.RESULT_CANCELED) {
|
||||
Toast.makeText(getActivity(), "Scanning canceled", Toast.LENGTH_LONG).show();
|
||||
} else {
|
||||
@@ -257,52 +258,90 @@ public class HomeFragment extends BaseFragment implements LoaderCallbacks<Cursor
|
||||
VolleyHelper.getInstance(getActivity()).cancelRequest(REQUEST_TAG);
|
||||
}
|
||||
|
||||
private void displayUserConfirmationScreen(String fullNameOfUser, String sailId)
|
||||
private void displayUserConfirmationScreen(String fullNameOfUser, String sailId, final DeviceMappingData deviceMappingData)
|
||||
{
|
||||
|
||||
String message1 = getString(R.string.confirm_data_hello_name).replace("{full_name}", fullNameOfUser);
|
||||
String message2 = getString(R.string.confirm_data_you_are_signed_in_as_sail_id).replace("{sail_id}", sailId);
|
||||
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
|
||||
builder.setMessage(message1 + "\n\n" + message2);
|
||||
builder.setCancelable(true);
|
||||
builder.setPositiveButton(getString(R.string.confirm_data_is_correct), new DialogInterface.OnClickListener(){
|
||||
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
checkInWithAPIAndDisplayTrackingActivity(deviceMappingData);
|
||||
}
|
||||
|
||||
}).setNegativeButton(R.string.decline_data_is_incorrect, new DialogInterface.OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
dialog.cancel();
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
AlertDialog alert = builder.create();
|
||||
alert.show();
|
||||
}
|
||||
|
||||
private void checkInWithAPIAndDisplayTrackingActivity()
|
||||
{
|
||||
|
||||
/**
|
||||
* // TODO: Push token?
|
||||
try {
|
||||
JSONObject requestObject = CheckinQRCodeHelper.getCheckinJson(competitorId,
|
||||
deviceUuid.getStringRepresentation(), "TODO!!", date.getTime());
|
||||
CheckinListener listener = new CheckinListener(leaderboardName); // TODO: twice the same? where do the correct values come from?
|
||||
|
||||
JsonObjectRequest checkinRequest = new JsonObjectRequest(checkinURLStr, requestObject, new CheckinListener(leaderboardName), new CheckinErrorListener());
|
||||
|
||||
|
||||
/**
|
||||
* Perform a checking request and launch RegattaAcitivity afterwards
|
||||
*
|
||||
* TODO: Google Cloud Messaging token?
|
||||
*
|
||||
* @param deviceMappingData
|
||||
*/
|
||||
private void checkInWithAPIAndDisplayTrackingActivity(
|
||||
DeviceMappingData deviceMappingData) {
|
||||
Date date = new Date();
|
||||
|
||||
try {
|
||||
JSONObject requestObject = CheckinQRCodeHelper.getCheckinJson(
|
||||
deviceMappingData.competitorId,
|
||||
deviceMappingData.deviceUid, "TODO!!", date.getTime());
|
||||
|
||||
JsonObjectRequest checkinRequest = new JsonObjectRequest(
|
||||
deviceMappingData.hostUrl, requestObject,
|
||||
new CheckinListener(deviceMappingData.leaderboardName),
|
||||
new CheckinErrorListener());
|
||||
|
||||
VolleyHelper.getInstance(getActivity()).addRequest(checkinRequest);
|
||||
|
||||
|
||||
} catch (JSONException e) {
|
||||
ExLog.e(getActivity(), TAG, "Failed to generate checkin JSON: " + e.getMessage());
|
||||
ExLog.e(getActivity(), TAG,
|
||||
"Failed to generate checkin JSON: " + e.getMessage());
|
||||
displayAPIErrorRecommendRetry();
|
||||
}
|
||||
**/
|
||||
}
|
||||
|
||||
/**
|
||||
* Shows a pop-up-dialog that informs the user than an API-call has failed and recommends a retry.
|
||||
*/
|
||||
private void displayAPIErrorRecommendRetry()
|
||||
{
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
|
||||
builder.setMessage(getString(R.string.notify_user_api_call_failed));
|
||||
builder.setCancelable(true);
|
||||
builder.setPositiveButton(getString(R.string.ok), new DialogInterface.OnClickListener(){
|
||||
private void displayAPIErrorRecommendRetry() {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
|
||||
builder.setMessage(getString(R.string.notify_user_api_call_failed));
|
||||
builder.setCancelable(true);
|
||||
builder.setPositiveButton(getString(R.string.ok),
|
||||
new DialogInterface.OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
dialog.cancel();
|
||||
}
|
||||
|
||||
});
|
||||
AlertDialog alert = builder.create();
|
||||
alert.show();
|
||||
}
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
dialog.cancel();
|
||||
}
|
||||
|
||||
});
|
||||
AlertDialog alert = builder.create();
|
||||
alert.show();
|
||||
}
|
||||
|
||||
/**
|
||||
* Start regatta activity.
|
||||
*
|
||||
* @param regattaName
|
||||
* @param eventName
|
||||
*/
|
||||
private void startRegatta(String regattaName, String eventName) {
|
||||
Intent intent = new Intent(getActivity(), RegattaActivity.class);
|
||||
intent.putExtra(getString(R.string.regatta_name), regattaName);
|
||||
@@ -310,47 +349,47 @@ public class HomeFragment extends BaseFragment implements LoaderCallbacks<Cursor
|
||||
getActivity().startActivity(intent);
|
||||
}
|
||||
|
||||
private JsonObjectRequest checkInRequest(String server, final String eventId, final String competitorId) {
|
||||
JSONObject json = new JSONObject();
|
||||
try {
|
||||
json.put("deviceUdid", prefs.getDeviceIdentifier());
|
||||
json.put("deviceType", "android");
|
||||
json.put("pushDeviceId", "notImplementedYet");
|
||||
} catch (JSONException ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
JsonObjectRequest result = new JsonObjectRequest(BackendHelper.getUrl(server, eventId, competitorId, "device"),
|
||||
json, new Response.Listener<JSONObject>() {
|
||||
|
||||
@Override
|
||||
public void onResponse(JSONObject result) {
|
||||
// startRegatta(eventId, competitorId);
|
||||
}
|
||||
}, new Response.ErrorListener() {
|
||||
|
||||
@Override
|
||||
public void onErrorResponse(VolleyError error) {
|
||||
String message = null;
|
||||
NetworkResponse response = error.networkResponse;
|
||||
if (response != null) {
|
||||
if (response.statusCode == HttpStatus.SC_NOT_FOUND) {
|
||||
message = getString(R.string.homefragment_volley_404);
|
||||
} else {
|
||||
message = String.format(getString(R.string.homefragment_volley_unknown),
|
||||
response.statusCode);
|
||||
}
|
||||
} else {
|
||||
message = getString(R.string.homefragment_volley_unexpected);
|
||||
ExLog.i(getActivity(), TAG, error.toString());
|
||||
}
|
||||
if (message != null) {
|
||||
Toast.makeText(getActivity(), message, Toast.LENGTH_LONG).show();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
// private JsonObjectRequest checkInRequest(String server, final String eventId, final String competitorId) {
|
||||
// JSONObject json = new JSONObject();
|
||||
// try {
|
||||
// json.put("deviceUdid", prefs.getDeviceIdentifier());
|
||||
// json.put("deviceType", "android");
|
||||
// json.put("pushDeviceId", "notImplementedYet");
|
||||
// } catch (JSONException ex) {
|
||||
// ex.printStackTrace();
|
||||
// }
|
||||
// JsonObjectRequest result = new JsonObjectRequest(BackendHelper.getUrl(server, eventId, competitorId, "device"),
|
||||
// json, new Response.Listener<JSONObject>() {
|
||||
//
|
||||
// @Override
|
||||
// public void onResponse(JSONObject result) {
|
||||
// // startRegatta(eventId, competitorId);
|
||||
// }
|
||||
// }, new Response.ErrorListener() {
|
||||
//
|
||||
// @Override
|
||||
// public void onErrorResponse(VolleyError error) {
|
||||
// String message = null;
|
||||
// NetworkResponse response = error.networkResponse;
|
||||
// if (response != null) {
|
||||
// if (response.statusCode == HttpStatus.SC_NOT_FOUND) {
|
||||
// message = getString(R.string.homefragment_volley_404);
|
||||
// } else {
|
||||
// message = String.format(getString(R.string.homefragment_volley_unknown),
|
||||
// response.statusCode);
|
||||
// }
|
||||
// } else {
|
||||
// message = getString(R.string.homefragment_volley_unexpected);
|
||||
// ExLog.i(getActivity(), TAG, error.toString());
|
||||
// }
|
||||
// if (message != null) {
|
||||
// Toast.makeText(getActivity(), message, Toast.LENGTH_LONG).show();
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
//
|
||||
// return result;
|
||||
// }
|
||||
|
||||
@Override
|
||||
public Loader<Cursor> onCreateLoader(int loaderId, Bundle bundle) {
|
||||
@@ -390,6 +429,16 @@ public class HomeFragment extends BaseFragment implements LoaderCallbacks<Cursor
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private class DeviceMappingData
|
||||
{
|
||||
//public String gcmId;
|
||||
public String leaderboardName;
|
||||
public String hostUrl;
|
||||
public String competitorId;
|
||||
public String deviceUid;
|
||||
}
|
||||
|
||||
private class ClickListener implements OnClickListener {
|
||||
|
||||
@@ -449,5 +498,5 @@ public class HomeFragment extends BaseFragment implements LoaderCallbacks<Cursor
|
||||
Toast.makeText(getActivity(), "Error while receiving server data", Toast.LENGTH_LONG).show();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user