mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-05-20 04:39:04 +00:00
update guild listing
This commit is contained in:
parent
2eacc25cec
commit
df393fd42d
7 changed files with 52 additions and 36 deletions
|
|
@ -35,7 +35,7 @@ public interface SocialRepository extends BaseRepository {
|
|||
|
||||
Observable<Group> joinGroup(String id);
|
||||
|
||||
Observable<Void> updateGroup(Group group);
|
||||
Observable<Void> updateGroup(Group group, String name, String description, String leader, String privacy);
|
||||
|
||||
Observable<List<Group>> retrieveGroups(String type);
|
||||
Observable<RealmResults<Group>> getGroups(String type);
|
||||
|
|
@ -54,4 +54,6 @@ public interface SocialRepository extends BaseRepository {
|
|||
Observable<User> getMember(String userId);
|
||||
|
||||
Observable<Void> markPrivateMessagesRead(User user);
|
||||
|
||||
Observable<RealmResults<Group>> getUserGroups();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -97,14 +97,27 @@ public class SocialRepositoryImpl extends BaseRepositoryImpl<SocialLocalReposito
|
|||
}
|
||||
|
||||
@Override
|
||||
public Observable<Void> updateGroup(Group group) {
|
||||
public Observable<Void> updateGroup(Group group, String name, String description, String leader, String privacy) {
|
||||
Group copiedGroup = localRepository.getUnmanagedCopy(group);
|
||||
copiedGroup.name = name;
|
||||
copiedGroup.description = description;
|
||||
copiedGroup.leaderID = leader;
|
||||
copiedGroup.privacy = privacy;
|
||||
localRepository.saveGroup(copiedGroup);
|
||||
return apiClient.updateGroup(group.id, group);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Observable<List<Group>> retrieveGroups(String type) {
|
||||
return apiClient.listGroups(type)
|
||||
.doOnNext(localRepository::saveGroups);
|
||||
.doOnNext(groups -> {
|
||||
if ("guilds".equals(type)) {
|
||||
for (Group guild : groups) {
|
||||
guild.isMember = true;
|
||||
}
|
||||
}
|
||||
localRepository.saveGroups(groups);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -155,4 +168,9 @@ public class SocialRepositoryImpl extends BaseRepositoryImpl<SocialLocalReposito
|
|||
return apiClient.markPrivateMessagesRead()
|
||||
.doOnNext(aVoid -> localRepository.executeTransaction(realm -> user.getInbox().setNewMessages(0)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Observable<RealmResults<Group>> getUserGroups() {
|
||||
return localRepository.getUserGroups();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,4 +18,6 @@ public interface SocialLocalRepository extends BaseLocalRepository {
|
|||
void saveGroup(Group group);
|
||||
|
||||
void saveGroups(List<Group> groups);
|
||||
|
||||
Observable<RealmResults<Group>> getUserGroups();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -49,11 +49,25 @@ public class RealmSocialLocalRepository extends RealmBaseLocalRepository impleme
|
|||
|
||||
@Override
|
||||
public void saveGroup(Group group) {
|
||||
realm.executeTransactionAsync(realm1 -> realm1.insertOrUpdate(group));
|
||||
Group existingGroup = realm.where(Group.class).equalTo("id", group.id).findFirst();
|
||||
boolean isMember = existingGroup.isValid()&& existingGroup.isMember;
|
||||
realm.executeTransactionAsync(realm1 -> {
|
||||
group.isMember = isMember;
|
||||
realm1.insertOrUpdate(group);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveGroups(List<Group> groups) {
|
||||
realm.executeTransactionAsync(realm1 -> realm1.insertOrUpdate(groups));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Observable<RealmResults<Group>> getUserGroups() {
|
||||
return realm.where(Group.class)
|
||||
.equalTo("type", "guild")
|
||||
.equalTo("isMember", true)
|
||||
.findAllSorted("memberCount", Sort.DESCENDING)
|
||||
.asObservable()
|
||||
.filter(RealmResults::isLoaded); }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -219,31 +219,13 @@ public class GuildFragment extends BaseMainFragment implements Action1<Group> {
|
|||
switch (requestCode) {
|
||||
case (GroupFormActivity.GROUP_FORM_ACTIVITY): {
|
||||
if (resultCode == Activity.RESULT_OK) {
|
||||
boolean needsSaving = false;
|
||||
Bundle bundle = data.getExtras();
|
||||
if (this.guild.name != null && !this.guild.name.equals(bundle.getString("name"))) {
|
||||
this.guild.name = bundle.getString("name");
|
||||
needsSaving = true;
|
||||
}
|
||||
if (this.guild.description != null && !this.guild.description.equals(bundle.getString("description"))) {
|
||||
this.guild.description = bundle.getString("description");
|
||||
needsSaving = true;
|
||||
}
|
||||
if (this.guild.leaderID != null && !this.guild.leaderID.equals(bundle.getString("leader"))) {
|
||||
this.guild.leaderID = bundle.getString("leader");
|
||||
needsSaving = true;
|
||||
}
|
||||
if (this.guild.privacy != null && !this.guild.privacy.equals(bundle.getString("privacy"))) {
|
||||
this.guild.privacy = bundle.getString("privacy");
|
||||
needsSaving = true;
|
||||
}
|
||||
if (needsSaving) {
|
||||
this.socialRepository.updateGroup(this.guild)
|
||||
.subscribe(aVoid -> {
|
||||
}, throwable -> {
|
||||
});
|
||||
this.guildInformationFragment.setGroup(guild);
|
||||
}
|
||||
this.socialRepository.updateGroup(this.guild,
|
||||
bundle.getString("name"),
|
||||
bundle.getString("description"),
|
||||
bundle.getString("leader"),
|
||||
bundle.getString("privacy"))
|
||||
.subscribe(aVoid -> {}, throwable -> {});
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ import com.habitrpg.android.habitica.R;
|
|||
import com.habitrpg.android.habitica.components.AppComponent;
|
||||
import com.habitrpg.android.habitica.data.ChallengeRepository;
|
||||
import com.habitrpg.android.habitica.data.SocialRepository;
|
||||
import com.habitrpg.android.habitica.helpers.RxErrorHandler;
|
||||
import com.habitrpg.android.habitica.models.social.Group;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
|
||||
|
|
@ -24,6 +25,7 @@ import javax.inject.Inject;
|
|||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import io.realm.RealmResults;
|
||||
|
||||
public class GuildsOverviewFragment extends BaseMainFragment implements View.OnClickListener, SwipeRefreshLayout.OnRefreshListener {
|
||||
|
||||
|
|
@ -56,9 +58,7 @@ public class GuildsOverviewFragment extends BaseMainFragment implements View.OnC
|
|||
unbinder = ButterKnife.bind(this, v);
|
||||
swipeRefreshLayout.setOnRefreshListener(this);
|
||||
this.publicGuildsButton.setOnClickListener(this);
|
||||
if (this.guilds != null) {
|
||||
this.setGuildsOnListView();
|
||||
}
|
||||
compositeSubscription.add(socialRepository.getUserGroups().subscribe(this::setGuilds, RxErrorHandler.handleEmptyError()));
|
||||
return v;
|
||||
}
|
||||
|
||||
|
|
@ -77,7 +77,6 @@ public class GuildsOverviewFragment extends BaseMainFragment implements View.OnC
|
|||
@Override
|
||||
public void onRefresh() {
|
||||
swipeRefreshLayout.setRefreshing(true);
|
||||
|
||||
fetchGuilds();
|
||||
}
|
||||
|
||||
|
|
@ -85,8 +84,6 @@ public class GuildsOverviewFragment extends BaseMainFragment implements View.OnC
|
|||
if (this.socialRepository != null) {
|
||||
this.socialRepository.retrieveGroups("guilds")
|
||||
.subscribe(groups -> {
|
||||
GuildsOverviewFragment.this.guilds = groups;
|
||||
GuildsOverviewFragment.this.setGuildsOnListView();
|
||||
if (swipeRefreshLayout != null) {
|
||||
swipeRefreshLayout.setRefreshing(false);
|
||||
}
|
||||
|
|
@ -94,7 +91,8 @@ public class GuildsOverviewFragment extends BaseMainFragment implements View.OnC
|
|||
}
|
||||
}
|
||||
|
||||
private void setGuildsOnListView() {
|
||||
private void setGuilds(RealmResults<Group> guilds) {
|
||||
this.guilds = guilds;
|
||||
if (this.guildsListView == null) {
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -220,7 +220,7 @@ public class PartyFragment extends BaseMainFragment {
|
|||
needsSaving = true;
|
||||
}
|
||||
if (needsSaving) {
|
||||
this.socialRepository.updateGroup(this.group)
|
||||
this.socialRepository.updateGroup(this.group, bundle.getString("name"), bundle.getString("description"), bundle.getString("leader"), bundle.getString("privacy"))
|
||||
.subscribe(aVoid -> {
|
||||
}, throwable -> {
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in a new issue