diff --git a/Habitica/AndroidManifest.xml b/Habitica/AndroidManifest.xml
index 832b03c34..82496d97e 100644
--- a/Habitica/AndroidManifest.xml
+++ b/Habitica/AndroidManifest.xml
@@ -110,6 +110,16 @@
tools:ignore="UnusedAttribute"
android:label="@string/invite_users">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Habitica/res/layout/fullprofile_attributetablerow.xml b/Habitica/res/layout/fullprofile_attributetablerow.xml
new file mode 100644
index 000000000..5c503aac6
--- /dev/null
+++ b/Habitica/res/layout/fullprofile_attributetablerow.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Habitica/res/layout/fullprofile_attributetablerow_two_textviews.xml b/Habitica/res/layout/fullprofile_attributetablerow_two_textviews.xml
new file mode 100644
index 000000000..34efeb799
--- /dev/null
+++ b/Habitica/res/layout/fullprofile_attributetablerow_two_textviews.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Habitica/res/layout/fullprofile_equipment_tablerow.xml b/Habitica/res/layout/fullprofile_equipment_tablerow.xml
new file mode 100644
index 000000000..92f2fdbed
--- /dev/null
+++ b/Habitica/res/layout/fullprofile_equipment_tablerow.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Habitica/res/layout/fullprofile_tablerow_two_textviews.xml b/Habitica/res/layout/fullprofile_tablerow_two_textviews.xml
new file mode 100644
index 000000000..4c3af311e
--- /dev/null
+++ b/Habitica/res/layout/fullprofile_tablerow_two_textviews.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Habitica/res/menu/menu_full_profile.xml b/Habitica/res/menu/menu_full_profile.xml
new file mode 100644
index 000000000..2cf30c415
--- /dev/null
+++ b/Habitica/res/menu/menu_full_profile.xml
@@ -0,0 +1,11 @@
+
+
\ No newline at end of file
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/APIHelper.java b/Habitica/src/main/java/com/habitrpg/android/habitica/APIHelper.java
index 122b4cb6d..1b5926217 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/APIHelper.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/APIHelper.java
@@ -82,6 +82,7 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import javax.net.ssl.SSLException;
@@ -120,6 +121,8 @@ public class APIHelper implements Action1 {
private final Retrofit retrofitAdapter;
private AlertDialog displayedAlert;
+ public String languageCode;
+
//private OnHabitsAPIResult mResultListener;
//private HostConfig mConfig;
public APIHelper(GsonConverterFactory gsonConverter, HostConfig hostConfig) {
@@ -129,6 +132,8 @@ public class APIHelper implements Action1 {
Crashlytics.getInstance().core.setUserName(this.hostConfig.getUser());
Amplitude.getInstance().setUserId(this.hostConfig.getUser());
+ languageCode = Locale.getDefault().getLanguage();
+
Interceptor remove_data_interceptor = chain -> {
Response response = chain.proceed(chain.request());
String stringJson = response.body().string();
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ContentCache.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ContentCache.java
index dc8c09b25..7413c5b22 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ContentCache.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ContentCache.java
@@ -19,10 +19,17 @@ import rx.schedulers.Schedulers;
public class ContentCache {
private ApiService apiService;
+ private String language;
+
public ContentCache(ApiService apiService) {
-
this.apiService = apiService;
+ this.language = "en";
+ }
+
+ public ContentCache(ApiService apiService, String language) {
+ this.apiService = apiService;
+ this.language = language;
}
public void GetQuestContent(final String key, final QuestContentCallback cb) {
@@ -73,7 +80,7 @@ public class ContentCache {
}
private void getContentAndSearchFor(final String typeOfSearch, final String searchKey, final GotContentEntryCallback gotEntry) {
- apiService.getContent()
+ apiService.getContent(language)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(contentResult -> {
@@ -117,7 +124,7 @@ public class ContentCache {
private void getContentAndSearchForList(final String typeOfSearch, final List searchKeys, final GotContentEntryCallback> gotEntry) {
List resultList = new ArrayList<>();
- apiService.getContent()
+ apiService.getContent(language)
.flatMap(contentResult -> {
List itemList = new ArrayList(contentResult.gear.flat);
itemList.add(contentResult.potion);
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaApplication.java b/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaApplication.java
index 80871a2f9..21b755a6f 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaApplication.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaApplication.java
@@ -150,7 +150,9 @@ public class HabiticaApplication extends MultiDexApplication {
int lastInstalledVersion = sharedPrefs.getInt("last_installed_version", 0);
if (lastInstalledVersion < info.versionCode) {
sharedPrefs.edit().putInt("last_installed_version", info.versionCode).apply();
- this.lazyApiHelper.get().apiService.getContent()
+ APIHelper apiHelper = this.lazyApiHelper.get();
+
+ apiHelper.apiService.getContent(apiHelper.languageCode)
.compose(this.lazyApiHelper.get().configureApiCallObserver())
.subscribe(contentResult -> {
}, throwable -> {
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.java b/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.java
index 1f4a1450e..0527d3509 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.java
@@ -5,6 +5,7 @@ import com.habitrpg.android.habitica.modules.ApiModule;
import com.habitrpg.android.habitica.modules.AppModule;
import com.habitrpg.android.habitica.ui.activities.AboutActivity;
import com.habitrpg.android.habitica.ui.activities.ClassSelectionActivity;
+import com.habitrpg.android.habitica.ui.activities.FullProfileActivity;
import com.habitrpg.android.habitica.ui.activities.GroupFormActivity;
import com.habitrpg.android.habitica.ui.activities.IntroActivity;
import com.habitrpg.android.habitica.ui.activities.LoginActivity;
@@ -156,4 +157,6 @@ public interface AppComponent {
void inject(ShopsFragment shopsFragment);
void inject(ShopFragment shopFragment);
+
+ void inject(FullProfileActivity fullProfileActivity);
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/events/commands/OpenFullProfileCommand.java b/Habitica/src/main/java/com/habitrpg/android/habitica/events/commands/OpenFullProfileCommand.java
new file mode 100644
index 000000000..2b288b741
--- /dev/null
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/events/commands/OpenFullProfileCommand.java
@@ -0,0 +1,9 @@
+package com.habitrpg.android.habitica.events.commands;
+
+public class OpenFullProfileCommand {
+ public String MemberId;
+
+ public OpenFullProfileCommand(String memberId){
+ MemberId = memberId;
+ }
+}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarWithBarsViewModel.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarWithBarsViewModel.java
index a82a4a0f0..8d5005b8d 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarWithBarsViewModel.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarWithBarsViewModel.java
@@ -193,4 +193,14 @@ public class AvatarWithBarsViewModel implements View.OnClickListener {
EventBus.getDefault().post(new OpenGemPurchaseFragmentCommand());
}
+
+ public void hideGems() {
+ gemsText.setVisibility(View.GONE);
+ }
+
+ public void valueBarLabelsToBlack() {
+ hpBar.setPartyMembers(true);
+ mpBar.setPartyMembers(true);
+ xpBar.setPartyMembers(true);
+ }
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.java
new file mode 100644
index 000000000..399864509
--- /dev/null
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.java
@@ -0,0 +1,372 @@
+package com.habitrpg.android.habitica.ui.activities;
+
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.ProgressBar;
+import android.widget.TableLayout;
+import android.widget.TableRow;
+import android.widget.TextView;
+
+import com.habitrpg.android.habitica.APIHelper;
+import com.habitrpg.android.habitica.ContentCache;
+import com.habitrpg.android.habitica.R;
+import com.habitrpg.android.habitica.components.AppComponent;
+import com.habitrpg.android.habitica.ui.AvatarView;
+import com.habitrpg.android.habitica.ui.AvatarWithBarsViewModel;
+import com.magicmicky.habitrpgwrapper.lib.models.Buffs;
+import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
+import com.magicmicky.habitrpgwrapper.lib.models.Outfit;
+import com.magicmicky.habitrpgwrapper.lib.models.Profile;
+import com.magicmicky.habitrpgwrapper.lib.models.Stats;
+import com.magicmicky.habitrpgwrapper.lib.models.tasks.ItemData;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.inject.Inject;
+
+import butterknife.BindView;
+
+public class FullProfileActivity extends BaseActivity {
+ private String userId;
+ private ContentCache contentCache;
+
+ @Inject
+ APIHelper apiHelper;
+
+ @BindView(R.id.profile_image)
+ ImageView profile_image;
+
+ @BindView(R.id.profile_blurb)
+ TextView blurbTextView;
+
+ @BindView(R.id.avatarView)
+ AvatarView avatarView;
+
+ @BindView(R.id.attributes_table)
+ TableLayout attributesTableLayout;
+
+ @BindView(R.id.equipment_table)
+ TableLayout equipmentTableLayout;
+
+ @BindView(R.id.avatar_attributes_progress)
+ ProgressBar attributesProgress;
+
+ @BindView(R.id.avatar_equip_progress)
+ ProgressBar equipmentProgress;
+
+ @BindView(R.id.avatar_with_bars)
+ View avatar_with_bars;
+ private AvatarWithBarsViewModel avatarWithBars;
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ Intent intent = getIntent();
+ Bundle bundle = intent.getExtras();
+ this.userId = bundle.getString("userId");
+
+ setTitle("loading member data..");
+
+ apiHelper.apiService.GetMember(this.userId)
+ .compose(apiHelper.configureApiCallObserver())
+ .subscribe(habitRPGUser -> updateView(habitRPGUser),
+ throwable -> {});
+
+ this.contentCache = new ContentCache(apiHelper.apiService, apiHelper.languageCode);
+
+ avatarWithBars = new AvatarWithBarsViewModel(this, avatar_with_bars);
+ avatarWithBars.hideGems();
+ avatarWithBars.valueBarLabelsToBlack();
+
+ avatar_with_bars.setBackgroundColor(getResources().getColor(R.color.transparent));
+ }
+
+ private void updateView(HabitRPGUser user) {
+ Profile profile = user.getProfile();
+ Stats stats = user.getStats();
+
+ setTitle(profile.getName());
+
+ String imageUrl = profile.getImageUrl();
+ if (imageUrl == null || imageUrl.isEmpty()) {
+ profile_image.setVisibility(View.INVISIBLE);
+ } else {
+ profile_image.setImageURI(Uri.parse(imageUrl));
+ }
+
+ String blurbText = profile.getBlurb();
+ if (blurbText != null && !blurbText.isEmpty()) {
+ blurbTextView.setText(blurbText);
+ }
+
+ avatarView.setUser(user);
+ avatarWithBars.updateData(user);
+
+ addLevelAttributes(stats, user);
+ }
+
+ // region Utils
+
+ private String upperCaseFirstLetter(String s){
+ return Character.toUpperCase(s.charAt(0)) + s.substring(1);
+ }
+
+ private void stopAndHideProgress(ProgressBar bar){
+ bar.setIndeterminate(false);
+ bar.setVisibility(View.GONE);
+ }
+
+ private String getCeiledValue(float val){
+ return ((int)Math.ceil(val)) + "";
+ }
+
+ private void addAttributeRow(TableLayout table, String key, float val){
+ int intVal = (int) Math.ceil(val);
+
+ if(intVal == 0)
+ return;
+
+ addTableRow(table, key, intVal+"", R.layout.fullprofile_attributetablerow_two_textviews);
+ }
+
+ private void addTableRow(TableLayout table, String key, float val){
+ int intVal = (int) Math.ceil(val);
+
+ if(intVal == 0)
+ return;
+
+ addTableRow(table, key, intVal+"", R.layout.fullprofile_tablerow_two_textviews);
+ }
+
+ private void addTableRow(TableLayout table, String key, String value){
+ addTableRow(table, key, value, R.layout.fullprofile_tablerow_two_textviews);
+ }
+
+ private void addTableRow(TableLayout table, String key, String value, int resourceId){
+ TableRow tableRow = (TableRow)getLayoutInflater().inflate(resourceId, null);
+
+ TextView keyTextView = (TextView)tableRow.findViewById(R.id.tableRowTextView1);
+ keyTextView.setText(key);
+
+ TextView valueTextView = (TextView)tableRow.findViewById(R.id.tableRowTextView2);
+ valueTextView.setText(value);
+
+ table.addView(tableRow);
+ }
+
+ // endregion
+
+ // region Stats
+
+ StatHelper strHelper;
+ StatHelper intHelper;
+ StatHelper conHelper;
+ StatHelper perHelper;
+
+ private void addLevelAttributes(Stats stats, HabitRPGUser user)
+ {
+ float byLevelStat = stats.getLvl()/2.0f;
+
+ strHelper = getStatHelper("Strength: ");
+ strHelper.add("Level: ", byLevelStat);
+
+ intHelper = getStatHelper("Intelligence:");
+ intHelper.add("Level: ", byLevelStat);
+
+ conHelper = getStatHelper("Constitution:");
+ conHelper.add("Level: ", byLevelStat);
+
+ perHelper = getStatHelper("Perception:");
+ perHelper.add("Level: ", byLevelStat);
+
+ Outfit outfit = user.getItems().getGear().getEquipped();
+
+ ArrayList outfitList = new ArrayList<>();
+ outfitList.add(outfit.getArmor());
+ outfitList.add(outfit.getBack());
+ outfitList.add(outfit.getBody());
+ outfitList.add(outfit.getEyeWear());
+ outfitList.add(outfit.getHead());
+ outfitList.add(outfit.getHeadAccessory());
+ outfitList.add(outfit.getShield());
+ outfitList.add(outfit.getWeapon());
+
+ contentCache.GetItemDataList(outfitList, obj ->{
+ GotGear(obj, user);
+ addNormalAddBuffAttributes(stats);
+
+ stopAndHideProgress(attributesProgress);
+ attributesTableLayout.setVisibility(View.VISIBLE);
+ });
+ }
+
+ public void GotGear(List obj, HabitRPGUser user) {
+ float strAttributes = 0;
+ float intAttributes = 0;
+ float conAttributes = 0;
+ float perAttributes = 0;
+
+ // Summarize stats and fill equipment table
+ for (ItemData i : obj){
+ int str_ = (int)i.getStr();
+ int int_ = (int)i.get_int();
+ int con_ = (int)i.getCon();
+ int per_ = (int) i.getPer();
+
+ strAttributes+= str_;
+ intAttributes+= int_;
+ conAttributes+= con_;
+ perAttributes+= per_;
+
+ StringBuilder sb = new StringBuilder();
+
+ if(str_ != 0){
+ sb.append("STR "+str_+", ");
+ }
+ if(int_ != 0){
+ sb.append("INT "+int_+", ");
+ }
+ if(con_ != 0){
+ sb.append("CON "+con_+", ");
+ }
+ if(per_ != 0){
+ sb.append("PER "+per_+", ");
+ }
+
+ // remove the last comma
+ if(sb.length() > 2)
+ {
+ sb.delete(sb.length()-2, sb.length());
+ }
+
+ addTableRow(equipmentTableLayout,i.getText(), sb.toString(), R.layout.fullprofile_equipment_tablerow);
+ }
+
+ stopAndHideProgress(equipmentProgress);
+ equipmentTableLayout.setVisibility(View.VISIBLE);
+
+ strHelper.add("Equipment: ", strAttributes);
+ intHelper.add("Equipment: ", intAttributes);
+ conHelper.add("Equipment: ", conAttributes);
+ perHelper.add("Equipment: ", perAttributes);
+
+ if(!user.getPreferences().isDisableClasses()){
+ float strClassBonus = 0;
+ float intClassBonus = 0;
+ float conClassBonus = 0;
+ float perClassBonus = 0;
+
+ switch(user.getStats().get_class()){
+ case rogue:
+ strClassBonus = strAttributes * 0.5f;
+ perClassBonus = perAttributes * 0.5f;
+ break;
+ case healer:
+ conClassBonus = conAttributes * 0.5f;
+ intClassBonus = intClassBonus * 0.5f;
+ break;
+ case warrior:
+ strClassBonus = strAttributes * 0.5f;
+ conClassBonus = conAttributes * 0.5f;
+ break;
+ case wizard:
+ intClassBonus = intClassBonus * 0.5f;
+ perClassBonus = perAttributes * 0.5f;
+ break;
+ }
+
+ strHelper.add("Class-Bonus: ", strClassBonus);
+ intHelper.add("Class-Bonus: ", intClassBonus);
+ conHelper.add("Class-Bonus: ", conClassBonus);
+ perHelper.add("Class-Bonus: ", perClassBonus);
+ }
+ }
+
+
+ private void addNormalAddBuffAttributes(Stats stats){
+ Buffs buffs = stats.getBuffs();
+
+ strHelper.add("Allocated: ", stats.getStr());
+ strHelper.add("Boosts: ", buffs.getStr());
+
+ intHelper.add("Allocated: ", stats.get_int());
+ intHelper.add("Boosts: ", buffs.get_int());
+
+ conHelper.add("Allocated: ", stats.getCon());
+ conHelper.add("Boosts: ", buffs.getCon());
+
+ perHelper.add("Allocated: ", stats.getPer());
+ perHelper.add("Boosts: ", buffs.getPer());
+ }
+
+ private StatHelper getStatHelper(String label){
+ TableRow tableRow = (TableRow)getLayoutInflater().inflate(R.layout.fullprofile_attributetablerow, null);
+ TextView keyTextView = (TextView)tableRow.findViewById(R.id.tableRowTextView1);
+
+ attributesTableLayout.addView(tableRow);
+
+ TableLayout layout = (TableLayout)tableRow.findViewById(R.id.tableRowAttributesTable);
+
+ return new StatHelper(layout, keyTextView, label);
+ }
+
+ public class StatHelper
+ {
+ private TableLayout layout;
+ private TextView textViewLabel;
+ private String attributeName;
+
+ public float currentStatCount = 0;
+
+ public StatHelper(TableLayout layout, TextView label, String attributeName){
+ this.layout = layout;
+ this.textViewLabel = label;
+ this.attributeName = attributeName;
+ }
+
+ public void add(String label, float value){
+ addAttributeRow(layout, label, value);
+
+ currentStatCount += value;
+
+ textViewLabel.setText(attributeName+" "+ getCeiledValue(currentStatCount));
+ }
+ }
+
+ // endregion
+
+ // region Navigation
+
+ @Override
+ public boolean onSupportNavigateUp() {
+ finish();
+ return true;
+ }
+
+ @Override
+ public void onBackPressed() {
+ finish();
+ }
+
+ // endregion
+
+ // region BaseActivity-Overrides
+
+ @Override
+ protected int getLayoutResId() {
+ return R.layout.activity_full_profile;
+ }
+
+ @Override
+ protected void injectActivity(AppComponent component) {
+ component.inject(this);
+ }
+
+ // endregion
+}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/IntroActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/IntroActivity.java
index 7f8fda910..c8d4b797a 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/IntroActivity.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/IntroActivity.java
@@ -49,7 +49,7 @@ public class IntroActivity extends BaseActivity implements View.OnClickListener,
this.skipButton.setOnClickListener(this);
this.finishButton.setOnClickListener(this);
- apiHelper.apiService.getContent()
+ apiHelper.apiService.getContent(apiHelper.languageCode)
.compose(apiHelper.configureApiCallObserver())
.subscribe(contentResult -> {
}, throwable -> {
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java
index 7c685e246..e92d26178 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java
@@ -1096,7 +1096,7 @@ public class MainActivity extends BaseActivity implements Action1, Ha
public void reloadContent(ReloadContentEvent event) {
if (!this.isloadingContent) {
this.isloadingContent = true;
- this.apiHelper.apiService.getContent()
+ this.apiHelper.apiService.getContent(apiHelper.languageCode)
.compose(apiHelper.configureApiCallObserver())
.subscribe(contentResult -> {
isloadingContent = false;
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/PartyMemberRecyclerViewAdapter.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/PartyMemberRecyclerViewAdapter.java
index ee5785daf..c2dfff0d6 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/PartyMemberRecyclerViewAdapter.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/PartyMemberRecyclerViewAdapter.java
@@ -2,12 +2,15 @@ package com.habitrpg.android.habitica.ui.adapter.social;
import com.habitrpg.android.habitica.R;
import com.habitrpg.android.habitica.databinding.ValueBarBinding;
+import com.habitrpg.android.habitica.events.commands.OpenFullProfileCommand;
import com.habitrpg.android.habitica.ui.AvatarView;
import com.habitrpg.android.habitica.ui.AvatarWithBarsViewModel;
+import com.habitrpg.android.habitica.ui.activities.SetupActivity;
import com.habitrpg.android.habitica.ui.helpers.ViewHelper;
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
import android.content.Context;
+import android.content.Intent;
import android.content.res.Resources;
import android.databinding.DataBindingUtil;
import android.support.v4.content.ContextCompat;
@@ -17,6 +20,8 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
+import org.greenrobot.eventbus.EventBus;
+
import java.util.List;
import butterknife.BindView;
@@ -121,6 +126,15 @@ public class PartyMemberRecyclerViewAdapter extends RecyclerView.Adapter {
+ OpenFullProfileCommand cmd = new OpenFullProfileCommand(user.getId());
+
+ EventBus.getDefault().post(cmd);
+ });
}
+
+
}
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RewardsRecyclerViewAdapter.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RewardsRecyclerViewAdapter.java
index 3c4f5e3df..7eda76223 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RewardsRecyclerViewAdapter.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RewardsRecyclerViewAdapter.java
@@ -16,6 +16,7 @@ import android.view.ViewGroup;
import java.util.ArrayList;
import java.util.List;
+import java.util.Locale;
import rx.Observable;
@@ -29,7 +30,7 @@ public class RewardsRecyclerViewAdapter extends BaseTasksRecyclerViewAdapter {
}, throwable -> {
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/TavernFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/TavernFragment.java
index 28aa7ccea..9e93d1719 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/TavernFragment.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/TavernFragment.java
@@ -14,6 +14,8 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import java.util.Locale;
+
public class TavernFragment extends BaseMainFragment {
public ViewPager viewPager;
@@ -60,7 +62,7 @@ public class TavernFragment extends BaseMainFragment {
TavernFragment.this.tabLayout.setupWithViewPager(TavernFragment.this.viewPager);
}
- ContentCache contentCache = new ContentCache(apiHelper.apiService);
+ ContentCache contentCache = new ContentCache(apiHelper.apiService, apiHelper.languageCode);
contentCache.GetQuestContent(group.quest.key, content -> {
if (questInfoFragment != null) {
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyFragment.java
index 793b4221c..6eba7f258 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyFragment.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyFragment.java
@@ -3,6 +3,8 @@ package com.habitrpg.android.habitica.ui.fragments.social.party;
import com.habitrpg.android.habitica.ContentCache;
import com.habitrpg.android.habitica.R;
import com.habitrpg.android.habitica.components.AppComponent;
+import com.habitrpg.android.habitica.events.commands.OpenFullProfileCommand;
+import com.habitrpg.android.habitica.ui.activities.FullProfileActivity;
import com.habitrpg.android.habitica.ui.activities.GroupFormActivity;
import com.habitrpg.android.habitica.ui.activities.PartyInviteActivity;
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
@@ -25,6 +27,8 @@ import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
+import org.greenrobot.eventbus.Subscribe;
+
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -53,7 +57,7 @@ public class PartyFragment extends BaseMainFragment {
viewPager.setCurrentItem(0);
- contentCache = new ContentCache(apiHelper.apiService);
+ contentCache = new ContentCache(apiHelper.apiService, apiHelper.languageCode);
// Get the full group data
if (this.user != null && this.user.getParty() != null && this.user.getParty().id != null) {
@@ -338,4 +342,16 @@ public class PartyFragment extends BaseMainFragment {
tabLayout.setupWithViewPager(viewPager);
}
}
+
+ @Subscribe
+ public void onEvent(OpenFullProfileCommand cmd)
+ {
+ Bundle bundle = new Bundle();
+ bundle.putString("userId", cmd.MemberId);
+
+ Intent intent = new Intent(activity, FullProfileActivity.class);
+ intent.putExtras(bundle);
+ intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
+ startActivity(intent);
+ }
}
diff --git a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/ApiService.java b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/ApiService.java
index 8a0a5f4ef..9c283b46e 100644
--- a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/ApiService.java
+++ b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/ApiService.java
@@ -47,7 +47,7 @@ public interface ApiService {
Observable getStatus();
@GET("content")
- Observable getContent();
+ Observable getContent(@Query("language") String language);
/* user API */
@@ -230,6 +230,9 @@ public interface ApiService {
Observable validatePurchase(@Body PurchaseValidationRequest request);
//Members URL
+ @GET("members/{mid}")
+ Observable GetMember(@Path("mid") String memberId);
+
@POST("members/send-private-message")
Observable postPrivateMessage(@Body HashMap messageDetails);
diff --git a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/Stats.java b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/Stats.java
index 7a32284fa..9deb2cf18 100644
--- a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/Stats.java
+++ b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/Stats.java
@@ -26,7 +26,7 @@ public class Stats extends PlayerMinStats {
}
public Integer getMaxHealth() {
- return maxHealth != null ? maxHealth : Integer.valueOf(0);
+ return maxHealth != null ? maxHealth : Integer.valueOf(50);
}
public void setMaxHealth(Integer maxHealth) {