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) {