mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-30 22:07:57 +01:00 
			
		
		
		
	Use EventBus
This commit is contained in:
		| @@ -16,6 +16,7 @@ public class MangaChaptersPresenter extends BasePresenter<MangaChaptersFragment> | ||||
|     @Inject DatabaseHelper db; | ||||
|     @Inject SourceManager sourceManager; | ||||
|  | ||||
|     private Manga manga; | ||||
|     private Subscription chaptersSubscription; | ||||
|     private Subscription onlineChaptersSubscription; | ||||
|     private boolean doingRequest = false; | ||||
| @@ -23,26 +24,34 @@ public class MangaChaptersPresenter extends BasePresenter<MangaChaptersFragment> | ||||
|     @Override | ||||
|     protected void onTakeView(MangaChaptersFragment view) { | ||||
|         super.onTakeView(view); | ||||
|  | ||||
|         getChapters(view.getMangaId()); | ||||
|         registerForStickyEvents(); | ||||
|     } | ||||
|  | ||||
|     public void refreshChapters(Manga manga) { | ||||
|     @Override | ||||
|     protected void onDropView() { | ||||
|         unregisterForEvents(); | ||||
|         super.onDropView(); | ||||
|     } | ||||
|  | ||||
|     public void onEventMainThread(Manga manga) { | ||||
|         this.manga = manga; | ||||
|         getChapters(); | ||||
|     } | ||||
|  | ||||
|     public void refreshChapters() { | ||||
|         if (manga != null && !doingRequest) | ||||
|             getChaptersFromSource(manga); | ||||
|     } | ||||
|  | ||||
|     private void getChapters(long manga_id) { | ||||
|     public void getChapters() { | ||||
|         if (chaptersSubscription != null) | ||||
|             remove(chaptersSubscription); | ||||
|             return; | ||||
|  | ||||
|         chaptersSubscription = db.getChapters(manga_id) | ||||
|         add(chaptersSubscription = db.getChapters(manga.id) | ||||
|                 .subscribeOn(Schedulers.io()) | ||||
|                 .observeOn(AndroidSchedulers.mainThread()) | ||||
|                 .compose(deliverLatestCache()) | ||||
|                 .subscribe(this.split(MangaChaptersFragment::onNextChapters)); | ||||
|  | ||||
|         add(chaptersSubscription); | ||||
|                 .subscribe(this.split(MangaChaptersFragment::onNextChapters))); | ||||
|     } | ||||
|  | ||||
|     public void getChaptersFromSource(Manga manga) { | ||||
|   | ||||
| @@ -2,7 +2,9 @@ package eu.kanade.mangafeed.presenter; | ||||
|  | ||||
| import javax.inject.Inject; | ||||
|  | ||||
| import de.greenrobot.event.EventBus; | ||||
| import eu.kanade.mangafeed.data.helpers.DatabaseHelper; | ||||
| import eu.kanade.mangafeed.data.models.Manga; | ||||
| import eu.kanade.mangafeed.ui.activity.MangaDetailActivity; | ||||
| import rx.Observable; | ||||
| import rx.Subscription; | ||||
| @@ -13,25 +15,32 @@ public class MangaDetailPresenter extends BasePresenter<MangaDetailActivity> { | ||||
|  | ||||
|     @Inject DatabaseHelper db; | ||||
|  | ||||
|     private Manga manga; | ||||
|     private Subscription mangaSubscription; | ||||
|  | ||||
|     @Override | ||||
|     protected void onTakeView(MangaDetailActivity view) { | ||||
|         super.onTakeView(view); | ||||
|         if (manga != null) | ||||
|             view.setManga(manga); | ||||
|  | ||||
|         if (mangaSubscription == null) | ||||
|             initializeManga(view); | ||||
|         getManga(view); | ||||
|     } | ||||
|  | ||||
|     private void initializeManga(MangaDetailActivity view) { | ||||
|         mangaSubscription = db.getManga(view.getMangaId()) | ||||
|     private void getManga(MangaDetailActivity view) { | ||||
|         if (mangaSubscription != null) | ||||
|             return; | ||||
|  | ||||
|         add(mangaSubscription = db.getManga(view.getMangaId()) | ||||
|                 .subscribeOn(Schedulers.io()) | ||||
|                 .take(1) | ||||
|                 .flatMap(Observable::from) | ||||
|                 .observeOn(AndroidSchedulers.mainThread()) | ||||
|                 .subscribe(view::onMangaNext); | ||||
|  | ||||
|         add(mangaSubscription); | ||||
|                 .subscribe(manga -> { | ||||
|                     this.manga = manga; | ||||
|                     view.setManga(manga); | ||||
|                     EventBus.getDefault().postSticky(manga); | ||||
|                 })); | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -3,34 +3,47 @@ package eu.kanade.mangafeed.presenter; | ||||
| import javax.inject.Inject; | ||||
|  | ||||
| import eu.kanade.mangafeed.data.helpers.DatabaseHelper; | ||||
| import eu.kanade.mangafeed.data.models.Manga; | ||||
| import eu.kanade.mangafeed.ui.fragment.MangaInfoFragment; | ||||
| import rx.Observable; | ||||
| import rx.Subscription; | ||||
| import rx.android.schedulers.AndroidSchedulers; | ||||
| import rx.schedulers.Schedulers; | ||||
|  | ||||
| public class MangaInfoPresenter extends BasePresenter<MangaInfoFragment> { | ||||
|  | ||||
|     @Inject DatabaseHelper db; | ||||
|  | ||||
|     private Manga manga; | ||||
|     private Subscription mangaInfoSubscription; | ||||
|  | ||||
|     @Override | ||||
|     protected void onTakeView(MangaInfoFragment view) { | ||||
|         super.onTakeView(view); | ||||
|  | ||||
|         getMangaInfo(view); | ||||
|         registerForStickyEvents(); | ||||
|     } | ||||
|  | ||||
|     private void getMangaInfo(MangaInfoFragment view) { | ||||
|         if (mangaInfoSubscription != null) | ||||
|             remove(mangaInfoSubscription); | ||||
|     @Override | ||||
|     protected void onDropView() { | ||||
|         unregisterForEvents(); | ||||
|         super.onDropView(); | ||||
|     } | ||||
|  | ||||
|         mangaInfoSubscription = db.getManga(view.getMangaId()) | ||||
|                 .observeOn(AndroidSchedulers.mainThread()) | ||||
|     public void onEventMainThread(Manga manga) { | ||||
|         this.manga = manga; | ||||
|         getMangaInfo(); | ||||
|     } | ||||
|  | ||||
|     private void getMangaInfo() { | ||||
|         if (mangaInfoSubscription != null) | ||||
|             return; | ||||
|  | ||||
|         add(mangaInfoSubscription = db.getManga(manga.id) | ||||
|                 .subscribeOn(Schedulers.io()) | ||||
|                 .take(1) | ||||
|                 .flatMap(Observable::from) | ||||
|                 .subscribe(view::setMangaInfo); | ||||
|  | ||||
|         add(mangaInfoSubscription); | ||||
|                 .observeOn(AndroidSchedulers.mainThread()) | ||||
|                 .compose(deliverLatestCache()) | ||||
|                 .subscribe(split(MangaInfoFragment::setMangaInfo))); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -23,27 +23,20 @@ import nucleus.factory.RequiresPresenter; | ||||
| @RequiresPresenter(MangaDetailPresenter.class) | ||||
| public class MangaDetailActivity extends BaseActivity<MangaDetailPresenter> { | ||||
|  | ||||
|     @Bind(R.id.toolbar) | ||||
|     Toolbar toolbar; | ||||
|  | ||||
|     @Bind(R.id.tabs) | ||||
|     TabLayout tabs; | ||||
|  | ||||
|     @Bind(R.id.viewpager) | ||||
|     ViewPager view_pager; | ||||
|     @Bind(R.id.toolbar) Toolbar toolbar; | ||||
|     @Bind(R.id.tabs) TabLayout tabs; | ||||
|     @Bind(R.id.viewpager) ViewPager view_pager; | ||||
|  | ||||
|     private MangaDetailAdapter adapter; | ||||
|     private long manga_id; | ||||
|     private boolean is_online = false; | ||||
|     private boolean is_online; | ||||
|  | ||||
|     public final static String MANGA_ID = "manga_id"; | ||||
|     public final static String MANGA_TITLE = "manga_title"; | ||||
|     public final static String MANGA_ONLINE = "manga_online"; | ||||
|  | ||||
|     public static Intent newIntent(Context context, Manga manga) { | ||||
|         Intent intent = new Intent(context, MangaDetailActivity.class); | ||||
|         intent.putExtra(MANGA_ID, manga.id); | ||||
|         intent.putExtra(MANGA_TITLE, manga.title); | ||||
|         return intent; | ||||
|     } | ||||
|  | ||||
| @@ -58,9 +51,6 @@ public class MangaDetailActivity extends BaseActivity<MangaDetailPresenter> { | ||||
|  | ||||
|         Intent intent = getIntent(); | ||||
|  | ||||
|         String manga_title = intent.getStringExtra(MANGA_TITLE); | ||||
|         setToolbarTitle(manga_title); | ||||
|  | ||||
|         manga_id = intent.getLongExtra(MANGA_ID, -1); | ||||
|         is_online = intent.getBooleanExtra(MANGA_ONLINE, false); | ||||
|  | ||||
| @@ -90,9 +80,8 @@ public class MangaDetailActivity extends BaseActivity<MangaDetailPresenter> { | ||||
|         return manga_id; | ||||
|     } | ||||
|  | ||||
|     public void onMangaNext(Manga manga) { | ||||
|         ((MangaChaptersFragment) adapter.getItem(MangaDetailAdapter.CHAPTERS_FRAGMENT)) | ||||
|                 .onMangaNext(manga); | ||||
|     public void setManga(Manga manga) { | ||||
|         setToolbarTitle(manga.title); | ||||
|     } | ||||
|  | ||||
|     class MangaDetailAdapter extends FragmentPagerAdapter { | ||||
| @@ -124,9 +113,9 @@ public class MangaDetailActivity extends BaseActivity<MangaDetailPresenter> { | ||||
|         public Fragment getItem(int position) { | ||||
|             switch (position) { | ||||
|                 case INFO_FRAGMENT: | ||||
|                     return MangaInfoFragment.newInstance(manga_id); | ||||
|                     return MangaInfoFragment.newInstance(); | ||||
|                 case CHAPTERS_FRAGMENT: | ||||
|                     return MangaChaptersFragment.newInstance(manga_id); | ||||
|                     return MangaChaptersFragment.newInstance(); | ||||
|  | ||||
|                 default: | ||||
|                     return null; | ||||
|   | ||||
| @@ -17,12 +17,9 @@ import butterknife.Bind; | ||||
| import butterknife.ButterKnife; | ||||
| import eu.kanade.mangafeed.R; | ||||
| import eu.kanade.mangafeed.data.models.Chapter; | ||||
| import eu.kanade.mangafeed.data.models.Manga; | ||||
| import eu.kanade.mangafeed.presenter.MangaChaptersPresenter; | ||||
| import eu.kanade.mangafeed.ui.activity.MangaDetailActivity; | ||||
| import eu.kanade.mangafeed.ui.adapter.ChapterListHolder; | ||||
| import nucleus.factory.RequiresPresenter; | ||||
| import timber.log.Timber; | ||||
| import uk.co.ribot.easyadapter.EasyRecyclerAdapter; | ||||
|  | ||||
| @RequiresPresenter(MangaChaptersPresenter.class) | ||||
| @@ -30,24 +27,16 @@ public class MangaChaptersFragment extends BaseFragment<MangaChaptersPresenter> | ||||
|  | ||||
|     @Bind(R.id.chapter_list) RecyclerView chapters; | ||||
|  | ||||
|     private long manga_id; | ||||
|     private Manga manga; | ||||
|     private EasyRecyclerAdapter<Chapter> adapter; | ||||
|  | ||||
|     public static Fragment newInstance(long manga_id) { | ||||
|         MangaChaptersFragment fragment = new MangaChaptersFragment(); | ||||
|         Bundle args = new Bundle(); | ||||
|         args.putLong(MangaDetailActivity.MANGA_ID, manga_id); | ||||
|         fragment.setArguments(args); | ||||
|         return fragment; | ||||
|     public static Fragment newInstance() { | ||||
|         return new MangaChaptersFragment(); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void onCreate(Bundle savedState) { | ||||
|         super.onCreate(savedState); | ||||
|         setHasOptionsMenu(true); | ||||
|  | ||||
|         manga_id = getArguments().getLong(MangaDetailActivity.MANGA_ID); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
| @@ -73,7 +62,7 @@ public class MangaChaptersFragment extends BaseFragment<MangaChaptersPresenter> | ||||
|     public boolean onOptionsItemSelected(MenuItem item) { | ||||
|         switch (item.getItemId()) { | ||||
|             case R.id.action_refresh: | ||||
|                 getPresenter().refreshChapters(manga); | ||||
|                 getPresenter().refreshChapters(); | ||||
|                 break; | ||||
|         } | ||||
|         return super.onOptionsItemSelected(item); | ||||
| @@ -84,19 +73,8 @@ public class MangaChaptersFragment extends BaseFragment<MangaChaptersPresenter> | ||||
|         chapters.setAdapter(adapter); | ||||
|     } | ||||
|  | ||||
|     public long getMangaId() { | ||||
|         return manga_id; | ||||
|     } | ||||
|  | ||||
|     public Manga getManga() { | ||||
|         return manga; | ||||
|     } | ||||
|  | ||||
|     public void onNextChapters(List<Chapter> chapters) { | ||||
|         adapter.setItems(chapters); | ||||
|     } | ||||
|  | ||||
|     public void onMangaNext(Manga manga) { | ||||
|         this.manga = manga; | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -15,7 +15,6 @@ import butterknife.ButterKnife; | ||||
| import eu.kanade.mangafeed.R; | ||||
| import eu.kanade.mangafeed.data.models.Manga; | ||||
| import eu.kanade.mangafeed.presenter.MangaInfoPresenter; | ||||
| import eu.kanade.mangafeed.ui.activity.MangaDetailActivity; | ||||
| import nucleus.factory.RequiresPresenter; | ||||
|  | ||||
| @RequiresPresenter(MangaInfoPresenter.class) | ||||
| @@ -29,20 +28,13 @@ public class MangaInfoFragment extends BaseFragment<MangaInfoPresenter> { | ||||
|     @Bind(R.id.manga_summary) TextView mDescription; | ||||
|     @Bind(R.id.manga_cover) ImageView mCover; | ||||
|  | ||||
|     private long manga_id; | ||||
|  | ||||
|     public static MangaInfoFragment newInstance(long manga_id) { | ||||
|         MangaInfoFragment fragment = new MangaInfoFragment(); | ||||
|         Bundle args = new Bundle(); | ||||
|         args.putLong(MangaDetailActivity.MANGA_ID, manga_id); | ||||
|         fragment.setArguments(args); | ||||
|         return fragment; | ||||
|     public static MangaInfoFragment newInstance() { | ||||
|         return new MangaInfoFragment(); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void onCreate(Bundle savedState) { | ||||
|         super.onCreate(savedState); | ||||
|         manga_id = getArguments().getLong(MangaDetailActivity.MANGA_ID); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
| @@ -55,10 +47,6 @@ public class MangaInfoFragment extends BaseFragment<MangaInfoPresenter> { | ||||
|         return view; | ||||
|     } | ||||
|  | ||||
|     public long getMangaId() { | ||||
|         return manga_id; | ||||
|     } | ||||
|  | ||||
|     public void setMangaInfo(Manga manga) { | ||||
|         mArtist.setText(manga.artist); | ||||
|         mAuthor.setText(manga.author); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user