diff --git a/Habitica/res/layout/fragment_tavern_detail.xml b/Habitica/res/layout/fragment_tavern_detail.xml
new file mode 100644
index 000000000..b1766563e
--- /dev/null
+++ b/Habitica/res/layout/fragment_tavern_detail.xml
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml
index da7c2cb19..5ca9622ba 100644
--- a/Habitica/res/values/strings.xml
+++ b/Habitica/res/values/strings.xml
@@ -77,9 +77,9 @@
Send us Feedback!
Report a Bug
Source Code
-
- Repeat Every
-
+
+ Repeat Every
+
Connection Error
@@ -118,17 +118,17 @@
Frequency
On Certain Days of the Week
Every X Days
-
- Summary
- Repeats
- Repeats On
- Daily
- Weekly
- Monthly
- Yearly
- Day of Month
- Day of Week
-
+
+ Summary
+ Repeats
+ Repeats On
+ Daily
+ Weekly
+ Monthly
+ Yearly
+ Day of Month
+ Day of Week
+
Monday
Tuesday
@@ -583,8 +583,8 @@
Reload Content
Set Dailies default to ‘due’ tab
With this option set, the Dailies tasks will default to ‘due’ instead of ‘all’
- "Repeats %1$s every %2$s %3$s %4$s"
-
+ "Repeats %1$s every %2$s %3$s %4$s"
+
Your device does not have any of the supported payment methods. Please use the habitica website if you want to purchase gems.
Your device does not have any of the supported payment methods. Please use the habitica website if you want to purchase a subscription.
Save
@@ -602,4 +602,5 @@
Description (optional)
New challenge title
Ownership
+ Inn
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.java b/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.java
index e93561973..46282f9a1 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.java
@@ -70,6 +70,7 @@ import com.habitrpg.android.habitica.ui.fragments.social.GuildsOverviewFragment;
import com.habitrpg.android.habitica.ui.fragments.social.InboxFragment;
import com.habitrpg.android.habitica.ui.fragments.social.InboxMessageListFragment;
import com.habitrpg.android.habitica.ui.fragments.social.PublicGuildsFragment;
+import com.habitrpg.android.habitica.ui.fragments.social.TavernDetailFragment;
import com.habitrpg.android.habitica.ui.fragments.social.TavernFragment;
import com.habitrpg.android.habitica.ui.fragments.social.challenges.ChallengeDetailDialogHolder;
import com.habitrpg.android.habitica.ui.fragments.social.challenges.ChallengeListFragment;
@@ -265,4 +266,6 @@ public interface AppComponent {
void inject(CreateChallengeActivity createChallengeActivity);
void inject(ChallengeDetailDialogHolder challengeDetailDialogHolder);
+
+ void inject(TavernDetailFragment tavernDetailFragment);
}
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 63ccd91fc..fe8564b66 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
@@ -104,8 +104,9 @@ public class UserRepositoryImpl extends BaseRepositoryImpl
public Observable sleep(User user) {
return apiClient.sleep()
.map(isSleeping -> {
- user.getPreferences().setSleep(isSleeping);
- localRepository.saveUser(user);
+ localRepository.executeTransaction(realm -> {
+ user.getPreferences().setSleep(isSleeping);
+ });
return user;
});
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/TavernDetailFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/TavernDetailFragment.java
new file mode 100644
index 000000000..2a162f4f7
--- /dev/null
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/TavernDetailFragment.java
@@ -0,0 +1,71 @@
+package com.habitrpg.android.habitica.ui.fragments.social;
+
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v4.view.ViewPager;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+
+import com.habitrpg.android.habitica.R;
+import com.habitrpg.android.habitica.components.AppComponent;
+import com.habitrpg.android.habitica.data.UserRepository;
+import com.habitrpg.android.habitica.helpers.RxErrorHandler;
+import com.habitrpg.android.habitica.models.user.User;
+import com.habitrpg.android.habitica.modules.AppModule;
+import com.habitrpg.android.habitica.ui.fragments.BaseFragment;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+
+public class TavernDetailFragment extends BaseFragment {
+
+ @Inject
+ UserRepository userRepository;
+ @Inject
+ @Named(AppModule.NAMED_USER_ID)
+ String userId;
+
+ @BindView(R.id.dailies_button)
+ Button dailiesButton;
+ private User user;
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ super.onCreateView(inflater, container, savedInstanceState);
+ return inflater.inflate(R.layout.fragment_tavern_detail, container, false);
+ }
+
+ @Override
+ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
+ super.onViewCreated(view, savedInstanceState);
+
+ compositeSubscription.add(userRepository.getUser(userId).subscribe(user -> {
+ this.user = user;
+ this.updatePausedState();
+ }, RxErrorHandler.handleEmptyError()));
+ }
+
+ private void updatePausedState() {
+ if (user.getPreferences().getSleep()) {
+ dailiesButton.setText(R.string.tavern_inn_checkOut);
+ } else {
+ dailiesButton.setText(R.string.tavern_inn_rest);
+ }
+ }
+
+ @Override
+ public void injectFragment(AppComponent component) {
+ component.inject(this);
+ }
+
+ @OnClick(R.id.dailies_button)
+ public void dailiesButtonClicked() {
+ userRepository.sleep(user).subscribe(user -> {}, RxErrorHandler.handleEmptyError());
+ }
+}
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 ea02a72d9..b665c1ff3 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
@@ -35,6 +35,7 @@ public class TavernFragment extends BaseMainFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
+ this.usesTabLayout = true;
hideToolbar();
disableToolbarScrolling();
super.onCreateView(inflater, container, savedInstanceState);
@@ -110,12 +111,16 @@ public class TavernFragment extends BaseMainFragment {
switch (position) {
case 0: {
+ fragment = new TavernDetailFragment();
+ break;
+ }
+ case 1: {
chatListFragment = new ChatListFragment();
chatListFragment.configure("habitrpg", user, true);
fragment = chatListFragment;
break;
}
- case 1: {
+ case 2: {
fragment = questInfoFragment = GroupInformationFragment.newInstance(tavern, user);
break;
}
@@ -129,17 +134,19 @@ public class TavernFragment extends BaseMainFragment {
@Override
public int getCount() {
if (tavern != null && tavern.quest != null && tavern.quest.key != null) {
- return 2;
+ return 3;
}
- return 1;
+ return 2;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
- return getContext().getString(R.string.chat);
+ return getContext().getString(R.string.inn);
case 1:
+ return getContext().getString(R.string.chat);
+ case 2:
return getContext().getString(R.string.world_quest);
}
return "";