diff --git a/Habitica/AndroidManifest.xml b/Habitica/AndroidManifest.xml
index 49fff089c..4a5acc115 100644
--- a/Habitica/AndroidManifest.xml
+++ b/Habitica/AndroidManifest.xml
@@ -129,6 +129,8 @@
+
diff --git a/Habitica/res/drawable-hdpi/support_habitica.png b/Habitica/res/drawable-hdpi/support_habitica.png
new file mode 100644
index 000000000..e9cf46e0b
Binary files /dev/null and b/Habitica/res/drawable-hdpi/support_habitica.png differ
diff --git a/Habitica/res/drawable-mdpi/support_habitica.png b/Habitica/res/drawable-mdpi/support_habitica.png
new file mode 100644
index 000000000..77b12870f
Binary files /dev/null and b/Habitica/res/drawable-mdpi/support_habitica.png differ
diff --git a/Habitica/res/drawable-xhdpi/support_habitica.png b/Habitica/res/drawable-xhdpi/support_habitica.png
new file mode 100644
index 000000000..4e2a1e242
Binary files /dev/null and b/Habitica/res/drawable-xhdpi/support_habitica.png differ
diff --git a/Habitica/res/drawable-xxhdpi/support_habitica.png b/Habitica/res/drawable-xxhdpi/support_habitica.png
new file mode 100644
index 000000000..fc77fd9c9
Binary files /dev/null and b/Habitica/res/drawable-xxhdpi/support_habitica.png differ
diff --git a/Habitica/res/layout/activity_gem_purchase.xml b/Habitica/res/layout/activity_gem_purchase.xml
new file mode 100644
index 000000000..7776fe9a0
--- /dev/null
+++ b/Habitica/res/layout/activity_gem_purchase.xml
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml
index 3231628bc..3671445e1 100644
--- a/Habitica/res/values/strings.xml
+++ b/Habitica/res/values/strings.xml
@@ -414,11 +414,13 @@ To start, which parts of your life do you want to improve?
Habitica Dailies
Habitica Add Task
Google play services could not be found.
+ Purchase
Buying gems supports the developers and helps keep Habitica running
Gems allow you to buy fun extras for you account, including:
Cool costumes for your avatar
Awesome backgrounds
Quests that reward you with pet eggs
The ability to change your class before level 100
+ Support Habitica
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PurchaseTypes.java b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PurchaseTypes.java
index 64ce11347..b7befef4b 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PurchaseTypes.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PurchaseTypes.java
@@ -6,10 +6,10 @@ import java.util.List;
public class PurchaseTypes {
- public static String Purchase4Gems = "com.habitrpg.android.habitica.4gems";
- public static String Purchase21Gems = "com.habitrpg.android.habitica.21gems";
- public static String Purchase42Gems = "com.habitrpg.android.habitica.42gems";
- public static String Purchase84Gems = "com.habitrpg.android.habitica.84gems";
+ public static String Purchase4Gems = "com.habitrpg.android.habitica.iap.4gems";
+ public static String Purchase21Gems = "com.habitrpg.android.habitica.iap.21gems";
+ public static String Purchase42Gems = "com.habitrpg.android.habitica.iap.42gems";
+ public static String Purchase84Gems = "com.habitrpg.android.habitica.iap.84gems";
public static List allTypes = Arrays.asList(Purchase4Gems, Purchase21Gems, Purchase42Gems, Purchase84Gems);
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GemPurchaseActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GemPurchaseActivity.java
new file mode 100644
index 000000000..7426d1b69
--- /dev/null
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GemPurchaseActivity.java
@@ -0,0 +1,69 @@
+package com.habitrpg.android.habitica.ui.activities;
+
+
+import com.habitrpg.android.habitica.HabiticaApplication;
+import com.habitrpg.android.habitica.R;
+import com.habitrpg.android.habitica.components.AppComponent;
+import com.habitrpg.android.habitica.ui.fragments.GemsPurchaseFragment;
+
+import org.solovyev.android.checkout.ActivityCheckout;
+import org.solovyev.android.checkout.Checkout;
+
+import android.os.Bundle;
+import android.support.v7.widget.Toolbar;
+import android.view.MenuItem;
+
+public class GemPurchaseActivity extends BaseActivity implements GemsPurchaseFragment.Listener {
+
+ private ActivityCheckout checkout;
+
+ @Override
+ protected int getLayoutResId() {
+ return R.layout.activity_gem_purchase;
+ }
+
+ @Override
+ protected void injectActivity(AppComponent component) {
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ setupCheckout();
+
+ Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
+ setSupportActionBar(toolbar);
+
+ if (getSupportActionBar() != null) {
+ getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+ getSupportActionBar().setDisplayShowHomeEnabled(true);
+ getSupportActionBar().setTitle(R.string.gem_purchase_toolbartitle);
+ }
+
+ GemsPurchaseFragment firstFragment = new GemsPurchaseFragment();
+ getSupportFragmentManager().beginTransaction()
+ .add(R.id.fragment_container, firstFragment).commit();
+ }
+
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ if (item.getItemId() == android.R.id.home) {
+ finish();
+ }
+
+ return super.onOptionsItemSelected(item);
+ }
+
+ private void setupCheckout() {
+ checkout = Checkout.forActivity(this, HabiticaApplication.getInstance(this).getCheckout());
+ checkout.start();
+ }
+
+ @Override
+ public ActivityCheckout getActivityCheckout() {
+ return checkout;
+ }
+}
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 33f574565..5c47ca3df 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
@@ -163,8 +163,7 @@ import static com.habitrpg.android.habitica.ui.helpers.UiUtils.SnackbarDisplayTy
import static com.habitrpg.android.habitica.ui.helpers.UiUtils.showSnackbar;
public class MainActivity extends BaseActivity implements Action1, HabitRPGUserCallback.OnUserReceived,
- TaskScoringCallback.OnTaskScored,
- GemsPurchaseFragment.Listener, TutorialView.OnTutorialReaction {
+ TaskScoringCallback.OnTaskScored, TutorialView.OnTutorialReaction {
public static final int SELECT_CLASS_RESULT = 11;
public static final int MIN_LEVEL_FOR_SKILLS = 11;
@@ -274,7 +273,6 @@ public class MainActivity extends BaseActivity implements Action1, Ha
.append(this.drawer);
}
- setupCheckout();
EventBus.getDefault().register(this);
}
@@ -324,15 +322,6 @@ public class MainActivity extends BaseActivity implements Action1, Ha
sendBroadcast(intent);
}
- private void setupCheckout() {
- checkout = Checkout.forActivity(this, HabiticaApplication.getInstance(this).getCheckout());
- checkout.start();
- }
-
- @Override
- public ActivityCheckout getActivityCheckout() {
- return checkout;
- }
private void saveLoginInformation() {
HabiticaApplication.User = user;
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/GemsPurchaseFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/GemsPurchaseFragment.java
index 6a56c2cef..ea30bb9e7 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/GemsPurchaseFragment.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/GemsPurchaseFragment.java
@@ -35,7 +35,7 @@ import butterknife.BindView;
import butterknife.OnClick;
import io.fabric.sdk.android.Fabric;
-public class GemsPurchaseFragment extends BaseMainFragment {
+public class GemsPurchaseFragment extends BaseFragment {
@BindView(R.id.gems_4_view)
GemPurchaseOptionsView gems4View;
@@ -66,10 +66,7 @@ public class GemsPurchaseFragment extends BaseMainFragment {
super.onCreateView(inflater, container, savedInstanceState);
- gems4View.setOnPurchaseClickListener(v -> purchaseGems(PurchaseTypes.Purchase4Gems));
- gems21View.setOnPurchaseClickListener(v -> purchaseGems(PurchaseTypes.Purchase21Gems));
- gems42View.setOnPurchaseClickListener(v -> purchaseGems(PurchaseTypes.Purchase42Gems));
- gems84View.setOnPurchaseClickListener(v -> purchaseGems(PurchaseTypes.Purchase84Gems));
+ priceMap = new HashMap<>();
return inflater.inflate(R.layout.fragment_gem_purchase, container, false);
}
@@ -83,6 +80,11 @@ public class GemsPurchaseFragment extends BaseMainFragment {
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
+ gems4View.setOnPurchaseClickListener(v -> purchaseGems(PurchaseTypes.Purchase4Gems));
+ gems21View.setOnPurchaseClickListener(v -> purchaseGems(PurchaseTypes.Purchase21Gems));
+ gems42View.setOnPurchaseClickListener(v -> purchaseGems(PurchaseTypes.Purchase42Gems));
+ gems84View.setOnPurchaseClickListener(v -> purchaseGems(PurchaseTypes.Purchase84Gems));
+
final ActivityCheckout checkout = listener.getActivityCheckout();
if (checkout != null) {
@@ -169,7 +171,7 @@ public class GemsPurchaseFragment extends BaseMainFragment {
public void onSuccess(@NonNull Purchases purchases) {
for (Purchase purchase : purchases.list) {
if (PurchaseTypes.allTypes.contains(purchase.sku)) {
- billingRequests.consume(purchase.token, new RequestListener