diff --git a/Habitica/res/menu/menu_party.xml b/Habitica/res/menu/menu_party.xml
index 72766c45d..fe9f258fb 100644
--- a/Habitica/res/menu/menu_party.xml
+++ b/Habitica/res/menu/menu_party.xml
@@ -1,8 +1,13 @@
\ No newline at end of file
diff --git a/Habitica/res/menu/menu_party_admin.xml b/Habitica/res/menu/menu_party_admin.xml
new file mode 100644
index 000000000..a5f15352d
--- /dev/null
+++ b/Habitica/res/menu/menu_party_admin.xml
@@ -0,0 +1,13 @@
+
+
\ No newline at end of file
diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml
index dd639b060..d3cab148c 100644
--- a/Habitica/res/values/strings.xml
+++ b/Habitica/res/values/strings.xml
@@ -332,14 +332,14 @@ To start, which parts of your life do you want to improve?
By Email
Invite Existing Users
Send
- Invite
+ Invite Friends
If you have friends already using Habitica, invite them by User ID here.
If a friend joins Habitica via your email, they\'ll automatically be invited to your party!
Add Invites
User ID
Email
Invite to Party
- Share using
+ Share usingo
I got to level %s in Habitica by improving my real-life habits!
I just hatched a %1$s %2$s pet in Habitica by completing my real-life tasks!
I just gained a %1$s %2$s mount in Habitica by completing my real-life tasks!
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GroupFormActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GroupFormActivity.java
index c64feeb59..6944ce16a 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GroupFormActivity.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GroupFormActivity.java
@@ -28,6 +28,8 @@ import butterknife.Bind;
public class GroupFormActivity extends BaseActivity {
+ public static final int GROUP_FORM_ACTIVITY = 11;
+
String groupID;
String groupName;
String groupDescription;
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseMainFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseMainFragment.java
index 4c2afc2f2..aec12f2e9 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseMainFragment.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseMainFragment.java
@@ -109,5 +109,4 @@ public abstract class BaseMainFragment extends BaseFragment {
super.onSaveInstanceState(outState);
}
-
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildFragment.java
index a9bcffd3d..880b0b8eb 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildFragment.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildFragment.java
@@ -24,7 +24,6 @@ import retrofit.RetrofitError;
import retrofit.client.Response;
public class GuildFragment extends BaseMainFragment implements Callback {
- private final int GROUP_FORM_ACTIVITY = 11;
private Group guild;
public boolean isMember;
@@ -190,14 +189,14 @@ public class GuildFragment extends BaseMainFragment implements Callback {
Intent intent = new Intent(activity, GroupFormActivity.class);
intent.putExtras(bundle);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
- startActivityForResult(intent, GROUP_FORM_ACTIVITY);
+ startActivityForResult(intent, GroupFormActivity.GROUP_FORM_ACTIVITY);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode) {
- case (GROUP_FORM_ACTIVITY) : {
+ case (GroupFormActivity.GROUP_FORM_ACTIVITY) : {
if (resultCode == Activity.RESULT_OK) {
boolean needsSaving = false;
Bundle bundle = data.getExtras();
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 a03fd4911..56a45f58b 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
@@ -1,6 +1,6 @@
package com.habitrpg.android.habitica.ui.fragments.social.party;
-import android.content.DialogInterface;
+import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
@@ -16,13 +16,13 @@ import android.view.ViewGroup;
import com.habitrpg.android.habitica.ContentCache;
import com.habitrpg.android.habitica.R;
+import com.habitrpg.android.habitica.ui.activities.GroupFormActivity;
import com.habitrpg.android.habitica.ui.activities.PartyInviteActivity;
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
import com.habitrpg.android.habitica.ui.fragments.social.ChatListFragment;
import com.habitrpg.android.habitica.ui.fragments.social.GroupInformationFragment;
import com.magicmicky.habitrpgwrapper.lib.models.Group;
import com.magicmicky.habitrpgwrapper.lib.models.UserParty;
-import com.magicmicky.habitrpgwrapper.lib.models.inventory.QuestContent;
import java.util.ArrayList;
import java.util.Collections;
@@ -85,6 +85,8 @@ public class PartyFragment extends BaseMainFragment {
chatListFragment.seenGroupId = group.id;
}
+ PartyFragment.this.activity.supportInvalidateOptionsMenu();
+
if (group.quest != null && group.quest.key != null && !group.quest.key.isEmpty()) {
contentCache.GetQuestContent(group.quest.key, content -> {
if (groupInformationFragment != null) {
@@ -108,7 +110,13 @@ public class PartyFragment extends BaseMainFragment {
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
- inflater.inflate(R.menu.menu_party, menu);
+ if (this.group != null) {
+ if (this.group.leaderID.equals(this.user.getId())) {
+ inflater.inflate(R.menu.menu_party_admin, menu);
+ } else {
+ inflater.inflate(R.menu.menu_party, menu);
+ }
+ }
}
@Override
@@ -123,43 +131,110 @@ public class PartyFragment extends BaseMainFragment {
Intent intent = new Intent(getActivity(), PartyInviteActivity.class);
startActivityForResult(intent, PartyInviteActivity.RESULT_SEND_INVITES);
return true;
+ case R.id.menu_guild_edit:
+ this.displayEditForm();
+ return true;
+ case R.id.menu_guild_leave:
+ this.mAPIHelper.apiService.leaveGroup(this.group.id, new Callback() {
+ @Override
+ public void success(Group group, Response response) {
+ getActivity().getSupportFragmentManager().beginTransaction().remove(PartyFragment.this).commit();
+ }
+
+ @Override
+ public void failure(RetrofitError error) {
+
+ }
+ });
+ return true;
}
return super.onOptionsItemSelected(item);
}
+ private void displayEditForm() {
+ Bundle bundle = new Bundle();
+ bundle.putString("groupID",this.group.id);
+ bundle.putString("name",this.group.name);
+ bundle.putString("description",this.group.description);
+ bundle.putString("leader",this.group.leaderID);
+
+ Intent intent = new Intent(activity, GroupFormActivity.class);
+ intent.putExtras(bundle);
+ intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
+ startActivityForResult(intent, GroupFormActivity.GROUP_FORM_ACTIVITY);
+ }
+
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
- if (resultCode == PartyInviteActivity.RESULT_SEND_INVITES) {
- Map inviteData = new HashMap<>();
- inviteData.put("inviter", this.user.getProfile().getName());
- if (data.getBooleanExtra("isEmail", false)) {
- String[] emails = data.getStringArrayExtra("emails");
- List> invites = new ArrayList<>();
- for (String email : emails) {
- HashMap invite = new HashMap<>();
- invite.put("name", "");
- invite.put("email", email);
- invites.add(invite);
+ switch(requestCode) {
+ case (GroupFormActivity.GROUP_FORM_ACTIVITY) : {
+ if (resultCode == Activity.RESULT_OK) {
+ boolean needsSaving = false;
+ Bundle bundle = data.getExtras();
+ if (this.group.name != null && !this.group.name.equals(bundle.getString("name"))) {
+ this.group.name = bundle.getString("name");
+ needsSaving = true;
+ }
+ if (this.group.description != null && !this.group.description.equals(bundle.getString("description"))) {
+ this.group.description = bundle.getString("description");
+ needsSaving = true;
+ }
+ if (this.group.leaderID != null && !this.group.leaderID.equals(bundle.getString("leader"))) {
+ this.group.leaderID = bundle.getString("leader");
+ needsSaving = true;
+ }
+ if (this.group.privacy != null && !this.group.privacy.equals(bundle.getString("privacy"))) {
+ this.group.privacy = bundle.getString("privacy");
+ needsSaving = true;
+ }
+ if (needsSaving) {
+ this.mAPIHelper.apiService.updateGroup(this.group.id, this.group, new Callback() {
+ @Override
+ public void success(Void aVoid, Response response) {
+ }
+
+ @Override
+ public void failure(RetrofitError error) {
+
+ }
+ });
+ this.groupInformationFragment.setGroup(group);
+ }
}
- inviteData.put("emails", invites);
- } else {
- String[] userIDs = data.getStringArrayExtra("userIDs");
- List invites = new ArrayList<>();
- Collections.addAll(invites, userIDs);
- inviteData.put("uuids", invites);
+ break;
}
- this.mAPIHelper.apiService.inviteToGroup(this.group.id, inviteData, new Callback() {
- @Override
- public void success(Void group, Response response) {
+ case (PartyInviteActivity.RESULT_SEND_INVITES) : {
+ Map inviteData = new HashMap<>();
+ inviteData.put("inviter", this.user.getProfile().getName());
+ if (data.getBooleanExtra("isEmail", false)) {
+ String[] emails = data.getStringArrayExtra("emails");
+ List> invites = new ArrayList<>();
+ for (String email : emails) {
+ HashMap invite = new HashMap<>();
+ invite.put("name", "");
+ invite.put("email", email);
+ invites.add(invite);
+ }
+ inviteData.put("emails", invites);
+ } else {
+ String[] userIDs = data.getStringArrayExtra("userIDs");
+ List invites = new ArrayList<>();
+ Collections.addAll(invites, userIDs);
+ inviteData.put("uuids", invites);
}
+ this.mAPIHelper.apiService.inviteToGroup(this.group.id, inviteData, new Callback() {
+ @Override
+ public void success(Void group, Response response) {
+ }
- @Override
- public void failure(RetrofitError error) {
+ @Override
+ public void failure(RetrofitError error) {
- }
- });
+ }
+ });
+ }
}
}