fix prior merge weirdness

This commit is contained in:
Negue 2017-02-09 19:55:20 +01:00
parent b75949d7a1
commit 1087c31a31
17 changed files with 108 additions and 278 deletions

View file

@ -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());
}
}

View file

@ -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;

View 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);

View file

@ -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);
}

View file

@ -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;

View file

@ -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

View file

@ -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;

View file

@ -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) {

View file

@ -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() {

View file

@ -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

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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 -> {
});
}

View file

@ -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

View file

@ -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();

View file

@ -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();
}