Implement invite to guild button

This commit is contained in:
Phillip Thelen 2019-04-29 17:42:29 +02:00
parent 598cadfcf4
commit 4129fcd08e
8 changed files with 66 additions and 22 deletions

View file

@ -133,10 +133,9 @@
android:value=".ui.activities.MainActivity" />
</activity>
<activity
android:name=".ui.activities.PartyInviteActivity"
android:name=".ui.activities.GroupInviteActivity"
android:theme="@style/AppThemeWithActionBarBlackText"
tools:ignore="UnusedAttribute"
android:label="@string/invite_users">
tools:ignore="UnusedAttribute">
</activity>
<activity
android:name=".ui.activities.FullProfileActivity"

View file

@ -101,9 +101,11 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@color/white"
android:showDividers="beginning|end|middle"
android:divider="@drawable/vertical_divider">
android:background="@color/white">
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/gray_500" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
@ -128,6 +130,11 @@
style="@style/HabiticaButton.Green"
android:layout_marginStart="@dimen/spacing_large"/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/gray_500" />
<LinearLayout
android:id="@+id/leader_wrapper"
android:layout_width="match_parent"
@ -189,6 +196,12 @@
tools:text="@string/inn_description"
android:layout_marginTop="@dimen/spacing_large" />
</com.habitrpg.android.habitica.ui.views.CollapsibleSectionView>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/gray_500"
android:layout_marginTop="@dimen/spacing_medium"/>
</LinearLayout>
<Button
android:id="@+id/leave_button"

View file

@ -9,7 +9,7 @@
android:id="@+id/separator"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/days_gray"/>
android:background="@color/gray_500"/>
<LinearLayout
android:id="@+id/title_view"
android:layout_width="match_parent"

View file

@ -909,4 +909,5 @@
<string name="guild_summary">Guild Summary</string>
<string name="guild_members">Guild Members</string>
<string name="guild_bank">Guild Bank</string>
<string name="invite_to_party">Invite to Party</string>
</resources>

View file

@ -28,7 +28,7 @@ import com.habitrpg.android.habitica.ui.activities.IntroActivity;
import com.habitrpg.android.habitica.ui.activities.LoginActivity;
import com.habitrpg.android.habitica.ui.activities.MainActivity;
import com.habitrpg.android.habitica.ui.activities.MaintenanceActivity;
import com.habitrpg.android.habitica.ui.activities.PartyInviteActivity;
import com.habitrpg.android.habitica.ui.activities.GroupInviteActivity;
import com.habitrpg.android.habitica.ui.activities.PrefsActivity;
import com.habitrpg.android.habitica.ui.activities.ReportMessageActivity;
import com.habitrpg.android.habitica.ui.activities.SetupActivity;
@ -130,7 +130,7 @@ public interface AppComponent {
void inject(MaintenanceActivity maintenanceActivity);
void inject(PartyInviteActivity partyInviteActivity);
void inject(GroupInviteActivity groupInviteActivity);
void inject(PrefsActivity prefsActivity);

View file

@ -28,7 +28,7 @@ import java.util.*
import javax.inject.Inject
import javax.inject.Named
class PartyInviteActivity : BaseActivity() {
class GroupInviteActivity : BaseActivity() {
@field:[Inject Named(AppModule.NAMED_USER_ID)]
lateinit var userId: String
@ -51,6 +51,12 @@ class PartyInviteActivity : BaseActivity() {
super.onCreate(savedInstanceState)
viewPager.currentItem = 0
if (intent.getStringExtra("groupType") == "party") {
supportActionBar?.title = getString(R.string.invite_to_party)
} else {
supportActionBar?.title = getString(R.string.invite_to_guild)
}
setViewPagerAdapter()
}
@ -58,7 +64,6 @@ class PartyInviteActivity : BaseActivity() {
component?.inject(this)
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
// Inflate the menu; this adds items to the action bar if it is present.
menuInflater.inflate(R.menu.menu_party_invite, menu)
@ -66,12 +71,8 @@ class PartyInviteActivity : BaseActivity() {
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
val id = item.itemId
if (id == R.id.action_send_invites) {
setResult(Activity.RESULT_OK, createResultIntent())
dismissKeyboard()

View file

@ -23,6 +23,7 @@ import com.habitrpg.android.habitica.models.user.User
import com.habitrpg.android.habitica.ui.AvatarView
import com.habitrpg.android.habitica.ui.activities.GroupFormActivity
import com.habitrpg.android.habitica.ui.activities.MainActivity
import com.habitrpg.android.habitica.ui.activities.GroupInviteActivity
import com.habitrpg.android.habitica.ui.fragments.BaseFragment
import com.habitrpg.android.habitica.ui.helpers.MarkdownParser
import com.habitrpg.android.habitica.ui.helpers.bindView
@ -32,6 +33,7 @@ import com.habitrpg.android.habitica.ui.views.HabiticaIcons
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar
import com.habitrpg.android.habitica.ui.views.social.UsernameLabel
import java.util.*
import javax.inject.Inject
class GuildDetailFragment : BaseFragment() {
@ -90,6 +92,10 @@ class GuildDetailFragment : BaseFragment() {
}
}
}
inviteToGuildButton.setOnClickListener {
val intent = Intent(activity, GroupInviteActivity::class.java)
startActivityForResult(intent, GroupInviteActivity.RESULT_SEND_INVITES)
}
leaderWrapperView.setOnClickListener {
viewModel?.getGroupData()?.value?.leaderID?.let {leaderID ->
val profileDirections = MainNavDirections.openProfileActivity(leaderID)
@ -121,6 +127,29 @@ class GuildDetailFragment : BaseFragment() {
viewModel?.updateGroup(data?.extras)
}
}
GroupInviteActivity.RESULT_SEND_INVITES -> {
if (resultCode == Activity.RESULT_OK) {
val inviteData = HashMap<String, Any>()
inviteData["inviter"] = viewModel?.getUserData()?.value?.profile?.name ?: ""
if (data?.getBooleanExtra(GroupInviteActivity.IS_EMAIL_KEY, false) == true) {
val emails = data.getStringArrayExtra(GroupInviteActivity.EMAILS_KEY)
val invites = ArrayList<HashMap<String, String>>()
for (email in emails) {
val invite = HashMap<String, String>()
invite["name"] = ""
invite["email"] = email
invites.add(invite)
}
inviteData["emails"] = invites
} else {
val userIDs = data?.getStringArrayExtra(GroupInviteActivity.USER_IDS_KEY)
val invites = ArrayList<String>()
Collections.addAll(invites, *userIDs)
inviteData["usernames"] = invites
}
viewModel?.inviteToGroup(inviteData)
}
}
}
}

View file

@ -15,7 +15,7 @@ import com.habitrpg.android.habitica.components.AppComponent
import com.habitrpg.android.habitica.helpers.RxErrorHandler
import com.habitrpg.android.habitica.models.social.Group
import com.habitrpg.android.habitica.ui.activities.GroupFormActivity
import com.habitrpg.android.habitica.ui.activities.PartyInviteActivity
import com.habitrpg.android.habitica.ui.activities.GroupInviteActivity
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
import com.habitrpg.android.habitica.ui.fragments.social.ChatFragment
import com.habitrpg.android.habitica.ui.fragments.social.GroupInformationFragment
@ -146,8 +146,9 @@ class PartyFragment : BaseMainFragment() {
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.menu_invite_item -> {
val intent = Intent(activity, PartyInviteActivity::class.java)
startActivityForResult(intent, PartyInviteActivity.RESULT_SEND_INVITES)
val intent = Intent(activity, GroupInviteActivity::class.java)
intent.putExtra("groupType", "party")
startActivityForResult(intent, GroupInviteActivity.RESULT_SEND_INVITES)
return true
}
R.id.menu_guild_edit -> {
@ -196,12 +197,12 @@ class PartyFragment : BaseMainFragment() {
viewModel.updateOrCreateGroup(data?.extras)
}
}
PartyInviteActivity.RESULT_SEND_INVITES -> {
GroupInviteActivity.RESULT_SEND_INVITES -> {
if (resultCode == Activity.RESULT_OK) {
val inviteData = HashMap<String, Any>()
inviteData["inviter"] = user?.profile?.name ?: ""
if (data?.getBooleanExtra(PartyInviteActivity.IS_EMAIL_KEY, false) == true) {
val emails = data.getStringArrayExtra(PartyInviteActivity.EMAILS_KEY)
if (data?.getBooleanExtra(GroupInviteActivity.IS_EMAIL_KEY, false) == true) {
val emails = data.getStringArrayExtra(GroupInviteActivity.EMAILS_KEY)
val invites = ArrayList<HashMap<String, String>>()
for (email in emails) {
val invite = HashMap<String, String>()
@ -211,7 +212,7 @@ class PartyFragment : BaseMainFragment() {
}
inviteData["emails"] = invites
} else {
val userIDs = data?.getStringArrayExtra(PartyInviteActivity.USER_IDS_KEY)
val userIDs = data?.getStringArrayExtra(GroupInviteActivity.USER_IDS_KEY)
val invites = ArrayList<String>()
Collections.addAll(invites, *userIDs)
inviteData["usernames"] = invites