mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-05-19 12:18:59 +00:00
display party members
This commit is contained in:
parent
c62227fc97
commit
6271f5303b
13 changed files with 97 additions and 106 deletions
|
|
@ -1,11 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<android.support.v7.widget.RecyclerView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/recyclerView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scrollbarSize="3dp"
|
||||
android:scrollbarThumbVertical="@color/md_grey_500"
|
||||
|
||||
android:scrollbars="vertical" />
|
||||
|
|
@ -108,8 +108,6 @@ public abstract class HabiticaBaseApplication extends MultiDexApplication {
|
|||
context.startActivity(intent);
|
||||
}
|
||||
|
||||
// region SQLite overrides
|
||||
|
||||
public static AppComponent getComponent() {
|
||||
return component;
|
||||
}
|
||||
|
|
@ -135,7 +133,7 @@ public abstract class HabiticaBaseApplication extends MultiDexApplication {
|
|||
Amplitude.getInstance().initialize(this, getString(R.string.amplitude_app_id)).enableForegroundTracking(this);
|
||||
Identify identify = new Identify().setOnce("androidStore", BuildConfig.STORE);
|
||||
Amplitude.getInstance().identify(identify);
|
||||
} catch (Resources.NotFoundException e) {
|
||||
} catch (Resources.NotFoundException ignored) {
|
||||
}
|
||||
}
|
||||
Fresco.initialize(this);
|
||||
|
|
|
|||
|
|
@ -45,7 +45,8 @@ public interface SocialRepository extends BaseRepository {
|
|||
Observable<PostChatMessageResult> postPrivateMessage(String recipientId, String message);
|
||||
|
||||
|
||||
Observable<List<User>> getGroupMembers(String id, boolean includeAllPublicFields);
|
||||
Observable<RealmResults<User>> getGroupMembers(String id);
|
||||
Observable<List<User>> retrieveGroupMembers(String id, boolean includeAllPublicFields);
|
||||
|
||||
Observable<Void> inviteToGroup(String id, Map<String, Object> inviteData);
|
||||
|
||||
|
|
|
|||
|
|
@ -160,8 +160,14 @@ public class SocialRepositoryImpl extends BaseRepositoryImpl<SocialLocalReposito
|
|||
}
|
||||
|
||||
@Override
|
||||
public Observable<List<User>> getGroupMembers(String id, boolean includeAllPublicFields) {
|
||||
return apiClient.getGroupMembers(id, includeAllPublicFields);
|
||||
public Observable<RealmResults<User>> getGroupMembers(String id) {
|
||||
return localRepository.getGroupMembers(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Observable<List<User>> retrieveGroupMembers(String id, boolean includeAllPublicFields) {
|
||||
return apiClient.getGroupMembers(id, includeAllPublicFields)
|
||||
.doOnNext(localRepository::save);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package com.habitrpg.android.habitica.data.local;
|
|||
import com.habitrpg.android.habitica.models.social.Challenge;
|
||||
import com.habitrpg.android.habitica.models.social.ChatMessage;
|
||||
import com.habitrpg.android.habitica.models.social.Group;
|
||||
import com.habitrpg.android.habitica.models.user.User;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -21,4 +22,6 @@ public interface SocialLocalRepository extends BaseLocalRepository {
|
|||
Observable<RealmResults<ChatMessage>> getGroupChat(String groupId);
|
||||
|
||||
void deleteMessage(String id);
|
||||
|
||||
Observable<RealmResults<User>> getGroupMembers(String partyId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package com.habitrpg.android.habitica.data.local.implementation;
|
|||
import com.habitrpg.android.habitica.data.local.SocialLocalRepository;
|
||||
import com.habitrpg.android.habitica.models.social.ChatMessage;
|
||||
import com.habitrpg.android.habitica.models.social.Group;
|
||||
import com.habitrpg.android.habitica.models.user.User;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -71,6 +72,15 @@ public class RealmSocialLocalRepository extends RealmBaseLocalRepository impleme
|
|||
getMessage(id).first().subscribe(chatMessage -> realm.executeTransaction(realm1 -> chatMessage.deleteFromRealm()), throwable -> {});
|
||||
}
|
||||
|
||||
@Override
|
||||
public Observable<RealmResults<User>> getGroupMembers(String partyId) {
|
||||
return realm.where(User.class)
|
||||
.equalTo("party.id", partyId)
|
||||
.findAllAsync()
|
||||
.asObservable()
|
||||
.filter(RealmResults::isLoaded);
|
||||
}
|
||||
|
||||
private Observable<ChatMessage> getMessage(String id) {
|
||||
return realm.where(ChatMessage.class).equalTo("id", id)
|
||||
.findAllAsync()
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ import com.habitrpg.android.habitica.HabiticaApplication;
|
|||
import com.habitrpg.android.habitica.HabiticaBaseApplication;
|
||||
import com.habitrpg.android.habitica.components.AppComponent;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
import butterknife.ButterKnife;
|
||||
import rx.subscriptions.CompositeSubscription;
|
||||
|
||||
|
|
@ -59,6 +61,11 @@ public abstract class BaseActivity extends AppCompatActivity {
|
|||
@Override
|
||||
protected void onDestroy() {
|
||||
destroyed = true;
|
||||
|
||||
if (EventBus.getDefault().isRegistered(this)) {
|
||||
EventBus.getDefault().unregister(this);
|
||||
}
|
||||
|
||||
if (compositeSubscription != null && !compositeSubscription.isUnsubscribed()) {
|
||||
compositeSubscription.unsubscribe();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -339,19 +339,6 @@ public class MainActivity extends BaseActivity implements TutorialView.OnTutoria
|
|||
sendBroadcast(intent);
|
||||
}
|
||||
|
||||
|
||||
private void saveLoginInformation() {
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
SharedPreferences.Editor editor = prefs.edit();
|
||||
boolean ans = editor.putString(getString(R.string.SP_username), user.getAuthentication().getLocalAuthentication().getUsername())
|
||||
.putString(getString(R.string.SP_email), user.getAuthentication().getLocalAuthentication().getEmail())
|
||||
.commit();
|
||||
|
||||
if (!ans) {
|
||||
Log.e("SHARED PREFERENCES", "Shared Preferences Username and Email error");
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("ObsoleteSdkInt")
|
||||
public void displayFragment(BaseMainFragment fragment) {
|
||||
if (this.activeFragment != null && fragment.getClass() == this.activeFragment.getClass()) {
|
||||
|
|
@ -391,7 +378,6 @@ public class MainActivity extends BaseActivity implements TutorialView.OnTutoria
|
|||
runOnUiThread(() -> {
|
||||
updateHeader();
|
||||
updateSidebar();
|
||||
saveLoginInformation();
|
||||
if (activeFragment != null) {
|
||||
activeFragment.updateUserData(user);
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import android.support.v7.widget.RecyclerView;
|
|||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.components.AppComponent;
|
||||
import com.habitrpg.android.habitica.data.ApiClient;
|
||||
import com.habitrpg.android.habitica.data.SocialRepository;
|
||||
import com.habitrpg.android.habitica.events.commands.SelectMemberCommand;
|
||||
import com.habitrpg.android.habitica.ui.adapter.social.PartyMemberRecyclerViewAdapter;
|
||||
|
||||
|
|
@ -25,7 +26,7 @@ public class SkillMemberActivity extends BaseActivity {
|
|||
private PartyMemberRecyclerViewAdapter viewAdapter;
|
||||
|
||||
@Inject
|
||||
public ApiClient apiClient;
|
||||
public SocialRepository socialRepository;
|
||||
|
||||
@Override
|
||||
protected int getLayoutResId() {
|
||||
|
|
@ -47,25 +48,19 @@ public class SkillMemberActivity extends BaseActivity {
|
|||
|
||||
private void loadMemberList() {
|
||||
recyclerView.setLayoutManager(new LinearLayoutManager(this));
|
||||
viewAdapter = new PartyMemberRecyclerViewAdapter();
|
||||
viewAdapter.context = this;
|
||||
viewAdapter = new PartyMemberRecyclerViewAdapter(null, true, this, true);
|
||||
recyclerView.setAdapter(viewAdapter);
|
||||
|
||||
apiClient.getGroup("party")
|
||||
socialRepository.getGroup("party")
|
||||
.subscribe(group -> {
|
||||
if (group == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
apiClient.getGroupMembers(group.id, true)
|
||||
.subscribe(members -> {
|
||||
viewAdapter.setMemberList(members, true);
|
||||
},
|
||||
throwable -> {
|
||||
});
|
||||
},
|
||||
throwable -> {
|
||||
});
|
||||
socialRepository.getGroupMembers(group.id)
|
||||
.subscribe(members -> viewAdapter.updateData(members),
|
||||
throwable -> {});
|
||||
}, throwable -> {});
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package com.habitrpg.android.habitica.ui.adapter.social;
|
|||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
|
|
@ -24,21 +25,21 @@ import java.util.List;
|
|||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import io.realm.OrderedRealmCollection;
|
||||
import io.realm.RealmRecyclerViewAdapter;
|
||||
|
||||
public class PartyMemberRecyclerViewAdapter extends RecyclerView.Adapter<PartyMemberRecyclerViewAdapter.MemberViewHolder> {
|
||||
public class PartyMemberRecyclerViewAdapter extends RealmRecyclerViewAdapter<User, PartyMemberRecyclerViewAdapter.MemberViewHolder> {
|
||||
|
||||
|
||||
public Context context;
|
||||
private List<User> memberList;
|
||||
private Context context;
|
||||
private boolean isMemberSelection;
|
||||
|
||||
public void setMemberList(List<User> memberList, boolean isMemberSelection) {
|
||||
this.memberList = memberList;
|
||||
public PartyMemberRecyclerViewAdapter(@Nullable OrderedRealmCollection<User> data, boolean autoUpdate, Context context, boolean isMemberSelection) {
|
||||
super(data, autoUpdate);
|
||||
this.context = context;
|
||||
this.isMemberSelection = isMemberSelection;
|
||||
this.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public MemberViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
|
||||
|
|
@ -50,12 +51,9 @@ public class PartyMemberRecyclerViewAdapter extends RecyclerView.Adapter<PartyMe
|
|||
|
||||
@Override
|
||||
public void onBindViewHolder(MemberViewHolder holder, int position) {
|
||||
holder.bind(memberList.get(position));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return memberList == null ? 0 : memberList.size();
|
||||
if (getData() != null) {
|
||||
holder.bind(getData().get(position));
|
||||
}
|
||||
}
|
||||
|
||||
class MemberViewHolder extends RecyclerView.ViewHolder {
|
||||
|
|
@ -80,7 +78,7 @@ public class PartyMemberRecyclerViewAdapter extends RecyclerView.Adapter<PartyMe
|
|||
|
||||
Resources resources;
|
||||
|
||||
public MemberViewHolder(View itemView) {
|
||||
MemberViewHolder(View itemView) {
|
||||
super(itemView);
|
||||
|
||||
ButterKnife.bind(this, itemView);
|
||||
|
|
|
|||
|
|
@ -191,14 +191,8 @@ public class PreferencesFragment extends BasePreferencesFragment implements
|
|||
.subscribe(habitRPGUser -> {
|
||||
}, throwable -> {
|
||||
});
|
||||
|
||||
Preferences preferences = user.getPreferences();
|
||||
preferences.setLanguage(languageHelper.getLanguageCode());
|
||||
apiClient.setLanguageCode(preferences.getLanguage());
|
||||
apiClient.getContent()
|
||||
.subscribe(contentResult -> {
|
||||
}, throwable -> {
|
||||
});
|
||||
apiClient.setLanguageCode(languageHelper.getLanguageCode());
|
||||
apiClient.getContent().subscribe(contentResult -> {}, throwable -> {});
|
||||
|
||||
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) {
|
||||
Intent intent = new Intent(getActivity(), MainActivity.class);
|
||||
|
|
|
|||
|
|
@ -67,12 +67,18 @@ public class PartyFragment extends BaseMainFragment {
|
|||
|
||||
// Get the full group data
|
||||
if (userHasParty()) {
|
||||
compositeSubscription.add(socialRepository.getGroup(user.getParty().getId())
|
||||
.subscribe(group -> {
|
||||
PartyFragment.this.group = group;
|
||||
updateGroupUI();
|
||||
}, RxErrorHandler.handleEmptyError()));
|
||||
socialRepository.retrieveGroup("party").subscribe(group1 -> {}, RxErrorHandler.handleEmptyError());
|
||||
if (user != null) {
|
||||
compositeSubscription.add(socialRepository.getGroup(user.getParty().getId())
|
||||
.subscribe(group -> {
|
||||
PartyFragment.this.group = group;
|
||||
updateGroupUI();
|
||||
}, RxErrorHandler.handleEmptyError()));
|
||||
}
|
||||
socialRepository.retrieveGroup("party")
|
||||
.flatMap(group1 -> socialRepository.retrieveGroupMembers(group1.id, true))
|
||||
.subscribe(members -> {
|
||||
members.size();
|
||||
}, RxErrorHandler.handleEmptyError());
|
||||
}
|
||||
|
||||
setViewPagerAdapter();
|
||||
|
|
@ -119,7 +125,7 @@ public class PartyFragment extends BaseMainFragment {
|
|||
}
|
||||
|
||||
if (partyMemberListFragment != null && group != null) {
|
||||
partyMemberListFragment.setMemberList(group.members);
|
||||
partyMemberListFragment.setPartyId(group.id);
|
||||
}
|
||||
|
||||
if (groupInformationFragment != null) {
|
||||
|
|
@ -298,12 +304,6 @@ public class PartyFragment extends BaseMainFragment {
|
|||
}
|
||||
case 2: {
|
||||
partyMemberListFragment = new PartyMemberListFragment();
|
||||
if (group != null) {
|
||||
partyMemberListFragment.configure(activity, group.members);
|
||||
|
||||
} else {
|
||||
partyMemberListFragment.configure(activity, null);
|
||||
}
|
||||
fragment = partyMemberListFragment;
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,11 +11,12 @@ import android.view.ViewGroup;
|
|||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.components.AppComponent;
|
||||
import com.habitrpg.android.habitica.models.user.User;
|
||||
import com.habitrpg.android.habitica.data.SocialRepository;
|
||||
import com.habitrpg.android.habitica.helpers.RxErrorHandler;
|
||||
import com.habitrpg.android.habitica.ui.adapter.social.PartyMemberRecyclerViewAdapter;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseFragment;
|
||||
|
||||
import java.util.List;
|
||||
import javax.inject.Inject;
|
||||
|
||||
import butterknife.BindView;
|
||||
|
||||
|
|
@ -24,25 +25,21 @@ import butterknife.BindView;
|
|||
*/
|
||||
public class PartyMemberListFragment extends BaseFragment {
|
||||
|
||||
@Inject
|
||||
SocialRepository socialRepository;
|
||||
|
||||
@BindView(R.id.recyclerView)
|
||||
RecyclerView mRecyclerView;
|
||||
private Context ctx;
|
||||
private List<User> members;
|
||||
private PartyMemberRecyclerViewAdapter viewAdapter;
|
||||
RecyclerView recyclerView;
|
||||
private PartyMemberRecyclerViewAdapter adapter;
|
||||
private View view;
|
||||
|
||||
public void configure(@Nullable Context ctx, @Nullable List<User> members) {
|
||||
this.ctx = ctx;
|
||||
this.members = members;
|
||||
|
||||
}
|
||||
private String partyId;
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
if (view == null)
|
||||
view = inflater.inflate(R.layout.fragment_party_memberlist, container, false);
|
||||
|
||||
if (view == null) {
|
||||
view = inflater.inflate(R.layout.fragment_recyclerview, container, false);
|
||||
}
|
||||
return view;
|
||||
}
|
||||
|
||||
|
|
@ -55,19 +52,26 @@ public class PartyMemberListFragment extends BaseFragment {
|
|||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
|
||||
mRecyclerView.setLayoutManager(new LinearLayoutManager(ctx));
|
||||
viewAdapter = new PartyMemberRecyclerViewAdapter();
|
||||
viewAdapter.context = this.ctx;
|
||||
mRecyclerView.setAdapter(viewAdapter);
|
||||
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
|
||||
adapter = new PartyMemberRecyclerViewAdapter(null, true, getContext(), true);
|
||||
recyclerView.setAdapter(adapter);
|
||||
|
||||
if (members != null) {
|
||||
setMemberList(members);
|
||||
getUsers();
|
||||
}
|
||||
|
||||
public void setPartyId(String id) {
|
||||
this.partyId = id;
|
||||
getUsers();
|
||||
}
|
||||
|
||||
private void getUsers() {
|
||||
if (partyId == null) {
|
||||
return;
|
||||
}
|
||||
socialRepository.getGroupMembers(partyId).first().subscribe(users -> {
|
||||
if (adapter != null) {
|
||||
adapter.updateData(users);
|
||||
}
|
||||
}, RxErrorHandler.handleEmptyError());
|
||||
}
|
||||
|
||||
public void setMemberList(List<User> members) {
|
||||
this.members = members;
|
||||
viewAdapter.setMemberList(members, false);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue