diff --git a/Habitica/assets/paperboy/changelog.json b/Habitica/assets/paperboy/changelog.json
index a3c1df1ee..28ab5f300 100644
--- a/Habitica/assets/paperboy/changelog.json
+++ b/Habitica/assets/paperboy/changelog.json
@@ -4,7 +4,7 @@
"items":[
{
"type": "F",
- "title": "Party :)"
+ "title": "Party Information / Chat / Members"
},
{
"type": "B",
diff --git a/Habitica/res/layout/activity_party.xml b/Habitica/res/layout/activity_party.xml
index f2a0c6a0a..992fa5f1e 100644
--- a/Habitica/res/layout/activity_party.xml
+++ b/Habitica/res/layout/activity_party.xml
@@ -18,12 +18,11 @@
tools:context=".MainActivity">
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Habitica/src/com/habitrpg/android/habitica/ContentCache.java b/Habitica/src/com/habitrpg/android/habitica/ContentCache.java
new file mode 100644
index 000000000..669d7ccfa
--- /dev/null
+++ b/Habitica/src/com/habitrpg/android/habitica/ContentCache.java
@@ -0,0 +1,77 @@
+package com.habitrpg.android.habitica;
+
+import com.magicmicky.habitrpgwrapper.lib.api.ApiService;
+import com.magicmicky.habitrpgwrapper.lib.models.ContentResult;
+import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
+import com.magicmicky.habitrpgwrapper.lib.models.QuestBoss;
+import com.magicmicky.habitrpgwrapper.lib.models.QuestContent;
+import com.raizlabs.android.dbflow.sql.SqlUtils;
+import com.raizlabs.android.dbflow.sql.builder.Condition;
+import com.raizlabs.android.dbflow.sql.language.Insert;
+import com.raizlabs.android.dbflow.sql.language.Select;
+
+import java.util.HashMap;
+
+import retrofit.Callback;
+import retrofit.RetrofitError;
+import retrofit.client.Response;
+
+/**
+ * Created by Negue on 29.09.2015.
+ */
+public class ContentCache {
+ public interface QuestContentCallback{
+ void GotQuest(QuestContent content);
+ }
+
+
+ private ApiService apiService;
+
+ public ContentCache(ApiService apiService){
+
+ this.apiService = apiService;
+ }
+
+ public void GetQuestContent(final String key, final QuestContentCallback cb){
+ final QuestContent quest = new Select().from(QuestContent.class).where(Condition.column("key").eq(key)).querySingle();
+
+ if(quest != null){
+ QuestBoss boss = new Select().from(QuestBoss.class).where(Condition.column("key").eq(key)).querySingle();
+ quest.boss = boss;
+
+ cb.GotQuest(quest);
+ }
+ else
+ {
+ // load from api and save to db
+
+ apiService.getContent(new Callback() {
+ @Override
+ public void success(ContentResult contentResult, Response response) {
+
+ QuestContent searchedQuest = null;
+
+ for (QuestContent quest : contentResult.quests.values()) {
+ quest.save();
+
+ if(quest.boss != null) {
+ quest.boss.key = quest.key;
+ quest.boss.save();
+ }
+
+ if(quest.key.equals(key)){
+ searchedQuest = quest;
+ }
+ }
+
+ cb.GotQuest(searchedQuest);
+ }
+
+ @Override
+ public void failure(RetrofitError error) {
+
+ }
+ });
+ }
+ }
+}
diff --git a/Habitica/src/com/habitrpg/android/habitica/PartyActivity.java b/Habitica/src/com/habitrpg/android/habitica/PartyActivity.java
index a75d5a6ca..4091dc238 100644
--- a/Habitica/src/com/habitrpg/android/habitica/PartyActivity.java
+++ b/Habitica/src/com/habitrpg/android/habitica/PartyActivity.java
@@ -13,10 +13,10 @@ import com.habitrpg.android.habitica.ui.fragments.PartyInformationFragment;
import com.habitrpg.android.habitica.ui.fragments.PartyMemberListFragment;
import com.magicmicky.habitrpgwrapper.lib.models.Group;
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
+import com.magicmicky.habitrpgwrapper.lib.models.QuestContent;
import com.raizlabs.android.dbflow.sql.builder.Condition;
import com.raizlabs.android.dbflow.sql.language.Select;
-import java.util.ArrayList;
import java.util.HashMap;
import butterknife.InjectView;
@@ -31,6 +31,8 @@ public class PartyActivity extends AvatarActivityBase implements AppBarLayout.On
private APIHelper mAPIHelper;
+ private Group group;
+
@Override
protected int getLayoutRes() {
return R.layout.activity_party;
@@ -53,6 +55,38 @@ public class PartyActivity extends AvatarActivityBase implements AppBarLayout.On
updateUserAvatars();
+ final ContentCache contentCache = new ContentCache(mAPIHelper.apiService);
+
+
+ // Get the full group data
+ mAPIHelper.apiService.getGroup("party", new Callback() {
+ @Override
+ public void success(Group group, Response response) {
+ PartyActivity.this.group = group;
+
+ if (partyMemberListFragment != null) {
+ partyMemberListFragment.setMemberList(group.members);
+ }
+
+ if (partyInformationFragment != null) {
+ partyInformationFragment.setGroup(group);
+ }
+
+ if (group.quest != null && !group.quest.key.isEmpty()) {
+ contentCache.GetQuestContent(group.quest.key, new ContentCache.QuestContentCallback() {
+ @Override
+ public void GotQuest(QuestContent content) {
+ partyInformationFragment.setQuestContent(content);
+ }
+ });
+ }
+ }
+
+ @Override
+ public void failure(RetrofitError error) {
+
+ }
+ });
}
@@ -70,6 +104,9 @@ public class PartyActivity extends AvatarActivityBase implements AppBarLayout.On
private HashMap fragmentDictionary = new HashMap<>();
+ private PartyMemberListFragment partyMemberListFragment;
+ private PartyInformationFragment partyInformationFragment;
+
public void setViewPagerAdapter() {
android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager();
@@ -83,7 +120,7 @@ public class PartyActivity extends AvatarActivityBase implements AppBarLayout.On
switch (position) {
case 0: {
- fragment = new PartyInformationFragment();
+ fragment = partyInformationFragment = new PartyInformationFragment(group);
break;
}
case 1: {
@@ -91,7 +128,7 @@ public class PartyActivity extends AvatarActivityBase implements AppBarLayout.On
break;
}
case 2: {
- fragment = new PartyMemberListFragment(PartyActivity.this, mAPIHelper.apiService);
+ fragment = partyMemberListFragment = new PartyMemberListFragment(PartyActivity.this, group);
break;
}
default:
diff --git a/Habitica/src/com/habitrpg/android/habitica/ui/adapter/ChatRecyclerViewAdapter.java b/Habitica/src/com/habitrpg/android/habitica/ui/adapter/ChatRecyclerViewAdapter.java
index bb1a7a8d3..ec094bfb5 100644
--- a/Habitica/src/com/habitrpg/android/habitica/ui/adapter/ChatRecyclerViewAdapter.java
+++ b/Habitica/src/com/habitrpg/android/habitica/ui/adapter/ChatRecyclerViewAdapter.java
@@ -61,16 +61,12 @@ public class ChatRecyclerViewAdapter extends RecyclerView.Adapter 0){
+ holder.bind(messages.get(position - 1));
return;
}
@@ -114,7 +110,7 @@ public class ChatRecyclerViewAdapter extends RecyclerView.Adapter() {
- @Override
- public void success(Group group, Response response) {
- viewAdapter.setMemberList(group.members);
- }
-
- @Override
- public void failure(RetrofitError error) {
-
- }
- });
-
+ if(group != null){
+ setMemberList(group.members);
+ }
+ }
+ public void setMemberList(ArrayList members){
+ viewAdapter.setMemberList(members);
}
}
diff --git a/Habitica/src/com/habitrpg/android/habitica/ui/helpers/DataBindingUtils.java b/Habitica/src/com/habitrpg/android/habitica/ui/helpers/DataBindingUtils.java
index f0eae1c8f..54c89b30e 100644
--- a/Habitica/src/com/habitrpg/android/habitica/ui/helpers/DataBindingUtils.java
+++ b/Habitica/src/com/habitrpg/android/habitica/ui/helpers/DataBindingUtils.java
@@ -24,7 +24,7 @@ public class DataBindingUtils {
@BindingAdapter("bind:imageName")
public static void loadImage(ImageView view, String imageName) {
- Picasso.with(view.getContext()).load("https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_"+ imageName +".png").into(view);
+ Picasso.with(view.getContext()).load("https://habitica-assets.s3.amazonaws.com/mobileApp/images/"+ imageName +".png").into(view);
}
@BindingAdapter("bind:cardColor")
diff --git a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/api/ApiService.java b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/api/ApiService.java
index b0342f3f4..2103116fc 100644
--- a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/api/ApiService.java
+++ b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/api/ApiService.java
@@ -32,6 +32,10 @@ public interface ApiService {
@GET("/status")
void getStatus(Callback statusCallback);
+ @GET("/content")
+ void getContent(Callback contentResultCallback);
+
+ /* User API */
@GET("/user/")
void getUser(Callback habitRPGUserCallback);
@@ -39,9 +43,6 @@ public interface ApiService {
@GET("/user/inventory/buy")
void getInventoryBuyableGear(Callback> buyableGearCallback);
- @GET("/content")
- void getContent(Callback contentResultCallback);
-
@POST("/user/inventory/buy/{key}")
void buyItem(@Path("key") String itemKey, Callback voidCallback);
@@ -114,8 +115,7 @@ public interface ApiService {
void seenMessage(@Path("gid") String groupId, Callback cb);
/*
- @GET("/content")
- void getContent();//Check Callback
+
diff --git a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/ContentResult.java b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/ContentResult.java
index 5238ff366..9ea134919 100644
--- a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/ContentResult.java
+++ b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/ContentResult.java
@@ -2,6 +2,8 @@ package com.magicmicky.habitrpgwrapper.lib.models;
import com.magicmicky.habitrpgwrapper.lib.models.tasks.ItemData;
+import java.util.HashMap;
+
/**
* Created by Negue on 15.07.2015.
*/
@@ -12,5 +14,8 @@ public class ContentResult {
public ItemData armoire;
public ContentGear gear;
+
+
+ public HashMap quests;
}
diff --git a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/Quest.java b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/Quest.java
index f815562f9..96f52a7d5 100644
--- a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/Quest.java
+++ b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/Quest.java
@@ -8,6 +8,8 @@ import com.raizlabs.android.dbflow.annotation.PrimaryKey;
import com.raizlabs.android.dbflow.annotation.Table;
import com.raizlabs.android.dbflow.structure.BaseModel;
+import java.util.HashMap;
+
/**
* Created by viirus on 06/07/15.
*/
@@ -18,6 +20,13 @@ public class Quest extends BaseModel {
public String key;
@Column
+ public boolean active;
+
+ @Column
+ public String leader;
+
+ public HashMap members;
+
@ForeignKey(references = {@ForeignKeyReference(columnName = "progress_id",
columnType = Long.class,
foreignColumnName = "id")})
diff --git a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/QuestBoss.java b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/QuestBoss.java
new file mode 100644
index 000000000..bdebb00d0
--- /dev/null
+++ b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/QuestBoss.java
@@ -0,0 +1,79 @@
+package com.magicmicky.habitrpgwrapper.lib.models;
+
+import com.habitrpg.android.habitica.HabitDatabase;
+import com.raizlabs.android.dbflow.annotation.Column;
+import com.raizlabs.android.dbflow.annotation.PrimaryKey;
+import com.raizlabs.android.dbflow.annotation.Table;
+import com.raizlabs.android.dbflow.structure.BaseModel;
+
+@Table(databaseName = HabitDatabase.NAME)
+public class QuestBoss extends BaseModel {
+
+ @PrimaryKey
+ @Column
+ public String key;
+
+ @Column
+ public String name;
+
+ @Column
+ public double hp;
+
+ @Column
+ public double str;
+
+ @Column
+ public double def;
+
+ /* Boss Columns */
+
+ @Column
+ public String rage_title;
+
+ @Column
+ public String rage_description;
+
+ @Column
+ public double rage_value;
+
+ @Column
+ public String rage_tavern;
+
+ @Column
+ public String rage_stables;
+
+ @Column
+ public String rage_market;
+
+ public class QuestBossRage {
+ public String title;
+
+ public String description;
+
+ public double value;
+
+ public String tavern;
+
+ public String stables;
+
+ public String market;
+ }
+
+ public QuestBossRage rage;
+
+ @Override
+ public void save() {
+ // Just to save the Json-Object as DB-Columns
+
+ if(rage != null && rage.title != null && !rage.title.isEmpty()){
+ rage_title = rage.title;
+ rage_description = rage.description;
+ rage_value = rage.value;
+ rage_tavern = rage.tavern;
+ rage_stables = rage.stables;
+ rage_market = rage.market;
+ }
+
+ super.save();
+ }
+}
diff --git a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/QuestContent.java b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/QuestContent.java
new file mode 100644
index 000000000..089154720
--- /dev/null
+++ b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/QuestContent.java
@@ -0,0 +1,43 @@
+package com.magicmicky.habitrpgwrapper.lib.models;
+
+import com.habitrpg.android.habitica.HabitDatabase;
+import com.raizlabs.android.dbflow.annotation.Column;
+import com.raizlabs.android.dbflow.annotation.PrimaryKey;
+import com.raizlabs.android.dbflow.annotation.Table;
+import com.raizlabs.android.dbflow.structure.BaseModel;
+
+/**
+ * Created by Negue on 29.09.2015.
+ */
+@Table(databaseName = HabitDatabase.NAME)
+public class QuestContent extends BaseModel {
+ @PrimaryKey
+ @Column
+ public String key;
+
+ @Column
+ public String text;
+
+ @Column
+ public String notes;
+
+ @Column
+ public double value;
+
+ @Column
+ public String previous;
+
+ @Column
+ public int lvl;
+
+ @Column
+ public boolean canBuy;
+
+ @Column
+ public String category;
+
+ public QuestBoss boss;
+
+ // todo drops
+}
+