diff --git a/app/build.gradle b/app/build.gradle index 736ee1fdc..4904c9c24 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -17,8 +17,8 @@ android { targetSdkVersion 28 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - versionCode 66 - versionName "3.1.0beta3" + versionCode 67 + versionName "3.1.0beta4" flavorDimensions "default" renderscriptTargetApi 19 diff --git a/app/src/main/java/com/nextcloud/talk/adapters/items/AdvancedUserItem.java b/app/src/main/java/com/nextcloud/talk/adapters/items/AdvancedUserItem.java index decaf9376..a1fac6322 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/items/AdvancedUserItem.java +++ b/app/src/main/java/com/nextcloud/talk/adapters/items/AdvancedUserItem.java @@ -70,8 +70,8 @@ public class AdvancedUserItem extends AbstractFlexibleItem adapter; + private List recyclerViewItems = new ArrayList<>(); + public ConversationInfoController(Bundle args) { super(args); setHasOptionsMenu(true); @@ -134,6 +159,49 @@ public class ConversationInfoController extends BaseController { } } + private void setupAdapter() { + if (adapter == null) { + adapter = new FlexibleAdapter<>(recyclerViewItems, getActivity(), true); + } + SmoothScrollLinearLayoutManager layoutManager = + new SmoothScrollLinearLayoutManager(getActivity()); + recyclerView.setLayoutManager(layoutManager); + recyclerView.setHasFixedSize(true); + + recyclerView.setAdapter(adapter); + } + + private void handleParticipants() { + UserItem userItem; + Participant participant; + + recyclerViewItems = new ArrayList<>(); + + GenericTextHeaderItem genericTextHeaderItem = new GenericTextHeaderItem("bla"); + EnumParticipantTypeConverter enumParticipantTypeConverter = new EnumParticipantTypeConverter(); + Iterator it = conversation.getParticipants().entrySet().iterator(); + HashMap internalHashMap; + while (it.hasNext()) { + participant = new Participant(); + Map.Entry pair = (Map.Entry)it.next(); + participant.setUserId((String) pair.getKey()); + internalHashMap = (HashMap) pair.getValue(); + participant.setName((String) internalHashMap.get("name")); + participant.setParticipantFlags((long) internalHashMap.get("call")); + participant.setType(enumParticipantTypeConverter.getFromInt((int)(long) internalHashMap.get("type"))); + + userItem = new UserItem(participant, conversationUser, genericTextHeaderItem); + + userItem.setEnabled(participant.getParticipantFlags() != 0); + + recyclerViewItems.add(userItem); + it.remove(); + } + + setupAdapter(); + adapter.notifyDataSetChanged(); + } + @Override protected void onAttach(@NonNull View view) { super.onAttach(view); @@ -164,10 +232,10 @@ public class ConversationInfoController extends BaseController { if (progressBar != null) { progressBar.setVisibility(View.GONE); } - materialPreferenceScreen.setVisibility(View.VISIBLE); - nameCategoryView.setVisibility(View.VISIBLE); - conversationDisplayName.setText(conversation.getDisplayName()); + loadConversationAvatar(); + handleParticipants(); + if (conversationUser.hasSpreedCapabilityWithName("notification-levels")) { messageNotificationLevel.setEnabled(true); @@ -198,6 +266,11 @@ public class ConversationInfoController extends BaseController { messageNotificationLevel.setAlpha(0.38f); setProperNotificationValue(conversation); } + + materialPreferenceScreen.setVisibility(View.VISIBLE); + nameCategoryView.setVisibility(View.VISIBLE); + participantsListCategory.setVisibility(View.VISIBLE); + conversationDisplayName.setText(conversation.getDisplayName()); } @Override diff --git a/app/src/main/java/com/nextcloud/talk/models/json/participants/Participant.java b/app/src/main/java/com/nextcloud/talk/models/json/participants/Participant.java index 884a67ea0..60fab3ba7 100644 --- a/app/src/main/java/com/nextcloud/talk/models/json/participants/Participant.java +++ b/app/src/main/java/com/nextcloud/talk/models/json/participants/Participant.java @@ -53,7 +53,7 @@ public class Participant { boolean inCall; @JsonField(name = "participantFlags") - int participantFlags; + long participantFlags; String source; diff --git a/app/src/main/res/layout/controller_conversation_info.xml b/app/src/main/res/layout/controller_conversation_info.xml index 7829eb87c..0f438c6a5 100644 --- a/app/src/main/res/layout/controller_conversation_info.xml +++ b/app/src/main/res/layout/controller_conversation_info.xml @@ -19,8 +19,11 @@ --> + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 08d5313a7..c1b6f7dab 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -240,5 +240,12 @@ Find Nextcloud on https://nextcloud.com 1000 characters limit has been hit Groups + Participants + + Owner + Moderator + User + Guest + User following a public link