diff --git a/Habitica/res/drawable-hdpi/ic_info_outline_black_24dp.png b/Habitica/res/drawable-hdpi/ic_info_outline_black_24dp.png new file mode 100644 index 000000000..a98fe3d87 Binary files /dev/null and b/Habitica/res/drawable-hdpi/ic_info_outline_black_24dp.png differ diff --git a/Habitica/res/drawable-mdpi/ic_info_outline_black_24dp.png b/Habitica/res/drawable-mdpi/ic_info_outline_black_24dp.png new file mode 100644 index 000000000..18bb1ebae Binary files /dev/null and b/Habitica/res/drawable-mdpi/ic_info_outline_black_24dp.png differ diff --git a/Habitica/res/drawable-xhdpi/ic_info_outline_black_24dp.png b/Habitica/res/drawable-xhdpi/ic_info_outline_black_24dp.png new file mode 100644 index 000000000..0aa5d0e5f Binary files /dev/null and b/Habitica/res/drawable-xhdpi/ic_info_outline_black_24dp.png differ diff --git a/Habitica/res/drawable-xxhdpi/ic_info_outline_black_24dp.png b/Habitica/res/drawable-xxhdpi/ic_info_outline_black_24dp.png new file mode 100644 index 000000000..79a8f0899 Binary files /dev/null and b/Habitica/res/drawable-xxhdpi/ic_info_outline_black_24dp.png differ diff --git a/Habitica/res/drawable/ic_info_outline_black_24dp.xml b/Habitica/res/drawable/ic_info_outline_black_24dp.xml deleted file mode 100644 index cb30cd7c3..000000000 --- a/Habitica/res/drawable/ic_info_outline_black_24dp.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/Habitica/res/layout/activity_create_challenge.xml b/Habitica/res/layout/activity_create_challenge.xml index ab0246ab7..29a85bbd8 100644 --- a/Habitica/res/layout/activity_create_challenge.xml +++ b/Habitica/res/layout/activity_create_challenge.xml @@ -163,7 +163,7 @@ android:layout_height="20dp" android:layout_marginTop="39dp" android:drawablePadding="12dp" - android:drawableEnd="@drawable/ic_info_outline_black_24dp" + android:drawableRight="@drawable/ic_info_outline_black_24dp" android:drawableTint="@color/brand_300" android:gravity="center" android:text="Tag" diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ApiClientImpl.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ApiClientImpl.java index e90c05988..4373864cb 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ApiClientImpl.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ApiClientImpl.java @@ -438,18 +438,25 @@ public class ApiClientImpl implements Action1, ApiClient { @Override public Observable equipItem(String type, String itemKey) { + if (itemKey == null) { + return Observable.just(null); + } return apiService.equipItem(type, itemKey).compose(configureApiCallObserver()); } @Override public Observable buyItem(String itemKey) { - + if (itemKey == null) { + return Observable.just(null); + } return apiService.buyItem(itemKey).compose(configureApiCallObserver()); } @Override public Observable purchaseItem(String type, String itemKey) { - + if (itemKey == null) { + return Observable.just(null); + } return apiService.purchaseItem(type, itemKey).compose(configureApiCallObserver()); } @@ -465,22 +472,33 @@ public class ApiClientImpl implements Action1, ApiClient { @Override public Observable purchaseHourglassItem(String type, String itemKey) { - + if (itemKey == null) { + return Observable.just(null); + } return apiService.purchaseHourglassItem(type, itemKey).compose(configureApiCallObserver()); } @Override public Observable purchaseMysterySet(String itemKey) { + if (itemKey == null) { + return Observable.just(null); + } return apiService.purchaseMysterySet(itemKey).compose(configureApiCallObserver()); } @Override public Observable purchaseQuest(String key) { + if (key == null) { + return Observable.just(null); + } return apiService.purchaseQuest(key).compose(configureApiCallObserver()); } @Override public Observable sellItem(String itemType, String itemKey) { + if (itemKey == null) { + return Observable.just(null); + } return apiService.sellItem(itemType, itemKey).compose(configureApiCallObserver()); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ContentRepositoryImpl.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ContentRepositoryImpl.java index feae0cb09..10666ac71 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ContentRepositoryImpl.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ContentRepositoryImpl.java @@ -31,12 +31,9 @@ abstract class ContentRepositoryImpl extends B public Observable retrieveContent(boolean forced) { if (forced || this.lastSync == null || (new Date().getTime() - this.lastSync.getTime()) > 3600000) { lastSync = new Date(); - return apiClient.getContent() - .doOnNext(localRepository::saveContent); + return apiClient.getContent().doOnNext(localRepository::saveContent); } else { return Observable.just(null); } - } - } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/SocialRepositoryImpl.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/SocialRepositoryImpl.java index a9540c720..538d48be8 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/SocialRepositoryImpl.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/SocialRepositoryImpl.java @@ -19,6 +19,7 @@ import java.util.Map; import io.realm.RealmResults; import rx.Observable; import rx.functions.Action1; +import rx.functions.Func2; public class SocialRepositoryImpl extends BaseRepositoryImpl implements SocialRepository { @@ -90,22 +91,20 @@ public class SocialRepositoryImpl extends BaseRepositoryImpl retrieveGroup(String id) { - return apiClient.getGroup(id) - .map(group -> { - for (ChatMessage message : group.chat) { - message.groupId = group.id; - } - return group; - }) - .doOnNext(group -> { - localRepository.save(group); - localRepository.getGroup(group.id) - .first() - .subscribe(group1 -> { - group.isMember = group1.isMember; - localRepository.save(group); - }, RxErrorHandler.handleEmptyError()); - }); + Observable observable = apiClient.getGroup(id); + if (!"party".equals(id)) { + observable = observable.withLatestFrom(localRepository.getGroup(id) + .first(), (newGroup, oldGroup) -> { + newGroup.isMember = oldGroup.isMember; + return newGroup; + }); + } + return observable.map(group -> { + for (ChatMessage message : group.chat) { + message.groupId = group.id; + } + return group; + }).doOnNext(localRepository::save); } @Override diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/UserRepositoryImpl.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/UserRepositoryImpl.java index 25bab05ad..d6b8c1b64 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/UserRepositoryImpl.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/UserRepositoryImpl.java @@ -96,7 +96,7 @@ public class UserRepositoryImpl extends BaseRepositoryImpl } }); } else { - return Observable.just(null); + return getUser(); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/PushNotificationManager.java b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/PushNotificationManager.java index 704b100e3..e52084e5e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/PushNotificationManager.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/PushNotificationManager.java @@ -79,9 +79,10 @@ public class PushNotificationManager { } public void removePushDeviceUsingStoredToken() { - apiClient.deletePushDevice(this.refreshedToken) - - .subscribe(aVoid -> {}, RxErrorHandler.handleEmptyError()); + if (this.refreshedToken == null) { + return; + } + apiClient.deletePushDevice(this.refreshedToken).subscribe(aVoid -> {}, RxErrorHandler.handleEmptyError()); } private Boolean userHasPushDevice() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/NotifyUserUseCase.java b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/NotifyUserUseCase.java index d2fde4bbf..62892a160 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/NotifyUserUseCase.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/NotifyUserUseCase.java @@ -48,7 +48,7 @@ public class NotifyUserUseCase extends UseCase userRepository.retrieveUser(false)) + .flatMap(aVoid -> userRepository.retrieveUser(true)) .map(User::getStats); } else { Pair pair = getNotificationAndAddStatsToUser(requestValues.context, requestValues.xp, requestValues.hp, requestValues.gold, requestValues.mp); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/CreateChallengeActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/CreateChallengeActivity.java index e19377ef4..4ad7512ff 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/CreateChallengeActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/CreateChallengeActivity.java @@ -438,9 +438,7 @@ public class CreateChallengeActivity extends BaseActivity { checkPrizeAndMinimumForTavern(); - challengeRepository.getChallengeTasks(challengeId).subscribe(tasks -> { - tasks.tasks.forEach((s, task) -> addOrUpdateTaskInList(task)); - }, Throwable::printStackTrace, () -> { + challengeRepository.getChallengeTasks(challengeId).subscribe(tasks -> tasks.tasks.forEach((s, task) -> addOrUpdateTaskInList(task)), RxErrorHandler.handleEmptyError(), () -> { // activate editMode to track taskChanges editMode = true; }); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.java index e34012d17..b1f3d6612 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.java @@ -14,6 +14,7 @@ import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; +import android.view.ViewGroup; import android.widget.Button; import android.widget.ProgressBar; import android.widget.ScrollView; @@ -187,7 +188,7 @@ public class FullProfileActivity extends BaseActivity { final AlertDialog addMessageDialog = new AlertDialog.Builder(this) .setPositiveButton(android.R.string.ok, (dialogInterface, i) -> { socialRepository.postPrivateMessage(userId, emojiEditText.getText().toString()) - .subscribe(postChatMessageResult -> showSnackbar(FullProfileActivity.this, FullProfileActivity.this.fullprofile_scrollview, + .subscribe(postChatMessageResult -> showSnackbar(FullProfileActivity.this, (ViewGroup) FullProfileActivity.this.fullprofile_scrollview.getChildAt(0), String.format(getString(R.string.profile_message_sent_to), userName), SnackbarDisplayType.NORMAL), RxErrorHandler.handleEmptyError()); UiUtils.dismissKeyboard(HabiticaApplication.currentActivity); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java index fef9299fb..50aff3508 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java @@ -741,7 +741,7 @@ public class MainActivity extends BaseActivity implements TutorialView.OnTutoria return; } - if (this.faintDialog == null) { + if (this.faintDialog == null && !this.isFinishing()) { View customView = View.inflate(this, R.layout.dialog_faint, null); if (customView != null) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.java index 63b63dd38..2f5169f82 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.java @@ -984,6 +984,9 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem } private void populate(Task task) { + if (!task.isValid()) { + return; + } taskText.setText(task.text); taskNotes.setText(task.notes); taskValue.setText(String.format(Locale.getDefault(), "%.2f", task.value)); @@ -1328,6 +1331,10 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem if (currentFocus != null) { imm.hideSoftInputFromWindow(currentFocus.getWindowToken(), 0); } + if (popup != null) { + popup.dismiss(); + popup = null; + } } private class DateEditTextListener implements View.OnClickListener, DatePickerDialog.OnDateSetListener { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/NewsFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/NewsFragment.java index ab78c2888..8a0f45365 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/NewsFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/NewsFragment.java @@ -41,10 +41,9 @@ public class NewsFragment extends BaseMainFragment { @Override public String customTitle() { - if (isAdded()) { - return getString(R.string.sidebar_news); - } else { + if (!isAdded()) { return ""; } + return getString(R.string.sidebar_news); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/faq/FAQOverviewFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/faq/FAQOverviewFragment.java index d5b3ca559..0eb528b68 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/faq/FAQOverviewFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/faq/FAQOverviewFragment.java @@ -67,6 +67,9 @@ public class FAQOverviewFragment extends BaseMainFragment { @Override public String customTitle() { + if (!isAdded()) { + return ""; + } return getString(R.string.FAQ); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarOverviewFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarOverviewFragment.java index caffa7afc..6623e8bb8 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarOverviewFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarOverviewFragment.java @@ -165,10 +165,9 @@ public class AvatarOverviewFragment extends BaseMainFragment implements AdapterV @Override public String customTitle() { - if (isAdded()) { - return getString(R.string.sidebar_avatar); - } else { + if (!isAdded()) { return ""; } + return getString(R.string.sidebar_avatar); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentOverviewFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentOverviewFragment.java index 96bbbaed3..1efde84d9 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentOverviewFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentOverviewFragment.java @@ -156,11 +156,10 @@ public class EquipmentOverviewFragment extends BaseMainFragment { @Override public String customTitle() { - if (isAdded()) { - return getString(R.string.sidebar_equipment); - } else { + if (!isAdded()) { return ""; } + return getString(R.string.sidebar_equipment); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemsFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemsFragment.java index fa6bd58ba..aff67336e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemsFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemsFragment.java @@ -128,10 +128,9 @@ public class ItemsFragment extends BaseMainFragment { @Override public String customTitle() { - if (isAdded()) { - return getString(R.string.sidebar_items); - } else { + if (!isAdded()) { return ""; } + return getString(R.string.sidebar_items); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/shops/ShopsFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/shops/ShopsFragment.java index 4f91131d1..30dbef3d4 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/shops/ShopsFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/shops/ShopsFragment.java @@ -100,11 +100,10 @@ public class ShopsFragment extends BaseMainFragment { @Override public String customTitle() { - if (isAdded()) { - return getString(R.string.sidebar_shops); - } else { + if (!isAdded()) { return ""; } + return getString(R.string.sidebar_shops); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/MountDetailRecyclerFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/MountDetailRecyclerFragment.java index ac8bf4dd0..4e08a58d3 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/MountDetailRecyclerFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/MountDetailRecyclerFragment.java @@ -109,10 +109,9 @@ public class MountDetailRecyclerFragment extends BaseMainFragment { @Override public String customTitle() { - if (isAdded()) { - return getString(R.string.mounts); - } else { + if (!isAdded()) { return ""; } + return getString(R.string.mounts); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.java index 1b784115f..a7502aa1f 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.java @@ -132,10 +132,9 @@ public class PetDetailRecyclerFragment extends BaseMainFragment { @Override public String customTitle() { - if (isAdded()) { - return getString(R.string.pets); - } else { + if (!isAdded()) { return ""; } + return getString(R.string.pets); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableFragment.java index f527b195b..c2fce9256 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableFragment.java @@ -88,10 +88,9 @@ public class StableFragment extends BaseMainFragment { @Override public String customTitle() { - if (isAdded()) { - return getString(R.string.sidebar_stable); - } else { + if (!isAdded()) { return ""; } + return getString(R.string.sidebar_stable); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/skills/SkillsFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/skills/SkillsFragment.java index 051f31980..d98a42f8d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/skills/SkillsFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/skills/SkillsFragment.java @@ -201,6 +201,10 @@ public class SkillsFragment extends BaseMainFragment { } @Override - public String customTitle() { return getString(R.string.sidebar_skills); } - + public String customTitle() { + if (!isAdded()) { + return ""; + } + return getString(R.string.sidebar_skills); + } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GroupInformationFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GroupInformationFragment.java index 3989cb5d0..1a872fc8c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GroupInformationFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GroupInformationFragment.java @@ -53,8 +53,6 @@ public class GroupInformationFragment extends BaseFragment { @Nullable private User user; private QuestContent quest; - private ValueBar bossHpBar; - private ValueBar bossRageBar; public GroupInformationFragment() { @@ -90,9 +88,6 @@ public class GroupInformationFragment extends BaseFragment { unbinder = ButterKnife.bind(this, view); - bossHpBar = (ValueBar) view.findViewById(R.id.bossHpBar); - bossRageBar = (ValueBar) view.findViewById(R.id.bossRageBar); - if (this.group == null) { QrCodeManager qrCodeManager = new QrCodeManager(userRepository, this.getContext()); qrCodeManager.setUpView(qrLayout); @@ -151,17 +146,6 @@ public class GroupInformationFragment extends BaseFragment { return; } - boolean showHpBar = (quest.boss != null && quest.boss.hp > 0); - bossHpBar.setVisibility(showHpBar ? View.VISIBLE : View.GONE); - if (showHpBar) { - bossHpBar.set(group.quest.getProgress().hp, quest.boss.hp); - } - boolean showRageBar = (quest.boss != null && quest.boss.rage_value > 0); - bossRageBar.setVisibility(showRageBar ? View.VISIBLE : View.GONE); - if (showRageBar) { - bossHpBar.set(group.quest.getProgress().rage, quest.boss.rage_value); - } - if (group.quest.members == null) { viewBinding.setHideParticipantCard(true); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildFragment.java index 0075f6692..4aba91e0c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildFragment.java @@ -258,10 +258,9 @@ public class GuildFragment extends BaseMainFragment implements Action1 { @Override public String customTitle() { - if (isAdded()) { - return getString(R.string.guild); - } else { + if (!isAdded()) { return ""; } + return getString(R.string.guild); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxFragment.java index 4f3d8a190..9ce380d33 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxFragment.java @@ -211,10 +211,9 @@ public class InboxFragment extends BaseMainFragment @Override public String customTitle() { - if (isAdded()) { - return getString(R.string.sidebar_inbox); - } else { + if (!isAdded()) { return ""; } + return getString(R.string.sidebar_inbox); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/PublicGuildsFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/PublicGuildsFragment.java index a305a218a..940704313 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/PublicGuildsFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/PublicGuildsFragment.java @@ -120,10 +120,9 @@ public class PublicGuildsFragment extends BaseMainFragment implements SearchView @Override public String customTitle() { - if (isAdded()) { - return getString(R.string.public_guilds); - } else { + if (!isAdded()) { return ""; } + return getString(R.string.public_guilds); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/TavernFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/TavernFragment.java index b66c2cc73..a93712788 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/TavernFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/TavernFragment.java @@ -159,10 +159,9 @@ public class TavernFragment extends BaseMainFragment { @Override public String customTitle() { - if (isAdded()) { - return getString(R.string.sidebar_tavern); - } else { + if (!isAdded()) { return ""; } + return getString(R.string.sidebar_tavern); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeListFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeListFragment.java index 7fd67a9f0..5c8e2cfb7 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeListFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeListFragment.java @@ -130,6 +130,9 @@ public class ChallengeListFragment extends BaseMainFragment implements SwipeRefr @Override public String customTitle() { + if (!isAdded()) { + return ""; + } return getString(R.string.sidebar_challenges); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengesOverviewFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengesOverviewFragment.java index a475155c5..989293b78 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengesOverviewFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengesOverviewFragment.java @@ -126,6 +126,9 @@ public class ChallengesOverviewFragment extends BaseMainFragment { @Override public String customTitle() { + if (!isAdded()) { + return ""; + } return getString(R.string.challenges); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyDetailFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyDetailFragment.java index b518df3fc..d95387e1b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyDetailFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyDetailFragment.java @@ -2,6 +2,7 @@ package com.habitrpg.android.habitica.ui.fragments.social.party; import android.app.AlertDialog; import android.os.Bundle; +import android.os.Handler; import android.support.annotation.Nullable; import android.support.v4.widget.SwipeRefreshLayout; import android.view.LayoutInflater; @@ -9,7 +10,6 @@ import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.LinearLayout; -import android.widget.ListView; import android.widget.TextView; import com.facebook.drawee.view.SimpleDraweeView; @@ -32,11 +32,15 @@ import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils; import com.habitrpg.android.habitica.ui.helpers.MarkdownParser; import com.habitrpg.android.habitica.ui.views.social.QuestProgressView; +import java.util.concurrent.TimeUnit; + import javax.inject.Inject; import javax.inject.Named; import butterknife.BindView; import butterknife.OnClick; +import rx.Observable; +import rx.android.schedulers.AndroidSchedulers; public class PartyDetailFragment extends BaseFragment { @@ -146,9 +150,10 @@ public class PartyDetailFragment extends BaseFragment { newQuestButton.setVisibility(View.GONE); questDetailButton.setVisibility(View.VISIBLE); questImageWrapper.setVisibility(View.VISIBLE); - getActivity().runOnUiThread(() -> inventoryRepository.getQuestContent(quest.getKey()) + Handler mainHandler = new Handler(getContext().getMainLooper()); + mainHandler.postDelayed(() -> inventoryRepository.getQuestContent(quest.getKey()) .first() - .subscribe(this::updateQuestContent, RxErrorHandler.handleEmptyError())); + .subscribe(PartyDetailFragment.this::updateQuestContent, RxErrorHandler.handleEmptyError()), 500); } else { newQuestButton.setVisibility(View.VISIBLE); questDetailButton.setVisibility(View.GONE); @@ -186,9 +191,10 @@ public class PartyDetailFragment extends BaseFragment { } private void updateQuestContent(QuestContent questContent) { - if (questTitleView != null) { - questTitleView.setText(questContent.getText()); + if (questTitleView == null) { + return; } + questTitleView.setText(questContent.getText()); DataBindingUtils.loadImage(questScrollImageView, "inventory_quest_scroll_"+questContent.getKey()); DataBindingUtils.loadImage(questImageView, "quest_"+questContent.getKey()); if (isQuestActive()) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyFragment.java index e6a7016b0..a0c77b6fa 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyFragment.java @@ -348,11 +348,10 @@ public class PartyFragment extends BaseMainFragment { @Override public String customTitle() { - if (isAdded()) { - return getString(R.string.sidebar_party); - } else { + if (!isAdded()) { return ""; } + return getString(R.string.sidebar_party); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyMemberListFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyMemberListFragment.java index 785f07f93..c89dfdab4 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyMemberListFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyMemberListFragment.java @@ -68,7 +68,13 @@ public class PartyMemberListFragment extends BaseFragment { } private void refreshMembers() { - socialRepository.retrieveGroupMembers(partyId, true).subscribe(users -> refreshLayout.setRefreshing(false), RxErrorHandler.handleEmptyError()); + socialRepository.retrieveGroupMembers(partyId, true).subscribe(users -> setRefreshing(false), RxErrorHandler.handleEmptyError()); + } + + private void setRefreshing(boolean isRefreshing) { + if (refreshLayout != null) { + refreshLayout.setRefreshing(isRefreshing); + } } public void setPartyId(String id) {