mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-05-21 13:19:02 +00:00
Initial apiv3 support
This commit is contained in:
parent
fe8a584a7a
commit
0ed79c8b53
149 changed files with 1912 additions and 2304 deletions
1
Habitica/assets/migrations/Habitica/19.sql
Normal file
1
Habitica/assets/migrations/Habitica/19.sql
Normal file
|
|
@ -0,0 +1 @@
|
|||
ALTER TABLE UserParty ADD COLUMN 'partyOrder' varchar(255);
|
||||
|
|
@ -44,7 +44,12 @@ dependencies {
|
|||
compile fileTree(dir: 'libs', include: ['*.jar'])
|
||||
compile 'com.squareup.okhttp3:okhttp-urlconnection:3.2.0'
|
||||
compile 'com.squareup.okhttp3:okhttp:3.2.0'
|
||||
compile 'com.squareup.retrofit:retrofit:1.9.0'
|
||||
compile 'com.squareup.okhttp3:logging-interceptor:3.2.0'
|
||||
compile ('com.squareup.retrofit2:retrofit:2.0.2') {
|
||||
exclude module: 'okhttp'
|
||||
}
|
||||
compile 'com.squareup.retrofit2:converter-gson:2.0.2'
|
||||
compile 'com.squareup.retrofit2:adapter-rxjava:2.0.2'
|
||||
|
||||
compile('com.crashlytics.sdk.android:crashlytics:2.3.0@aar') {
|
||||
transitive = true;
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@
|
|||
android:id="@+id/username_row"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="center">
|
||||
style="@style/LoginRow">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="17dp"
|
||||
|
|
@ -71,7 +71,8 @@
|
|||
<TableRow
|
||||
android:id="@+id/email_row"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
style="@style/LoginRow">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="17dp"
|
||||
|
|
@ -94,7 +95,8 @@
|
|||
<TableRow
|
||||
android:id="@+id/password_row"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
style="@style/LoginRow">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="17dp"
|
||||
|
|
@ -118,7 +120,8 @@
|
|||
<TableRow
|
||||
android:id="@+id/confirm_password_row"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
style="@style/LoginRow">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="17dp"
|
||||
|
|
@ -6,4 +6,5 @@
|
|||
<string name="SP_APIToken" translatable="false">APIToken</string>
|
||||
<string name="SP_username" translatable="false">Username</string>
|
||||
<string name="SP_email" translatable="false">E-mail</string>
|
||||
<string name="base_url" translatable="false">https://habitica.com</string>
|
||||
</resources>
|
||||
|
|
@ -176,4 +176,10 @@
|
|||
<item name="android:layout_gravity">center</item>
|
||||
<item name="android:gravity">center</item>
|
||||
</style>
|
||||
|
||||
<style name="LoginRow">
|
||||
<item name="android:layout_marginLeft">8dp</item>
|
||||
<item name="android:layout_marginRight">8dp</item>
|
||||
<item name="android:layout_gravity">center</item>
|
||||
</style>
|
||||
</resources>
|
||||
|
|
@ -1,11 +1,5 @@
|
|||
package com.habitrpg.android.habitica;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.util.Log;
|
||||
|
||||
import com.amplitude.api.Amplitude;
|
||||
import com.crashlytics.android.Crashlytics;
|
||||
import com.google.gson.ExclusionStrategy;
|
||||
import com.google.gson.FieldAttributes;
|
||||
import com.google.gson.Gson;
|
||||
|
|
@ -15,24 +9,24 @@ import com.google.gson.reflect.TypeToken;
|
|||
import com.google.gson.stream.JsonReader;
|
||||
import com.google.gson.stream.JsonToken;
|
||||
import com.google.gson.stream.JsonWriter;
|
||||
import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback;
|
||||
import com.habitrpg.android.habitica.callbacks.TaskScoringCallback;
|
||||
|
||||
import com.amplitude.api.Amplitude;
|
||||
import com.crashlytics.android.Crashlytics;
|
||||
import com.habitrpg.android.habitica.database.CheckListItemExcludeStrategy;
|
||||
import com.magicmicky.habitrpgwrapper.lib.api.ApiService;
|
||||
import com.magicmicky.habitrpgwrapper.lib.api.InAppPurchasesApiService;
|
||||
import com.magicmicky.habitrpgwrapper.lib.api.MaintenanceApiService;
|
||||
import com.magicmicky.habitrpgwrapper.lib.api.Server;
|
||||
import com.magicmicky.habitrpgwrapper.lib.api.TypeAdapter.TagsAdapter;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.ChatMessage;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.ContentResult;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Customization;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.FAQArticle;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Group;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.PurchaseValidationRequest;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.PurchaseValidationResult;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Purchases;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Skill;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.TaskDirection;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.TutorialStep;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.UserAuth;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.UserAuthResponse;
|
||||
|
|
@ -44,9 +38,11 @@ import com.magicmicky.habitrpgwrapper.lib.models.inventory.HatchingPotion;
|
|||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Mount;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Pet;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.QuestContent;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.responses.FeedResponse;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.ChecklistItem;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.ItemData;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.TaskList;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.TaskTag;
|
||||
import com.magicmicky.habitrpgwrapper.lib.utils.ChatMessageDeserializer;
|
||||
import com.magicmicky.habitrpgwrapper.lib.utils.ChecklistItemSerializer;
|
||||
|
|
@ -55,6 +51,7 @@ import com.magicmicky.habitrpgwrapper.lib.utils.CustomizationDeserializer;
|
|||
import com.magicmicky.habitrpgwrapper.lib.utils.DateDeserializer;
|
||||
import com.magicmicky.habitrpgwrapper.lib.utils.EggListDeserializer;
|
||||
import com.magicmicky.habitrpgwrapper.lib.utils.FAQArticleListDeserilializer;
|
||||
import com.magicmicky.habitrpgwrapper.lib.utils.FeedResponseDeserializer;
|
||||
import com.magicmicky.habitrpgwrapper.lib.utils.FoodListDeserializer;
|
||||
import com.magicmicky.habitrpgwrapper.lib.utils.GroupSerialization;
|
||||
import com.magicmicky.habitrpgwrapper.lib.utils.HatchingPotionListDeserializer;
|
||||
|
|
@ -66,33 +63,60 @@ import com.magicmicky.habitrpgwrapper.lib.utils.QuestListDeserializer;
|
|||
import com.magicmicky.habitrpgwrapper.lib.utils.SkillDeserializer;
|
||||
import com.magicmicky.habitrpgwrapper.lib.utils.TaskListDeserializer;
|
||||
import com.magicmicky.habitrpgwrapper.lib.utils.TaskSerializer;
|
||||
import com.magicmicky.habitrpgwrapper.lib.utils.TaskTagDeserializer;
|
||||
import com.magicmicky.habitrpgwrapper.lib.utils.TutorialStepListDeserializer;
|
||||
import com.raizlabs.android.dbflow.structure.ModelAdapter;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.lang.annotation.Annotation;
|
||||
import java.lang.reflect.Type;
|
||||
import java.net.ConnectException;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import retrofit.Callback;
|
||||
import retrofit.ErrorHandler;
|
||||
import retrofit.Profiler;
|
||||
import retrofit.RequestInterceptor;
|
||||
import retrofit.RestAdapter;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.converter.GsonConverter;
|
||||
import okhttp3.Interceptor;
|
||||
import okhttp3.MediaType;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.Response;
|
||||
import okhttp3.ResponseBody;
|
||||
import okhttp3.logging.HttpLoggingInterceptor;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Converter;
|
||||
import retrofit2.Retrofit;
|
||||
import retrofit2.adapter.rxjava.HttpException;
|
||||
import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
|
||||
import retrofit2.converter.gson.GsonConverterFactory;
|
||||
import rx.Observable;
|
||||
import rx.android.schedulers.AndroidSchedulers;
|
||||
import rx.functions.Action1;
|
||||
import rx.schedulers.Schedulers;
|
||||
|
||||
|
||||
public class APIHelper implements ErrorHandler, Profiler {
|
||||
public class APIHelper implements Action1<Throwable> {
|
||||
|
||||
private static final String TAG = "ApiHelper";
|
||||
// I think we don't need the APIHelper anymore we could just use ApiService
|
||||
public final ApiService apiService;
|
||||
private final InAppPurchasesApiService inAppPurchasesService;
|
||||
public final MaintenanceApiService maintenanceService;
|
||||
private final GsonConverterFactory gsonConverter;
|
||||
private final Retrofit retrofitAdapter;
|
||||
private HostConfig cfg;
|
||||
|
||||
|
||||
final Observable.Transformer apiCallTransformer =
|
||||
observable -> ((Observable)observable).subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.doOnError(this);
|
||||
private AlertDialog displayedAlert;
|
||||
|
||||
//private OnHabitsAPIResult mResultListener;
|
||||
//private HostConfig mConfig;
|
||||
public APIHelper(final HostConfig cfg) {
|
||||
|
|
@ -101,17 +125,10 @@ public class APIHelper implements ErrorHandler, Profiler {
|
|||
Crashlytics.getInstance().core.setUserName(cfg.getUser());
|
||||
Amplitude.getInstance().setUserId(cfg.getUser());
|
||||
|
||||
RequestInterceptor requestInterceptor = request -> {
|
||||
request.addHeader("x-api-key", cfg.getApi());
|
||||
request.addHeader("x-api-user", cfg.getUser());
|
||||
request.addHeader("x-client", "habitica-android");
|
||||
};
|
||||
|
||||
Type taskTagClassListType = new TypeToken<List<TaskTag>>() {
|
||||
}.getType();
|
||||
|
||||
|
||||
Type taskClassListType = new TypeToken<List<Task>>() {}.getType();
|
||||
Type skillListType = new TypeToken<List<Skill>>() {}.getType();
|
||||
Type customizationListType = new TypeToken<List<Customization>>() {}.getType();
|
||||
Type tutorialStepListType = new TypeToken<List<TutorialStep>>() {}.getType();
|
||||
|
|
@ -124,7 +141,7 @@ public class APIHelper implements ErrorHandler, Profiler {
|
|||
Type petListType = new TypeToken<HashMap<String, Pet>>() {}.getType();
|
||||
Type mountListType = new TypeToken<HashMap<String, Mount>>() {}.getType();
|
||||
|
||||
//Exclusion stratety needed for DBFlow https://github.com/Raizlabs/DBFlow/issues/121
|
||||
//Exclusion strategy needed for DBFlow https://github.com/Raizlabs/DBFlow/issues/121
|
||||
Gson gson = new GsonBuilder()
|
||||
.setExclusionStrategies(new CheckListItemExcludeStrategy())
|
||||
.setExclusionStrategies(new ExclusionStrategy() {
|
||||
|
|
@ -138,12 +155,12 @@ public class APIHelper implements ErrorHandler, Profiler {
|
|||
return false;
|
||||
}
|
||||
})
|
||||
.registerTypeAdapter(taskTagClassListType, new TagsAdapter())
|
||||
.registerTypeAdapter(taskTagClassListType, new TaskTagDeserializer())
|
||||
.registerTypeAdapter(Boolean.class, booleanAsIntAdapter)
|
||||
.registerTypeAdapter(boolean.class, booleanAsIntAdapter)
|
||||
.registerTypeAdapter(skillListType, new SkillDeserializer())
|
||||
.registerTypeAdapter(ChecklistItem.class, new ChecklistItemSerializer())
|
||||
.registerTypeAdapter(taskClassListType, new TaskListDeserializer())
|
||||
.registerTypeAdapter(TaskList.class, new TaskListDeserializer())
|
||||
.registerTypeAdapter(Purchases.class, new PurchasedDeserializer())
|
||||
.registerTypeAdapter(customizationListType, new CustomizationDeserializer())
|
||||
.registerTypeAdapter(tutorialStepListType, new TutorialStepListDeserializer())
|
||||
|
|
@ -160,36 +177,81 @@ public class APIHelper implements ErrorHandler, Profiler {
|
|||
.registerTypeAdapter(ChatMessage.class, new ChatMessageDeserializer())
|
||||
.registerTypeAdapter(Task.class, new TaskSerializer())
|
||||
.registerTypeAdapter(ContentResult.class, new ContentDeserializer())
|
||||
.registerTypeAdapter(FeedResponse.class, new FeedResponseDeserializer())
|
||||
.setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
|
||||
.create();
|
||||
|
||||
Server server = new Server(cfg.getAddress());
|
||||
RestAdapter adapter = new RestAdapter.Builder()
|
||||
.setEndpoint(server.toString())
|
||||
.setErrorHandler(this)
|
||||
.setProfiler(this)
|
||||
.setLogLevel(BuildConfig.DEBUG ? RestAdapter.LogLevel.FULL : RestAdapter.LogLevel.NONE)
|
||||
.setRequestInterceptor(requestInterceptor)
|
||||
.setConverter(new GsonConverter(gson))
|
||||
Interceptor remove_data_interceptor = chain -> {
|
||||
Response response = chain.proceed(chain.request());
|
||||
String stringJson = response.body().string();
|
||||
JSONObject jsonObject = null;
|
||||
String dataString = null;
|
||||
try {
|
||||
jsonObject = new JSONObject(stringJson);
|
||||
if (jsonObject.has("data")) {
|
||||
dataString = jsonObject.getString("data");
|
||||
}
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
MediaType contentType = response.body().contentType();
|
||||
ResponseBody body = null;
|
||||
|
||||
if (dataString != null) {
|
||||
body = ResponseBody.create(contentType, dataString);
|
||||
} else {
|
||||
body = ResponseBody.create(contentType, stringJson);
|
||||
}
|
||||
return response.newBuilder().body(body).build();
|
||||
};
|
||||
|
||||
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
|
||||
if (BuildConfig.DEBUG) {
|
||||
logging.setLevel(HttpLoggingInterceptor.Level.BASIC);
|
||||
}
|
||||
|
||||
OkHttpClient client = new OkHttpClient.Builder()
|
||||
.addInterceptor(remove_data_interceptor)
|
||||
.addInterceptor(logging)
|
||||
.addNetworkInterceptor(chain -> {
|
||||
Request original = chain.request();
|
||||
if (cfg.getUser() != null) {
|
||||
Request request = original.newBuilder()
|
||||
.header("x-api-key", cfg.getApi())
|
||||
.header("x-api-user", cfg.getUser())
|
||||
.header("x-client", "habitica-android")
|
||||
.method(original.method(), original.body())
|
||||
.build();
|
||||
return chain.proceed(request);
|
||||
} else {
|
||||
return chain.proceed(original);
|
||||
}
|
||||
})
|
||||
.build();
|
||||
this.apiService = adapter.create(ApiService.class);
|
||||
|
||||
|
||||
gsonConverter = GsonConverterFactory.create(gson);
|
||||
|
||||
Server server = new Server(cfg.getAddress());
|
||||
retrofitAdapter = new Retrofit.Builder()
|
||||
.client(client)
|
||||
.baseUrl(server.toString())
|
||||
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
|
||||
.addConverterFactory(gsonConverter)
|
||||
.build();
|
||||
this.apiService = retrofitAdapter.create(ApiService.class);
|
||||
|
||||
server = new Server(cfg.getAddress(), false);
|
||||
adapter = new RestAdapter.Builder()
|
||||
.setEndpoint(server.toString())
|
||||
.setErrorHandler(this)
|
||||
.setProfiler(this)
|
||||
.setLogLevel(BuildConfig.DEBUG ? RestAdapter.LogLevel.FULL : RestAdapter.LogLevel.NONE)
|
||||
.setRequestInterceptor(requestInterceptor)
|
||||
.setConverter(new GsonConverter(gson))
|
||||
Retrofit adapter = new Retrofit.Builder()
|
||||
.baseUrl(server.toString())
|
||||
.addConverterFactory(gsonConverter)
|
||||
.build();
|
||||
this.inAppPurchasesService = adapter.create(InAppPurchasesApiService.class);
|
||||
|
||||
adapter = new RestAdapter.Builder()
|
||||
.setEndpoint("https://habitica-assets.s3.amazonaws.com/mobileApp/endpoint/")
|
||||
.setLogLevel(BuildConfig.DEBUG ? RestAdapter.LogLevel.FULL : RestAdapter.LogLevel.NONE)
|
||||
.setRequestInterceptor(requestInterceptor)
|
||||
.setConverter(new GsonConverter(gson))
|
||||
adapter = new Retrofit.Builder()
|
||||
.baseUrl("https://habitica-assets.s3.amazonaws.com/mobileApp/endpoint/")
|
||||
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
|
||||
.addConverterFactory(gsonConverter)
|
||||
.build();
|
||||
this.maintenanceService = adapter.create(MaintenanceApiService.class);
|
||||
}
|
||||
|
|
@ -223,117 +285,92 @@ public class APIHelper implements ErrorHandler, Profiler {
|
|||
}
|
||||
};
|
||||
|
||||
|
||||
public void createNewTask(Task item, Callback<Task> cb) {
|
||||
this.apiService.createItem(item, cb);
|
||||
}
|
||||
|
||||
public void retrieveUser(final HabitRPGUserCallback callback) {
|
||||
new Thread(() -> {
|
||||
apiService.getUser(callback);
|
||||
}).start();
|
||||
}
|
||||
|
||||
public void updateTaskDirection(String id, TaskDirection direction, TaskScoringCallback callback) {
|
||||
this.apiService.postTaskDirection(id, direction.toString(), callback);
|
||||
}
|
||||
|
||||
public void registerUser(String username, String email, String password, String confirmPassword, Callback<UserAuthResponse> callback) {
|
||||
public Observable<UserAuthResponse> registerUser(String username, String email, String password, String confirmPassword) {
|
||||
UserAuth auth = new UserAuth();
|
||||
auth.setUsername(username);
|
||||
auth.setPassword(password);
|
||||
auth.setConfirmPassword(confirmPassword);
|
||||
auth.setEmail(email);
|
||||
this.apiService.registerUser(auth, callback);
|
||||
return this.apiService.registerUser(auth)
|
||||
.compose(this.configureApiCallObserver());
|
||||
}
|
||||
|
||||
public void connectUser(String username, String password, Callback<UserAuthResponse> callback) {
|
||||
public Observable<UserAuthResponse> connectUser(String username, String password) {
|
||||
UserAuth auth = new UserAuth();
|
||||
auth.setUsername(username);
|
||||
auth.setPassword(password);
|
||||
this.apiService.connectLocal(auth, callback);
|
||||
return this.apiService.connectLocal(auth)
|
||||
.compose(this.configureApiCallObserver());
|
||||
}
|
||||
|
||||
public void connectSocial(String userId, String accessToken, Callback<UserAuthResponse> callback) {
|
||||
public Observable<UserAuthResponse> connectSocial(String userId, String accessToken) {
|
||||
UserAuthSocial auth = new UserAuthSocial();
|
||||
auth.setNetwork("facebook");
|
||||
UserAuthSocialTokens authResponse = new UserAuthSocialTokens();
|
||||
authResponse.setClient_id(userId);
|
||||
authResponse.setAccess_token(accessToken);
|
||||
auth.setAuthResponse(authResponse);
|
||||
this.apiService.connectSocial(auth, callback);
|
||||
return this.apiService.connectSocial(auth)
|
||||
.compose(this.configureApiCallObserver());
|
||||
}
|
||||
|
||||
public void updateTask(Task item, Callback<Task> cb) {
|
||||
this.apiService.updateTask(item.getId(), item, cb);
|
||||
}
|
||||
|
||||
public class ErrorResponse{
|
||||
public String err;
|
||||
}
|
||||
|
||||
public class ErrorListResponse {
|
||||
public List<String> err;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Throwable handleError(RetrofitError cause) {
|
||||
|
||||
if (cause.getKind().equals(RetrofitError.Kind.NETWORK)) {
|
||||
//It also handles timeouts
|
||||
showConnectionProblemDialog(R.string.network_error_no_network_body);
|
||||
return cause;
|
||||
} else if (cause.getKind().equals(RetrofitError.Kind.HTTP)) {
|
||||
Crashlytics.getInstance().core.log(Log.INFO, "Habitica", "Error loading " + cause.getUrl());
|
||||
retrofit.client.Response response = cause.getResponse();
|
||||
|
||||
@Override
|
||||
public void call(Throwable throwable) {
|
||||
if (throwable.getClass().equals(ConnectException.class)) {
|
||||
this.showConnectionProblemDialog(R.string.internal_error_api);
|
||||
} else if (throwable.getClass().equals(HttpException.class)) {
|
||||
HttpException error = (HttpException)throwable;
|
||||
retrofit2.Response<?> response = error.response();
|
||||
ErrorResponse res = null;
|
||||
|
||||
Converter<ResponseBody, ?> errorConverter =
|
||||
gsonConverter
|
||||
.responseBodyConverter(ErrorResponse.class, new Annotation[0], retrofitAdapter);
|
||||
try {
|
||||
res = new ErrorResponse();
|
||||
res.err = (String) cause.getBodyAs(String.class);
|
||||
} catch (RuntimeException e) {
|
||||
try {
|
||||
res = (ErrorResponse) cause.getBodyAs(ErrorResponse.class);
|
||||
} catch (RuntimeException e2) {
|
||||
try {
|
||||
ErrorListResponse resList = (ErrorListResponse) cause.getBodyAs(ErrorListResponse.class);
|
||||
if (resList.err != null && resList.err.size() >= 1) {
|
||||
res = new ErrorResponse();
|
||||
res.err = resList.err.get(0);
|
||||
}
|
||||
} catch (RuntimeException e3) {
|
||||
res = null;
|
||||
}
|
||||
|
||||
}
|
||||
res = (ErrorResponse) errorConverter.convert(response.errorBody());
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
int status = response.getStatus();
|
||||
int status = error.code();
|
||||
if (status == 401) {
|
||||
if(res != null && res.err != null && !res.err.isEmpty()) {
|
||||
showConnectionProblemDialog("", res.err);
|
||||
if(res != null && res.message != null && !res.message.isEmpty()) {
|
||||
showConnectionProblemDialog("", res.message);
|
||||
} else {
|
||||
showConnectionProblemDialog(R.string.authentication_error_title, R.string.authentication_error_body);
|
||||
}
|
||||
|
||||
return cause;
|
||||
} else if (status >= 500 && status < 600) {
|
||||
this.showConnectionProblemDialog(R.string.internal_error_api);
|
||||
return cause;
|
||||
} else if (status == 404 && cause.getUrl().endsWith("party/chat")) {
|
||||
return cause;
|
||||
} else if (status == 400) {
|
||||
if(res != null && res.err != null && !res.err.isEmpty()) {
|
||||
showConnectionProblemDialog("", res.err);
|
||||
if(res != null && res.message != null && !res.message.isEmpty()) {
|
||||
showConnectionProblemDialog("", res.message);
|
||||
}
|
||||
return cause;
|
||||
} else {
|
||||
showConnectionProblemDialog(R.string.internal_error_api);
|
||||
}
|
||||
}
|
||||
this.showConnectionProblemDialog(R.string.internal_error_api);
|
||||
}
|
||||
}
|
||||
|
||||
return cause;
|
||||
}
|
||||
public Observable<HabitRPGUser> retrieveUser(boolean withTasks) {
|
||||
Observable<HabitRPGUser> userObservable = apiService.getUser();
|
||||
if (withTasks) {
|
||||
Observable<TaskList> tasksObservable = apiService.getTasks();
|
||||
|
||||
userObservable = Observable.zip(userObservable, tasksObservable, (habitRPGUser, tasks) -> {
|
||||
habitRPGUser.setHabits(tasks.habits);
|
||||
habitRPGUser.setDailys(tasks.dailies);
|
||||
habitRPGUser.setTodos(tasks.todos);
|
||||
habitRPGUser.setRewards(tasks.rewards);
|
||||
return habitRPGUser;
|
||||
});
|
||||
}
|
||||
return userObservable.compose(configureApiCallObserver());
|
||||
}
|
||||
|
||||
public class ErrorResponse{
|
||||
public String message;
|
||||
}
|
||||
|
||||
private void showConnectionProblemDialog(final int resourceMessageString) {
|
||||
showConnectionProblemDialog(R.string.network_error_title, resourceMessageString);
|
||||
|
|
@ -348,42 +385,30 @@ public class APIHelper implements ErrorHandler, Profiler {
|
|||
|
||||
private void showConnectionProblemDialog(final String resourceTitleString, final String resourceMessageString){
|
||||
HabiticaApplication.currentActivity.runOnUiThread(() -> {
|
||||
if (!(HabiticaApplication.currentActivity).isFinishing()) {
|
||||
if (!(HabiticaApplication.currentActivity).isFinishing() && displayedAlert == null) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(HabiticaApplication.currentActivity)
|
||||
.setTitle(resourceTitleString)
|
||||
.setMessage(resourceMessageString)
|
||||
.setNeutralButton(android.R.string.ok, (dialog, which) -> {
|
||||
displayedAlert = null;
|
||||
});
|
||||
|
||||
if (!resourceTitleString.isEmpty()) {
|
||||
builder.setIcon(R.drawable.ic_warning_black);
|
||||
}
|
||||
|
||||
builder.show();
|
||||
displayedAlert = builder.show();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object beforeCall() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterCall(RequestInformation requestInfo, long elapsedTime, int statusCode, Object beforeCallData) {
|
||||
|
||||
}
|
||||
|
||||
public void toggleSleep(Callback<Void> cb){
|
||||
apiService.sleep(cb);
|
||||
}
|
||||
|
||||
public void reviveUser(HabitRPGUserCallback cb) {
|
||||
apiService.revive(cb);
|
||||
public PurchaseValidationResult validatePurchase(PurchaseValidationRequest request) throws IOException {
|
||||
Call<PurchaseValidationResult> response = inAppPurchasesService.validatePurchase(cfg.getUser(), cfg.getApi(), request);
|
||||
return response.execute().body();
|
||||
}
|
||||
|
||||
public PurchaseValidationResult validatePurchase(PurchaseValidationRequest request)
|
||||
{
|
||||
return inAppPurchasesService.validatePurchase(cfg.getUser(), cfg.getApi(), request);
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T> Observable.Transformer<T, T> configureApiCallObserver() {
|
||||
return (Observable.Transformer<T, T>) apiCallTransformer;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,10 +13,6 @@ import java.util.ArrayList;
|
|||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
|
||||
|
||||
public class ContentCache {
|
||||
public interface GotContentEntryCallback<T extends Object> {
|
||||
|
|
@ -83,89 +79,70 @@ public class ContentCache {
|
|||
}
|
||||
|
||||
private <T extends Object> void getContentAndSearchFor(final String typeOfSearch, final String searchKey, final GotContentEntryCallback<T> gotEntry) {
|
||||
apiService.getContent(new Callback<ContentResult>() {
|
||||
@Override
|
||||
public void success(ContentResult contentResult, Response response) {
|
||||
switch (typeOfSearch) {
|
||||
case "quest": {
|
||||
Collection<QuestContent> questList = contentResult.quests;
|
||||
apiService.getContent().subscribe(contentResult -> {
|
||||
switch (typeOfSearch) {
|
||||
case "quest": {
|
||||
Collection<QuestContent> questList = contentResult.quests;
|
||||
|
||||
for (QuestContent quest : questList) {
|
||||
if (quest.getKey() == searchKey) {
|
||||
gotEntry.GotObject((T) quest);
|
||||
}
|
||||
for (QuestContent quest : questList) {
|
||||
if (quest.getKey() == searchKey) {
|
||||
gotEntry.GotObject((T) quest);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case "item": {
|
||||
T searchedItem = null;
|
||||
|
||||
if (searchKey == "potion") {
|
||||
searchedItem = (T) contentResult.potion;
|
||||
} else if (searchKey == "armoire") {
|
||||
searchedItem = (T) contentResult.armoire;
|
||||
} else {
|
||||
Collection<ItemData> itemList = contentResult.gear.flat;
|
||||
|
||||
for (ItemData item : itemList) {
|
||||
if (item.key.equals(searchKey)) {
|
||||
searchedItem = (T) item;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
gotEntry.GotObject((T) searchedItem);
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "item": {
|
||||
T searchedItem = null;
|
||||
|
||||
saveContentResultToDb(contentResult);
|
||||
if (searchKey == "potion") {
|
||||
searchedItem = (T) contentResult.potion;
|
||||
} else if (searchKey == "armoire") {
|
||||
searchedItem = (T) contentResult.armoire;
|
||||
} else {
|
||||
Collection<ItemData> itemList = contentResult.gear.flat;
|
||||
|
||||
for (ItemData item : itemList) {
|
||||
if (item.key.equals(searchKey)) {
|
||||
searchedItem = (T) item;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
gotEntry.GotObject((T) searchedItem);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
}
|
||||
});
|
||||
saveContentResultToDb(contentResult);
|
||||
}, throwable -> {});
|
||||
}
|
||||
|
||||
private <T extends Object> void getContentAndSearchForList(final String typeOfSearch, final List<String> searchKeys, final GotContentEntryCallback<List<T>> gotEntry) {
|
||||
apiService.getContent(new Callback<ContentResult>() {
|
||||
@Override
|
||||
public void success(ContentResult contentResult, Response response) {
|
||||
apiService.getContent().subscribe(contentResult -> {
|
||||
switch (typeOfSearch) {
|
||||
case "item": {
|
||||
List<T> resultList = new ArrayList<T>();
|
||||
|
||||
switch (typeOfSearch) {
|
||||
case "item": {
|
||||
List<T> resultList = new ArrayList<T>();
|
||||
List<ItemData> itemList = new ArrayList<ItemData>(contentResult.gear.flat);
|
||||
itemList.add(contentResult.potion);
|
||||
itemList.add(contentResult.armoire);
|
||||
|
||||
List<ItemData> itemList = new ArrayList<ItemData>(contentResult.gear.flat);
|
||||
itemList.add(contentResult.potion);
|
||||
itemList.add(contentResult.armoire);
|
||||
|
||||
for (ItemData item : itemList) {
|
||||
if (searchKeys.contains(item.key)) {
|
||||
resultList.add((T) item);
|
||||
}
|
||||
for (ItemData item : itemList) {
|
||||
if (searchKeys.contains(item.key)) {
|
||||
resultList.add((T) item);
|
||||
}
|
||||
|
||||
gotEntry.GotObject(resultList);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
gotEntry.GotObject(resultList);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
saveContentResultToDb(contentResult);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
}
|
||||
});
|
||||
saveContentResultToDb(contentResult);
|
||||
}, throwable -> {});
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -7,5 +7,5 @@ public class HabitDatabase {
|
|||
|
||||
public static final String NAME = "Habitica";
|
||||
|
||||
public static final int VERSION = 18;
|
||||
public static final int VERSION = 19;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,21 +1,5 @@
|
|||
package com.habitrpg.android.habitica;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.Application;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.database.DatabaseErrorHandler;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.multidex.MultiDex;
|
||||
import android.support.multidex.MultiDexApplication;
|
||||
import android.util.Log;
|
||||
|
||||
import com.amplitude.api.Amplitude;
|
||||
import com.crashlytics.android.Crashlytics;
|
||||
import com.crashlytics.android.core.CrashlyticsCore;
|
||||
|
|
@ -33,6 +17,20 @@ import org.solovyev.android.checkout.ProductTypes;
|
|||
import org.solovyev.android.checkout.Products;
|
||||
import org.solovyev.android.checkout.PurchaseVerifier;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.database.DatabaseErrorHandler;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.multidex.MultiDexApplication;
|
||||
import android.util.Log;
|
||||
|
||||
import java.io.File;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Arrays;
|
||||
|
|
|
|||
|
|
@ -1,9 +1,5 @@
|
|||
package com.habitrpg.android.habitica;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.preference.PreferenceManager;
|
||||
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.PurchaseValidationRequest;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.PurchaseValidationResult;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Transaction;
|
||||
|
|
@ -12,6 +8,11 @@ import org.solovyev.android.checkout.BasePurchaseVerifier;
|
|||
import org.solovyev.android.checkout.Purchase;
|
||||
import org.solovyev.android.checkout.RequestListener;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.preference.PreferenceManager;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
|
@ -47,16 +48,19 @@ public class HabiticaPurchaseVerifier extends BasePurchaseVerifier {
|
|||
validationRequest.transaction.receipt = purchase.data;
|
||||
validationRequest.transaction.signature = purchase.signature;
|
||||
|
||||
PurchaseValidationResult purchaseValidationResult = HabiticaApplication.ApiHelper.validatePurchase(validationRequest);
|
||||
try {
|
||||
PurchaseValidationResult purchaseValidationResult = HabiticaApplication.ApiHelper.validatePurchase(validationRequest);
|
||||
if (purchaseValidationResult.ok) {
|
||||
purchasedOrderList.add(purchase.orderId);
|
||||
|
||||
if (purchaseValidationResult.ok) {
|
||||
purchasedOrderList.add(purchase.orderId);
|
||||
verifiedPurchases.add(purchase);
|
||||
|
||||
verifiedPurchases.add(purchase);
|
||||
|
||||
requestListener.onSuccess(verifiedPurchases);
|
||||
} else {
|
||||
requestListener.onError(purchases.indexOf(purchase), new Exception(purchaseValidationResult.data.toString()));
|
||||
requestListener.onSuccess(verifiedPurchases);
|
||||
} else {
|
||||
requestListener.onError(purchases.indexOf(purchase), new Exception(purchaseValidationResult.data.toString()));
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,10 @@
|
|||
package com.habitrpg.android.habitica;
|
||||
|
||||
import com.habitrpg.android.habitica.ui.activities.MainActivity;
|
||||
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 android.annotation.TargetApi;
|
||||
import android.app.Notification;
|
||||
import android.app.NotificationManager;
|
||||
|
|
@ -11,11 +16,6 @@ import android.os.Build;
|
|||
import android.support.v4.content.ContextCompat;
|
||||
import android.util.Log;
|
||||
|
||||
import com.habitrpg.android.habitica.ui.activities.MainActivity;
|
||||
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 java.util.List;
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,36 +2,26 @@ package com.habitrpg.android.habitica.callbacks;
|
|||
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
import rx.functions.Action1;
|
||||
|
||||
/**
|
||||
/**r
|
||||
* Created by magicmicky on 18/02/15.
|
||||
*/
|
||||
public class HabitRPGUserCallback implements Callback<HabitRPGUser> {
|
||||
public class HabitRPGUserCallback implements Action1<HabitRPGUser> {
|
||||
|
||||
private final OnUserReceived mCallback;
|
||||
public final OnUserReceived callBack;
|
||||
|
||||
public HabitRPGUserCallback(OnUserReceived callback) {
|
||||
this.mCallback = callback;
|
||||
this.callBack = callback;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void success(HabitRPGUser habitRPGUser, Response response) {
|
||||
public void call(HabitRPGUser habitRPGUser) {
|
||||
habitRPGUser.async().save();
|
||||
|
||||
mCallback.onUserReceived(habitRPGUser);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
mCallback.onUserFail();
|
||||
callBack.onUserReceived(habitRPGUser);
|
||||
}
|
||||
|
||||
public interface OnUserReceived {
|
||||
void onUserReceived(HabitRPGUser user);
|
||||
|
||||
void onUserFail();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,11 +3,9 @@ package com.habitrpg.android.habitica.callbacks;
|
|||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Items;
|
||||
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
import rx.functions.Action1;
|
||||
|
||||
public class ItemsCallback implements Callback<Items> {
|
||||
public class ItemsCallback implements Action1<Items> {
|
||||
|
||||
private final HabitRPGUserCallback.OnUserReceived mCallback;
|
||||
|
||||
|
|
@ -19,16 +17,9 @@ public class ItemsCallback implements Callback<Items> {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void success(Items items, Response response) {
|
||||
public void call(Items items) {
|
||||
this.user.setItems(items);
|
||||
|
||||
this.user.async().save();
|
||||
|
||||
mCallback.onUserReceived(this.user);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
mCallback.onUserFail();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,26 +1,19 @@
|
|||
package com.habitrpg.android.habitica.callbacks;
|
||||
|
||||
import com.habitrpg.android.habitica.ui.activities.MainActivity;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Items;
|
||||
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
|
||||
public class MergeUserCallback implements Callback<HabitRPGUser> {
|
||||
|
||||
private final HabitRPGUserCallback.OnUserReceived mCallback;
|
||||
public class MergeUserCallback extends HabitRPGUserCallback {
|
||||
|
||||
private HabitRPGUser user;
|
||||
|
||||
public MergeUserCallback(HabitRPGUserCallback.OnUserReceived callback, HabitRPGUser user) {
|
||||
this.mCallback = callback;
|
||||
super(callback);
|
||||
this.user = user;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void success(HabitRPGUser user, Response response) {
|
||||
public void call(HabitRPGUser user) {
|
||||
if (user.getItems() != null) {
|
||||
this.user.setItems(user.getItems());
|
||||
}
|
||||
|
|
@ -36,11 +29,6 @@ public class MergeUserCallback implements Callback<HabitRPGUser> {
|
|||
|
||||
this.user.async().save();
|
||||
|
||||
mCallback.onUserReceived(this.user);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
mCallback.onUserFail();
|
||||
callBack.onUserReceived(this.user);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,32 +6,22 @@ import com.magicmicky.habitrpgwrapper.lib.models.Skill;
|
|||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
|
||||
/**
|
||||
* Created by viirus on 28/11/15.
|
||||
*/
|
||||
public class SkillCallback implements Callback<HabitRPGUser> {
|
||||
public class SkillCallback extends HabitRPGUserCallback {
|
||||
|
||||
private Skill usedSkill;
|
||||
private final HabitRPGUserCallback.OnUserReceived callback;
|
||||
|
||||
public SkillCallback(HabitRPGUserCallback.OnUserReceived callback, Skill usedSkill) {
|
||||
this.callback = callback;
|
||||
super(callback);
|
||||
this.usedSkill = usedSkill;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void success(HabitRPGUser habitRPGUser, Response response) {
|
||||
public void call(HabitRPGUser habitRPGUser) {
|
||||
habitRPGUser.async().save();
|
||||
EventBus.getDefault().post(new SkillUsedEvent(this.usedSkill, habitRPGUser.getStats().getMp()));
|
||||
callback.onUserReceived(habitRPGUser);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
callback.onUserFail();
|
||||
callBack.onUserReceived(habitRPGUser);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,28 +1,20 @@
|
|||
package com.habitrpg.android.habitica.callbacks;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import com.habitrpg.android.habitica.events.TaskCreatedEvent;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
import rx.functions.Action1;
|
||||
|
||||
/**
|
||||
* Created by magicmicky on 02/04/15.
|
||||
*/
|
||||
public class TaskCreationCallback implements Callback<Task> {
|
||||
public class TaskCreationCallback implements Action1<Task> {
|
||||
|
||||
@Override
|
||||
public void success(Task task, Response response) {
|
||||
public void call(Task task) {
|
||||
task.save();
|
||||
EventBus.getDefault().post(new TaskCreatedEvent(task));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
Log.w("HabitCreation", "Error", error);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,17 +1,14 @@
|
|||
package com.habitrpg.android.habitica.callbacks;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
|
||||
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
import rx.functions.Action1;
|
||||
|
||||
|
||||
/**
|
||||
* Created by magicmicky on 02/04/15.
|
||||
*/
|
||||
public class TaskDeletionCallback implements Callback<Void> {
|
||||
public class TaskDeletionCallback implements Action1<Void> {
|
||||
private final OnTaskDeleted callback;
|
||||
private final Task taskToDelete;
|
||||
|
||||
|
|
@ -21,20 +18,12 @@ public class TaskDeletionCallback implements Callback<Void> {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void success(Void aVoid, Response response) {
|
||||
public void call(Void aVoid) {
|
||||
callback.onTaskDeleted(taskToDelete);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
callback.onTaskDeletionFail();
|
||||
Log.w("HabitDeletion", "Error", error);
|
||||
}
|
||||
|
||||
|
||||
public interface OnTaskDeleted {
|
||||
public void onTaskDeleted(Task deleted);
|
||||
|
||||
public void onTaskDeletionFail();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,13 +1,10 @@
|
|||
package com.habitrpg.android.habitica.callbacks;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Egg;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Food;
|
||||
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.tasks.Task;
|
||||
import com.raizlabs.android.dbflow.runtime.transaction.BaseTransaction;
|
||||
import com.raizlabs.android.dbflow.runtime.transaction.TransactionListener;
|
||||
|
|
@ -15,14 +12,12 @@ import com.raizlabs.android.dbflow.sql.builder.Condition;
|
|||
import com.raizlabs.android.dbflow.sql.language.From;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
import rx.functions.Action1;
|
||||
|
||||
/**
|
||||
* Created by magicmicky on 18/02/15.
|
||||
*/
|
||||
public class TaskScoringCallback implements Callback<TaskDirectionData> {
|
||||
public class TaskScoringCallback implements Action1<TaskDirectionData> {
|
||||
private final OnTaskScored mCallback;
|
||||
private final String taskId;
|
||||
|
||||
|
|
@ -32,7 +27,7 @@ public class TaskScoringCallback implements Callback<TaskDirectionData> {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void success(final TaskDirectionData taskDirectionData, Response response) {
|
||||
public void call(TaskDirectionData taskDirectionData) {
|
||||
new Select().from(Task.class).where(Condition.column("id").eq(taskId))
|
||||
.async()
|
||||
.querySingle(new TransactionListener<Task>() {
|
||||
|
|
@ -102,15 +97,7 @@ public class TaskScoringCallback implements Callback<TaskDirectionData> {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
this.mCallback.onTaskScoringFailed();
|
||||
Log.w("TaskScoring", "Task scoring failed", error);
|
||||
}
|
||||
|
||||
public interface OnTaskScored {
|
||||
void onTaskDataReceived(TaskDirectionData data, Task task);
|
||||
|
||||
void onTaskScoringFailed();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,31 +1,21 @@
|
|||
package com.habitrpg.android.habitica.callbacks;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import com.habitrpg.android.habitica.events.TaskUpdatedEvent;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
import rx.functions.Action1;
|
||||
|
||||
/**
|
||||
* Created by magicmicky on 02/04/15.
|
||||
*/
|
||||
public class TaskUpdateCallback implements Callback<Task> {
|
||||
public class TaskUpdateCallback implements Action1<Task> {
|
||||
|
||||
@Override
|
||||
public void success(Task task, Response response) {
|
||||
public void call(Task task) {
|
||||
task.save();
|
||||
|
||||
EventBus.getDefault().post(new TaskUpdatedEvent(task));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
Log.w("HabitUpdate", "Error", error);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,37 +3,29 @@ package com.habitrpg.android.habitica.callbacks;
|
|||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.responses.UnlockResponse;
|
||||
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
import rx.functions.Action1;
|
||||
|
||||
/**
|
||||
* Created by magicmicky on 18/02/15.
|
||||
*/
|
||||
public class UnlockCallback implements Callback<UnlockResponse> {
|
||||
public class UnlockCallback implements Action1<UnlockResponse> {
|
||||
|
||||
private final HabitRPGUserCallback.OnUserReceived mCallback;
|
||||
private final HabitRPGUserCallback.OnUserReceived callback;
|
||||
|
||||
private HabitRPGUser user;
|
||||
|
||||
public UnlockCallback(HabitRPGUserCallback.OnUserReceived callback, HabitRPGUser user) {
|
||||
this.mCallback = callback;
|
||||
this.callback = callback;
|
||||
this.user = user;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void success(UnlockResponse unlockResponse, Response response) {
|
||||
public void call(UnlockResponse unlockResponse) {
|
||||
this.user.setPurchased(unlockResponse.purchased);
|
||||
this.user.setItems(unlockResponse.items);
|
||||
this.user.setPreferences(unlockResponse.preferences);
|
||||
|
||||
this.user.async().save();
|
||||
|
||||
mCallback.onUserReceived(this.user);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
mCallback.onUserFail();
|
||||
callback.onUserReceived(this.user);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package com.habitrpg.android.habitica.events;
|
||||
|
||||
import android.graphics.Bitmap;
|
||||
import android.net.Uri;
|
||||
|
||||
public class ShareEvent {
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
package com.habitrpg.android.habitica.events.commands;
|
||||
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.ItemData;
|
||||
|
||||
public class EquipCommand {
|
||||
|
||||
public String key;
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
package com.habitrpg.android.habitica.prefs;
|
||||
|
||||
import com.habitrpg.android.habitica.BuildConfig;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
|
||||
import android.app.AlertDialog.Builder;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.DialogInterface.OnClickListener;
|
||||
import android.content.SharedPreferences;
|
||||
import android.preference.ListPreference;
|
||||
import android.preference.PreferenceManager;
|
||||
|
|
@ -11,18 +12,13 @@ import android.util.AttributeSet;
|
|||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.View.OnFocusChangeListener;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.BaseAdapter;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.EditText;
|
||||
import android.widget.RadioButton;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.BuildConfig;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class CustomListPreference extends ListPreference {
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@ package com.habitrpg.android.habitica.prefs.scanner;
|
|||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.ActivityNotFoundException;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,16 @@
|
|||
package com.habitrpg.android.habitica.ui;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.databinding.ValueBarBinding;
|
||||
import com.habitrpg.android.habitica.events.BoughtGemsEvent;
|
||||
import com.habitrpg.android.habitica.events.commands.OpenGemPurchaseFragmentCommand;
|
||||
import com.habitrpg.android.habitica.userpicture.UserPicture;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Stats;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.content.Context;
|
||||
import android.databinding.DataBindingUtil;
|
||||
|
|
@ -12,17 +23,6 @@ import android.view.View;
|
|||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.databinding.ValueBarBinding;
|
||||
import com.habitrpg.android.habitica.events.BoughtGemsEvent;
|
||||
import com.habitrpg.android.habitica.events.commands.OpenGemPurchaseFragmentCommand;
|
||||
import com.habitrpg.android.habitica.userpicture.UserPicture;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Stats;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
|
||||
/**
|
||||
* Created by Negue on 14.06.2015.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -1,10 +1,5 @@
|
|||
package com.habitrpg.android.habitica.ui;
|
||||
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.events.commands.CreateTagCommand;
|
||||
import com.habitrpg.android.habitica.ui.helpers.ViewHelper;
|
||||
|
|
@ -14,6 +9,11 @@ import com.mikepenz.materialdrawer.model.BaseViewHolder;
|
|||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,35 +1,31 @@
|
|||
package com.habitrpg.android.habitica.ui;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.view.View;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.activities.AboutActivity;
|
||||
import com.habitrpg.android.habitica.ui.activities.MainActivity;
|
||||
import com.habitrpg.android.habitica.ui.activities.PrefsActivity;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.GemsPurchaseFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.inventory.items.ItemsFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.NewsFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.SkillsFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.inventory.StableFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.faq.FAQOverviewFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.inventory.StableFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.inventory.customization.AvatarOverviewFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.inventory.equipment.EquipmentOverviewFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.inventory.items.ItemsFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.social.GuildsOverviewFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.social.TavernFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.social.party.PartyFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.tasks.TasksFragment;
|
||||
import com.mikepenz.materialdrawer.AccountHeader;
|
||||
import com.mikepenz.materialdrawer.AccountHeaderBuilder;
|
||||
import com.mikepenz.materialdrawer.Drawer;
|
||||
import com.mikepenz.materialdrawer.DrawerBuilder;
|
||||
import com.mikepenz.materialdrawer.model.PrimaryDrawerItem;
|
||||
import com.mikepenz.materialdrawer.model.ProfileDrawerItem;
|
||||
import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem;
|
||||
import com.mikepenz.materialdrawer.model.interfaces.IProfile;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
|
||||
public class MainDrawerBuilder {
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,12 @@
|
|||
package com.habitrpg.android.habitica.ui;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.mikepenz.fastadapter.utils.ViewHolderFactory;
|
||||
import com.mikepenz.materialdrawer.holder.StringHolder;
|
||||
import com.mikepenz.materialdrawer.model.AbstractDrawerItem;
|
||||
import com.mikepenz.materialdrawer.model.interfaces.Nameable;
|
||||
import com.mikepenz.materialdrawer.model.interfaces.Typefaceable;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Typeface;
|
||||
import android.support.annotation.LayoutRes;
|
||||
|
|
@ -9,13 +16,6 @@ import android.support.v7.widget.RecyclerView;
|
|||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.mikepenz.fastadapter.utils.ViewHolderFactory;
|
||||
import com.mikepenz.materialdrawer.holder.StringHolder;
|
||||
import com.mikepenz.materialdrawer.model.AbstractDrawerItem;
|
||||
import com.mikepenz.materialdrawer.model.interfaces.Nameable;
|
||||
import com.mikepenz.materialdrawer.model.interfaces.Typefaceable;
|
||||
|
||||
/**
|
||||
* Created by mikepenz on 03.02.15.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -1,5 +1,8 @@
|
|||
package com.habitrpg.android.habitica.ui;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.TutorialStep;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
|
|
@ -8,9 +11,6 @@ import android.widget.FrameLayout;
|
|||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.TutorialStep;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
package com.habitrpg.android.habitica.ui;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.support.design.widget.Snackbar;
|
||||
|
|
@ -8,8 +10,6 @@ import android.view.View;
|
|||
import android.view.inputmethod.InputMethodManager;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
|
||||
/**
|
||||
* Simple utilities class for UI related stuff.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
package com.habitrpg.android.habitica.ui;
|
||||
|
||||
import com.habitrpg.android.habitica.BuildConfig;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
||||
import com.habitrpg.android.habitica.BuildConfig;
|
||||
|
||||
/**
|
||||
* http://stackoverflow.com/a/29945693/1315039
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -1,5 +1,13 @@
|
|||
package com.habitrpg.android.habitica.ui.activities;
|
||||
|
||||
import com.github.porokoro.paperboy.ItemTypeBuilder;
|
||||
import com.github.porokoro.paperboy.PaperboyBuilder;
|
||||
import com.github.porokoro.paperboy.ViewTypes;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.fragments.AboutFragment;
|
||||
import com.mikepenz.aboutlibraries.Libs;
|
||||
import com.mikepenz.aboutlibraries.LibsBuilder;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.design.widget.TabLayout;
|
||||
import android.support.v4.app.Fragment;
|
||||
|
|
@ -9,14 +17,6 @@ import android.support.v4.view.ViewPager;
|
|||
import android.support.v7.app.ActionBar;
|
||||
import android.view.MenuItem;
|
||||
|
||||
import com.github.porokoro.paperboy.ItemTypeBuilder;
|
||||
import com.github.porokoro.paperboy.PaperboyBuilder;
|
||||
import com.github.porokoro.paperboy.ViewTypes;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.fragments.AboutFragment;
|
||||
import com.mikepenz.aboutlibraries.Libs;
|
||||
import com.mikepenz.aboutlibraries.LibsBuilder;
|
||||
|
||||
import butterknife.BindView;
|
||||
|
||||
public class AboutActivity extends BaseActivity {
|
||||
|
|
|
|||
|
|
@ -22,11 +22,9 @@ import java.util.Map;
|
|||
|
||||
import butterknife.BindView;
|
||||
import butterknife.OnClick;
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
import rx.functions.Action1;
|
||||
|
||||
public class ClassSelectionActivity extends BaseActivity implements Callback<HabitRPGUser> {
|
||||
public class ClassSelectionActivity extends BaseActivity implements Action1<HabitRPGUser> {
|
||||
|
||||
Boolean isInitialSelection;
|
||||
Boolean classWasUnset = false;
|
||||
|
|
@ -113,7 +111,11 @@ public class ClassSelectionActivity extends BaseActivity implements Callback<Hab
|
|||
warriorUserPicture.setPictureOn(warriorImageView);
|
||||
|
||||
if (!isInitialSelection) {
|
||||
apiHelper.apiService.changeClass(this);
|
||||
apiHelper.apiService.changeClass()
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(user -> {
|
||||
classWasUnset = true;
|
||||
}, throwable -> {});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -184,18 +186,25 @@ public class ClassSelectionActivity extends BaseActivity implements Callback<Hab
|
|||
Map<String, Object> updateData = new HashMap<>();
|
||||
updateData.put("preferences.disableClasses", true);
|
||||
updateData.put("flags.classSelected", true);
|
||||
apiHelper.apiService.updateUser(updateData, this);
|
||||
apiHelper.apiService.updateUser(updateData)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(this, throwable -> {});
|
||||
}
|
||||
|
||||
private void selectClass(String selectedClass) {
|
||||
shouldFinish = true;
|
||||
this.displayProgressDialog();
|
||||
apiHelper.apiService.changeClass(selectedClass, this);
|
||||
apiHelper.apiService.changeClass(selectedClass)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(this, throwable -> {});
|
||||
}
|
||||
|
||||
private void displayProgressDialog() {
|
||||
progressDialog = ProgressDialog.show(this, getString(R.string.changing_class_progress), null, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void success(HabitRPGUser habitRPGUser, Response response) {
|
||||
this.classWasUnset = true;
|
||||
public void call(HabitRPGUser user) {
|
||||
if (shouldFinish) {
|
||||
if (progressDialog != null) {
|
||||
progressDialog.dismiss();
|
||||
|
|
@ -204,13 +213,4 @@ public class ClassSelectionActivity extends BaseActivity implements Callback<Hab
|
|||
finish();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
shouldFinish = false;
|
||||
}
|
||||
|
||||
private void displayProgressDialog() {
|
||||
progressDialog = ProgressDialog.show(this, getString(R.string.changing_class_progress), null, true);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,11 @@
|
|||
package com.habitrpg.android.habitica.ui.activities;
|
||||
|
||||
import com.github.data5tream.emojilib.EmojiEditText;
|
||||
import com.github.data5tream.emojilib.EmojiPopup;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.UiUtils;
|
||||
import com.habitrpg.android.habitica.ui.helpers.MarkdownParser;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
|
|
@ -13,17 +19,8 @@ import android.view.inputmethod.InputMethodManager;
|
|||
import android.widget.EditText;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.PopupWindow;
|
||||
import android.widget.Spinner;
|
||||
|
||||
import com.github.data5tream.emojilib.EmojiEditText;
|
||||
import com.github.data5tream.emojilib.EmojiGridView;
|
||||
import com.github.data5tream.emojilib.EmojiPopup;
|
||||
import com.github.data5tream.emojilib.emoji.Emojicon;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.UiUtils;
|
||||
import com.habitrpg.android.habitica.ui.helpers.MarkdownParser;
|
||||
|
||||
import butterknife.BindView;
|
||||
|
||||
public class GroupFormActivity extends BaseActivity {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,11 @@
|
|||
package com.habitrpg.android.habitica.ui.activities;
|
||||
|
||||
import com.habitrpg.android.habitica.APIHelper;
|
||||
import com.habitrpg.android.habitica.HostConfig;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.fragments.setup.IntroFragment;
|
||||
import com.viewpagerindicator.CirclePageIndicator;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
|
|
@ -9,19 +15,9 @@ import android.support.v4.view.ViewPager;
|
|||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
|
||||
import com.habitrpg.android.habitica.APIHelper;
|
||||
import com.habitrpg.android.habitica.HostConfig;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.fragments.setup.IntroFragment;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.ContentResult;
|
||||
import com.viewpagerindicator.CirclePageIndicator;
|
||||
|
||||
import butterknife.BindView;
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
|
||||
public class IntroActivity extends BaseActivity implements View.OnClickListener, ViewPager.OnPageChangeListener, Callback<ContentResult> {
|
||||
public class IntroActivity extends BaseActivity implements View.OnClickListener, ViewPager.OnPageChangeListener {
|
||||
|
||||
@BindView(R.id.view_pager)
|
||||
ViewPager pager;
|
||||
|
|
@ -52,7 +48,9 @@ public class IntroActivity extends BaseActivity implements View.OnClickListener,
|
|||
|
||||
HostConfig hostConfig = PrefsActivity.fromContext(this);
|
||||
APIHelper apiHelper = new APIHelper(hostConfig);
|
||||
apiHelper.apiService.getContent(this);
|
||||
apiHelper.apiService.getContent()
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(contentResult -> {}, throwable -> {});
|
||||
}
|
||||
|
||||
private void setupIntro() {
|
||||
|
|
@ -126,14 +124,4 @@ public class IntroActivity extends BaseActivity implements View.OnClickListener,
|
|||
public void onPageScrollStateChanged(int state) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void success(ContentResult contentResult, Response response) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,27 +1,5 @@
|
|||
package com.habitrpg.android.habitica.ui.activities;
|
||||
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.graphics.Color;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.support.design.widget.Snackbar;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.preference.PreferenceManager;
|
||||
import android.text.SpannableString;
|
||||
import android.text.style.UnderlineSpan;
|
||||
import android.util.Log;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.inputmethod.EditorInfo;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.TableRow;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.amplitude.api.Amplitude;
|
||||
import com.facebook.AccessToken;
|
||||
import com.facebook.CallbackManager;
|
||||
|
|
@ -42,23 +20,41 @@ import com.magicmicky.habitrpgwrapper.lib.models.UserAuthResponse;
|
|||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.graphics.Color;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.support.design.widget.Snackbar;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.preference.PreferenceManager;
|
||||
import android.text.SpannableString;
|
||||
import android.text.style.UnderlineSpan;
|
||||
import android.util.Log;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.inputmethod.EditorInfo;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.TableRow;
|
||||
import android.widget.TextView;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.BindString;
|
||||
import butterknife.ButterKnife;
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
import rx.functions.Action1;
|
||||
|
||||
/**
|
||||
* @author Mickael Goubin
|
||||
*/
|
||||
public class LoginActivity extends AppCompatActivity
|
||||
implements Callback<UserAuthResponse>,HabitRPGUserCallback.OnUserReceived {
|
||||
implements Action1<UserAuthResponse>, HabitRPGUserCallback.OnUserReceived {
|
||||
private final static String TAG_ADDRESS="address";
|
||||
private final static String TAG_USERID="user";
|
||||
private final static String TAG_APIKEY="key";
|
||||
|
||||
private APIHelper mApiHelper;
|
||||
private APIHelper apiHelper;
|
||||
public String mTmpUserToken;
|
||||
public String mTmpApiToken;
|
||||
public Boolean isRegistering;
|
||||
|
|
@ -98,7 +94,7 @@ public class LoginActivity extends AppCompatActivity
|
|||
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.login_screen);
|
||||
setContentView(R.layout.activity_login);
|
||||
|
||||
//Set default values to avoid null-responses when requesting unedited settings
|
||||
PreferenceManager.setDefaultValues(this, R.xml.preferences_fragment, false);
|
||||
|
|
@ -120,7 +116,9 @@ public class LoginActivity extends AppCompatActivity
|
|||
@Override
|
||||
public void onSuccess(LoginResult loginResult) {
|
||||
AccessToken accessToken = AccessToken.getCurrentAccessToken();
|
||||
mApiHelper.connectSocial(accessToken.getUserId(), accessToken.getToken(), LoginActivity.this);
|
||||
apiHelper.connectSocial(accessToken.getUserId(), accessToken.getToken())
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(LoginActivity.this, throwable -> {hideProgress();});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -138,7 +136,7 @@ public class LoginActivity extends AppCompatActivity
|
|||
if(hc ==null) {
|
||||
hc = new HostConfig(BuildConfig.BASE_URL, BuildConfig.PORT, "", "");
|
||||
}
|
||||
mApiHelper = new APIHelper(hc);
|
||||
apiHelper = new APIHelper(hc);
|
||||
|
||||
this.isRegistering = true;
|
||||
|
||||
|
|
@ -156,17 +154,17 @@ public class LoginActivity extends AppCompatActivity
|
|||
private void resetLayout() {
|
||||
if (this.isRegistering) {
|
||||
if (this.mEmailRow.getVisibility() == View.GONE) {
|
||||
expand(this.mEmailRow);
|
||||
show(this.mEmailRow);
|
||||
}
|
||||
if (this.mConfirmPasswordRow.getVisibility() == View.GONE) {
|
||||
expand(this.mConfirmPasswordRow);
|
||||
show(this.mConfirmPasswordRow);
|
||||
}
|
||||
} else {
|
||||
if (this.mEmailRow.getVisibility() == View.VISIBLE) {
|
||||
collapse(this.mEmailRow);
|
||||
hide(this.mEmailRow);
|
||||
}
|
||||
if (this.mConfirmPasswordRow.getVisibility() == View.VISIBLE) {
|
||||
collapse(this.mConfirmPasswordRow);
|
||||
hide(this.mConfirmPasswordRow);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -185,7 +183,9 @@ public class LoginActivity extends AppCompatActivity
|
|||
showValidationError(R.string.login_validation_error_fieldsmissing);
|
||||
return;
|
||||
}
|
||||
mApiHelper.registerUser(username,email,password, cpassword, LoginActivity.this);
|
||||
apiHelper.registerUser(username,email,password, cpassword)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(LoginActivity.this, throwable -> {hideProgress();});
|
||||
} else {
|
||||
String username,password;
|
||||
username = String.valueOf(mUsernameET.getText()).trim();
|
||||
|
|
@ -194,7 +194,9 @@ public class LoginActivity extends AppCompatActivity
|
|||
showValidationError(R.string.login_validation_error_fieldsmissing);
|
||||
return;
|
||||
}
|
||||
mApiHelper.connectUser(username,password, LoginActivity.this);
|
||||
apiHelper.connectUser(username,password)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(LoginActivity.this, throwable -> {hideProgress();});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
@ -207,11 +209,11 @@ startActivity(i);
|
|||
};
|
||||
|
||||
|
||||
public static void expand(final View v) {
|
||||
public static void show(final View v) {
|
||||
v.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
public static void collapse(final View v) {
|
||||
public static void hide(final View v) {
|
||||
v.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
|
|
@ -320,8 +322,45 @@ startActivity(i);
|
|||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
private void saveTokens(String api, String user) throws Exception {
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(LoginActivity.this);
|
||||
SharedPreferences.Editor editor = prefs.edit();
|
||||
boolean ans = editor.putString(getString(R.string.SP_APIToken), api)
|
||||
.putString(getString(R.string.SP_userID), user)
|
||||
.putString(getString(R.string.SP_address),BuildConfig.BASE_URL)
|
||||
.commit();
|
||||
if(!ans) {
|
||||
throw new Exception("PB_string_commit");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void success(UserAuthResponse userAuthResponse, Response response) {
|
||||
public void onUserReceived(HabitRPGUser user) {
|
||||
try {
|
||||
saveTokens(mTmpApiToken, mTmpUserToken);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
this.startMainActivity();
|
||||
}
|
||||
|
||||
private void hideProgress() {
|
||||
mProgressBar.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
private void showValidationError(int resourceMessageString) {
|
||||
mProgressBar.setVisibility(View.GONE);
|
||||
new android.support.v7.app.AlertDialog.Builder(this)
|
||||
.setTitle(R.string.login_validation_error_title)
|
||||
.setMessage(resourceMessageString)
|
||||
.setNeutralButton(android.R.string.ok, (dialog, which) -> {
|
||||
})
|
||||
.setIcon(R.drawable.ic_warning_black)
|
||||
.show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void call(UserAuthResponse userAuthResponse) {
|
||||
try {
|
||||
saveTokens(userAuthResponse.getToken(), userAuthResponse.getId());
|
||||
} catch (Exception e) {
|
||||
|
|
@ -341,48 +380,4 @@ startActivity(i);
|
|||
this.startMainActivity();
|
||||
}
|
||||
}
|
||||
|
||||
private void saveTokens(String api, String user) throws Exception {
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(LoginActivity.this);
|
||||
SharedPreferences.Editor editor = prefs.edit();
|
||||
boolean ans = editor.putString(getString(R.string.SP_APIToken), api)
|
||||
.putString(getString(R.string.SP_userID), user)
|
||||
.putString(getString(R.string.SP_address),BuildConfig.BASE_URL)
|
||||
.commit();
|
||||
if(!ans) {
|
||||
throw new Exception("PB_string_commit");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
mProgressBar.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUserReceived(HabitRPGUser user) {
|
||||
try {
|
||||
saveTokens(mTmpApiToken, mTmpUserToken);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
this.startMainActivity();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUserFail() {
|
||||
mProgressBar.setVisibility(View.GONE);
|
||||
showSnackbar(getString(R.string.unknown_error));
|
||||
}
|
||||
|
||||
private void showValidationError(int resourceMessageString) {
|
||||
mProgressBar.setVisibility(View.GONE);
|
||||
new android.support.v7.app.AlertDialog.Builder(this)
|
||||
.setTitle(R.string.login_validation_error_title)
|
||||
.setMessage(resourceMessageString)
|
||||
.setNeutralButton(android.R.string.ok, (dialog, which) -> {
|
||||
})
|
||||
.setIcon(R.drawable.ic_warning_black)
|
||||
.show();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,39 +1,5 @@
|
|||
package com.habitrpg.android.habitica.ui.activities;
|
||||
|
||||
import android.app.AlarmManager;
|
||||
import android.app.PendingIntent;
|
||||
import android.content.Context;
|
||||
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.database.sqlite.SQLiteDoneException;
|
||||
import android.databinding.DataBindingUtil;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.net.Uri;
|
||||
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.v7.app.AlertDialog;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
import android.view.Gravity;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.amplitude.api.Amplitude;
|
||||
import com.habitrpg.android.habitica.APIHelper;
|
||||
import com.habitrpg.android.habitica.HabiticaApplication;
|
||||
|
|
@ -73,8 +39,6 @@ import com.habitrpg.android.habitica.ui.fragments.GemsPurchaseFragment;
|
|||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils;
|
||||
import com.habitrpg.android.habitica.userpicture.BitmapUtils;
|
||||
import com.habitrpg.android.habitica.userpicture.UserPicture;
|
||||
import com.habitrpg.android.habitica.userpicture.UserPictureRunnable;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.ContentResult;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.SuppressedModals;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.TaskDirection;
|
||||
|
|
@ -86,8 +50,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.BuyResponse;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.responses.FeedResponse;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.responses.MaintenanceResponse;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.ChecklistItem;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Days;
|
||||
|
|
@ -119,9 +81,40 @@ import org.json.JSONObject;
|
|||
import org.solovyev.android.checkout.ActivityCheckout;
|
||||
import org.solovyev.android.checkout.Checkout;
|
||||
|
||||
import android.app.AlarmManager;
|
||||
import android.app.PendingIntent;
|
||||
import android.content.Context;
|
||||
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.database.sqlite.SQLiteDoneException;
|
||||
import android.databinding.DataBindingUtil;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.net.Uri;
|
||||
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.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.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
|
|
@ -133,14 +126,12 @@ import java.util.TimeZone;
|
|||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import butterknife.BindView;
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
import rx.functions.Action1;
|
||||
|
||||
import static com.habitrpg.android.habitica.ui.UiUtils.SnackbarDisplayType;
|
||||
import static com.habitrpg.android.habitica.ui.UiUtils.showSnackbar;
|
||||
|
||||
public class MainActivity extends BaseActivity implements HabitRPGUserCallback.OnUserReceived,
|
||||
public class MainActivity extends BaseActivity implements Action1<Throwable>, HabitRPGUserCallback.OnUserReceived,
|
||||
TaskScoringCallback.OnTaskScored,
|
||||
GemsPurchaseFragment.Listener, TutorialView.OnTutorialReaction {
|
||||
|
||||
|
|
@ -167,7 +158,7 @@ public class MainActivity extends BaseActivity implements HabitRPGUserCallback.O
|
|||
private AccountHeader accountHeader;
|
||||
private BaseMainFragment activeFragment;
|
||||
private AvatarWithBarsViewModel avatarInHeader;
|
||||
private APIHelper mAPIHelper;
|
||||
private APIHelper apiHelper;
|
||||
private AlertDialog faintDialog;
|
||||
|
||||
private UserPicture sideUserPicture;
|
||||
|
|
@ -194,7 +185,7 @@ public class MainActivity extends BaseActivity implements HabitRPGUserCallback.O
|
|||
//Check if reminder alarm is set
|
||||
scheduleReminder(this);
|
||||
|
||||
HabiticaApplication.ApiHelper = this.mAPIHelper = new APIHelper(hostConfig);
|
||||
HabiticaApplication.ApiHelper = this.apiHelper = new APIHelper(hostConfig);
|
||||
|
||||
new Select().from(HabitRPGUser.class).where(Condition.column("id").eq(hostConfig.getUser())).async().querySingle(userTransactionListener);
|
||||
|
||||
|
|
@ -226,8 +217,9 @@ public class MainActivity extends BaseActivity implements HabitRPGUserCallback.O
|
|||
|
||||
//resync, if last sync was more than 10 minutes ago
|
||||
if (this.lastSync == null || (new Date().getTime() - this.lastSync.getTime()) > 600000) {
|
||||
if (this.mAPIHelper != null) {
|
||||
this.mAPIHelper.retrieveUser(new HabitRPGUserCallback(this));
|
||||
if (this.apiHelper != null) {
|
||||
this.apiHelper.retrieveUser(true)
|
||||
.subscribe(new HabitRPGUserCallback(this), throwable -> {});
|
||||
this.checkMaintenance();
|
||||
}
|
||||
}
|
||||
|
|
@ -275,7 +267,7 @@ public class MainActivity extends BaseActivity implements HabitRPGUserCallback.O
|
|||
}
|
||||
this.activeFragment = fragment;
|
||||
fragment.setArguments(getIntent().getExtras());
|
||||
fragment.mAPIHelper = mAPIHelper;
|
||||
fragment.apiHelper = apiHelper;
|
||||
fragment.setUser(user);
|
||||
fragment.setActivity(this);
|
||||
fragment.setTabLayout(detail_tabs);
|
||||
|
|
@ -317,7 +309,8 @@ public class MainActivity extends BaseActivity implements HabitRPGUserCallback.O
|
|||
if (offset != user.getPreferences().getTimezoneOffset()) {
|
||||
Map<String, Object> updateData = new HashMap<>();
|
||||
updateData.put("preferences.timezoneOffset", String.valueOf(offset));
|
||||
mAPIHelper.apiService.updateUser(updateData, new HabitRPGUserCallback(this));
|
||||
apiHelper.apiService.updateUser(updateData).compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(new MergeUserCallback(this, user), throwable -> {});
|
||||
}
|
||||
runOnUiThread(() -> {
|
||||
updateHeader();
|
||||
|
|
@ -356,8 +349,8 @@ public class MainActivity extends BaseActivity implements HabitRPGUserCallback.O
|
|||
|
||||
ArrayList<TaskTag> allTaskTags = new ArrayList<>();
|
||||
for (Task t : allTasks) {
|
||||
if (t.tags != null) {
|
||||
allTaskTags.addAll(t.tags);
|
||||
if (t.getTags() != null) {
|
||||
allTaskTags.addAll(t.getTags());
|
||||
}
|
||||
}
|
||||
loadAndRemoveOldTaskTags(allTaskTags);
|
||||
|
|
@ -629,10 +622,6 @@ public class MainActivity extends BaseActivity implements HabitRPGUserCallback.O
|
|||
MainActivity.this.setUserData(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUserFail() {
|
||||
}
|
||||
|
||||
public void setActiveFragment(BaseMainFragment fragment) {
|
||||
this.activeFragment = fragment;
|
||||
this.drawer.setSelectionAtPosition(this.activeFragment.fragmentSidebarPosition, false);
|
||||
|
|
@ -660,8 +649,9 @@ public class MainActivity extends BaseActivity implements HabitRPGUserCallback.O
|
|||
super.onActivityResult(requestCode, resultCode, data);
|
||||
checkout.onActivityResult(requestCode, resultCode, data);
|
||||
if (resultCode == SELECT_CLASS_RESULT) {
|
||||
if (this.mAPIHelper != null) {
|
||||
this.mAPIHelper.retrieveUser(new HabitRPGUserCallback(this));
|
||||
if (this.apiHelper != null) {
|
||||
this.apiHelper.retrieveUser(true)
|
||||
.subscribe(new HabitRPGUserCallback(this), throwable -> {});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -685,19 +675,24 @@ public class MainActivity extends BaseActivity implements HabitRPGUserCallback.O
|
|||
|
||||
@Subscribe
|
||||
public void onEvent(UpdateUserCommand event) {
|
||||
mAPIHelper.apiService.updateUser(event.updateData, new HabitRPGUserCallback(this));
|
||||
apiHelper.apiService.updateUser(event.updateData).compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(new MergeUserCallback(this, user), throwable -> {});
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onEvent(EquipCommand event) {
|
||||
this.mAPIHelper.apiService.equipItem(event.type, event.key, new ItemsCallback(this, this.user));
|
||||
this.apiHelper.apiService.equipItem(event.type, event.key)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(new ItemsCallback(this, this.user), throwable -> {});
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onEvent(UnlockPathCommand event) {
|
||||
this.user.setBalance(this.user.getBalance() - event.balanceDiff);
|
||||
this.setUserData(false);
|
||||
mAPIHelper.apiService.unlockPath(event.path, new UnlockCallback(this, this.user));
|
||||
apiHelper.apiService.unlockPath(event.path)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(new UnlockCallback(this, this.user), throwable -> {});
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
|
|
@ -726,43 +721,36 @@ public class MainActivity extends BaseActivity implements HabitRPGUserCallback.O
|
|||
}
|
||||
|
||||
if (event.Reward.specialTag != null && event.Reward.specialTag.equals("item")) {
|
||||
mAPIHelper.apiService.buyItem(event.Reward.getId(), new Callback<BuyResponse>() {
|
||||
apiHelper.apiService.buyItem(event.Reward.getId()).compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(buyResponse -> {
|
||||
String snackbarMessage = event.Reward.getText() + " successfully purchased!";
|
||||
|
||||
@Override
|
||||
public void success(BuyResponse buyResponse, Response response) {
|
||||
String snackbarMessage = event.Reward.getText() + " successfully purchased!";
|
||||
|
||||
if (event.Reward.getId().equals("armoire")) {
|
||||
if (buyResponse.armoire.get("type").equals("gear")) {
|
||||
snackbarMessage = getApplicationContext().getString(R.string.armoireEquipment, buyResponse.armoire.get("dropText"));
|
||||
} else if (buyResponse.armoire.get("type").equals("food")) {
|
||||
snackbarMessage = getApplicationContext().getString(R.string.armoireFood, buyResponse.armoire.get("dropArticle"), buyResponse.armoire.get("dropText"));
|
||||
} else {
|
||||
snackbarMessage = getApplicationContext().getString(R.string.armoireExp);
|
||||
}
|
||||
} else if (!event.Reward.getId().equals("potion")) {
|
||||
EventBus.getDefault().post(new TaskRemovedEvent(event.Reward.getId()));
|
||||
if (event.Reward.getId().equals("armoire")) {
|
||||
if (buyResponse.armoire.get("type").equals("gear")) {
|
||||
snackbarMessage = getApplicationContext().getString(R.string.armoireEquipment, buyResponse.armoire.get("dropText"));
|
||||
} else if (buyResponse.armoire.get("type").equals("food")) {
|
||||
snackbarMessage = getApplicationContext().getString(R.string.armoireFood, buyResponse.armoire.get("dropArticle"), buyResponse.armoire.get("dropText"));
|
||||
} else {
|
||||
snackbarMessage = getApplicationContext().getString(R.string.armoireExp);
|
||||
}
|
||||
|
||||
user.setItems(buyResponse.items);
|
||||
user.setStats(buyResponse.stats);
|
||||
user.setFlags(buyResponse.flags);
|
||||
|
||||
user.async().save();
|
||||
MainActivity.this.setUserData(true);
|
||||
|
||||
showSnackbar(MainActivity.this, floatingMenuWrapper, snackbarMessage, SnackbarDisplayType.NORMAL);
|
||||
} else if (!event.Reward.getId().equals("potion")) {
|
||||
EventBus.getDefault().post(new TaskRemovedEvent(event.Reward.getId()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
user.setItems(buyResponse.items);
|
||||
user.setStats(buyResponse.stats);
|
||||
user.setFlags(buyResponse.flags);
|
||||
|
||||
showSnackbar(MainActivity.this, floatingMenuWrapper, "Buy Reward Error " + event.Reward.getText(), SnackbarDisplayType.FAILURE);
|
||||
}
|
||||
});
|
||||
user.async().save();
|
||||
MainActivity.this.setUserData(true);
|
||||
|
||||
showSnackbar(MainActivity.this, floatingMenuWrapper, snackbarMessage, SnackbarDisplayType.NORMAL);
|
||||
}, throwable -> {});
|
||||
} else {
|
||||
// user created Rewards
|
||||
mAPIHelper.updateTaskDirection(rewardKey, TaskDirection.down, new TaskScoringCallback(this, rewardKey));
|
||||
apiHelper.apiService.postTaskDirection(rewardKey, TaskDirection.down.toString())
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(new TaskScoringCallback(this, rewardKey), throwable -> {});
|
||||
}
|
||||
|
||||
avatarInHeader.updateData(user);
|
||||
|
|
@ -771,17 +759,10 @@ public class MainActivity extends BaseActivity implements HabitRPGUserCallback.O
|
|||
|
||||
@Subscribe
|
||||
public void onEvent(final DeleteTaskCommand cmd) {
|
||||
mAPIHelper.apiService.deleteTask(cmd.TaskIdToDelete, new Callback<Void>() {
|
||||
@Override
|
||||
public void success(Void aVoid, Response response) {
|
||||
EventBus.getDefault().post(new TaskRemovedEvent(cmd.TaskIdToDelete));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
}
|
||||
});
|
||||
apiHelper.apiService.deleteTask(cmd.TaskIdToDelete).compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(aVoid -> {
|
||||
EventBus.getDefault().post(new TaskRemovedEvent(cmd.TaskIdToDelete));
|
||||
}, throwable -> {});
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
|
|
@ -801,20 +782,14 @@ public class MainActivity extends BaseActivity implements HabitRPGUserCallback.O
|
|||
|
||||
@Subscribe
|
||||
public void onEvent(SellItemCommand event) {
|
||||
this.mAPIHelper.apiService.sellItem(event.item.getType(), event.item.getKey(), new Callback<HabitRPGUser>() {
|
||||
@Override
|
||||
public void success(HabitRPGUser habitRPGUser, Response response) {
|
||||
user.setItems(habitRPGUser.getItems());
|
||||
user.save();
|
||||
user.setStats(habitRPGUser.getStats());
|
||||
setUserData(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
}
|
||||
});
|
||||
this.apiHelper.apiService.sellItem(event.item.getType(), event.item.getKey())
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(habitRPGUser -> {
|
||||
user.setItems(habitRPGUser.getItems());
|
||||
user.save();
|
||||
user.setStats(habitRPGUser.getStats());
|
||||
setUserData(false);
|
||||
}, throwable -> {});
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
|
|
@ -822,42 +797,37 @@ public class MainActivity extends BaseActivity implements HabitRPGUserCallback.O
|
|||
if (event.usingEgg == null || event.usingHatchingPotion == null) {
|
||||
return;
|
||||
}
|
||||
this.mAPIHelper.apiService.hatchPet(event.usingEgg.getKey(), event.usingHatchingPotion.getKey(), new ItemsCallback(new HabitRPGUserCallback.OnUserReceived() {
|
||||
@Override
|
||||
public void onUserReceived(HabitRPGUser user) {
|
||||
FrameLayout petWrapper = (FrameLayout) getLayoutInflater().inflate(R.layout.pet_imageview, null);
|
||||
ImageView petImageView = (ImageView) petWrapper.findViewById(R.id.pet_imageview);
|
||||
this.apiHelper.apiService.hatchPet(event.usingEgg.getKey(), event.usingHatchingPotion.getKey())
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(new ItemsCallback(user1 -> {
|
||||
FrameLayout petWrapper = (FrameLayout) getLayoutInflater().inflate(R.layout.pet_imageview, null);
|
||||
ImageView petImageView = (ImageView) petWrapper.findViewById(R.id.pet_imageview);
|
||||
|
||||
DataBindingUtils.loadImage(petImageView, "Pet-" + event.usingEgg.getKey() + "-" + event.usingHatchingPotion.getKey());
|
||||
String potionName = event.usingHatchingPotion.getText();
|
||||
String eggName = event.usingEgg.getText();
|
||||
AlertDialog dialog = new AlertDialog.Builder(MainActivity.this)
|
||||
.setTitle(getString(R.string.hatched_pet_title, potionName, eggName))
|
||||
.setView(petWrapper)
|
||||
.setPositiveButton(R.string.close, (hatchingDialog, which) -> {
|
||||
hatchingDialog.dismiss();
|
||||
})
|
||||
.setNeutralButton(R.string.share, (hatchingDialog, which) -> {
|
||||
ShareEvent event = new ShareEvent();
|
||||
event.sharedMessage = getString(R.string.share_hatched, potionName, eggName) + " https://habitica.com/social/hatch-pet";
|
||||
Bitmap animalBitmap = ((BitmapDrawable)petImageView.getDrawable()).getBitmap();
|
||||
Bitmap sharedImage = Bitmap.createBitmap(140, 140, Bitmap.Config.ARGB_8888);
|
||||
Canvas canvas = new Canvas(sharedImage);
|
||||
canvas.drawColor(getResources().getColor(R.color.brand_300));
|
||||
canvas.drawBitmap(animalBitmap, new Rect(0, 0, animalBitmap.getWidth(), animalBitmap.getHeight()),
|
||||
new Rect(30, 0, animalBitmap.getWidth() + 30, animalBitmap.getHeight()), new Paint());
|
||||
event.shareImage = sharedImage;
|
||||
EventBus.getDefault().post(event);
|
||||
hatchingDialog.dismiss();
|
||||
})
|
||||
.create();
|
||||
dialog.show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUserFail() {
|
||||
}
|
||||
}, this.user));
|
||||
DataBindingUtils.loadImage(petImageView, "Pet-" + event.usingEgg.getKey() + "-" + event.usingHatchingPotion.getKey());
|
||||
String potionName = event.usingHatchingPotion.getText();
|
||||
String eggName = event.usingEgg.getText();
|
||||
AlertDialog dialog = new AlertDialog.Builder(MainActivity.this)
|
||||
.setTitle(getString(R.string.hatched_pet_title, potionName, eggName))
|
||||
.setView(petWrapper)
|
||||
.setPositiveButton(R.string.close, (hatchingDialog, which) -> {
|
||||
hatchingDialog.dismiss();
|
||||
})
|
||||
.setNeutralButton(R.string.share, (hatchingDialog, which) -> {
|
||||
ShareEvent event1 = new ShareEvent();
|
||||
event1.sharedMessage = getString(R.string.share_hatched, potionName, eggName) + " https://habitica.com/social/hatch-pet";
|
||||
Bitmap animalBitmap = ((BitmapDrawable)petImageView.getDrawable()).getBitmap();
|
||||
Bitmap sharedImage = Bitmap.createBitmap(140, 140, Bitmap.Config.ARGB_8888);
|
||||
Canvas canvas = new Canvas(sharedImage);
|
||||
canvas.drawColor(getResources().getColor(R.color.brand_300));
|
||||
canvas.drawBitmap(animalBitmap, new Rect(0, 0, animalBitmap.getWidth(), animalBitmap.getHeight()),
|
||||
new Rect(30, 0, animalBitmap.getWidth() + 30, animalBitmap.getHeight()), new Paint());
|
||||
event1.shareImage = sharedImage;
|
||||
EventBus.getDefault().post(event1);
|
||||
hatchingDialog.dismiss();
|
||||
})
|
||||
.create();
|
||||
dialog.show();
|
||||
}, this.user), throwable -> {});
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
|
|
@ -866,68 +836,56 @@ public class MainActivity extends BaseActivity implements HabitRPGUserCallback.O
|
|||
return;
|
||||
}
|
||||
final Pet pet = event.usingPet;
|
||||
this.mAPIHelper.apiService.feedPet(event.usingPet.getKey(), event.usingFood.getKey(), new Callback<FeedResponse>() {
|
||||
@Override
|
||||
public void success(FeedResponse feedResponse, Response response) {
|
||||
MainActivity.this.user.getItems().getPets().put(pet.getKey(), feedResponse.value);
|
||||
MainActivity.this.user.getItems().getFood().put(event.usingFood.getKey(), event.usingFood.getOwned()-1);
|
||||
MainActivity.this.setUserData(false);
|
||||
showSnackbar(MainActivity.this, floatingMenuWrapper, getString(R.string.notification_pet_fed, pet.getColorText(), pet.getAnimalText()), SnackbarDisplayType.NORMAL);
|
||||
if (feedResponse.value == -1) {
|
||||
FrameLayout mountWrapper = (FrameLayout) getLayoutInflater().inflate(R.layout.pet_imageview, null);
|
||||
ImageView mountImageView = (ImageView) mountWrapper.findViewById(R.id.pet_imageview);
|
||||
this.apiHelper.apiService.feedPet(event.usingPet.getKey(), event.usingFood.getKey())
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(feedResponse -> {
|
||||
MainActivity.this.user.getItems().getPets().put(pet.getKey(), feedResponse.value);
|
||||
MainActivity.this.user.getItems().getFood().put(event.usingFood.getKey(), event.usingFood.getOwned()-1);
|
||||
MainActivity.this.setUserData(false);
|
||||
showSnackbar(MainActivity.this, floatingMenuWrapper, getString(R.string.notification_pet_fed, pet.getColorText(), pet.getAnimalText()), SnackbarDisplayType.NORMAL);
|
||||
if (feedResponse.value == -1) {
|
||||
FrameLayout mountWrapper = (FrameLayout) getLayoutInflater().inflate(R.layout.pet_imageview, null);
|
||||
ImageView mountImageView = (ImageView) mountWrapper.findViewById(R.id.pet_imageview);
|
||||
|
||||
DataBindingUtils.loadImage(mountImageView, "Mount_Icon_" + event.usingPet.getKey());
|
||||
String colorName = event.usingPet.getColorText();
|
||||
String animalName = event.usingPet.getAnimalText();
|
||||
AlertDialog dialog = new AlertDialog.Builder(MainActivity.this)
|
||||
.setTitle(getString(R.string.hatched_pet_title, colorName, animalName))
|
||||
.setView(mountWrapper)
|
||||
.setPositiveButton(R.string.close, (hatchingDialog, which) -> {
|
||||
hatchingDialog.dismiss();
|
||||
})
|
||||
.setNeutralButton(R.string.share, (hatchingDialog, which) -> {
|
||||
ShareEvent event = new ShareEvent();
|
||||
event.sharedMessage = getString(R.string.share_raised, colorName, animalName) + " https://habitica.com/social/raise-pet";
|
||||
Bitmap animalBitmap = ((BitmapDrawable)mountImageView.getDrawable()).getBitmap();
|
||||
Bitmap sharedImage = Bitmap.createBitmap(99, 99, Bitmap.Config.ARGB_8888);
|
||||
Canvas canvas = new Canvas(sharedImage);
|
||||
canvas.drawColor(getResources().getColor(R.color.brand_300));
|
||||
canvas.drawBitmap(animalBitmap, new Rect(0, 0, animalBitmap.getWidth(), animalBitmap.getHeight()),
|
||||
new Rect(9, 0, animalBitmap.getWidth() + 9, animalBitmap.getHeight()), new Paint());
|
||||
event.shareImage = sharedImage;
|
||||
EventBus.getDefault().post(event);
|
||||
hatchingDialog.dismiss();
|
||||
})
|
||||
.create();
|
||||
dialog.show();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
}
|
||||
});
|
||||
DataBindingUtils.loadImage(mountImageView, "Mount_Icon_" + event.usingPet.getKey());
|
||||
String colorName = event.usingPet.getColorText();
|
||||
String animalName = event.usingPet.getAnimalText();
|
||||
AlertDialog dialog = new AlertDialog.Builder(MainActivity.this)
|
||||
.setTitle(getString(R.string.hatched_pet_title, colorName, animalName))
|
||||
.setView(mountWrapper)
|
||||
.setPositiveButton(R.string.close, (hatchingDialog, which) -> {
|
||||
hatchingDialog.dismiss();
|
||||
})
|
||||
.setNeutralButton(R.string.share, (hatchingDialog, which) -> {
|
||||
ShareEvent event1 = new ShareEvent();
|
||||
event1.sharedMessage = getString(R.string.share_raised, colorName, animalName) + " https://habitica.com/social/raise-pet";
|
||||
Bitmap animalBitmap = ((BitmapDrawable)mountImageView.getDrawable()).getBitmap();
|
||||
Bitmap sharedImage = Bitmap.createBitmap(99, 99, Bitmap.Config.ARGB_8888);
|
||||
Canvas canvas = new Canvas(sharedImage);
|
||||
canvas.drawColor(getResources().getColor(R.color.brand_300));
|
||||
canvas.drawBitmap(animalBitmap, new Rect(0, 0, animalBitmap.getWidth(), animalBitmap.getHeight()),
|
||||
new Rect(9, 0, animalBitmap.getWidth() + 9, animalBitmap.getHeight()), new Paint());
|
||||
event1.shareImage = sharedImage;
|
||||
EventBus.getDefault().post(event1);
|
||||
hatchingDialog.dismiss();
|
||||
})
|
||||
.create();
|
||||
dialog.show();
|
||||
}
|
||||
}, throwable -> {});
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void reloadContent(ReloadContentEvent event) {
|
||||
if (!this.isloadingContent) {
|
||||
this.isloadingContent = true;
|
||||
this.mAPIHelper.apiService.getContent(new Callback<ContentResult>() {
|
||||
@Override
|
||||
public void success(ContentResult contentResult, Response response) {
|
||||
isloadingContent = false;
|
||||
ContentReloadedEvent event = new ContentReloadedEvent();
|
||||
EventBus.getDefault().post(event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
isloadingContent = false;
|
||||
}
|
||||
});
|
||||
this.apiHelper.apiService.getContent()
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(contentResult -> {
|
||||
isloadingContent = false;
|
||||
ContentReloadedEvent event1 = new ContentReloadedEvent();
|
||||
EventBus.getDefault().post(event1);
|
||||
}, throwable -> {});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -963,7 +921,9 @@ public class MainActivity extends BaseActivity implements HabitRPGUserCallback.O
|
|||
if (lvl > user.getStats().getLvl()) {
|
||||
displayLevelUpDialog(lvl);
|
||||
|
||||
this.mAPIHelper.retrieveUser(new HabitRPGUserCallback(this));
|
||||
this.apiHelper.apiService.revive()
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(new MergeUserCallback(this, user), throwable -> {});
|
||||
user.getStats().setLvl(lvl);
|
||||
|
||||
showSnackbar(this, floatingMenuWrapper, message.toString(), SnackbarDisplayType.NORMAL);
|
||||
|
|
@ -996,11 +956,6 @@ public class MainActivity extends BaseActivity implements HabitRPGUserCallback.O
|
|||
setUserData(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTaskScoringFailed() {
|
||||
//Do nothing
|
||||
}
|
||||
|
||||
static public Double round(Double value, int n) {
|
||||
return (Math.round(value * Math.pow(10, n))) / (Math.pow(10, n));
|
||||
}
|
||||
|
|
@ -1031,7 +986,9 @@ public class MainActivity extends BaseActivity implements HabitRPGUserCallback.O
|
|||
.setView(customView)
|
||||
.setPositiveButton(R.string.faint_button, (dialog, which) -> {
|
||||
faintDialog = null;
|
||||
mAPIHelper.reviveUser(new HabitRPGUserCallback(MainActivity.this));
|
||||
apiHelper.apiService.revive()
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(new MergeUserCallback(MainActivity.this, MainActivity.this.user), throwable -> {});
|
||||
})
|
||||
.create();
|
||||
|
||||
|
|
@ -1176,7 +1133,9 @@ public class MainActivity extends BaseActivity implements HabitRPGUserCallback.O
|
|||
String path = "flags.tutorial." + step.getTutorialGroup() + "." + step.getIdentifier();
|
||||
Map<String, Object> updateData = new HashMap<>();
|
||||
updateData.put(path, true);
|
||||
mAPIHelper.apiService.updateUser(updateData, new HabitRPGUserCallback(this));
|
||||
apiHelper.apiService.updateUser(updateData)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(new MergeUserCallback(this, user), throwable -> {});
|
||||
this.overlayFrameLayout.removeView(this.activeTutorialView);
|
||||
this.removeActiveTutorialView();
|
||||
|
||||
|
|
@ -1233,33 +1192,27 @@ public class MainActivity extends BaseActivity implements HabitRPGUserCallback.O
|
|||
}
|
||||
|
||||
private void checkMaintenance() {
|
||||
this.mAPIHelper.maintenanceService.getMaintenanceStatus(new Callback<MaintenanceResponse>() {
|
||||
@Override
|
||||
public void success(MaintenanceResponse maintenanceResponse, Response response) {
|
||||
if (maintenanceResponse.activeMaintenance) {
|
||||
Intent intent = createMaintenanceIntent(maintenanceResponse, false);
|
||||
startActivity(intent);
|
||||
} else {
|
||||
if (maintenanceResponse.minBuild != null) {
|
||||
PackageInfo packageInfo = null;
|
||||
try {
|
||||
packageInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
|
||||
if (packageInfo.versionCode < maintenanceResponse.minBuild) {
|
||||
Intent intent = createMaintenanceIntent(maintenanceResponse, true);
|
||||
startActivity(intent);
|
||||
this.apiHelper.maintenanceService.getMaintenanceStatus()
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(maintenanceResponse -> {
|
||||
if (maintenanceResponse.activeMaintenance) {
|
||||
Intent intent = createMaintenanceIntent(maintenanceResponse, false);
|
||||
startActivity(intent);
|
||||
} else {
|
||||
if (maintenanceResponse.minBuild != null) {
|
||||
PackageInfo packageInfo = null;
|
||||
try {
|
||||
packageInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
|
||||
if (packageInfo.versionCode < maintenanceResponse.minBuild) {
|
||||
Intent intent = createMaintenanceIntent(maintenanceResponse, true);
|
||||
startActivity(intent);
|
||||
}
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
}
|
||||
});
|
||||
}, throwable -> {});
|
||||
}
|
||||
|
||||
private Intent createMaintenanceIntent(MaintenanceResponse maintenanceResponse, Boolean isDeprecationNotice) {
|
||||
|
|
@ -1272,4 +1225,9 @@ public class MainActivity extends BaseActivity implements HabitRPGUserCallback.O
|
|||
intent.putExtras(data);
|
||||
return intent;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void call(Throwable throwable) {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ import com.habitrpg.android.habitica.APIHelper;
|
|||
import com.habitrpg.android.habitica.HostConfig;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.helpers.MarkdownParser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.responses.MaintenanceResponse;
|
||||
import com.squareup.picasso.Picasso;
|
||||
|
||||
import android.content.Intent;
|
||||
|
|
@ -17,24 +16,21 @@ import android.widget.Button;
|
|||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import butterknife.Bind;
|
||||
import butterknife.BindView;
|
||||
import butterknife.OnClick;
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
|
||||
public class MaintenanceActivity extends BaseActivity {
|
||||
|
||||
@Bind(R.id.titleTextView)
|
||||
@BindView(R.id.titleTextView)
|
||||
TextView titleTextView;
|
||||
|
||||
@Bind(R.id.imageView)
|
||||
@BindView(R.id.imageView)
|
||||
ImageView imageView;
|
||||
|
||||
@Bind(R.id.descriptionTextView)
|
||||
@BindView(R.id.descriptionTextView)
|
||||
EmojiTextView descriptionTextView;
|
||||
|
||||
@Bind(R.id.playStoreButton)
|
||||
@BindView(R.id.playStoreButton)
|
||||
Button playStoreButton;
|
||||
private APIHelper apiHelper;
|
||||
private Boolean isDeprecationNotice;
|
||||
|
|
@ -69,17 +65,10 @@ public class MaintenanceActivity extends BaseActivity {
|
|||
protected void onResume() {
|
||||
super.onResume();
|
||||
if (!isDeprecationNotice) {
|
||||
this.apiHelper.maintenanceService.getMaintenanceStatus(new Callback<MaintenanceResponse>() {
|
||||
@Override
|
||||
public void success(MaintenanceResponse maintenanceResponse, Response response) {
|
||||
if (!maintenanceResponse.activeMaintenance) {
|
||||
finish();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
this.apiHelper.maintenanceService.getMaintenanceStatus()
|
||||
.subscribe(maintenanceResponse -> {
|
||||
if (!maintenanceResponse.activeMaintenance) {
|
||||
finish();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,8 @@
|
|||
package com.habitrpg.android.habitica.ui.activities;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.fragments.social.party.PartyInviteFragment;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.design.widget.TabLayout;
|
||||
|
|
@ -9,18 +12,10 @@ import android.support.v4.view.ViewPager;
|
|||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.inventory.StableFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.inventory.StableRecyclerFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.social.party.PartyInviteFragment;
|
||||
import com.raizlabs.android.dbflow.structure.BaseModel;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
|
||||
public class PartyInviteActivity extends BaseActivity {
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,11 @@
|
|||
package com.habitrpg.android.habitica.ui.activities;
|
||||
|
||||
import com.habitrpg.android.habitica.BuildConfig;
|
||||
import com.habitrpg.android.habitica.HostConfig;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.fragments.AccountDetailsFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.PreferencesFragment;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
|
|
@ -8,12 +14,6 @@ import android.support.v7.preference.PreferenceFragmentCompat;
|
|||
import android.support.v7.preference.PreferenceScreen;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
|
||||
import com.habitrpg.android.habitica.BuildConfig;
|
||||
import com.habitrpg.android.habitica.HostConfig;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.fragments.AccountDetailsFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.PreferencesFragment;
|
||||
|
||||
import butterknife.BindView;
|
||||
|
||||
public class PrefsActivity extends BaseActivity implements
|
||||
|
|
@ -78,7 +78,7 @@ public class PrefsActivity extends BaseActivity implements
|
|||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ctx);
|
||||
HostConfig config;
|
||||
String httpPort = BuildConfig.PORT;
|
||||
String address = prefs.getString(ctx.getString(R.string.SP_address), BuildConfig.BASE_URL);
|
||||
String address = BuildConfig.DEBUG ? BuildConfig.BASE_URL : ctx.getString(R.string.base_url);
|
||||
String api = prefs.getString(ctx.getString(R.string.SP_APIToken), null);
|
||||
String userID = prefs.getString(ctx.getString(R.string.SP_userID), null);
|
||||
config = new HostConfig(address, httpPort, api, userID);
|
||||
|
|
|
|||
|
|
@ -1,18 +1,11 @@
|
|||
package com.habitrpg.android.habitica.ui.activities;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentPagerAdapter;
|
||||
import android.support.v4.view.ViewPager;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
|
||||
import com.amplitude.api.Amplitude;
|
||||
import com.habitrpg.android.habitica.APIHelper;
|
||||
import com.habitrpg.android.habitica.HostConfig;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback;
|
||||
import com.habitrpg.android.habitica.callbacks.MergeUserCallback;
|
||||
import com.habitrpg.android.habitica.events.commands.UpdateUserCommand;
|
||||
import com.habitrpg.android.habitica.ui.fragments.setup.AvatarSetupFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.setup.TaskSetupFragment;
|
||||
|
|
@ -25,6 +18,14 @@ import org.greenrobot.eventbus.Subscribe;
|
|||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentPagerAdapter;
|
||||
import android.support.v4.view.ViewPager;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
|
@ -104,7 +105,8 @@ public class SetupActivity extends BaseActivity implements View.OnClickListener,
|
|||
if (this.user != null) {
|
||||
setupViewpager();
|
||||
} else {
|
||||
this.apiHelper.retrieveUser(new HabitRPGUserCallback(this));
|
||||
this.apiHelper.apiService.getUser()
|
||||
.subscribe(new HabitRPGUserCallback(this), throwable -> {});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -142,7 +144,8 @@ public class SetupActivity extends BaseActivity implements View.OnClickListener,
|
|||
|
||||
@Subscribe
|
||||
public void onEvent(UpdateUserCommand event) {
|
||||
this.apiHelper.apiService.updateUser(event.updateData, new HabitRPGUserCallback(this));
|
||||
this.apiHelper.apiService.updateUser(event.updateData)
|
||||
.subscribe(new MergeUserCallback(this, user), throwable -> {});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -151,7 +154,7 @@ public class SetupActivity extends BaseActivity implements View.OnClickListener,
|
|||
if (this.pager.getCurrentItem() == 1) {
|
||||
List<Map<String, Object>> operations = this.taskSetupFragment.createSampleTasks();
|
||||
this.completedSetup = true;
|
||||
this.apiHelper.apiService.batchOperation(operations, new HabitRPGUserCallback(this));
|
||||
//this.apiHelper.apiService.batchOperation(operations, new HabitRPGUserCallback(this));
|
||||
}
|
||||
this.pager.setCurrentItem(this.pager.getCurrentItem()+1);
|
||||
} else if (v == this.previousButton) {
|
||||
|
|
@ -217,11 +220,6 @@ public class SetupActivity extends BaseActivity implements View.OnClickListener,
|
|||
Amplitude.getInstance().logEvent("setup", eventProperties);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUserFail() {
|
||||
|
||||
}
|
||||
|
||||
private void startMainActivity() {
|
||||
Intent intent = new Intent(SetupActivity.this, MainActivity.class);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,11 @@
|
|||
package com.habitrpg.android.habitica.ui.activities;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.adapter.SkillTasksRecyclerViewAdapter;
|
||||
import com.habitrpg.android.habitica.ui.fragments.SkillTasksRecyclerViewFragment;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
|
|
@ -8,12 +14,6 @@ import android.support.v4.app.Fragment;
|
|||
import android.support.v4.app.FragmentPagerAdapter;
|
||||
import android.support.v4.view.ViewPager;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.adapter.SkillTasksRecyclerViewAdapter;
|
||||
import com.habitrpg.android.habitica.ui.fragments.SkillTasksRecyclerViewFragment;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,27 @@
|
|||
package com.habitrpg.android.habitica.ui.activities;
|
||||
|
||||
import com.github.data5tream.emojilib.EmojiEditText;
|
||||
import com.github.data5tream.emojilib.EmojiPopup;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.events.TaskSaveEvent;
|
||||
import com.habitrpg.android.habitica.events.commands.DeleteTaskCommand;
|
||||
import com.habitrpg.android.habitica.ui.WrapContentRecyclerViewLayoutManager;
|
||||
import com.habitrpg.android.habitica.ui.adapter.tasks.CheckListAdapter;
|
||||
import com.habitrpg.android.habitica.ui.helpers.MarkdownParser;
|
||||
import com.habitrpg.android.habitica.ui.helpers.SimpleItemTouchHelperCallback;
|
||||
import com.habitrpg.android.habitica.ui.helpers.ViewHelper;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Tag;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.ChecklistItem;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Days;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.TaskTag;
|
||||
import com.raizlabs.android.dbflow.runtime.transaction.BaseTransaction;
|
||||
import com.raizlabs.android.dbflow.runtime.transaction.TransactionListener;
|
||||
import com.raizlabs.android.dbflow.sql.builder.Condition;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
import android.app.DatePickerDialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
|
|
@ -31,28 +53,6 @@ import android.widget.Spinner;
|
|||
import android.widget.TableRow;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.github.data5tream.emojilib.EmojiEditText;
|
||||
import com.github.data5tream.emojilib.EmojiPopup;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.events.TaskSaveEvent;
|
||||
import com.habitrpg.android.habitica.events.commands.DeleteTaskCommand;
|
||||
import com.habitrpg.android.habitica.ui.WrapContentRecyclerViewLayoutManager;
|
||||
import com.habitrpg.android.habitica.ui.adapter.tasks.CheckListAdapter;
|
||||
import com.habitrpg.android.habitica.ui.helpers.MarkdownParser;
|
||||
import com.habitrpg.android.habitica.ui.helpers.SimpleItemTouchHelperCallback;
|
||||
import com.habitrpg.android.habitica.ui.helpers.ViewHelper;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Tag;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.ChecklistItem;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Days;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.TaskTag;
|
||||
import com.raizlabs.android.dbflow.runtime.transaction.BaseTransaction;
|
||||
import com.raizlabs.android.dbflow.runtime.transaction.TransactionListener;
|
||||
import com.raizlabs.android.dbflow.sql.builder.Condition;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.text.DecimalFormat;
|
||||
import java.text.NumberFormat;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,16 @@
|
|||
package com.habitrpg.android.habitica.ui.adapter;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.events.commands.OpenMenuItemCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.UnlockPathCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.UpdateUserCommand;
|
||||
import com.habitrpg.android.habitica.ui.MainDrawerBuilder;
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Customization;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.CustomizationSet;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.support.v7.widget.CardView;
|
||||
|
|
@ -13,17 +24,6 @@ import android.widget.LinearLayout;
|
|||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.events.commands.OpenMenuItemCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.UnlockPathCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.UpdateUserCommand;
|
||||
import com.habitrpg.android.habitica.ui.MainDrawerBuilder;
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Customization;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.CustomizationSet;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,10 @@
|
|||
package com.habitrpg.android.habitica.ui.adapter;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.activities.MainActivity;
|
||||
import com.habitrpg.android.habitica.ui.fragments.faq.FAQDetailFragment;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.FAQArticle;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
|
|
@ -7,11 +12,6 @@ import android.view.View;
|
|||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.activities.MainActivity;
|
||||
import com.habitrpg.android.habitica.ui.fragments.faq.FAQDetailFragment;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.FAQArticle;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import butterknife.BindView;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,13 @@
|
|||
package com.habitrpg.android.habitica.ui.adapter;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.databinding.SkillTaskItemCardBinding;
|
||||
import com.habitrpg.android.habitica.ui.activities.SkillTasksActivity;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
|
||||
import com.raizlabs.android.dbflow.sql.builder.Condition;
|
||||
import com.raizlabs.android.dbflow.sql.language.OrderBy;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
||||
import android.databinding.DataBindingUtil;
|
||||
import android.databinding.ObservableArrayList;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
|
|
@ -9,14 +17,6 @@ import android.view.ViewGroup;
|
|||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.databinding.SkillTaskItemCardBinding;
|
||||
import com.habitrpg.android.habitica.ui.activities.SkillTasksActivity;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
|
||||
import com.raizlabs.android.dbflow.sql.builder.Condition;
|
||||
import com.raizlabs.android.dbflow.sql.language.OrderBy;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import butterknife.BindView;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,12 @@
|
|||
package com.habitrpg.android.habitica.ui.adapter;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.events.commands.UseSkillCommand;
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Skill;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
|
|
@ -10,14 +17,6 @@ import android.widget.Button;
|
|||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.events.commands.UseSkillCommand;
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Skill;
|
||||
import com.squareup.picasso.Picasso;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import butterknife.BindView;
|
||||
|
|
|
|||
|
|
@ -1,15 +1,5 @@
|
|||
package com.habitrpg.android.habitica.ui.adapter.inventory;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.events.commands.EquipCommand;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.ItemData;
|
||||
|
|
@ -17,6 +7,15 @@ import com.squareup.picasso.Picasso;
|
|||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import butterknife.BindView;
|
||||
|
|
|
|||
|
|
@ -1,13 +1,5 @@
|
|||
package com.habitrpg.android.habitica.ui.adapter.inventory;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.databinding.DataBindingUtil;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.databinding.ItemItemBinding;
|
||||
import com.habitrpg.android.habitica.events.ReloadContentEvent;
|
||||
|
|
@ -18,7 +10,6 @@ import com.habitrpg.android.habitica.events.commands.SellItemCommand;
|
|||
import com.habitrpg.android.habitica.ui.fragments.inventory.items.ItemRecyclerFragment;
|
||||
import com.habitrpg.android.habitica.ui.menu.BottomSheetMenu;
|
||||
import com.habitrpg.android.habitica.ui.menu.BottomSheetMenuItem;
|
||||
import com.habitrpg.android.habitica.ui.menu.BottomSheetMenuSelectionRunnable;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Egg;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Food;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.HatchingPotion;
|
||||
|
|
@ -28,6 +19,14 @@ import com.magicmicky.habitrpgwrapper.lib.models.inventory.QuestContent;
|
|||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.databinding.DataBindingUtil;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,14 @@
|
|||
package com.habitrpg.android.habitica.ui.adapter.inventory;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.events.commands.EquipCommand;
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils;
|
||||
import com.habitrpg.android.habitica.ui.menu.BottomSheetMenu;
|
||||
import com.habitrpg.android.habitica.ui.menu.BottomSheetMenuItem;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Mount;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.support.v7.widget.CardView;
|
||||
|
|
@ -10,18 +19,6 @@ import android.view.ViewGroup;
|
|||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.events.commands.EquipCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.FeedCommand;
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils;
|
||||
import com.habitrpg.android.habitica.ui.menu.BottomSheetMenu;
|
||||
import com.habitrpg.android.habitica.ui.menu.BottomSheetMenuItem;
|
||||
import com.habitrpg.android.habitica.ui.menu.BottomSheetMenuSelectionRunnable;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Mount;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Pet;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,29 +1,26 @@
|
|||
package com.habitrpg.android.habitica.ui.adapter.inventory;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.support.v7.widget.CardView;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.events.commands.EquipCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.FeedCommand;
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils;
|
||||
import com.habitrpg.android.habitica.ui.menu.BottomSheetMenu;
|
||||
import com.habitrpg.android.habitica.ui.menu.BottomSheetMenuItem;
|
||||
import com.habitrpg.android.habitica.ui.menu.BottomSheetMenuSelectionRunnable;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Food;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Pet;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.support.v7.widget.CardView;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -158,7 +155,6 @@ public class PetDetailRecyclerAdapter extends RecyclerView.Adapter<PetDetailRecy
|
|||
menu.addMenuItem(new BottomSheetMenuItem(resources.getString(R.string.feed)));
|
||||
}
|
||||
menu.setSelectionRunnable(index -> {
|
||||
Log.e("EEEEEEE", index.toString());
|
||||
if (index == 0) {
|
||||
EquipCommand event = new EquipCommand();
|
||||
event.type = "pet";
|
||||
|
|
|
|||
|
|
@ -1,5 +1,12 @@
|
|||
package com.habitrpg.android.habitica.ui.adapter.inventory;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.activities.MainActivity;
|
||||
import com.habitrpg.android.habitica.ui.fragments.inventory.MountDetailRecyclerFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.inventory.PetDetailRecyclerFragment;
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Animal;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.support.v7.widget.CardView;
|
||||
|
|
@ -11,14 +18,6 @@ import android.widget.Button;
|
|||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.activities.MainActivity;
|
||||
import com.habitrpg.android.habitica.ui.fragments.inventory.MountDetailRecyclerFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.inventory.PetDetailRecyclerFragment;
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Animal;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import butterknife.BindView;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,14 @@
|
|||
package com.habitrpg.android.habitica.ui.adapter.setup;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.events.commands.UpdateUserCommand;
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Customization;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Preferences;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.v7.widget.CardView;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
|
|
@ -10,15 +19,6 @@ import android.widget.ImageView;
|
|||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.events.commands.UpdateUserCommand;
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Customization;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Preferences;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
package com.habitrpg.android.habitica.ui.adapter.setup;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
|
||||
import android.content.res.Resources;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
|
|
@ -9,8 +11,6 @@ import android.widget.CheckBox;
|
|||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,21 +1,5 @@
|
|||
package com.habitrpg.android.habitica.ui.adapter.social;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v7.widget.PopupMenu;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.text.method.LinkMovementMethod;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.github.data5tream.emojilib.EmojiEditText;
|
||||
import com.github.data5tream.emojilib.EmojiTextView;
|
||||
import com.habitrpg.android.habitica.HabiticaApplication;
|
||||
|
|
@ -34,6 +18,22 @@ import com.magicmicky.habitrpgwrapper.lib.models.ChatMessage;
|
|||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v7.widget.PopupMenu;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.text.method.LinkMovementMethod;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,12 @@
|
|||
package com.habitrpg.android.habitica.ui.adapter.social;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.databinding.ValueBarBinding;
|
||||
import com.habitrpg.android.habitica.ui.AvatarWithBarsViewModel;
|
||||
import com.habitrpg.android.habitica.ui.helpers.ViewHelper;
|
||||
import com.habitrpg.android.habitica.userpicture.UserPicture;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.databinding.DataBindingUtil;
|
||||
|
|
@ -12,14 +19,7 @@ import android.view.ViewGroup;
|
|||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.databinding.ValueBarBinding;
|
||||
import com.habitrpg.android.habitica.ui.AvatarWithBarsViewModel;
|
||||
import com.habitrpg.android.habitica.ui.helpers.ViewHelper;
|
||||
import com.habitrpg.android.habitica.userpicture.UserPicture;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
|
|
@ -27,9 +27,9 @@ import butterknife.ButterKnife;
|
|||
public class PartyMemberRecyclerViewAdapter extends RecyclerView.Adapter<PartyMemberRecyclerViewAdapter.MemberViewHolder> {
|
||||
|
||||
|
||||
private ArrayList<HabitRPGUser> memberList;
|
||||
private List<HabitRPGUser> memberList;
|
||||
public Context context;
|
||||
public void setMemberList(ArrayList<HabitRPGUser> memberList) {
|
||||
public void setMemberList(List<HabitRPGUser> memberList) {
|
||||
this.memberList = memberList;
|
||||
this.notifyDataSetChanged();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,13 +1,5 @@
|
|||
package com.habitrpg.android.habitica.ui.adapter.social;
|
||||
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.habitrpg.android.habitica.APIHelper;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.events.DisplayFragmentEvent;
|
||||
|
|
@ -16,26 +8,30 @@ import com.magicmicky.habitrpgwrapper.lib.models.Group;
|
|||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.TextView;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
|
||||
public class PublicGuildsRecyclerViewAdapter extends RecyclerView.Adapter<PublicGuildsRecyclerViewAdapter.GuildViewHolder> {
|
||||
|
||||
public APIHelper apiHelper;
|
||||
private ArrayList<Group> publicGuildList;
|
||||
private ArrayList<String> memberGuildIDs;
|
||||
private List<Group> publicGuildList;
|
||||
private List<String> memberGuildIDs;
|
||||
|
||||
public void setPublicGuildList(ArrayList<Group> publicGuildList) {
|
||||
public void setPublicGuildList(List<Group> publicGuildList) {
|
||||
this.publicGuildList = publicGuildList;
|
||||
this.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public void setMemberGuildIDs(ArrayList<String> memberGuildIDs) {
|
||||
public void setMemberGuildIDs(List<String> memberGuildIDs) {
|
||||
this.memberGuildIDs = memberGuildIDs;
|
||||
}
|
||||
|
||||
|
|
@ -57,35 +53,21 @@ public class PublicGuildsRecyclerViewAdapter extends RecyclerView.Adapter<Public
|
|||
Group guild = (Group) v.getTag();
|
||||
boolean isMember = this.memberGuildIDs != null && this.memberGuildIDs.contains(guild.id);
|
||||
if (isMember) {
|
||||
PublicGuildsRecyclerViewAdapter.this.apiHelper.apiService.leaveGroup(guild.id, new Callback<Void>() {
|
||||
@Override
|
||||
public void success(Void nope, Response response) {
|
||||
memberGuildIDs.remove(guild.id);
|
||||
int indexOfGroup = publicGuildList.indexOf(guild);
|
||||
notifyItemChanged(indexOfGroup);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
Toast.makeText(guildViewHolder.itemView.getContext(), R.string.unknown_error, Toast.LENGTH_SHORT)
|
||||
.show();
|
||||
}
|
||||
});
|
||||
PublicGuildsRecyclerViewAdapter.this.apiHelper.apiService.leaveGroup(guild.id)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(aVoid -> {
|
||||
memberGuildIDs.remove(guild.id);
|
||||
int indexOfGroup = publicGuildList.indexOf(guild);
|
||||
notifyItemChanged(indexOfGroup);
|
||||
}, throwable -> {});
|
||||
} else {
|
||||
PublicGuildsRecyclerViewAdapter.this.apiHelper.apiService.joinGroup(guild.id, new Callback<Group>() {
|
||||
@Override
|
||||
public void success(Group group, Response response) {
|
||||
memberGuildIDs.add(group.id);
|
||||
int indexOfGroup = publicGuildList.indexOf(group);
|
||||
notifyItemChanged(indexOfGroup);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
Toast.makeText(guildViewHolder.itemView.getContext(), R.string.unknown_error, Toast.LENGTH_SHORT)
|
||||
.show();
|
||||
}
|
||||
});
|
||||
PublicGuildsRecyclerViewAdapter.this.apiHelper.apiService.joinGroup(guild.id)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(group -> {
|
||||
memberGuildIDs.add(group.id);
|
||||
int indexOfGroup = publicGuildList.indexOf(group);
|
||||
notifyItemChanged(indexOfGroup);
|
||||
}, throwable -> {});
|
||||
}
|
||||
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,5 +1,10 @@
|
|||
package com.habitrpg.android.habitica.ui.adapter.social;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.QuestProgress;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.QuestContent;
|
||||
import com.squareup.picasso.Picasso;
|
||||
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
|
|
@ -7,11 +12,6 @@ import android.view.ViewGroup;
|
|||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.QuestProgress;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.QuestContent;
|
||||
import com.squareup.picasso.Picasso;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import butterknife.BindView;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,11 @@
|
|||
package com.habitrpg.android.habitica.ui.adapter.tasks;
|
||||
|
||||
import com.github.data5tream.emojilib.EmojiEditText;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.helpers.ItemTouchHelperAdapter;
|
||||
import com.habitrpg.android.habitica.ui.helpers.ItemTouchHelperViewHolder;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.ChecklistItem;
|
||||
|
||||
import android.graphics.Color;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.text.Editable;
|
||||
|
|
@ -9,12 +15,6 @@ import android.view.View;
|
|||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
|
||||
import com.github.data5tream.emojilib.EmojiEditText;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.helpers.ItemTouchHelperAdapter;
|
||||
import com.habitrpg.android.habitica.ui.helpers.ItemTouchHelperViewHolder;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.ChecklistItem;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
|
|
|||
|
|
@ -1,28 +1,5 @@
|
|||
package com.habitrpg.android.habitica.ui.adapter.tasks;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.databinding.DataBindingUtil;
|
||||
import android.databinding.ObservableArrayList;
|
||||
import android.graphics.Rect;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.TouchDelegate;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.github.data5tream.emojilib.EmojiTextView;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.databinding.DailyItemCardBinding;
|
||||
|
|
@ -52,10 +29,32 @@ import com.raizlabs.android.dbflow.sql.language.Select;
|
|||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.databinding.DataBindingUtil;
|
||||
import android.databinding.ObservableArrayList;
|
||||
import android.graphics.Rect;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.TouchDelegate;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.UUID;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
|
|
@ -13,8 +15,6 @@ import android.view.View;
|
|||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
|
||||
import android.content.ClipData;
|
||||
import android.content.ClipboardManager;
|
||||
import android.content.Context;
|
||||
import android.support.v7.preference.Preference;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
|
|
|||
|
|
@ -1,13 +1,5 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.CallSuper;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.app.DialogFragment;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.amplitude.api.Amplitude;
|
||||
import com.habitrpg.android.habitica.events.DisplayTutorialEvent;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.TutorialStep;
|
||||
|
|
@ -21,6 +13,14 @@ import org.greenrobot.eventbus.EventBusException;
|
|||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.CallSuper;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.app.DialogFragment;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import butterknife.ButterKnife;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,12 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments;
|
||||
|
||||
import com.habitrpg.android.habitica.APIHelper;
|
||||
import com.habitrpg.android.habitica.ui.activities.MainActivity;
|
||||
import com.habitrpg.android.habitica.ui.activities.PrefsActivity;
|
||||
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;
|
||||
|
|
@ -8,19 +15,12 @@ import android.view.View;
|
|||
import android.view.ViewGroup;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
import com.habitrpg.android.habitica.APIHelper;
|
||||
import com.habitrpg.android.habitica.ui.activities.MainActivity;
|
||||
import com.habitrpg.android.habitica.ui.activities.PrefsActivity;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.raizlabs.android.dbflow.sql.builder.Condition;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
||||
public abstract class BaseMainFragment extends BaseFragment {
|
||||
|
||||
public MainActivity activity;
|
||||
public TabLayout tabLayout;
|
||||
public FrameLayout floatingMenuWrapper;
|
||||
public APIHelper mAPIHelper;
|
||||
public APIHelper apiHelper;
|
||||
protected HabitRPGUser user;
|
||||
public boolean usesTabLayout;
|
||||
public int fragmentSidebarPosition;
|
||||
|
|
@ -75,8 +75,8 @@ public abstract class BaseMainFragment extends BaseFragment {
|
|||
}
|
||||
}
|
||||
|
||||
if (mAPIHelper == null) {
|
||||
mAPIHelper = new APIHelper(PrefsActivity.fromContext(getContext()));
|
||||
if (apiHelper == null) {
|
||||
apiHelper = new APIHelper(PrefsActivity.fromContext(getContext()));
|
||||
}
|
||||
|
||||
if (floatingMenuWrapper != null) {
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.preference.PreferenceFragmentCompat;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
|
||||
public abstract class BasePreferencesFragment extends PreferenceFragmentCompat {
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -1,14 +1,5 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
|
||||
import com.habitrpg.android.habitica.HabiticaApplication;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.events.BoughtGemsEvent;
|
||||
|
|
@ -25,6 +16,15 @@ import org.solovyev.android.checkout.Purchases;
|
|||
import org.solovyev.android.checkout.RequestListener;
|
||||
import org.solovyev.android.checkout.Sku;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.OnClick;
|
||||
import io.fabric.sdk.android.Fabric;
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments;
|
||||
|
||||
import com.habitrpg.android.habitica.BuildConfig;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.webkit.WebView;
|
||||
|
||||
import com.habitrpg.android.habitica.BuildConfig;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,18 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments;
|
||||
|
||||
import com.habitrpg.android.habitica.APIHelper;
|
||||
import com.habitrpg.android.habitica.HabiticaApplication;
|
||||
import com.habitrpg.android.habitica.NotificationPublisher;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.prefs.TimePreference;
|
||||
import com.habitrpg.android.habitica.ui.activities.ClassSelectionActivity;
|
||||
import com.habitrpg.android.habitica.ui.activities.MainActivity;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.raizlabs.android.dbflow.runtime.transaction.BaseTransaction;
|
||||
import com.raizlabs.android.dbflow.runtime.transaction.TransactionListener;
|
||||
import com.raizlabs.android.dbflow.sql.builder.Condition;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
||||
import android.app.AlarmManager;
|
||||
import android.app.PendingIntent;
|
||||
import android.content.Context;
|
||||
|
|
@ -7,35 +20,11 @@ import android.content.Intent;
|
|||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.preference.Preference;
|
||||
import android.support.v7.preference.PreferenceCategory;
|
||||
|
||||
import com.habitrpg.android.habitica.APIHelper;
|
||||
import com.habitrpg.android.habitica.HabiticaApplication;
|
||||
import com.habitrpg.android.habitica.HostConfig;
|
||||
import com.habitrpg.android.habitica.NotificationPublisher;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback;
|
||||
import com.habitrpg.android.habitica.callbacks.MergeUserCallback;
|
||||
import com.habitrpg.android.habitica.prefs.TimePreference;
|
||||
import com.habitrpg.android.habitica.ui.activities.ClassSelectionActivity;
|
||||
import com.habitrpg.android.habitica.ui.activities.MainActivity;
|
||||
import com.habitrpg.android.habitica.ui.activities.PrefsActivity;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.raizlabs.android.dbflow.runtime.transaction.BaseTransaction;
|
||||
import com.raizlabs.android.dbflow.runtime.transaction.TransactionListener;
|
||||
import com.raizlabs.android.dbflow.sql.builder.Condition;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
|
||||
public class PreferencesFragment extends BasePreferencesFragment implements
|
||||
SharedPreferences.OnSharedPreferenceChangeListener, Callback<HabitRPGUser> {
|
||||
SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
|
||||
private Context context;
|
||||
private TimePreference timePreference;
|
||||
|
|
@ -201,14 +190,4 @@ public class PreferencesFragment extends BasePreferencesFragment implements
|
|||
classSelectionPreference.setVisible(true);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void success(HabitRPGUser habitRPGUser, Response response) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,11 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.events.commands.AddNewTaskCommand;
|
||||
import com.habitrpg.android.habitica.ui.adapter.SkillTasksRecyclerViewAdapter;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.app.Fragment;
|
||||
|
|
@ -9,12 +15,6 @@ import android.view.LayoutInflater;
|
|||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.events.commands.AddNewTaskCommand;
|
||||
import com.habitrpg.android.habitica.ui.adapter.SkillTasksRecyclerViewAdapter;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
public class SkillTasksRecyclerViewFragment extends Fragment implements View.OnClickListener {
|
||||
public RecyclerView mRecyclerView;
|
||||
public RecyclerView.Adapter mAdapter;
|
||||
|
|
@ -39,6 +39,7 @@ public class SkillTasksRecyclerViewFragment extends Fragment implements View.OnC
|
|||
|
||||
@Override
|
||||
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
mRecyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
|
||||
|
||||
android.support.v4.app.FragmentActivity context = getActivity();
|
||||
|
|
|
|||
|
|
@ -1,18 +1,7 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.ProgressDialog;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback;
|
||||
import com.habitrpg.android.habitica.callbacks.MergeUserCallback;
|
||||
import com.habitrpg.android.habitica.callbacks.SkillCallback;
|
||||
import com.habitrpg.android.habitica.events.SkillUsedEvent;
|
||||
import com.habitrpg.android.habitica.events.commands.UseSkillCommand;
|
||||
|
|
@ -26,6 +15,17 @@ import com.raizlabs.android.dbflow.sql.language.Select;
|
|||
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.ProgressDialog;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import butterknife.BindView;
|
||||
|
|
@ -99,7 +99,9 @@ public class SkillsFragment extends BaseMainFragment {
|
|||
startActivityForResult(intent, TASK_SELECTION_ACTIVITY);
|
||||
} else {
|
||||
displayProgressDialog();
|
||||
mAPIHelper.apiService.useSkill(skill.key, skill.target, new SkillCallback(activity, skill));
|
||||
apiHelper.apiService.useSkill(skill.key, skill.target)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(new SkillCallback(activity, skill), throwable -> {});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -109,7 +111,9 @@ public class SkillsFragment extends BaseMainFragment {
|
|||
Skill skill = event.usedSkill;
|
||||
adapter.setMana(event.newMana);
|
||||
UiUtils.showSnackbar(activity, activity.getFloatingMenuWrapper(), activity.getString(R.string.used_skill, skill.text, skill.mana), UiUtils.SnackbarDisplayType.NORMAL);
|
||||
mAPIHelper.retrieveUser(new HabitRPGUserCallback(activity));
|
||||
apiHelper.apiService.getUser()
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(new MergeUserCallback(activity, user), throwable -> {});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -119,7 +123,9 @@ public class SkillsFragment extends BaseMainFragment {
|
|||
case (TASK_SELECTION_ACTIVITY) : {
|
||||
if (resultCode == Activity.RESULT_OK) {
|
||||
displayProgressDialog();
|
||||
mAPIHelper.apiService.useSkill(selectedSkill.key, selectedSkill.target, data.getStringExtra("task_id"), new SkillCallback(activity, selectedSkill));
|
||||
apiHelper.apiService.useSkill(selectedSkill.key, selectedSkill.target, data.getStringExtra("task_id"))
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(new SkillCallback(activity, selectedSkill), throwable -> {});
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments;
|
||||
|
||||
import com.habitrpg.android.habitica.prefs.TimePreference;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
|
|
@ -8,8 +10,6 @@ import android.support.v7.preference.PreferenceFragmentCompat;
|
|||
import android.view.View;
|
||||
import android.widget.TimePicker;
|
||||
|
||||
import com.habitrpg.android.habitica.prefs.TimePreference;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
public class TimePreferenceDialogFragment extends PreferenceDialogFragmentCompat {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,10 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.faq;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
import com.habitrpg.android.habitica.ui.helpers.MarkdownParser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.FAQArticle;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.text.method.LinkMovementMethod;
|
||||
import android.view.LayoutInflater;
|
||||
|
|
@ -7,11 +12,6 @@ import android.view.View;
|
|||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
import com.habitrpg.android.habitica.ui.helpers.MarkdownParser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.FAQArticle;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,12 +1,5 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.faq;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.DividerItemDecoration;
|
||||
import com.habitrpg.android.habitica.ui.adapter.FAQOverviewRecyclerAdapter;
|
||||
|
|
@ -14,6 +7,13 @@ import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
|||
import com.magicmicky.habitrpgwrapper.lib.models.FAQArticle;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import butterknife.BindView;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,13 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.inventory;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.adapter.inventory.MountDetailRecyclerAdapter;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
import com.habitrpg.android.habitica.ui.helpers.MarginDecoration;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Mount;
|
||||
import com.raizlabs.android.dbflow.sql.builder.Condition;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v7.widget.GridLayoutManager;
|
||||
|
|
@ -8,20 +16,7 @@ import android.view.LayoutInflater;
|
|||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.adapter.inventory.MountDetailRecyclerAdapter;
|
||||
import com.habitrpg.android.habitica.ui.adapter.inventory.PetDetailRecyclerAdapter;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
import com.habitrpg.android.habitica.ui.helpers.MarginDecoration;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Animal;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Mount;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Pet;
|
||||
import com.raizlabs.android.dbflow.sql.builder.Condition;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class MountDetailRecyclerFragment extends BaseMainFragment {
|
||||
public RecyclerView recyclerView;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,18 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.inventory;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.events.commands.FeedCommand;
|
||||
import com.habitrpg.android.habitica.ui.adapter.inventory.PetDetailRecyclerAdapter;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.inventory.items.ItemRecyclerFragment;
|
||||
import com.habitrpg.android.habitica.ui.helpers.MarginDecoration;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Pet;
|
||||
import com.raizlabs.android.dbflow.sql.builder.Condition;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v7.widget.GridLayoutManager;
|
||||
|
|
@ -8,27 +21,7 @@ import android.view.LayoutInflater;
|
|||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.events.commands.FeedCommand;
|
||||
import com.habitrpg.android.habitica.ui.adapter.inventory.PetDetailRecyclerAdapter;
|
||||
import com.habitrpg.android.habitica.ui.adapter.inventory.StableRecyclerAdapter;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.inventory.items.ItemRecyclerFragment;
|
||||
import com.habitrpg.android.habitica.ui.helpers.MarginDecoration;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Animal;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Mount;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Pet;
|
||||
import com.raizlabs.android.dbflow.sql.builder.Condition;
|
||||
import com.raizlabs.android.dbflow.sql.language.From;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class PetDetailRecyclerFragment extends BaseMainFragment {
|
||||
public RecyclerView recyclerView;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,8 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.inventory;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentPagerAdapter;
|
||||
|
|
@ -8,11 +11,6 @@ import android.view.LayoutInflater;
|
|||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.inventory.items.ItemRecyclerFragment;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.UserParty;
|
||||
|
||||
public class StableFragment extends BaseMainFragment {
|
||||
|
||||
public ViewPager viewPager;
|
||||
|
|
|
|||
|
|
@ -1,13 +1,5 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.inventory;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v7.widget.GridLayoutManager;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.events.ContentReloadedEvent;
|
||||
import com.habitrpg.android.habitica.events.ReloadContentEvent;
|
||||
|
|
@ -26,6 +18,14 @@ import com.raizlabs.android.dbflow.sql.language.Where;
|
|||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v7.widget.GridLayoutManager;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,12 +1,5 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.inventory.customization;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.GridLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.adapter.CustomizationRecyclerViewAdapter;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
|
|
@ -19,6 +12,13 @@ import com.raizlabs.android.dbflow.sql.language.OrderBy;
|
|||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
import com.raizlabs.android.dbflow.sql.language.Where;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.GridLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,11 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.inventory.customization;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.callbacks.MergeUserCallback;
|
||||
import com.habitrpg.android.habitica.databinding.FragmentAvatarOverviewBinding;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
|
||||
import android.databinding.DataBindingUtil;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
|
|
@ -8,23 +14,13 @@ import android.view.ViewGroup;
|
|||
import android.widget.AdapterView;
|
||||
import android.widget.Spinner;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback;
|
||||
import com.habitrpg.android.habitica.databinding.FragmentAvatarOverviewBinding;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.ContentResult;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
|
||||
public class AvatarOverviewFragment extends BaseMainFragment implements AdapterView.OnItemSelectedListener, Callback<ContentResult> {
|
||||
public class AvatarOverviewFragment extends BaseMainFragment implements AdapterView.OnItemSelectedListener {
|
||||
|
||||
FragmentAvatarOverviewBinding viewBinding;
|
||||
|
||||
|
|
@ -63,8 +59,10 @@ public class AvatarOverviewFragment extends BaseMainFragment implements AdapterV
|
|||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
if (this.mAPIHelper != null) {
|
||||
this.mAPIHelper.apiService.getContent(this);
|
||||
if (this.apiHelper != null) {
|
||||
this.apiHelper.apiService.getContent()
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(contentResult -> {}, throwable -> {});
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -136,20 +134,12 @@ public class AvatarOverviewFragment extends BaseMainFragment implements AdapterV
|
|||
if (!this.user.getPreferences().getSize().equals(newSize)) {
|
||||
Map<String, Object> updateData = new HashMap<>();
|
||||
updateData.put("preferences.size", newSize);
|
||||
mAPIHelper.apiService.updateUser(updateData, new HabitRPGUserCallback(activity));
|
||||
apiHelper.apiService.updateUser(updateData)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(new MergeUserCallback(activity, user), throwable -> {});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNothingSelected(AdapterView<?> parent) {}
|
||||
|
||||
@Override
|
||||
public void success(ContentResult contentResult, Response response) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,5 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.inventory.equipment;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.DividerItemDecoration;
|
||||
import com.habitrpg.android.habitica.ui.adapter.inventory.EquipmentRecyclerViewAdapter;
|
||||
|
|
@ -15,6 +8,13 @@ import com.magicmicky.habitrpgwrapper.lib.models.tasks.ItemData;
|
|||
import com.raizlabs.android.dbflow.sql.builder.Condition;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import butterknife.BindView;
|
||||
|
|
|
|||
|
|
@ -1,13 +1,5 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.inventory.equipment;
|
||||
|
||||
import android.databinding.DataBindingUtil;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.Switch;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.databinding.FragmentEquipmentOverviewBinding;
|
||||
import com.habitrpg.android.habitica.events.commands.UpdateUserCommand;
|
||||
|
|
@ -20,6 +12,13 @@ import com.raizlabs.android.dbflow.sql.language.Select;
|
|||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
import android.databinding.DataBindingUtil;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Switch;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
|
|
|||
|
|
@ -1,17 +1,5 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.inventory.items;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.app.DialogFragment;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.Window;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.events.ContentReloadedEvent;
|
||||
import com.habitrpg.android.habitica.ui.DividerItemDecoration;
|
||||
|
|
@ -29,7 +17,15 @@ import com.raizlabs.android.dbflow.sql.language.From;
|
|||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.w3c.dom.Text;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.Window;
|
||||
import android.widget.TextView;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,16 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.inventory.items;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.events.commands.HatchingCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.InvitePartyToQuestCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.OpenMenuItemCommand;
|
||||
import com.habitrpg.android.habitica.ui.MainDrawerBuilder;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.DialogFragment;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentPagerAdapter;
|
||||
import android.support.v4.view.ViewPager;
|
||||
|
|
@ -9,25 +18,6 @@ import android.view.LayoutInflater;
|
|||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.habitrpg.android.habitica.ContentCache;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.events.commands.FeedCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.HatchingCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.InvitePartyToQuestCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.OpenMenuItemCommand;
|
||||
import com.habitrpg.android.habitica.ui.MainDrawerBuilder;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.inventory.PetDetailRecyclerFragment;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Group;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.UserParty;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
|
||||
public class ItemsFragment extends BaseMainFragment {
|
||||
|
||||
public ViewPager viewPager;
|
||||
|
|
@ -110,19 +100,13 @@ public class ItemsFragment extends BaseMainFragment {
|
|||
|
||||
@Subscribe
|
||||
public void onEvent(InvitePartyToQuestCommand event) {
|
||||
this.mAPIHelper.apiService.inviteToQuest("party", event.questKey, new Callback<Group>() {
|
||||
@Override
|
||||
public void success(Group group, Response response) {
|
||||
OpenMenuItemCommand event = new OpenMenuItemCommand();
|
||||
event.identifier = MainDrawerBuilder.SIDEBAR_PARTY;
|
||||
EventBus.getDefault().post(event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
}
|
||||
});
|
||||
this.apiHelper.apiService.inviteToQuest("party", event.questKey)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(group -> {
|
||||
OpenMenuItemCommand event1 = new OpenMenuItemCommand();
|
||||
event1.identifier = MainDrawerBuilder.SIDEBAR_PARTY;
|
||||
EventBus.getDefault().post(event1);
|
||||
}, throwable -> {});
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
|
|
|
|||
|
|
@ -1,14 +1,5 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.setup;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v7.widget.GridLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.activities.SetupActivity;
|
||||
import com.habitrpg.android.habitica.ui.adapter.setup.CustomizationSetupAdapter;
|
||||
|
|
@ -21,6 +12,15 @@ import com.raizlabs.android.dbflow.sql.builder.Condition;
|
|||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
import com.raizlabs.android.dbflow.sql.language.Where;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v7.widget.GridLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import butterknife.BindView;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,8 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.setup;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseFragment;
|
||||
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
|
|
@ -9,9 +12,6 @@ import android.view.ViewGroup;
|
|||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseFragment;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,10 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.setup;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.activities.SetupActivity;
|
||||
import com.habitrpg.android.habitica.ui.adapter.setup.TaskSetupAdapter;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseFragment;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
|
|
@ -8,11 +13,6 @@ import android.view.LayoutInflater;
|
|||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.activities.SetupActivity;
|
||||
import com.habitrpg.android.habitica.ui.adapter.setup.TaskSetupAdapter;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseFragment;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
|
|
|
|||
|
|
@ -1,17 +1,5 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.social;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.widget.SwipeRefreshLayout;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.habitrpg.android.habitica.APIHelper;
|
||||
import com.habitrpg.android.habitica.HabiticaApplication;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
|
|
@ -29,24 +17,33 @@ import com.habitrpg.android.habitica.ui.fragments.BaseFragment;
|
|||
import com.habitrpg.android.habitica.ui.helpers.MarkdownParser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.ChatMessage;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.PostChatMessageResult;
|
||||
import com.raizlabs.android.dbflow.sql.builder.Condition;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.EventBusException;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.widget.SwipeRefreshLayout;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
import rx.functions.Action1;
|
||||
|
||||
public class ChatListFragment extends BaseFragment implements SwipeRefreshLayout.OnRefreshListener, Callback<List<ChatMessage>> {
|
||||
public class ChatListFragment extends BaseFragment implements SwipeRefreshLayout.OnRefreshListener, Action1<List<ChatMessage>> {
|
||||
|
||||
private Context ctx;
|
||||
private String groupId;
|
||||
|
|
@ -140,7 +137,8 @@ public class ChatListFragment extends BaseFragment implements SwipeRefreshLayout
|
|||
public void onRefresh() {
|
||||
swipeRefreshLayout.setRefreshing(true);
|
||||
|
||||
apiHelper.apiService.listGroupChat(groupId, this);
|
||||
apiHelper.apiService.listGroupChat(groupId).compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(this, throwable -> {});
|
||||
}
|
||||
|
||||
private List<ChatMessage> currentChatMessages;
|
||||
|
|
@ -152,8 +150,97 @@ public class ChatListFragment extends BaseFragment implements SwipeRefreshLayout
|
|||
markMessagesAsSeen();
|
||||
}
|
||||
|
||||
private boolean navigatedOnceToFragment = false;
|
||||
private boolean gotNewMessages = false;
|
||||
|
||||
private void markMessagesAsSeen(){
|
||||
if(!isTavern && seenGroupId != null && !seenGroupId.isEmpty()
|
||||
&& gotNewMessages && navigatedOnceToFragment) {
|
||||
|
||||
gotNewMessages = false;
|
||||
|
||||
apiHelper.apiService.seenMessages(seenGroupId)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(s -> {}, throwable -> {});
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onEvent(final FlagChatMessageCommand cmd) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
|
||||
builder.setMessage(R.string.chat_flag_confirmation)
|
||||
.setPositiveButton(R.string.flag_confirm, (dialog, id) -> {
|
||||
apiHelper.apiService.flagMessage(cmd.groupId, cmd.chatMessage.id)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(aVoid -> {
|
||||
UiUtils.showSnackbar(activity, activity.getFloatingMenuWrapper(), "Flagged message by " + cmd.chatMessage.user, UiUtils.SnackbarDisplayType.NORMAL);
|
||||
}, throwable -> {});
|
||||
})
|
||||
.setNegativeButton(R.string.action_cancel, (dialog, id) -> {
|
||||
});
|
||||
builder.show();
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onEvent(final ToggleLikeMessageCommand cmd) {
|
||||
apiHelper.apiService.likeMessage(cmd.groupId, cmd.chatMessage.id).compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(voids -> {});
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onEvent(final DeleteChatMessageCommand cmd) {
|
||||
apiHelper.apiService.deleteMessage(cmd.groupId, cmd.chatMessage.id)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(aVoid -> {
|
||||
if (currentChatMessages != null) {
|
||||
currentChatMessages.remove(cmd.chatMessage);
|
||||
|
||||
ChatListFragment.this.call(currentChatMessages);
|
||||
}
|
||||
}, throwable -> {});
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onEvent(SendNewGroupMessageCommand cmd) {
|
||||
HashMap<String, String> messageObject = new HashMap<>();
|
||||
messageObject.put("message", cmd.Message);
|
||||
apiHelper.apiService.postGroupChat(cmd.TargetGroupId, messageObject)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(postChatMessageResult -> {
|
||||
if (currentChatMessages != null) {
|
||||
currentChatMessages.add(0, postChatMessageResult.message);
|
||||
|
||||
ChatListFragment.this.call(currentChatMessages);
|
||||
}
|
||||
}, throwable -> {});
|
||||
|
||||
UiUtils.dismissKeyboard(HabiticaApplication.currentActivity);
|
||||
}
|
||||
|
||||
// If the ChatList is Tavern, we're able to toggle the sleep-mode
|
||||
@Subscribe
|
||||
public void onEvent(ToggleInnCommand event) {
|
||||
apiHelper.apiService.sleep().compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(aVoid -> {
|
||||
ToggledInnStateEvent innState = new ToggledInnStateEvent();
|
||||
innState.Inn = !user.getPreferences().getSleep();
|
||||
|
||||
user.getPreferences().setSleep(innState.Inn);
|
||||
|
||||
EventBus.getDefault().post(innState);
|
||||
}, throwable -> {});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void success(List<ChatMessage> chatMessages, Response response) {
|
||||
public void onSaveInstanceState(Bundle outState) {
|
||||
outState.putString("userId", this.userId);
|
||||
outState.putString("groupId", this.groupId);
|
||||
outState.putBoolean("isTavern", this.isTavern);
|
||||
super.onSaveInstanceState(outState);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void call(List<ChatMessage> chatMessages) {
|
||||
currentChatMessages = chatMessages;
|
||||
|
||||
//Load unparsed messages first
|
||||
|
|
@ -174,139 +261,6 @@ public class ChatListFragment extends BaseFragment implements SwipeRefreshLayout
|
|||
markMessagesAsSeen();
|
||||
}
|
||||
|
||||
private boolean navigatedOnceToFragment = false;
|
||||
private boolean gotNewMessages = false;
|
||||
|
||||
private void markMessagesAsSeen(){
|
||||
if(!isTavern && seenGroupId != null && !seenGroupId.isEmpty()
|
||||
&& gotNewMessages && navigatedOnceToFragment) {
|
||||
|
||||
gotNewMessages = false;
|
||||
|
||||
apiHelper.apiService.seenMessages(seenGroupId, new Callback<String>() {
|
||||
@Override
|
||||
public void success(String str, Response response) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onEvent(final FlagChatMessageCommand cmd) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
|
||||
builder.setMessage(R.string.chat_flag_confirmation)
|
||||
.setPositiveButton(R.string.flag_confirm, (dialog, id) -> {
|
||||
apiHelper.apiService.flagMessage(cmd.groupId, cmd.chatMessage.id, new Callback<Void>() {
|
||||
@Override
|
||||
public void success(Void aVoid, Response response) {
|
||||
UiUtils.showSnackbar(activity, activity.getFloatingMenuWrapper(), "Flagged message by " + cmd.chatMessage.user, UiUtils.SnackbarDisplayType.NORMAL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
}
|
||||
}); })
|
||||
.setNegativeButton(R.string.action_cancel, (dialog, id) -> {
|
||||
});
|
||||
builder.show();
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onEvent(final ToggleLikeMessageCommand cmd) {
|
||||
apiHelper.apiService.likeMessage(cmd.groupId, cmd.chatMessage.id, new Callback<List<Void>>() {
|
||||
@Override
|
||||
public void success(List<Void> aVoid, Response response) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
//showSnackbar("Failed to like message by " + cmd.chatMessage.user, true);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onEvent(final DeleteChatMessageCommand cmd) {
|
||||
apiHelper.apiService.deleteMessage(cmd.groupId, cmd.chatMessage.id, new Callback<Void>() {
|
||||
@Override
|
||||
public void success(Void aVoid, Response response) {
|
||||
if (currentChatMessages != null) {
|
||||
currentChatMessages.remove(cmd.chatMessage);
|
||||
|
||||
ChatListFragment.this.success(currentChatMessages, null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onEvent(SendNewGroupMessageCommand cmd) {
|
||||
|
||||
apiHelper.apiService.postGroupChat(cmd.TargetGroupId, cmd.Message, new Callback<PostChatMessageResult>() {
|
||||
@Override
|
||||
public void success(PostChatMessageResult msg, Response response) {
|
||||
if (currentChatMessages != null) {
|
||||
currentChatMessages.add(0, msg.message);
|
||||
|
||||
ChatListFragment.this.success(currentChatMessages, null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
UiUtils.dismissKeyboard(HabiticaApplication.currentActivity);
|
||||
}
|
||||
|
||||
// If the ChatList is Tavern, we're able to toggle the sleep-mode
|
||||
@Subscribe
|
||||
public void onEvent(ToggleInnCommand event) {
|
||||
apiHelper.toggleSleep(new Callback<Void>() {
|
||||
@Override
|
||||
public void success(Void aVoid, Response response) {
|
||||
ToggledInnStateEvent innState = new ToggledInnStateEvent();
|
||||
innState.Inn = !user.getPreferences().getSleep();
|
||||
|
||||
user.getPreferences().setSleep(innState.Inn);
|
||||
|
||||
EventBus.getDefault().post(innState);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSaveInstanceState(Bundle outState) {
|
||||
outState.putString("userId", this.userId);
|
||||
outState.putString("groupId", this.groupId);
|
||||
outState.putBoolean("isTavern", this.isTavern);
|
||||
super.onSaveInstanceState(outState);
|
||||
}
|
||||
|
||||
private class ParseMessages extends AsyncTask<Void, Void, Void> {
|
||||
private List<ChatMessage> chatMessages;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,14 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.social;
|
||||
|
||||
import com.habitrpg.android.habitica.APIHelper;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.databinding.FragmentGroupInfoBinding;
|
||||
import com.habitrpg.android.habitica.databinding.ValueBarBinding;
|
||||
import com.habitrpg.android.habitica.ui.adapter.social.QuestCollectRecyclerViewAdapter;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Group;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.QuestContent;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.databinding.DataBindingUtil;
|
||||
|
|
@ -15,28 +24,16 @@ import android.view.ViewGroup;
|
|||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.APIHelper;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.databinding.FragmentGroupInfoBinding;
|
||||
import com.habitrpg.android.habitica.databinding.ValueBarBinding;
|
||||
import com.habitrpg.android.habitica.ui.adapter.social.QuestCollectRecyclerViewAdapter;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Group;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.QuestContent;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
|
||||
public class GroupInformationFragment extends Fragment {
|
||||
|
||||
|
||||
private View view;
|
||||
FragmentGroupInfoBinding viewBinding;
|
||||
APIHelper mAPIHelper;
|
||||
APIHelper apiHelper;
|
||||
@BindView(R.id.questMemberView)
|
||||
LinearLayout questMemberView;
|
||||
@BindView(R.id.collectionStats)
|
||||
|
|
@ -57,7 +54,7 @@ public class GroupInformationFragment extends Fragment {
|
|||
fragment.setArguments(args);
|
||||
fragment.group = group;
|
||||
fragment.user = user;
|
||||
fragment.mAPIHelper = mAPIHelper;
|
||||
fragment.apiHelper = mAPIHelper;
|
||||
return fragment;
|
||||
}
|
||||
|
||||
|
|
@ -150,7 +147,7 @@ public class GroupInformationFragment extends Fragment {
|
|||
viewBinding.setHideParticipantCard(true);
|
||||
return;
|
||||
}
|
||||
if (group.quest.members == null) {
|
||||
if (group.quest.members == null || group.members == null) {
|
||||
viewBinding.setHideParticipantCard(true);
|
||||
return;
|
||||
}
|
||||
|
|
@ -182,39 +179,27 @@ public class GroupInformationFragment extends Fragment {
|
|||
|
||||
@OnClick(R.id.btnQuestAccept)
|
||||
public void onQuestAccept() {
|
||||
mAPIHelper.apiService.acceptQuest(group.id, new Callback<Void>() {
|
||||
@Override
|
||||
public void success(Void aVoid, Response response) {
|
||||
user.getParty().getQuest().RSVPNeeded = false;
|
||||
group.quest.members.put(user.getId(), true);
|
||||
setGroup(group);
|
||||
viewBinding.setUser(user);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
}
|
||||
});
|
||||
apiHelper.apiService.acceptQuest(group.id)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(aVoid -> {
|
||||
user.getParty().getQuest().RSVPNeeded = false;
|
||||
group.quest.members.put(user.getId(), true);
|
||||
setGroup(group);
|
||||
viewBinding.setUser(user);
|
||||
}, throwable -> {});
|
||||
}
|
||||
|
||||
|
||||
@OnClick(R.id.btnQuestReject)
|
||||
public void onQuestReject() {
|
||||
mAPIHelper.apiService.rejectQuest(group.id, new Callback<Void>() {
|
||||
@Override
|
||||
public void success(Void aVoid, Response response) {
|
||||
user.getParty().getQuest().RSVPNeeded = false;
|
||||
apiHelper.apiService.rejectQuest(group.id)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(aVoid -> {
|
||||
user.getParty().getQuest().RSVPNeeded = false;
|
||||
group.quest.members.put(user.getId(), false);
|
||||
setGroup(group);
|
||||
viewBinding.setUser(user);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
}
|
||||
});
|
||||
}, throwable -> {});
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -223,18 +208,12 @@ public class GroupInformationFragment extends Fragment {
|
|||
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
|
||||
.setMessage("Are you sure you want to leave the active quest? All your quest progress will be lost.")
|
||||
.setPositiveButton("Yes", (dialog, which) -> {
|
||||
mAPIHelper.apiService.leaveQuest(group.id, new Callback<Void>() {
|
||||
@Override
|
||||
public void success(Void aVoid, Response response) {
|
||||
group.quest.members.remove(user.getId());
|
||||
setGroup(group);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
}
|
||||
});
|
||||
apiHelper.apiService.leaveQuest(group.id)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(aVoid -> {
|
||||
group.quest.members.remove(user.getId());
|
||||
setGroup(group);
|
||||
}, throwable -> {});
|
||||
}).setNegativeButton("No", (dialog, which) -> {
|
||||
|
||||
});
|
||||
|
|
@ -247,17 +226,12 @@ public class GroupInformationFragment extends Fragment {
|
|||
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
|
||||
.setMessage(R.string.quest_begin_message)
|
||||
.setPositiveButton(R.string.yes, (dialog, which) -> {
|
||||
mAPIHelper.apiService.forceStartQuest(group.id, group, new Callback<Group>() {
|
||||
@Override
|
||||
public void success(Group group1, Response response) {
|
||||
setGroup(group1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
}
|
||||
});
|
||||
apiHelper.apiService.forceStartQuest(group.id, group)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(quest -> {
|
||||
group.quest = quest;
|
||||
setGroup(group);
|
||||
}, throwable -> {});
|
||||
}).setNegativeButton(R.string.no, (dialog, which) -> {
|
||||
|
||||
});
|
||||
|
|
@ -269,18 +243,12 @@ public class GroupInformationFragment extends Fragment {
|
|||
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
|
||||
.setMessage(R.string.quest_cancel_message)
|
||||
.setPositiveButton(R.string.yes, (dialog, which) -> {
|
||||
mAPIHelper.apiService.cancelQuest(group.id, new Callback<Void>() {
|
||||
@Override
|
||||
public void success(Void aVoid, Response response) {
|
||||
setGroup(group);
|
||||
setQuestContent(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
}
|
||||
});
|
||||
apiHelper.apiService.cancelQuest(group.id)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(aVoid -> {
|
||||
setGroup(group);
|
||||
setQuestContent(null);
|
||||
}, throwable -> {});
|
||||
}).setNegativeButton(R.string.no, (dialog, which) -> {
|
||||
|
||||
});
|
||||
|
|
@ -292,18 +260,13 @@ public class GroupInformationFragment extends Fragment {
|
|||
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
|
||||
.setMessage("Are you sure you want to abort this mission? It will abort it for everyone in your party and all progress will be lost. The quest scroll will be returned to the quest owner.")
|
||||
.setPositiveButton("Yes", (dialog, which) -> {
|
||||
mAPIHelper.apiService.abortQuest(group.id, new Callback<Group>() {
|
||||
@Override
|
||||
public void success(Group group1, Response response) {
|
||||
setGroup(group1);
|
||||
setQuestContent(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
}
|
||||
});
|
||||
apiHelper.apiService.abortQuest(group.id)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(quest -> {
|
||||
group.quest = quest;
|
||||
setGroup(group);
|
||||
setQuestContent(null);
|
||||
}, throwable -> {});
|
||||
}).setNegativeButton("No", (dialog, which) -> {
|
||||
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,5 +1,11 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.social;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.activities.GroupFormActivity;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Group;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.UserParty;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
|
|
@ -13,17 +19,9 @@ import android.view.MenuItem;
|
|||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.activities.GroupFormActivity;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Group;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.UserParty;
|
||||
import rx.functions.Action1;
|
||||
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
|
||||
public class GuildFragment extends BaseMainFragment implements Callback<Group> {
|
||||
public class GuildFragment extends BaseMainFragment implements Action1<Group> {
|
||||
|
||||
private Group guild;
|
||||
public boolean isMember;
|
||||
|
|
@ -39,8 +37,9 @@ public class GuildFragment extends BaseMainFragment implements Callback<Group> {
|
|||
this.guildInformationFragment.setGroup(guild);
|
||||
}
|
||||
if (this.guild.chat == null) {
|
||||
if (this.mAPIHelper != null) {
|
||||
mAPIHelper.apiService.getGroup(this.guild.id, this);
|
||||
if (this.apiHelper != null) {
|
||||
apiHelper.apiService.getGroup(this.guild.id).compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(this, throwable -> {});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -64,8 +63,9 @@ public class GuildFragment extends BaseMainFragment implements Callback<Group> {
|
|||
@Override
|
||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
if (this.mAPIHelper != null && this.guild != null) {
|
||||
mAPIHelper.apiService.getGroup(this.guild.id, this);
|
||||
if (this.apiHelper != null && this.guild != null) {
|
||||
apiHelper.apiService.getGroup(this.guild.id).compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(this, throwable -> {});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -89,20 +89,15 @@ public class GuildFragment extends BaseMainFragment implements Callback<Group> {
|
|||
|
||||
switch (id) {
|
||||
case R.id.menu_guild_join:
|
||||
this.mAPIHelper.apiService.joinGroup(this.guild.id, this);
|
||||
this.apiHelper.apiService.joinGroup(this.guild.id).compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(this, throwable -> {});
|
||||
this.isMember = true;
|
||||
return true;
|
||||
case R.id.menu_guild_leave:
|
||||
this.mAPIHelper.apiService.leaveGroup(this.guild.id, new Callback<Void>() {
|
||||
@Override
|
||||
public void success(Void aVoid, Response response) {
|
||||
getActivity().supportInvalidateOptionsMenu();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
}
|
||||
});
|
||||
this.apiHelper.apiService.leaveGroup(this.guild.id).compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(aVoid -> {
|
||||
this.activity.supportInvalidateOptionsMenu();
|
||||
}, throwable -> {});
|
||||
this.isMember = false;
|
||||
return true;
|
||||
case R.id.menu_guild_edit:
|
||||
|
|
@ -130,12 +125,12 @@ public class GuildFragment extends BaseMainFragment implements Callback<Group> {
|
|||
|
||||
switch (position) {
|
||||
case 0: {
|
||||
fragment = guildInformationFragment = GroupInformationFragment.newInstance(GuildFragment.this.guild, user, mAPIHelper);
|
||||
fragment = guildInformationFragment = GroupInformationFragment.newInstance(GuildFragment.this.guild, user, apiHelper);
|
||||
break;
|
||||
}
|
||||
case 1: {
|
||||
chatListFragment = new ChatListFragment();
|
||||
chatListFragment.configure(activity, GuildFragment.this.guild.id, mAPIHelper, user, activity, false);
|
||||
chatListFragment.configure(activity, GuildFragment.this.guild.id, apiHelper, user, activity, false);
|
||||
fragment = chatListFragment;
|
||||
break;
|
||||
}
|
||||
|
|
@ -226,16 +221,9 @@ public class GuildFragment extends BaseMainFragment implements Callback<Group> {
|
|||
needsSaving = true;
|
||||
}
|
||||
if (needsSaving) {
|
||||
this.mAPIHelper.apiService.updateGroup(this.guild.id, this.guild, new Callback<Void>() {
|
||||
@Override
|
||||
public void success(Void aVoid, Response response) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
}
|
||||
});
|
||||
this.apiHelper.apiService.updateGroup(this.guild.id, this.guild)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(aVoid -> {}, throwable -> {});
|
||||
this.guildInformationFragment.setGroup(guild);
|
||||
}
|
||||
}
|
||||
|
|
@ -245,7 +233,7 @@ public class GuildFragment extends BaseMainFragment implements Callback<Group> {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void success(Group group, Response response) {
|
||||
public void call(Group group) {
|
||||
if (group != null) {
|
||||
if (this.guildInformationFragment != null) {
|
||||
this.guildInformationFragment.setGroup(group);
|
||||
|
|
@ -259,8 +247,4 @@ public class GuildFragment extends BaseMainFragment implements Callback<Group> {
|
|||
}
|
||||
this.activity.supportInvalidateOptionsMenu();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,9 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.social;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Group;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.widget.SwipeRefreshLayout;
|
||||
|
|
@ -10,23 +14,13 @@ import android.widget.Button;
|
|||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Group;
|
||||
import com.raizlabs.android.dbflow.sql.builder.Condition;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
import com.raizlabs.android.dbflow.sql.language.Where;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
|
||||
public class GuildsOverviewFragment extends BaseMainFragment implements Callback<ArrayList<Group>>, View.OnClickListener, SwipeRefreshLayout.OnRefreshListener {
|
||||
public class GuildsOverviewFragment extends BaseMainFragment implements View.OnClickListener, SwipeRefreshLayout.OnRefreshListener {
|
||||
|
||||
@BindView(R.id.my_guilds_listview)
|
||||
LinearLayout guildsListView;
|
||||
|
|
@ -68,8 +62,16 @@ public class GuildsOverviewFragment extends BaseMainFragment implements Callback
|
|||
}
|
||||
|
||||
private void fetchGuilds() {
|
||||
if (this.mAPIHelper != null && this.mAPIHelper.apiService != null) {
|
||||
this.mAPIHelper.apiService.listGroups("guilds", this);
|
||||
if (this.apiHelper != null && this.apiHelper.apiService != null) {
|
||||
this.apiHelper.apiService.listGroups("guilds")
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(groups -> {
|
||||
GuildsOverviewFragment.this.guilds = groups;
|
||||
GuildsOverviewFragment.this.setGuildsOnListView();
|
||||
if (swipeRefreshLayout != null) {
|
||||
swipeRefreshLayout.setRefreshing(false);
|
||||
}
|
||||
}, throwable -> {});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -89,20 +91,6 @@ public class GuildsOverviewFragment extends BaseMainFragment implements Callback
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void success(ArrayList<Group> groups, Response response) {
|
||||
this.guilds = groups;
|
||||
this.setGuildsOnListView();
|
||||
if (swipeRefreshLayout != null) {
|
||||
swipeRefreshLayout.setRefreshing(false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (v == this.publicGuildsButton) {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,11 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.social;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.DividerItemDecoration;
|
||||
import com.habitrpg.android.habitica.ui.adapter.social.PublicGuildsRecyclerViewAdapter;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Group;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
|
|
@ -8,24 +14,15 @@ import android.view.LayoutInflater;
|
|||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.DividerItemDecoration;
|
||||
import com.habitrpg.android.habitica.ui.adapter.social.PublicGuildsRecyclerViewAdapter;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Group;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
|
||||
public class PublicGuildsFragment extends BaseMainFragment implements Callback<ArrayList<Group>> {
|
||||
public class PublicGuildsFragment extends BaseMainFragment {
|
||||
|
||||
ArrayList<String> memberGuildIDs;
|
||||
ArrayList <Group> guilds;
|
||||
List<String> memberGuildIDs;
|
||||
List <Group> guilds;
|
||||
|
||||
@BindView(R.id.recyclerView)
|
||||
RecyclerView recyclerView;
|
||||
|
|
@ -45,7 +42,7 @@ public class PublicGuildsFragment extends BaseMainFragment implements Callback<A
|
|||
recyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL_LIST));
|
||||
viewAdapter = new PublicGuildsRecyclerViewAdapter();
|
||||
viewAdapter.setMemberGuildIDs(this.memberGuildIDs);
|
||||
viewAdapter.apiHelper = this.mAPIHelper;
|
||||
viewAdapter.apiHelper = this.apiHelper;
|
||||
recyclerView.setAdapter(viewAdapter);
|
||||
if (this.guilds != null) {
|
||||
this.viewAdapter.setPublicGuildList(this.guilds);
|
||||
|
|
@ -61,21 +58,15 @@ public class PublicGuildsFragment extends BaseMainFragment implements Callback<A
|
|||
}
|
||||
|
||||
private void fetchGuilds() {
|
||||
if (this.mAPIHelper != null) {
|
||||
this.mAPIHelper.apiService.listGroups("public", this);
|
||||
if (this.apiHelper != null) {
|
||||
this.apiHelper.apiService.listGroups("publicGuilds")
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(groups -> {
|
||||
PublicGuildsFragment.this.guilds = groups;
|
||||
if (PublicGuildsFragment.this.viewAdapter!= null) {
|
||||
PublicGuildsFragment.this.viewAdapter.setPublicGuildList(groups);
|
||||
}
|
||||
}, throwable -> {});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void success(ArrayList<Group> groups, Response response) {
|
||||
this.guilds = groups;
|
||||
if (this.viewAdapter!= null) {
|
||||
this.viewAdapter.setPublicGuildList(groups);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,10 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.social;
|
||||
|
||||
import com.habitrpg.android.habitica.ContentCache;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Group;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentPagerAdapter;
|
||||
|
|
@ -8,16 +13,7 @@ import android.view.LayoutInflater;
|
|||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.habitrpg.android.habitica.ContentCache;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Group;
|
||||
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
|
||||
public class TavernFragment extends BaseMainFragment implements Callback<Group> {
|
||||
public class TavernFragment extends BaseMainFragment {
|
||||
|
||||
public ViewPager viewPager;
|
||||
Group tavern;
|
||||
|
|
@ -46,36 +42,30 @@ public class TavernFragment extends BaseMainFragment implements Callback<Group>
|
|||
@Override
|
||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
if (this.mAPIHelper != null) {
|
||||
mAPIHelper.apiService.getGroup("habitrpg", this);
|
||||
}
|
||||
}
|
||||
if (this.apiHelper != null) {
|
||||
apiHelper.apiService.getGroup("habitrpg")
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(group -> {
|
||||
TavernFragment.this.tavern = group;
|
||||
if (group.quest != null && TavernFragment.this.isAdded()) {
|
||||
TavernFragment.this.viewPager.getAdapter().notifyDataSetChanged();
|
||||
if (TavernFragment.this.tabLayout != null) {
|
||||
TavernFragment.this.tabLayout.setVisibility(View.VISIBLE);
|
||||
TavernFragment.this.tabLayout.setupWithViewPager(TavernFragment.this.viewPager);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void success(Group group, Response response) {
|
||||
this.tavern = group;
|
||||
if (group.quest != null && this.isAdded()) {
|
||||
this.viewPager.getAdapter().notifyDataSetChanged();
|
||||
if (this.tabLayout != null) {
|
||||
this.tabLayout.setVisibility(View.VISIBLE);
|
||||
this.tabLayout.setupWithViewPager(this.viewPager);
|
||||
}
|
||||
ContentCache contentCache = new ContentCache(apiHelper.apiService);
|
||||
|
||||
ContentCache contentCache = new ContentCache(mAPIHelper.apiService);
|
||||
|
||||
contentCache.GetQuestContent(group.quest.key, content -> {
|
||||
if (questInfoFragment != null) {
|
||||
questInfoFragment.setQuestContent(content);
|
||||
contentCache.GetQuestContent(group.quest.key, content -> {
|
||||
if (questInfoFragment != null) {
|
||||
questInfoFragment.setQuestContent(content);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}, throwable -> {});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
}
|
||||
|
||||
public void setViewPagerAdapter() {
|
||||
android.support.v4.app.FragmentManager fragmentManager = getChildFragmentManager();
|
||||
if (this.user == null) {
|
||||
|
|
@ -92,12 +82,12 @@ public class TavernFragment extends BaseMainFragment implements Callback<Group>
|
|||
switch (position) {
|
||||
case 0: {
|
||||
chatListFragment = new ChatListFragment();
|
||||
chatListFragment.configure(activity, "habitrpg", mAPIHelper, user, activity, true);
|
||||
chatListFragment.configure(activity, "habitrpg", apiHelper, user, activity, true);
|
||||
fragment = chatListFragment;
|
||||
break;
|
||||
}
|
||||
case 1: {
|
||||
fragment = questInfoFragment = GroupInformationFragment.newInstance(tavern, user, mAPIHelper);
|
||||
fragment = questInfoFragment = GroupInformationFragment.newInstance(tavern, user, apiHelper);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
|
|
|||
|
|
@ -1,5 +1,15 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.social.party;
|
||||
|
||||
import com.habitrpg.android.habitica.ContentCache;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.activities.GroupFormActivity;
|
||||
import com.habitrpg.android.habitica.ui.activities.PartyInviteActivity;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.social.ChatListFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.social.GroupInformationFragment;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Group;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.UserParty;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
|
|
@ -14,26 +24,12 @@ import android.view.MenuItem;
|
|||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.habitrpg.android.habitica.ContentCache;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.activities.GroupFormActivity;
|
||||
import com.habitrpg.android.habitica.ui.activities.PartyInviteActivity;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.social.ChatListFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.social.GroupInformationFragment;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Group;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.UserParty;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
|
||||
|
||||
public class PartyFragment extends BaseMainFragment {
|
||||
|
||||
|
|
@ -43,6 +39,7 @@ public class PartyFragment extends BaseMainFragment {
|
|||
private PartyMemberListFragment partyMemberListFragment;
|
||||
private GroupInformationFragment groupInformationFragment;
|
||||
private ChatListFragment chatListFragment;
|
||||
private ContentCache contentCache;
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
|
|
@ -55,51 +52,34 @@ public class PartyFragment extends BaseMainFragment {
|
|||
|
||||
viewPager.setCurrentItem(0);
|
||||
|
||||
final ContentCache contentCache = new ContentCache(mAPIHelper.apiService);
|
||||
contentCache = new ContentCache(apiHelper.apiService);
|
||||
|
||||
// Get the full group data
|
||||
mAPIHelper.apiService.getGroup("party", new Callback<Group>() {
|
||||
@Override
|
||||
public void success(Group group, Response response) {
|
||||
if (group == null) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(activity)
|
||||
.setMessage(activity.getString(R.string.no_party_message))
|
||||
.setNeutralButton(android.R.string.ok, (dialog, which) -> {
|
||||
activity.getSupportFragmentManager().popBackStackImmediate();
|
||||
});
|
||||
builder.show();
|
||||
tabLayout.removeAllTabs();
|
||||
return;
|
||||
}
|
||||
PartyFragment.this.group = group;
|
||||
apiHelper.apiService.getGroup("party")
|
||||
.compose(this.apiHelper.configureApiCallObserver())
|
||||
.subscribe(group -> {
|
||||
if (group == null) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(activity)
|
||||
.setMessage(activity.getString(R.string.no_party_message))
|
||||
.setNeutralButton(android.R.string.ok, (dialog, which) -> {
|
||||
activity.getSupportFragmentManager().popBackStackImmediate();
|
||||
});
|
||||
builder.show();
|
||||
tabLayout.removeAllTabs();
|
||||
return;
|
||||
}
|
||||
PartyFragment.this.group = group;
|
||||
|
||||
if (partyMemberListFragment != null) {
|
||||
partyMemberListFragment.setMemberList(group.members);
|
||||
}
|
||||
updateGroupUI();
|
||||
|
||||
if (groupInformationFragment != null) {
|
||||
groupInformationFragment.setGroup(group);
|
||||
}
|
||||
|
||||
if(chatListFragment != null){
|
||||
chatListFragment.seenGroupId = group.id;
|
||||
}
|
||||
|
||||
PartyFragment.this.activity.supportInvalidateOptionsMenu();
|
||||
|
||||
if (group.quest != null && group.quest.key != null && !group.quest.key.isEmpty()) {
|
||||
contentCache.GetQuestContent(group.quest.key, content -> {
|
||||
if (groupInformationFragment != null) {
|
||||
groupInformationFragment.setQuestContent(content);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
}
|
||||
});
|
||||
apiHelper.apiService.getGroupMembers(group.id, true)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(members -> {
|
||||
PartyFragment.this.group.members = members;
|
||||
updateGroupUI();
|
||||
},
|
||||
throwable -> {});
|
||||
}, throwable -> {});
|
||||
|
||||
setViewPagerAdapter();
|
||||
this.tutorialStepIdentifier = "party";
|
||||
|
|
@ -108,6 +88,30 @@ public class PartyFragment extends BaseMainFragment {
|
|||
return v;
|
||||
}
|
||||
|
||||
private void updateGroupUI() {
|
||||
if (partyMemberListFragment != null) {
|
||||
partyMemberListFragment.setMemberList(group.members);
|
||||
}
|
||||
|
||||
if (groupInformationFragment != null) {
|
||||
groupInformationFragment.setGroup(group);
|
||||
}
|
||||
|
||||
if(chatListFragment != null){
|
||||
chatListFragment.seenGroupId = group.id;
|
||||
}
|
||||
|
||||
PartyFragment.this.activity.supportInvalidateOptionsMenu();
|
||||
|
||||
if (group.quest != null && group.quest.key != null && !group.quest.key.isEmpty()) {
|
||||
contentCache.GetQuestContent(group.quest.key, content -> {
|
||||
if (groupInformationFragment != null) {
|
||||
groupInformationFragment.setQuestContent(content);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
||||
if (this.group != null) {
|
||||
|
|
@ -135,17 +139,10 @@ public class PartyFragment extends BaseMainFragment {
|
|||
this.displayEditForm();
|
||||
return true;
|
||||
case R.id.menu_guild_leave:
|
||||
this.mAPIHelper.apiService.leaveGroup(this.group.id, new Callback<Void>() {
|
||||
@Override
|
||||
public void success(Void aVoid, Response response) {
|
||||
this.apiHelper.apiService.leaveGroup(this.group.id).compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(group -> {
|
||||
getActivity().getSupportFragmentManager().beginTransaction().remove(PartyFragment.this).commit();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
}
|
||||
});
|
||||
}, throwable -> {});
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -190,16 +187,9 @@ public class PartyFragment extends BaseMainFragment {
|
|||
needsSaving = true;
|
||||
}
|
||||
if (needsSaving) {
|
||||
this.mAPIHelper.apiService.updateGroup(this.group.id, this.group, new Callback<Void>() {
|
||||
@Override
|
||||
public void success(Void aVoid, Response response) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
}
|
||||
});
|
||||
this.apiHelper.apiService.updateGroup(this.group.id, this.group)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(aVoid -> {}, throwable -> {});
|
||||
this.groupInformationFragment.setGroup(group);
|
||||
}
|
||||
}
|
||||
|
|
@ -224,16 +214,9 @@ public class PartyFragment extends BaseMainFragment {
|
|||
Collections.addAll(invites, userIDs);
|
||||
inviteData.put("uuids", invites);
|
||||
}
|
||||
this.mAPIHelper.apiService.inviteToGroup(this.group.id, inviteData, new Callback<Void>() {
|
||||
@Override
|
||||
public void success(Void group, Response response) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
}
|
||||
});
|
||||
this.apiHelper.apiService.inviteToGroup(this.group.id, inviteData)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(aVoid -> {}, throwable -> {});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -259,12 +242,12 @@ public class PartyFragment extends BaseMainFragment {
|
|||
|
||||
switch (position) {
|
||||
case 0: {
|
||||
fragment = groupInformationFragment = GroupInformationFragment.newInstance(group, user, mAPIHelper);
|
||||
fragment = groupInformationFragment = GroupInformationFragment.newInstance(group, user, apiHelper);
|
||||
break;
|
||||
}
|
||||
case 1: {
|
||||
chatListFragment = new ChatListFragment();
|
||||
chatListFragment.configure(activity, "party", mAPIHelper, user, activity, false);
|
||||
chatListFragment.configure(activity, "party", apiHelper, user, activity, false);
|
||||
fragment = chatListFragment;
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,8 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.social.party;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseFragment;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.text.InputType;
|
||||
|
|
@ -10,9 +13,6 @@ import android.widget.EditText;
|
|||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseFragment;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,9 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.social.party;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.adapter.social.PartyMemberRecyclerViewAdapter;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
|
|
@ -10,11 +14,7 @@ import android.view.LayoutInflater;
|
|||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.adapter.social.PartyMemberRecyclerViewAdapter;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import butterknife.BindView;
|
||||
|
||||
|
|
@ -24,11 +24,11 @@ import butterknife.BindView;
|
|||
public class PartyMemberListFragment extends Fragment {
|
||||
|
||||
private Context ctx;
|
||||
private ArrayList<HabitRPGUser> members;
|
||||
private List<HabitRPGUser> members;
|
||||
|
||||
private PartyMemberRecyclerViewAdapter viewAdapter;
|
||||
|
||||
public void configure(Context ctx, ArrayList<HabitRPGUser> members) {
|
||||
public void configure(Context ctx, List<HabitRPGUser> members) {
|
||||
this.ctx = ctx;
|
||||
this.members = members;
|
||||
|
||||
|
|
@ -62,7 +62,7 @@ public class PartyMemberListFragment extends Fragment {
|
|||
}
|
||||
}
|
||||
|
||||
public void setMemberList(ArrayList<HabitRPGUser> members) {
|
||||
public void setMemberList(List<HabitRPGUser> members) {
|
||||
this.members = members;
|
||||
viewAdapter.setMemberList(members);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,13 +1,5 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.tasks;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.events.commands.AddNewTaskCommand;
|
||||
import com.habitrpg.android.habitica.ui.DividerItemDecoration;
|
||||
|
|
@ -17,6 +9,14 @@ import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
|
|||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
/**
|
||||
* TaskRecyclerViewFragment
|
||||
* - Creates the View only once
|
||||
|
|
@ -90,6 +90,7 @@ public class TaskRecyclerViewFragment extends BaseFragment implements View.OnCli
|
|||
|
||||
@Override
|
||||
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
mRecyclerView.setAdapter(mAdapter);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,46 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.tasks;
|
||||
|
||||
import com.github.clans.fab.FloatingActionButton;
|
||||
import com.github.clans.fab.FloatingActionMenu;
|
||||
import com.habitrpg.android.habitica.ContentCache;
|
||||
import com.habitrpg.android.habitica.HabiticaApplication;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback;
|
||||
import com.habitrpg.android.habitica.callbacks.TaskCreationCallback;
|
||||
import com.habitrpg.android.habitica.callbacks.TaskScoringCallback;
|
||||
import com.habitrpg.android.habitica.callbacks.TaskUpdateCallback;
|
||||
import com.habitrpg.android.habitica.events.HabitScoreEvent;
|
||||
import com.habitrpg.android.habitica.events.TaskSaveEvent;
|
||||
import com.habitrpg.android.habitica.events.TaskTappedEvent;
|
||||
import com.habitrpg.android.habitica.events.ToggledInnStateEvent;
|
||||
import com.habitrpg.android.habitica.events.commands.AddNewTaskCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.CreateTagCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.FilterTasksByTagsCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.TaskCheckedCommand;
|
||||
import com.habitrpg.android.habitica.helpers.TagsHelper;
|
||||
import com.habitrpg.android.habitica.ui.EditTextDrawer;
|
||||
import com.habitrpg.android.habitica.ui.UiUtils;
|
||||
import com.habitrpg.android.habitica.ui.activities.MainActivity;
|
||||
import com.habitrpg.android.habitica.ui.activities.TaskFormActivity;
|
||||
import com.habitrpg.android.habitica.ui.adapter.tasks.HabitItemRecyclerViewAdapter;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
import com.habitrpg.android.habitica.ui.helpers.Debounce;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Tag;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.TaskDirection;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.ItemData;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.TaskTag;
|
||||
import com.mikepenz.materialdrawer.interfaces.OnCheckedChangeListener;
|
||||
import com.mikepenz.materialdrawer.model.SectionDrawerItem;
|
||||
import com.mikepenz.materialdrawer.model.SwitchDrawerItem;
|
||||
import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem;
|
||||
import com.raizlabs.android.dbflow.sql.builder.Condition;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.AsyncTask;
|
||||
|
|
@ -22,57 +63,11 @@ import android.widget.CompoundButton;
|
|||
import android.widget.FrameLayout;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import com.github.clans.fab.FloatingActionButton;
|
||||
import com.github.clans.fab.FloatingActionMenu;
|
||||
import com.habitrpg.android.habitica.ContentCache;
|
||||
import com.habitrpg.android.habitica.HabiticaApplication;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback;
|
||||
import com.habitrpg.android.habitica.callbacks.TaskCreationCallback;
|
||||
import com.habitrpg.android.habitica.callbacks.TaskScoringCallback;
|
||||
import com.habitrpg.android.habitica.callbacks.TaskUpdateCallback;
|
||||
import com.habitrpg.android.habitica.events.HabitScoreEvent;
|
||||
import com.habitrpg.android.habitica.events.TaskSaveEvent;
|
||||
import com.habitrpg.android.habitica.events.TaskTappedEvent;
|
||||
import com.habitrpg.android.habitica.events.ToggledInnStateEvent;
|
||||
import com.habitrpg.android.habitica.events.commands.AddNewTaskCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.CreateTagCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.FilterTasksByTagsCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.TaskCheckedCommand;
|
||||
import com.habitrpg.android.habitica.helpers.TagsHelper;
|
||||
import com.habitrpg.android.habitica.ui.EditTextDrawer;
|
||||
import com.habitrpg.android.habitica.ui.UiUtils;
|
||||
import com.habitrpg.android.habitica.ui.activities.ClassSelectionActivity;
|
||||
import com.habitrpg.android.habitica.ui.activities.MainActivity;
|
||||
import com.habitrpg.android.habitica.ui.activities.TaskFormActivity;
|
||||
import com.habitrpg.android.habitica.ui.adapter.tasks.HabitItemRecyclerViewAdapter;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
import com.habitrpg.android.habitica.ui.helpers.Debounce;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Tag;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.TaskDirection;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.ItemData;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.TaskTag;
|
||||
import com.mikepenz.materialdrawer.interfaces.OnCheckedChangeListener;
|
||||
import com.mikepenz.materialdrawer.model.SectionDrawerItem;
|
||||
import com.mikepenz.materialdrawer.model.SwitchDrawerItem;
|
||||
import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem;
|
||||
import com.raizlabs.android.dbflow.sql.builder.Condition;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
|
||||
public class TasksFragment extends BaseMainFragment implements OnCheckedChangeListener {
|
||||
|
||||
private static final int TASK_CREATED_RESULT = 1;
|
||||
|
|
@ -111,7 +106,7 @@ public class TasksFragment extends BaseMainFragment implements OnCheckedChangeLi
|
|||
|
||||
public void setActivity(MainActivity activity) {
|
||||
super.setActivity(activity);
|
||||
contentCache = new ContentCache(mAPIHelper.apiService);
|
||||
contentCache = new ContentCache(apiHelper.apiService);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -167,9 +162,6 @@ public class TasksFragment extends BaseMainFragment implements OnCheckedChangeLi
|
|||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
// Handle action bar item clicks here. The action bar will
|
||||
// automatically handle clicks on the Home/Up button, so long
|
||||
// as you specify a parent activity in AndroidManifest.xml.
|
||||
int id = item.getItemId();
|
||||
|
||||
switch (id) {
|
||||
|
|
@ -196,8 +188,12 @@ public class TasksFragment extends BaseMainFragment implements OnCheckedChangeLi
|
|||
|
||||
refreshItem.setActionView(iv);
|
||||
|
||||
if (mAPIHelper != null) {
|
||||
mAPIHelper.retrieveUser(new HabitRPGUserCallback(activity));
|
||||
if (apiHelper != null) {
|
||||
apiHelper.retrieveUser(true)
|
||||
.subscribe(
|
||||
new HabitRPGUserCallback(activity),
|
||||
throwable -> stopAnimatingRefreshItem()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -235,59 +231,52 @@ public class TasksFragment extends BaseMainFragment implements OnCheckedChangeLi
|
|||
callBack -> {
|
||||
|
||||
// request buyable gear
|
||||
if (mAPIHelper != null) {
|
||||
mAPIHelper.apiService.getInventoryBuyableGear(new Callback<List<ItemData>>() {
|
||||
@Override
|
||||
public void success(List<ItemData> itemDatas, Response response) {
|
||||
if (apiHelper != null) {
|
||||
apiHelper.apiService.getInventoryBuyableGear()
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(itemDatas -> {
|
||||
// get itemdata list
|
||||
ArrayList<String> itemKeys = new ArrayList<>();
|
||||
for (ItemData item : itemDatas) {
|
||||
itemKeys.add(item.key);
|
||||
}
|
||||
itemKeys.add("potion");
|
||||
if (user.getFlags().getArmoireEnabled())
|
||||
itemKeys.add("armoire");
|
||||
|
||||
// get itemdata list
|
||||
ArrayList<String> itemKeys = new ArrayList<>();
|
||||
for (ItemData item : itemDatas) {
|
||||
itemKeys.add(item.key);
|
||||
contentCache.GetItemDataList(itemKeys, obj -> {
|
||||
ArrayList<Task> buyableItems = new ArrayList<>();
|
||||
if (!isAdded()) {
|
||||
return;
|
||||
}
|
||||
itemKeys.add("potion");
|
||||
if (user.getFlags().getArmoireEnabled())
|
||||
itemKeys.add("armoire");
|
||||
for (ItemData item : obj) {
|
||||
Task reward = new Task();
|
||||
reward.text = item.text;
|
||||
reward.notes = item.notes;
|
||||
reward.value = item.value;
|
||||
reward.setType("reward");
|
||||
reward.specialTag = "item";
|
||||
reward.setId(item.key);
|
||||
|
||||
contentCache.GetItemDataList(itemKeys, obj -> {
|
||||
ArrayList<Task> buyableItems = new ArrayList<>();
|
||||
if (!isAdded()) {
|
||||
return;
|
||||
}
|
||||
for (ItemData item : obj) {
|
||||
Task reward = new Task();
|
||||
reward.text = item.text;
|
||||
reward.notes = item.notes;
|
||||
reward.value = item.value;
|
||||
reward.setType("reward");
|
||||
reward.specialTag = "item";
|
||||
reward.setId(item.key);
|
||||
|
||||
if (item.key.equals("armoire")) {
|
||||
if (user.getFlags().getArmoireEmpty()) {
|
||||
reward.notes = getResources().getString(R.string.armoireNotesEmpty);
|
||||
} else {
|
||||
long gearCount = new Select().count()
|
||||
.from(ItemData.class)
|
||||
.where(Condition.CombinedCondition.begin(Condition.column("klass").eq("armoire"))
|
||||
.and(Condition.column("owned").isNull())
|
||||
).count();
|
||||
reward.notes = getResources().getString(R.string.armoireNotesFull, gearCount);
|
||||
}
|
||||
if (item.key.equals("armoire")) {
|
||||
if (user.getFlags().getArmoireEmpty()) {
|
||||
reward.notes = getResources().getString(R.string.armoireNotesEmpty);
|
||||
} else {
|
||||
long gearCount = new Select().count()
|
||||
.from(ItemData.class)
|
||||
.where(Condition.CombinedCondition.begin(Condition.column("klass").eq("armoire"))
|
||||
.and(Condition.column("owned").isNull())
|
||||
).count();
|
||||
reward.notes = getResources().getString(R.string.armoireNotesFull, gearCount);
|
||||
}
|
||||
|
||||
buyableItems.add(reward);
|
||||
}
|
||||
|
||||
callBack.GotAdditionalItems(buyableItems);
|
||||
});
|
||||
}
|
||||
buyableItems.add(reward);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
}
|
||||
});
|
||||
callBack.GotAdditionalItems(buyableItems);
|
||||
});
|
||||
}, throwable -> {});
|
||||
}
|
||||
});
|
||||
|
||||
|
|
@ -335,13 +324,7 @@ public class TasksFragment extends BaseMainFragment implements OnCheckedChangeLi
|
|||
|
||||
public void updateUserData(HabitRPGUser user) {
|
||||
super.updateUserData(user);
|
||||
if (refreshItem != null) {
|
||||
View actionView = refreshItem.getActionView();
|
||||
if (actionView != null) {
|
||||
actionView.clearAnimation();
|
||||
}
|
||||
refreshItem.setActionView(null);
|
||||
}
|
||||
stopAnimatingRefreshItem();
|
||||
if (this.user != null) {
|
||||
fillTagFilterDrawer(user.getTags());
|
||||
|
||||
|
|
@ -385,24 +368,20 @@ public class TasksFragment extends BaseMainFragment implements OnCheckedChangeLi
|
|||
UiUtils.dismissKeyboard(activity);
|
||||
final Tag t = new Tag();
|
||||
t.setName(event.tagName);
|
||||
if (mAPIHelper != null) {
|
||||
mAPIHelper.apiService.createTag(t, new Callback<List<Tag>>() {
|
||||
@Override
|
||||
public void success(List<Tag> tags, Response response) {
|
||||
// Since we get a list of all tags, we just save them all
|
||||
for (Tag onlineTag : tags) {
|
||||
onlineTag.user_id = user.getId();
|
||||
onlineTag.async().save();
|
||||
}
|
||||
if (apiHelper != null) {
|
||||
apiHelper.apiService.createTag(t)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(tags -> {
|
||||
// Since we get a list of all tags, we just save them all
|
||||
for (Tag onlineTag : tags) {
|
||||
onlineTag.user_id = user.getId();
|
||||
onlineTag.async().save();
|
||||
}
|
||||
|
||||
fillTagFilterDrawer(tags);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
UiUtils.showSnackbar(activity, activity.getFloatingMenuWrapper(), "Error: " + error.getMessage(), UiUtils.SnackbarDisplayType.FAILURE);
|
||||
}
|
||||
});
|
||||
fillTagFilterDrawer(tags);
|
||||
}, throwable -> {
|
||||
UiUtils.showSnackbar(activity, activity.getFloatingMenuWrapper(), "Error: " + throwable.getMessage(), UiUtils.SnackbarDisplayType.FAILURE);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -434,12 +413,16 @@ public class TasksFragment extends BaseMainFragment implements OnCheckedChangeLi
|
|||
|
||||
@Subscribe
|
||||
public void onEvent(TaskCheckedCommand event) {
|
||||
mAPIHelper.updateTaskDirection(event.Task.getId(), event.Task.getCompleted() ? TaskDirection.down : TaskDirection.up, new TaskScoringCallback(activity, event.Task.getId()));
|
||||
apiHelper.apiService.postTaskDirection(event.Task.getId(), (event.Task.getCompleted() ? TaskDirection.down : TaskDirection.up).toString())
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(new TaskScoringCallback(activity, event.Task.getId()), throwable -> {});
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onEvent(HabitScoreEvent event) {
|
||||
mAPIHelper.updateTaskDirection(event.Habit.getId(), event.Up ? TaskDirection.up : TaskDirection.down, new TaskScoringCallback(activity, event.Habit.getId()));
|
||||
apiHelper.apiService.postTaskDirection(event.Habit.getId(), (event.Up ? TaskDirection.up : TaskDirection.down).toString())
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(new TaskScoringCallback(activity, event.Habit.getId()), throwable -> {});
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
|
|
@ -451,11 +434,15 @@ public class TasksFragment extends BaseMainFragment implements OnCheckedChangeLi
|
|||
public void onEvent(final TaskSaveEvent event) {
|
||||
Task task = event.task;
|
||||
if (event.created) {
|
||||
this.mAPIHelper.createNewTask(task, new TaskCreationCallback());
|
||||
this.apiHelper.apiService.createItem(task)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(new TaskCreationCallback(), throwable -> {});
|
||||
updateTags(event.task.getTags());
|
||||
floatingMenu.close(true);
|
||||
} else {
|
||||
this.mAPIHelper.updateTask(task, new TaskUpdateCallback());
|
||||
this.apiHelper.apiService.updateTask(task.getId(), task)
|
||||
.compose(apiHelper.configureApiCallObserver())
|
||||
.subscribe(new TaskUpdateCallback(), throwable -> {});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -567,4 +554,14 @@ public class TasksFragment extends BaseMainFragment implements OnCheckedChangeLi
|
|||
}
|
||||
return this.tagIds;
|
||||
}
|
||||
|
||||
public void stopAnimatingRefreshItem() {
|
||||
if (refreshItem != null) {
|
||||
View actionView = refreshItem.getActionView();
|
||||
if (actionView != null) {
|
||||
actionView.clearAnimation();
|
||||
}
|
||||
refreshItem.setActionView(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,10 @@
|
|||
package com.habitrpg.android.habitica.ui.helpers;
|
||||
|
||||
import com.github.data5tream.emojilib.EmojiTextView;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.databinding.ValueBarBinding;
|
||||
import com.squareup.picasso.Picasso;
|
||||
|
||||
import android.databinding.BindingAdapter;
|
||||
import android.databinding.DataBindingUtil;
|
||||
import android.graphics.PorterDuff;
|
||||
|
|
@ -17,11 +22,6 @@ import android.widget.ImageView;
|
|||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.github.data5tream.emojilib.EmojiTextView;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.databinding.ValueBarBinding;
|
||||
import com.squareup.picasso.Picasso;
|
||||
|
||||
public class DataBindingUtils {
|
||||
|
||||
@BindingAdapter("bind:imageName")
|
||||
|
|
|
|||
|
|
@ -1,18 +1,15 @@
|
|||
package com.habitrpg.android.habitica.ui.helpers;
|
||||
|
||||
import com.github.data5tream.emojilib.EmojiEditText;
|
||||
import com.github.data5tream.emojilib.EmojiPopup;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.PopupWindow;
|
||||
|
||||
import com.github.data5tream.emojilib.EmojiEditText;
|
||||
import com.github.data5tream.emojilib.EmojiGridView;
|
||||
import com.github.data5tream.emojilib.EmojiPopup;
|
||||
import com.github.data5tream.emojilib.emoji.Emojicon;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
|
||||
/**
|
||||
* @author data5tream
|
||||
|
|
|
|||
|
|
@ -2,6 +2,9 @@ package com.habitrpg.android.habitica.ui.helpers;
|
|||
|
||||
// https://gist.github.com/lodlock/e3cd12130bad70a098db
|
||||
|
||||
import com.github.clans.fab.FloatingActionMenu;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.design.widget.CoordinatorLayout;
|
||||
import android.support.design.widget.Snackbar;
|
||||
|
|
@ -12,10 +15,6 @@ import android.view.View;
|
|||
import android.view.ViewGroup;
|
||||
import android.view.animation.Animation;
|
||||
import android.view.animation.AnimationUtils;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
import com.github.clans.fab.FloatingActionMenu;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue