diff --git a/mobile/com.sap.sailing.android.tracking.app/res/values/api_endpoints.xml b/mobile/com.sap.sailing.android.tracking.app/res/values/api_endpoints.xml index ae34b09d2a4..225828fe12e 100644 --- a/mobile/com.sap.sailing.android.tracking.app/res/values/api_endpoints.xml +++ b/mobile/com.sap.sailing.android.tracking.app/res/values/api_endpoints.xml @@ -6,5 +6,6 @@ /sailingserver/api/v1/events/{event_id} /sailingserver/api/v1/leaderboards/{leaderboard_name} /sailingserver/api/v1/competitors/{competitor_id} + /sailingserver/api/v1/competitors/{competitor_id}/team /sailingserver/api/v1/competitors/{competitor_id}/team/image diff --git a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/activities/RegattaActivity.java b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/activities/RegattaActivity.java index 6588c66e2e7..8f7b7dd52e0 100755 --- a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/activities/RegattaActivity.java +++ b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/activities/RegattaActivity.java @@ -20,6 +20,7 @@ import android.widget.Toast; import com.sap.sailing.android.shared.data.AbstractCheckinData; import com.sap.sailing.android.shared.data.CheckinUrlInfo; import com.sap.sailing.android.shared.data.LeaderboardInfo; +import com.sap.sailing.android.shared.data.http.HttpGetRequest; import com.sap.sailing.android.shared.data.http.HttpJsonPostRequest; import com.sap.sailing.android.shared.logging.ExLog; import com.sap.sailing.android.shared.ui.activities.AbstractRegattaActivity; @@ -220,9 +221,7 @@ public class RegattaActivity extends AbstractRegattaActivity implements RegattaF ImageView imageView = (ImageView) findViewById(R.id.userImage); Bitmap storedImage = getStoredImage(getLeaderboardImageFileName(leaderboard.name)); if (storedImage == null) { - if (event.imageUrl != null) { - new DownloadLeaderboardImageTask(imageView).execute(event.imageUrl); - } + askServerAboutTeamImageUrl(imageView); } else { imageView.setImageBitmap(storedImage); userImageUpdated(); @@ -240,6 +239,43 @@ public class RegattaActivity extends AbstractRegattaActivity implements RegattaF } } + public void askServerAboutTeamImageUrl(final ImageView imageView){ + try { + URL url = new URL(checkinUrl.urlString); + StringBuilder sb = new StringBuilder("http://"); + sb.append(url.getHost()); + sb.append(":"); + sb.append((url.getPort() == -1) ? 80 : url.getPort()); + sb.append(prefs.getServerCompetiorTeamPath(competitor.id)); + + HttpGetRequest getCompetitorTeamRequest = new HttpGetRequest(new URL(sb.toString()), this); + NetworkHelper.getInstance(this).executeHttpJsonRequestAsnchronously(getCompetitorTeamRequest, new NetworkHelperSuccessListener() { + @Override + public void performAction(JSONObject response) { + try { + String teamImageUri = response.getString("imageUri"); + if (teamImageUri != null) { + new DownloadLeaderboardImageTask(imageView).execute(teamImageUri); + } + } + catch (JSONException e) { + ExLog.e(getApplicationContext(), TAG, "Error: Failed to get teamImageURL: " + e.getMessage()); + } + } + }, new NetworkHelperFailureListener() { + @Override + public void performAction(NetworkHelperError e) { + ExLog.e(getApplicationContext(), TAG, + "Error: Failed to get teamImageURL: " + e.getMessage()); + } + }); + + } catch (MalformedURLException e) { + ExLog.e(this, TAG, + "Error: Failed to perform checking due to a MalformedURLException: " + e.getMessage()); + } + } + /** * @param bitmap */ diff --git a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/utils/AppPreferences.java b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/utils/AppPreferences.java index b2fe1e5a756..269b6dd6990 100644 --- a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/utils/AppPreferences.java +++ b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/utils/AppPreferences.java @@ -50,6 +50,11 @@ public class AppPreferences extends BaseAppPreferences { competitorId); } + public String getServerCompetiorTeamPath(String competitorId){ + return context.getString(R.string.preference_server_team_info_path, "/competitors").replace("{competitor_id}", + competitorId); + } + public int getGPSFixInterval() { // EditTextPreference saves value as string, even if android:inputType="number" is set String value = PrefUtils.getString(context, R.string.preference_gps_fix_interval_ms_key,