mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-05-17 03:09:00 +00:00
allow party editing and leaving
This commit is contained in:
parent
af7da65c0d
commit
d64f150bdc
7 changed files with 131 additions and 38 deletions
|
|
@ -1,8 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
<item android:id="@+id/menu_invite_item"
|
||||
android:title="@string/invite"
|
||||
app:showAsAction="never" />
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<item
|
||||
android:id="@+id/menu_invite_item"
|
||||
android:title="@string/invite"
|
||||
app:showAsAction="never" />
|
||||
<item
|
||||
android:id="@+id/menu.guild.leave"
|
||||
android:orderInCategory="1"
|
||||
app:showAsAction="ifRoom"
|
||||
android:title="@string/leave" />
|
||||
</menu>
|
||||
13
Habitica/res/menu/menu_party_admin.xml
Normal file
13
Habitica/res/menu/menu_party_admin.xml
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
<item android:id="@+id/menu_invite_item"
|
||||
android:title="@string/invite"
|
||||
app:showAsAction="never" />
|
||||
<item
|
||||
android:id="@+id/menu.guild.edit"
|
||||
android:orderInCategory="1"
|
||||
app:showAsAction="never"
|
||||
android:title="@string/action_edit" />
|
||||
</menu>
|
||||
|
|
@ -332,14 +332,14 @@ To start, which parts of your life do you want to improve?</string>
|
|||
<string name="by_email">By Email</string>
|
||||
<string name="invite_existing_users">Invite Existing Users</string>
|
||||
<string name="send">Send</string>
|
||||
<string name="invite">Invite</string>
|
||||
<string name="invite">Invite Friends</string>
|
||||
<string name="invite_id_description">If you have friends already using Habitica, invite them by User ID here.</string>
|
||||
<string name="invite_email_description">If a friend joins Habitica via your email, they\'ll automatically be invited to your party!</string>
|
||||
<string name="add_invites">Add Invites</string>
|
||||
<string name="user_id">User ID</string>
|
||||
<string name="email">Email</string>
|
||||
<string name="invite_users">Invite to Party</string>
|
||||
<string name="share_using">Share using</string>
|
||||
<string name="share_using">Share using</string>o
|
||||
<string name="share_levelup" formatted="false">I got to level %s in Habitica by improving my real-life habits!</string>
|
||||
<string name="share_hatched" formatted="false">I just hatched a %1$s %2$s pet in Habitica by completing my real-life tasks!</string>
|
||||
<string name="share_raised" formatted="false">I just gained a %1$s %2$s mount in Habitica by completing my real-life tasks!</string>
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -109,5 +109,4 @@ public abstract class BaseMainFragment extends BaseFragment {
|
|||
|
||||
super.onSaveInstanceState(outState);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@ import retrofit.RetrofitError;
|
|||
import retrofit.client.Response;
|
||||
|
||||
public class GuildFragment extends BaseMainFragment implements Callback<Group> {
|
||||
private final int GROUP_FORM_ACTIVITY = 11;
|
||||
|
||||
private Group guild;
|
||||
public boolean isMember;
|
||||
|
|
@ -190,14 +189,14 @@ public class GuildFragment extends BaseMainFragment implements Callback<Group> {
|
|||
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();
|
||||
|
|
|
|||
|
|
@ -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<Group>() {
|
||||
@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<String, Object> inviteData = new HashMap<>();
|
||||
inviteData.put("inviter", this.user.getProfile().getName());
|
||||
if (data.getBooleanExtra("isEmail", false)) {
|
||||
String[] emails = data.getStringArrayExtra("emails");
|
||||
List<HashMap<String, String>> invites = new ArrayList<>();
|
||||
for (String email : emails) {
|
||||
HashMap<String, String> 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<Void>() {
|
||||
@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<String> invites = new ArrayList<>();
|
||||
Collections.addAll(invites, userIDs);
|
||||
inviteData.put("uuids", invites);
|
||||
break;
|
||||
}
|
||||
this.mAPIHelper.apiService.inviteToGroup(this.group.id, inviteData, new Callback<Void>() {
|
||||
@Override
|
||||
public void success(Void group, Response response) {
|
||||
case (PartyInviteActivity.RESULT_SEND_INVITES) : {
|
||||
Map<String, Object> inviteData = new HashMap<>();
|
||||
inviteData.put("inviter", this.user.getProfile().getName());
|
||||
if (data.getBooleanExtra("isEmail", false)) {
|
||||
String[] emails = data.getStringArrayExtra("emails");
|
||||
List<HashMap<String, String>> invites = new ArrayList<>();
|
||||
for (String email : emails) {
|
||||
HashMap<String, String> invite = new HashMap<>();
|
||||
invite.put("name", "");
|
||||
invite.put("email", email);
|
||||
invites.add(invite);
|
||||
}
|
||||
inviteData.put("emails", invites);
|
||||
} else {
|
||||
String[] userIDs = data.getStringArrayExtra("userIDs");
|
||||
List<String> invites = new ArrayList<>();
|
||||
Collections.addAll(invites, userIDs);
|
||||
inviteData.put("uuids", invites);
|
||||
}
|
||||
this.mAPIHelper.apiService.inviteToGroup(this.group.id, inviteData, new Callback<Void>() {
|
||||
@Override
|
||||
public void success(Void group, Response response) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue