mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-07-31 19:20:34 +00:00
fix prior merge weirdness
This commit is contained in:
parent
b75949d7a1
commit
1087c31a31
17 changed files with 108 additions and 278 deletions
|
|
@ -10,7 +10,6 @@ import com.amplitude.api.Amplitude;
|
|||
import com.habitrpg.android.habitica.database.CheckListItemExcludeStrategy;
|
||||
import com.habitrpg.android.habitica.helpers.PopupNotificationsManager;
|
||||
import com.habitrpg.android.habitica.proxy.ifce.CrashlyticsProxy;
|
||||
import com.habitrpg.android.habitica.helpers.PopupNotificationsManager;
|
||||
import com.magicmicky.habitrpgwrapper.lib.api.ApiService;
|
||||
import com.magicmicky.habitrpgwrapper.lib.api.IApiClient;
|
||||
import com.magicmicky.habitrpgwrapper.lib.api.Server;
|
||||
|
|
@ -29,6 +28,7 @@ import com.magicmicky.habitrpgwrapper.lib.models.PurchaseValidationResult;
|
|||
import com.magicmicky.habitrpgwrapper.lib.models.Quest;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Shop;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Status;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.SubscriptionValidationRequest;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Tag;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.responses.BuyResponse;
|
||||
|
|
@ -97,7 +97,6 @@ import java.util.HashMap;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.net.ssl.SSLException;
|
||||
|
||||
import okhttp3.OkHttpClient;
|
||||
|
|
@ -113,12 +112,16 @@ import rx.Observable;
|
|||
import rx.android.schedulers.AndroidSchedulers;
|
||||
import rx.functions.Action1;
|
||||
import rx.functions.Func1;
|
||||
import rx.functions.Func2;
|
||||
import rx.schedulers.Schedulers;
|
||||
|
||||
|
||||
public class ApiClient implements Action1<Throwable>, IApiClient {
|
||||
private final GsonConverterFactory gsonConverter;
|
||||
private final HostConfig hostConfig;
|
||||
private final Retrofit retrofitAdapter;
|
||||
|
||||
CrashlyticsProxy crashlyticsProxy;
|
||||
Context context;
|
||||
|
||||
// I think we don't need the ApiClient anymore we could just use ApiService
|
||||
private final ApiService apiService;
|
||||
|
|
@ -129,7 +132,7 @@ public class ApiClient implements Action1<Throwable>, IApiClient {
|
|||
@Override
|
||||
public Object call(HabitResponse habitResponse) {
|
||||
if (habitResponse.notifications != null) {
|
||||
PopupNotificationsManager popupNotificationsManager = PopupNotificationsManager.getInstance(ApiClient.this);
|
||||
PopupNotificationsManager popupNotificationsManager = PopupNotificationsManager.getInstance(ApiClient.this, context);
|
||||
popupNotificationsManager.showNotificationDialog(habitResponse.notifications);
|
||||
}
|
||||
return habitResponse.getData();
|
||||
|
|
@ -139,12 +142,15 @@ public class ApiClient implements Action1<Throwable>, IApiClient {
|
|||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.doOnError(this);
|
||||
private AlertDialog displayedAlert;
|
||||
private String languageCode;
|
||||
|
||||
//private OnHabitsAPIResult mResultListener;
|
||||
//private HostConfig mConfig;
|
||||
public ApiClient(GsonConverterFactory gsonConverter, HostConfig hostConfig, CrashlyticsProxy crashlyticsProxy) {
|
||||
public ApiClient(GsonConverterFactory gsonConverter, HostConfig hostConfig, CrashlyticsProxy crashlyticsProxy, Context context) {
|
||||
this.gsonConverter = gsonConverter;
|
||||
this.hostConfig = hostConfig;
|
||||
this.context = context;
|
||||
|
||||
HabiticaBaseApplication.getComponent().inject(this);
|
||||
crashlyticsProxy.setUserIdentifier(this.hostConfig.getUser());
|
||||
crashlyticsProxy.setUserName(this.hostConfig.getUser());
|
||||
|
|
@ -491,6 +497,11 @@ public class ApiClient implements Action1<Throwable>, IApiClient {
|
|||
return apiService.purchaseItem(type, itemKey).compose(configureApiCallObserver());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Observable<Void> validateSubscription(SubscriptionValidationRequest request){
|
||||
return apiService.validateSubscription(request).compose(configureApiCallObserver());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Observable<Void> purchaseHourglassItem(String type, String itemKey) {
|
||||
|
||||
|
|
@ -588,22 +599,7 @@ public class ApiClient implements Action1<Throwable>, IApiClient {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Observable<UserAuthResponse> registerUser(UserAuth auth) {
|
||||
return apiService.registerUser(auth).compose(configureApiCallObserver());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Observable<UserAuthResponse> connectLocal(UserAuth auth) {
|
||||
return apiService.connectLocal(auth).compose(configureApiCallObserver());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Observable<UserAuthResponse> connectSocial(UserAuthSocial auth) {
|
||||
return apiService.connectSocial(auth).compose(configureApiCallObserver());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Observable<Void> sleep() {
|
||||
public Observable<Boolean> sleep() {
|
||||
return apiService.sleep().compose(configureApiCallObserver());
|
||||
}
|
||||
|
||||
|
|
@ -824,7 +820,7 @@ public class ApiClient implements Action1<Throwable>, IApiClient {
|
|||
|
||||
@Override
|
||||
public Observable<Void> readNotificaiton(String notificationId) {
|
||||
return apiService.readNotificaiton(notificationId).compose(configureApiCallObserver());
|
||||
return apiService.readNotification(notificationId).compose(configureApiCallObserver());
|
||||
}
|
||||
|
||||
public static class ErrorResponse {
|
||||
|
|
@ -834,4 +830,11 @@ public class ApiClient implements Action1<Throwable>, IApiClient {
|
|||
public Observable<ContentResult>getContent() {
|
||||
return apiService.getContent(languageCode).compose(configureApiCallObserver());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Observable<ItemData> openMysteryItem() {
|
||||
return apiService.openMysteryItem().compose(configureApiCallObserver());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,22 +1,5 @@
|
|||
package com.habitrpg.android.habitica;
|
||||
|
||||
import com.amplitude.api.Amplitude;
|
||||
import com.facebook.FacebookSdk;
|
||||
import com.facebook.drawee.backends.pipeline.Fresco;
|
||||
import com.habitrpg.android.habitica.components.AppComponent;
|
||||
import com.habitrpg.android.habitica.proxy.ifce.CrashlyticsProxy;
|
||||
import com.habitrpg.android.habitica.ui.activities.IntroActivity;
|
||||
import com.habitrpg.android.habitica.ui.activities.LoginActivity;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.raizlabs.android.dbflow.config.FlowManager;
|
||||
import com.squareup.leakcanary.LeakCanary;
|
||||
import com.squareup.leakcanary.RefWatcher;
|
||||
|
||||
import org.solovyev.android.checkout.Billing;
|
||||
import org.solovyev.android.checkout.Cache;
|
||||
import org.solovyev.android.checkout.Checkout;
|
||||
import org.solovyev.android.checkout.PurchaseVerifier;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
|
|
@ -38,7 +21,6 @@ import com.amplitude.api.Amplitude;
|
|||
import com.facebook.FacebookSdk;
|
||||
import com.facebook.drawee.backends.pipeline.Fresco;
|
||||
import com.habitrpg.android.habitica.components.AppComponent;
|
||||
import com.habitrpg.android.habitica.helpers.PurchaseTypes;
|
||||
import com.habitrpg.android.habitica.proxy.ifce.CrashlyticsProxy;
|
||||
import com.habitrpg.android.habitica.ui.activities.IntroActivity;
|
||||
import com.habitrpg.android.habitica.ui.activities.LoginActivity;
|
||||
|
|
@ -46,12 +28,11 @@ import com.magicmicky.habitrpgwrapper.lib.api.IApiClient;
|
|||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.raizlabs.android.dbflow.config.FlowManager;
|
||||
import com.squareup.leakcanary.LeakCanary;
|
||||
import com.squareup.leakcanary.RefWatcher;
|
||||
|
||||
import org.solovyev.android.checkout.Billing;
|
||||
import org.solovyev.android.checkout.Cache;
|
||||
import org.solovyev.android.checkout.Checkout;
|
||||
import org.solovyev.android.checkout.ProductTypes;
|
||||
import org.solovyev.android.checkout.Products;
|
||||
import org.solovyev.android.checkout.PurchaseVerifier;
|
||||
|
||||
import java.io.File;
|
||||
|
|
|
|||
|
|
@ -58,31 +58,12 @@ public class HabiticaPurchaseVerifier extends BasePurchaseVerifier {
|
|||
validationRequest.transaction = new Transaction();
|
||||
validationRequest.transaction.receipt = purchase.data;
|
||||
validationRequest.transaction.signature = purchase.signature;
|
||||
apiHelper.apiService.validatePurchase(validationRequest).subscribe(purchaseValidationResult -> {
|
||||
purchasedOrderList.add(purchase.orderId);
|
||||
|
||||
apiClient.validatePurchase(validationRequest).subscribe(purchaseValidationResult -> {
|
||||
purchasedOrderList.add(purchase.orderId);
|
||||
|
||||
requestListener.onSuccess(verifiedPurchases);
|
||||
|
||||
//TODO: find way to get $ price automatically.
|
||||
if (purchase.sku.equals(PurchaseTypes.Purchase4Gems)) {
|
||||
Seeds.sharedInstance().recordIAPEvent(purchase.sku, 0.99);
|
||||
} else if (purchase.sku.equals(PurchaseTypes.Purchase21Gems)) {
|
||||
Seeds.sharedInstance().recordIAPEvent(purchase.sku, 4.99);
|
||||
} else if (purchase.sku.equals(PurchaseTypes.Purchase42Gems)) {
|
||||
Seeds.sharedInstance().recordIAPEvent(purchase.sku, 9.99);
|
||||
} else if (purchase.sku.equals(PurchaseTypes.Purchase84Gems)) {
|
||||
Seeds.sharedInstance().recordSeedsIAPEvent(purchase.sku, 19.99);
|
||||
}
|
||||
}, throwable -> {
|
||||
if (throwable.getClass().equals(HttpException.class)) {
|
||||
HttpException error = (HttpException) throwable;
|
||||
APIHelper.ErrorResponse res = apiHelper.getErrorResponse((HttpException) throwable);
|
||||
if (error.code() == 401) {
|
||||
if (res.message.equals("RECEIPT_ALREADY_USED")) {
|
||||
purchasedOrderList.add(purchase.orderId);
|
||||
|
||||
//TODO: find way to get $ price automatically.
|
||||
if (purchase.sku.equals(PurchaseTypes.Purchase4Gems)) {
|
||||
|
|
@ -115,7 +96,7 @@ public class HabiticaPurchaseVerifier extends BasePurchaseVerifier {
|
|||
validationRequest.transaction.receipt = purchase.data;
|
||||
validationRequest.transaction.signature = purchase.signature;
|
||||
validationRequest.sku = purchase.sku;
|
||||
apiHelper.apiService.validateSubscription(validationRequest).subscribe(purchaseValidationResult -> {
|
||||
apiClient.validateSubscription(validationRequest).subscribe(purchaseValidationResult -> {
|
||||
purchasedOrderList.add(purchase.orderId);
|
||||
|
||||
verifiedPurchases.add(purchase);
|
||||
|
|
@ -126,7 +107,7 @@ public class HabiticaPurchaseVerifier extends BasePurchaseVerifier {
|
|||
}, throwable -> {
|
||||
if (throwable.getClass().equals(HttpException.class)) {
|
||||
HttpException error = (HttpException) throwable;
|
||||
APIHelper.ErrorResponse res = apiHelper.getErrorResponse((HttpException) throwable);
|
||||
ApiClient.ErrorResponse res = apiClient.getErrorResponse((HttpException) throwable);
|
||||
if (error.code() == 401) {
|
||||
if (res.message.equals("RECEIPT_ALREADY_USED")) {
|
||||
purchasedOrderList.add(purchase.orderId);
|
||||
|
|
|
|||
|
|
@ -37,13 +37,13 @@ public class PopupNotificationsManager {
|
|||
|
||||
// @TODO: A queue for displaying alert dialogues
|
||||
|
||||
private PopupNotificationsManager(IApiClient apiClient) {
|
||||
private PopupNotificationsManager(IApiClient apiClient, Context context) {
|
||||
this.apiClient = apiClient;
|
||||
this.seenNotifications = new HashMap<>();
|
||||
this.context = context.getApplicationContext();
|
||||
}
|
||||
|
||||
public static PopupNotificationsManager getInstance(IApiClient apiHelper) {
|
||||
public static PopupNotificationsManager getInstance(IApiClient apiHelper, Context context) {
|
||||
if (instance == null) {
|
||||
instance = new PopupNotificationsManager(apiHelper, context);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import android.preference.PreferenceManager;
|
|||
|
||||
import com.google.firebase.iid.FirebaseInstanceId;
|
||||
import com.google.firebase.messaging.RemoteMessage;
|
||||
import com.habitrpg.android.habitica.HabiticaBaseApplication;
|
||||
import com.magicmicky.habitrpgwrapper.lib.api.IApiClient;
|
||||
import com.habitrpg.android.habitica.HabiticaApplication;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
|
|
|
|||
|
|
@ -34,8 +34,8 @@ public class ApiModule {
|
|||
|
||||
@Provides
|
||||
@Singleton
|
||||
public IApiClient providesApiHelper(GsonConverterFactory gsonConverter, HostConfig hostConfig, CrashlyticsProxy crashlyticsProxy) {
|
||||
return new ApiClient(gsonConverter, hostConfig, crashlyticsProxy);
|
||||
public IApiClient providesApiHelper(GsonConverterFactory gsonConverter, HostConfig hostConfig, CrashlyticsProxy crashlyticsProxy, Context context) {
|
||||
return new ApiClient(gsonConverter, hostConfig, crashlyticsProxy, context);
|
||||
}
|
||||
|
||||
@Provides
|
||||
|
|
|
|||
|
|
@ -1,11 +1,5 @@
|
|||
package com.habitrpg.android.habitica.receivers;
|
||||
|
||||
import com.habitrpg.android.habitica.APIHelper;
|
||||
import com.habitrpg.android.habitica.HabiticaApplication;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
|
||||
import android.app.NotificationManager;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
|
|
@ -13,10 +7,10 @@ import android.content.Intent;
|
|||
import android.content.res.Resources;
|
||||
import android.os.Bundle;
|
||||
|
||||
import com.magicmicky.habitrpgwrapper.lib.api.IApiClient;
|
||||
import com.habitrpg.android.habitica.HabiticaApplication;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback;
|
||||
import com.magicmicky.habitrpgwrapper.lib.api.IApiClient;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
|
|
|||
|
|
@ -1,20 +1,5 @@
|
|||
package com.habitrpg.android.habitica.ui.activities;
|
||||
|
||||
import com.habitrpg.android.habitica.APIHelper;
|
||||
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.social.challenges.ChallegeDetailDialogHolder;
|
||||
import com.habitrpg.android.habitica.ui.fragments.social.challenges.ChallengeTasksRecyclerViewFragment;
|
||||
import com.habitrpg.android.habitica.ui.helpers.MarkdownParser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Challenge;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
|
||||
import com.raizlabs.android.dbflow.sql.builder.Condition;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
||||
import net.pherth.android.emoji_library.EmojiParser;
|
||||
import net.pherth.android.emoji_library.EmojiTextView;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.databinding.ObservableArrayList;
|
||||
import android.databinding.ObservableList;
|
||||
|
|
@ -31,32 +16,27 @@ import android.widget.FrameLayout;
|
|||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.HabiticaApplication;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.components.AppComponent;
|
||||
import com.habitrpg.android.habitica.events.HabitScoreEvent;
|
||||
import com.habitrpg.android.habitica.events.TaskRemovedEvent;
|
||||
import com.habitrpg.android.habitica.events.TaskUpdatedEvent;
|
||||
import com.habitrpg.android.habitica.events.commands.BuyRewardCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.ChecklistCheckedCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.TaskCheckedCommand;
|
||||
import com.habitrpg.android.habitica.helpers.SoundManager;
|
||||
import com.habitrpg.android.habitica.interactors.BuyRewardUseCase;
|
||||
import com.habitrpg.android.habitica.interactors.CheckClassSelectionUseCase;
|
||||
import com.habitrpg.android.habitica.interactors.ChecklistCheckUseCase;
|
||||
import com.habitrpg.android.habitica.interactors.DailyCheckUseCase;
|
||||
import com.habitrpg.android.habitica.interactors.DisplayItemDropUseCase;
|
||||
import com.habitrpg.android.habitica.interactors.HabitScoreUseCase;
|
||||
import com.habitrpg.android.habitica.interactors.NotifyUserUseCase;
|
||||
import com.habitrpg.android.habitica.interactors.TodoCheckUseCase;
|
||||
import com.habitrpg.android.habitica.ui.helpers.UiUtils;
|
||||
import com.magicmicky.habitrpgwrapper.lib.api.IApiClient;
|
||||
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.social.challenges.ChallegeDetailDialogHolder;
|
||||
import com.habitrpg.android.habitica.ui.fragments.social.challenges.ChallengeTasksRecyclerViewFragment;
|
||||
import com.habitrpg.android.habitica.ui.helpers.MarkdownParser;
|
||||
import com.habitrpg.android.habitica.ui.helpers.UiUtils;
|
||||
import com.magicmicky.habitrpgwrapper.lib.api.IApiClient;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Challenge;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Stats;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
|
||||
import com.raizlabs.android.dbflow.sql.builder.Condition;
|
||||
|
|
@ -82,8 +62,7 @@ import static com.habitrpg.android.habitica.ui.helpers.UiUtils.showSnackbar;
|
|||
public class ChallengeDetailActivity extends BaseActivity {
|
||||
|
||||
public static String CHALLENGE_ID = "CHALLENGE_ID";
|
||||
@Inject
|
||||
public APIHelper apiHelper;
|
||||
|
||||
@BindView(R.id.detail_tabs)
|
||||
TabLayout detail_tabs;
|
||||
@BindView(R.id.toolbar)
|
||||
|
|
@ -250,36 +229,6 @@ public class ChallengeDetailActivity extends BaseActivity {
|
|||
component.inject(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case R.id.action_leave:
|
||||
new AlertDialog.Builder(this)
|
||||
.setTitle(this.getString(R.string.challenge_leave_title))
|
||||
.setMessage(String.format(this.getString(R.string.challenge_leave_text), challenge.name))
|
||||
.setPositiveButton(this.getString(R.string.yes), (dialog, which) -> {
|
||||
this.apiHelper.apiService.leaveChallenge(challenge.id)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(aVoid -> {
|
||||
challenge.user_id = null;
|
||||
challenge.async().save();
|
||||
|
||||
HabiticaApplication.User.resetChallengeList();
|
||||
finish();
|
||||
|
||||
}, throwable -> {
|
||||
});
|
||||
})
|
||||
.setNegativeButton(this.getString(R.string.no), (dialog, which) -> {
|
||||
dialog.dismiss();
|
||||
}).show();
|
||||
return true;
|
||||
|
||||
default:
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onSupportNavigateUp() {
|
||||
finish();
|
||||
|
|
@ -373,19 +322,6 @@ public class ChallengeDetailActivity extends BaseActivity {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onSupportNavigateUp() {
|
||||
finish();
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
finish();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Subscribe
|
||||
public void onEvent(TaskCheckedCommand event) {
|
||||
switch (event.Task.type) {
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ import com.facebook.FacebookCallback;
|
|||
import com.facebook.FacebookException;
|
||||
import com.facebook.login.LoginResult;
|
||||
import com.facebook.login.widget.LoginButton;
|
||||
import com.habitrpg.android.habitica.BuildConfig;
|
||||
import com.magicmicky.habitrpgwrapper.lib.api.IApiClient;
|
||||
import com.habitrpg.android.habitica.HostConfig;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
|
|
@ -104,55 +105,6 @@ public class LoginActivity extends BaseActivity
|
|||
private Menu menu;
|
||||
private CallbackManager callbackManager;
|
||||
private String googleEmail;
|
||||
private View.OnClickListener mLoginNormalClick = new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
mProgressBar.setVisibility(View.VISIBLE);
|
||||
if (isRegistering) {
|
||||
String username, email, password, cpassword;
|
||||
username = String.valueOf(mUsernameET.getText()).trim();
|
||||
email = String.valueOf(mEmail.getText()).trim();
|
||||
password = String.valueOf(mPasswordET.getText());
|
||||
cpassword = String.valueOf(mConfirmPassword.getText());
|
||||
if (username.length() == 0 || password.length() == 0 || email.length() == 0 || cpassword.length() == 0) {
|
||||
showValidationError(R.string.login_validation_error_fieldsmissing);
|
||||
return;
|
||||
}
|
||||
apiHelper.registerUser(username, email, password, cpassword)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(LoginActivity.this, throwable -> {
|
||||
hideProgress();
|
||||
});
|
||||
} else {
|
||||
String username, password;
|
||||
username = String.valueOf(mUsernameET.getText()).trim();
|
||||
password = String.valueOf(mPasswordET.getText());
|
||||
if (username.length() == 0 || password.length() == 0) {
|
||||
showValidationError(R.string.login_validation_error_fieldsmissing);
|
||||
return;
|
||||
}
|
||||
apiHelper.connectUser(username, password)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(LoginActivity.this, throwable -> {
|
||||
hideProgress();
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
private View.OnClickListener mForgotPWClick = v -> {
|
||||
String url = hostConfig.getAddress();
|
||||
Intent i = new Intent(Intent.ACTION_VIEW);
|
||||
i.setData(Uri.parse(url));
|
||||
startActivity(i);
|
||||
};
|
||||
|
||||
public static void show(final View v) {
|
||||
v.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
public static void hide(final View v) {
|
||||
v.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutResId() {
|
||||
|
|
|
|||
|
|
@ -1,14 +1,36 @@
|
|||
package com.habitrpg.android.habitica.ui.activities;
|
||||
|
||||
import android.appwidget.AppWidgetManager;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.content.res.Configuration;
|
||||
import android.database.sqlite.SQLiteDoneException;
|
||||
import android.databinding.DataBindingUtil;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Color;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.design.widget.TabLayout;
|
||||
import android.support.v4.app.FragmentTransaction;
|
||||
import android.support.v4.content.FileProvider;
|
||||
import android.support.v4.view.GravityCompat;
|
||||
import android.support.v4.widget.DrawerLayout;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.util.Log;
|
||||
import android.view.Gravity;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
import com.facebook.drawee.view.SimpleDraweeView;
|
||||
import com.habitrpg.android.habitica.interactors.BuyRewardUseCase;
|
||||
import com.habitrpg.android.habitica.interactors.CheckClassSelectionUseCase;
|
||||
import com.habitrpg.android.habitica.interactors.ChecklistCheckUseCase;
|
||||
import com.habitrpg.android.habitica.interactors.DailyCheckUseCase;
|
||||
import com.habitrpg.android.habitica.interactors.DisplayItemDropUseCase;
|
||||
import com.habitrpg.android.habitica.interactors.NotifyUserUseCase;
|
||||
import com.habitrpg.android.habitica.interactors.TodoCheckUseCase;
|
||||
import com.magicmicky.habitrpgwrapper.lib.api.IApiClient;
|
||||
import com.habitrpg.android.habitica.HabiticaApplication;
|
||||
import com.habitrpg.android.habitica.HostConfig;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
|
|
@ -35,7 +57,6 @@ import com.habitrpg.android.habitica.events.TaskSaveEvent;
|
|||
import com.habitrpg.android.habitica.events.TaskUpdatedEvent;
|
||||
import com.habitrpg.android.habitica.events.ToggledEditTagsEvent;
|
||||
import com.habitrpg.android.habitica.events.ToggledInnStateEvent;
|
||||
import com.habitrpg.android.habitica.events.UpdateGoldGemsPurchasedevent;
|
||||
import com.habitrpg.android.habitica.events.commands.BuyGemItemCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.BuyRewardCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.ChecklistCheckedCommand;
|
||||
|
|
@ -55,7 +76,14 @@ import com.habitrpg.android.habitica.helpers.LanguageHelper;
|
|||
import com.habitrpg.android.habitica.helpers.SoundManager;
|
||||
import com.habitrpg.android.habitica.helpers.TaskAlarmManager;
|
||||
import com.habitrpg.android.habitica.helpers.notifications.PushNotificationManager;
|
||||
import com.habitrpg.android.habitica.interactors.BuyRewardUseCase;
|
||||
import com.habitrpg.android.habitica.interactors.CheckClassSelectionUseCase;
|
||||
import com.habitrpg.android.habitica.interactors.ChecklistCheckUseCase;
|
||||
import com.habitrpg.android.habitica.interactors.DailyCheckUseCase;
|
||||
import com.habitrpg.android.habitica.interactors.DisplayItemDropUseCase;
|
||||
import com.habitrpg.android.habitica.interactors.HabitScoreUseCase;
|
||||
import com.habitrpg.android.habitica.interactors.NotifyUserUseCase;
|
||||
import com.habitrpg.android.habitica.interactors.TodoCheckUseCase;
|
||||
import com.habitrpg.android.habitica.proxy.ifce.CrashlyticsProxy;
|
||||
import com.habitrpg.android.habitica.ui.AvatarView;
|
||||
import com.habitrpg.android.habitica.ui.AvatarWithBarsViewModel;
|
||||
|
|
@ -76,9 +104,7 @@ import com.magicmicky.habitrpgwrapper.lib.models.Preferences;
|
|||
import com.magicmicky.habitrpgwrapper.lib.models.Shop;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.SpecialItems;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Stats;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.SuppressedModals;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Tag;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.TaskDirection;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.TutorialStep;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Egg;
|
||||
|
|
@ -87,7 +113,6 @@ import com.magicmicky.habitrpgwrapper.lib.models.inventory.HatchingPotion;
|
|||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Item;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Pet;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.QuestContent;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.responses.HabitResponse;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.responses.MaintenanceResponse;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.ChecklistItem;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Days;
|
||||
|
|
@ -117,38 +142,6 @@ import com.raizlabs.android.dbflow.structure.BaseModel;
|
|||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
|
||||
import android.appwidget.AppWidgetManager;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.content.res.Configuration;
|
||||
import android.database.sqlite.SQLiteDoneException;
|
||||
import android.databinding.DataBindingUtil;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Color;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.design.widget.TabLayout;
|
||||
import android.support.v4.app.FragmentTransaction;
|
||||
import android.support.v4.content.FileProvider;
|
||||
import android.support.v4.view.GravityCompat;
|
||||
import android.support.v4.widget.DrawerLayout;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.util.Log;
|
||||
import android.view.Gravity;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
|
|
@ -168,6 +161,7 @@ import retrofit2.adapter.rxjava.HttpException;
|
|||
import rx.Observable;
|
||||
import rx.functions.Action1;
|
||||
|
||||
import static android.os.Build.VERSION.SDK_INT;
|
||||
import static com.habitrpg.android.habitica.interactors.NotifyUserUseCase.MIN_LEVEL_FOR_SKILLS;
|
||||
import static com.habitrpg.android.habitica.ui.helpers.UiUtils.SnackbarDisplayType;
|
||||
import static com.habitrpg.android.habitica.ui.helpers.UiUtils.showSnackbar;
|
||||
|
|
@ -203,7 +197,7 @@ public class MainActivity extends BaseActivity implements Action1<Throwable>, Ha
|
|||
View avatar_with_bars;
|
||||
@BindView(R.id.overlayFrameLayout)
|
||||
FrameLayout overlayFrameLayout;
|
||||
|
||||
PushNotificationManager pushNotificationManager;
|
||||
// region UseCases
|
||||
|
||||
@Inject
|
||||
|
|
@ -275,7 +269,7 @@ public class MainActivity extends BaseActivity implements Action1<Throwable>, Ha
|
|||
LanguageHelper languageHelper = new LanguageHelper(sharedPreferences.getString("language", "en"));
|
||||
Locale.setDefault(languageHelper.getLocale());
|
||||
Configuration configuration = new Configuration();
|
||||
if (android.os.Build.VERSION.SDK_INT <= Build.VERSION_CODES.JELLY_BEAN) {
|
||||
if (SDK_INT <= Build.VERSION_CODES.JELLY_BEAN) {
|
||||
configuration.locale = languageHelper.getLocale();
|
||||
} else {
|
||||
configuration.setLocale(languageHelper.getLocale());
|
||||
|
|
@ -1115,9 +1109,9 @@ public class MainActivity extends BaseActivity implements Action1<Throwable>, Ha
|
|||
|
||||
@Subscribe
|
||||
public void openMysteryItem(OpenMysteryItemEvent event) {
|
||||
apiHelper.apiService.openMysteryItem().compose(apiHelper.configureApiCallObserver())
|
||||
apiClient.openMysteryItem()
|
||||
.subscribe(mysteryItem -> {
|
||||
apiHelper.retrieveUser(false).compose(apiHelper.configureApiCallObserver())
|
||||
apiClient.retrieveUser(false)
|
||||
.subscribe(new HabitRPGUserCallback(user1 -> {
|
||||
OpenedMysteryItemEvent openedEvent = new OpenedMysteryItemEvent();
|
||||
openedEvent.numberLeft = user1.getPurchased().getPlan().mysteryItems.size();
|
||||
|
|
@ -1126,7 +1120,8 @@ public class MainActivity extends BaseActivity implements Action1<Throwable>, Ha
|
|||
MainActivity.this.onUserReceived(user1);
|
||||
}), throwable -> {
|
||||
});
|
||||
}, throwable -> {});
|
||||
}, throwable -> {
|
||||
});
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
|
|
|
|||
|
|
@ -41,6 +41,8 @@ public class PartyInviteActivity extends BaseActivity {
|
|||
public static final String IS_EMAIL_KEY = "isEmail";
|
||||
public static final String EMAILS_KEY = "emails";
|
||||
@Inject
|
||||
protected HostConfig hostConfig;
|
||||
@Inject
|
||||
IApiClient apiClient;
|
||||
@BindView(R.id.tab_layout)
|
||||
TabLayout tabLayout;
|
||||
|
|
|
|||
|
|
@ -20,9 +20,6 @@ import javax.inject.Inject;
|
|||
import butterknife.BindView;
|
||||
|
||||
public class SkillMemberActivity extends BaseActivity {
|
||||
|
||||
@Inject
|
||||
public APIHelper apiHelper;
|
||||
@BindView(R.id.recyclerView)
|
||||
RecyclerView recyclerView;
|
||||
private PartyMemberRecyclerViewAdapter viewAdapter;
|
||||
|
|
|
|||
|
|
@ -1,12 +1,5 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments;
|
||||
|
||||
import com.habitrpg.android.habitica.APIHelper;
|
||||
import com.habitrpg.android.habitica.helpers.SoundManager;
|
||||
import com.habitrpg.android.habitica.ui.activities.MainActivity;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.raizlabs.android.dbflow.sql.builder.Condition;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.support.design.widget.TabLayout;
|
||||
|
|
@ -15,7 +8,6 @@ import android.view.View;
|
|||
import android.view.ViewGroup;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
import com.magicmicky.habitrpgwrapper.lib.api.IApiClient;
|
||||
import com.habitrpg.android.habitica.helpers.SoundManager;
|
||||
import com.habitrpg.android.habitica.ui.activities.MainActivity;
|
||||
import com.magicmicky.habitrpgwrapper.lib.api.IApiClient;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,16 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments;
|
||||
|
||||
import com.habitrpg.android.habitica.APIHelper;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.components.AppComponent;
|
||||
import com.habitrpg.android.habitica.events.UserSubscribedEvent;
|
||||
|
|
@ -9,6 +19,7 @@ import com.habitrpg.android.habitica.proxy.ifce.CrashlyticsProxy;
|
|||
import com.habitrpg.android.habitica.ui.SubscriptionDetailsView;
|
||||
import com.habitrpg.android.habitica.ui.SubscriptionOptionView;
|
||||
import com.habitrpg.android.habitica.ui.activities.GemPurchaseActivity;
|
||||
import com.magicmicky.habitrpgwrapper.lib.api.IApiClient;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.SubscriptionPlan;
|
||||
|
||||
|
|
@ -20,18 +31,6 @@ import org.solovyev.android.checkout.ProductTypes;
|
|||
import org.solovyev.android.checkout.RequestListener;
|
||||
import org.solovyev.android.checkout.Sku;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
|
@ -45,7 +44,7 @@ public class SubscriptionFragment extends BaseFragment implements GemPurchaseAct
|
|||
CrashlyticsProxy crashlyticsProxy;
|
||||
|
||||
@Inject
|
||||
APIHelper apiHelper;
|
||||
IApiClient apiClient;
|
||||
|
||||
@BindView(R.id.subscribe_listitem1_box)
|
||||
View subscribeListitem1Box;
|
||||
|
|
@ -127,8 +126,7 @@ public class SubscriptionFragment extends BaseFragment implements GemPurchaseAct
|
|||
|
||||
@Subscribe
|
||||
public void fetchUser(@Nullable UserSubscribedEvent event) {
|
||||
apiHelper.apiService.getUser().compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(this::setUser, throwable -> {
|
||||
apiClient.getUser().subscribe(this::setUser, throwable -> {
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -28,10 +28,7 @@ import javax.inject.Inject;
|
|||
|
||||
public class AvatarStatsWidgetProvider extends BaseWidgetProvider {
|
||||
private static final String LOG = AvatarStatsWidgetProvider.class.getName();
|
||||
@Inject
|
||||
APIHelper apiHelper;
|
||||
@Inject
|
||||
HostConfig hostConfig;
|
||||
|
||||
private AppWidgetManager appWidgetManager;
|
||||
private TransactionListener<HabitRPGUser> userTransactionListener = new TransactionListener<HabitRPGUser>() {
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -294,7 +294,7 @@ public interface ApiService {
|
|||
|
||||
// Notifications
|
||||
@POST("notifications/{notificationId}/read")
|
||||
Observable<HabitResponse<Void>> readNotificaiton(@Path("notificationId") String notificationId);
|
||||
Observable<HabitResponse<Void>> readNotification(@Path("notificationId") String notificationId);
|
||||
|
||||
@POST("user/open-mystery-item")
|
||||
Observable<HabitResponse<ItemData>> openMysteryItem();
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ import com.magicmicky.habitrpgwrapper.lib.models.PurchaseValidationResult;
|
|||
import com.magicmicky.habitrpgwrapper.lib.models.Quest;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Shop;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Status;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.SubscriptionValidationRequest;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Tag;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.UserAuth;
|
||||
|
|
@ -66,6 +67,7 @@ public interface IApiClient {
|
|||
Observable<Void> purchaseMysterySet(String itemKey);
|
||||
|
||||
Observable<Void> purchaseQuest(String key);
|
||||
Observable<Void> validateSubscription(SubscriptionValidationRequest request);
|
||||
|
||||
Observable<HabitRPGUser> sellItem(String itemType, String itemKey);
|
||||
|
||||
|
|
@ -101,15 +103,12 @@ public interface IApiClient {
|
|||
|
||||
Observable<Void> deleteTag(String id);
|
||||
|
||||
Observable<UserAuthResponse> registerUser(UserAuth auth);
|
||||
Observable<UserAuthResponse> registerUser(String username, String email, String password, String confirmPassword);
|
||||
|
||||
Observable<UserAuthResponse> connectLocal(UserAuth auth);
|
||||
Observable<UserAuthResponse> connectUser(String username, String password);
|
||||
|
||||
Observable<UserAuthResponse> connectSocial(UserAuthSocial auth);
|
||||
Observable<UserAuthResponse> connectSocial(String network, String userId, String accessToken);
|
||||
Observable<Void> sleep();
|
||||
Observable<Boolean> sleep();
|
||||
|
||||
Observable<HabitRPGUser> revive();
|
||||
|
||||
|
|
@ -218,4 +217,6 @@ public interface IApiClient {
|
|||
Observable<HabitRPGUser> retrieveUser(boolean b);
|
||||
|
||||
<T> Observable.Transformer<HabitResponse<T>, T> configureApiCallObserver();
|
||||
|
||||
Observable<ItemData> openMysteryItem();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue