From f8d128e73b5c08233ee9122743ec58d0d7250bc6 Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Fri, 15 Apr 2016 11:29:23 +0200 Subject: [PATCH] fix issue with chat messages being posted multiple times --- .../tasks/HabitItemRecyclerViewAdapter.java | 11 +++++++ .../habitica/ui/fragments/BaseFragment.java | 32 +++++++++++++++++++ .../ui/fragments/BaseMainFragment.java | 19 +---------- .../ui/fragments/social/ChatListFragment.java | 12 ------- 4 files changed, 44 insertions(+), 30 deletions(-) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/HabitItemRecyclerViewAdapter.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/HabitItemRecyclerViewAdapter.java index 7733d1094..aa2022678 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/HabitItemRecyclerViewAdapter.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/HabitItemRecyclerViewAdapter.java @@ -100,10 +100,21 @@ public class HabitItemRecyclerViewAdapter this.layoutResource = layoutResource; this.viewHolderClass = viewHolderClass; this.dailyResetOffset = dailyResetOffset; + } + @Override + public void onAttachedToRecyclerView(RecyclerView recyclerView) { + super.onAttachedToRecyclerView(recyclerView); EventBus.getDefault().register(this); } + @Override + public void onDetachedFromRecyclerView(RecyclerView recyclerView) { + super.onDetachedFromRecyclerView(recyclerView); + EventBus.getDefault().unregister(this); + + } + @Subscribe public void onEvent(FilterTasksByTagsCommand cmd) { filter(); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseFragment.java index 553bb91ef..521712ca3 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseFragment.java @@ -1,7 +1,12 @@ package com.habitrpg.android.habitica.ui.fragments; +import android.os.Bundle; +import android.support.annotation.Nullable; import android.support.v4.app.DialogFragment; import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; import com.amplitude.api.Amplitude; import com.habitrpg.android.habitica.events.DisplayTutorialEvent; @@ -12,6 +17,7 @@ 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.json.JSONException; import org.json.JSONObject; @@ -19,6 +25,8 @@ import java.util.Date; public class BaseFragment extends DialogFragment { + private boolean registerEventBus = false; + public String tutorialStepIdentifier; public String tutorialText; @@ -46,6 +54,30 @@ public class BaseFragment extends DialogFragment { } } + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + + // Receive Events + try { + EventBus.getDefault().register(this); + registerEventBus = true; + } catch (EventBusException ignored) { + + } + + return null; + } + + @Override + public void onDestroyView() { + if (registerEventBus) { + EventBus.getDefault().unregister(this); + } + + super.onDestroyView(); + } + public String getDisplayedClassName() { return this.getClass().getSimpleName(); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseMainFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseMainFragment.java index c7edcd2db..4c2afc2f2 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseMainFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseMainFragment.java @@ -22,8 +22,6 @@ import org.greenrobot.eventbus.EventBusException; public abstract class BaseMainFragment extends BaseFragment { - private boolean registerEventBus = false; - public MainActivity activity; public TabLayout tabLayout; public FrameLayout floatingMenuWrapper; @@ -67,6 +65,7 @@ public abstract class BaseMainFragment extends BaseFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + super.onCreateView(inflater, container, savedInstanceState); if (savedInstanceState != null && savedInstanceState.containsKey("userId")) { String userId = savedInstanceState.getString("userId"); this.user = new Select().from(HabitRPGUser.class).where(Condition.column("id").eq(userId)).querySingle(); @@ -89,14 +88,6 @@ public abstract class BaseMainFragment extends BaseFragment { floatingMenuWrapper.removeAllViews(); } - // Receive Events - try { - EventBus.getDefault().register(this); - registerEventBus = true; - } catch (EventBusException ignored) { - - } - setHasOptionsMenu(true); activity.setActiveFragment(this); @@ -104,14 +95,6 @@ public abstract class BaseMainFragment extends BaseFragment { return null; } - @Override - public void onDestroyView() { - if (registerEventBus) { - EventBus.getDefault().unregister(this); - } - - super.onDestroyView(); - } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/ChatListFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/ChatListFragment.java index f6b0a80f6..c6679d6b6 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/ChatListFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/ChatListFragment.java @@ -1,11 +1,9 @@ package com.habitrpg.android.habitica.ui.fragments.social; import android.content.Context; -import android.content.DialogInterface; import android.os.AsyncTask; import android.os.Bundle; import android.support.annotation.Nullable; -import android.support.v4.app.Fragment; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.app.AlertDialog; import android.support.v7.widget.LinearLayoutManager; @@ -48,9 +46,6 @@ import retrofit.Callback; import retrofit.RetrofitError; import retrofit.client.Response; -/** - * Created by Negue on 14.09.2015. - */ public class ChatListFragment extends BaseFragment implements SwipeRefreshLayout.OnRefreshListener, Callback> { private Context ctx; @@ -98,13 +93,6 @@ public class ChatListFragment extends BaseFragment implements SwipeRefreshLayout } - // Receive Events - try { - EventBus.getDefault().register(this); - } catch (EventBusException ignored) { - - } - if (view == null) view = inflater.inflate(R.layout.fragment_chatlist, container, false);