From cd8b548f332cf86bd6784d0512d2e22dc7cc2dc7 Mon Sep 17 00:00:00 2001 From: AdamGrzybkowski Date: Sat, 2 Sep 2017 19:09:45 +0200 Subject: [PATCH 1/3] Restructuring project --- app/src/main/AndroidManifest.xml | 2 +- .../dagger/component/ApplicationComponent.kt | 2 +- .../adamg/hnreader/dagger/component/AsksComponent.kt | 2 +- .../hnreader/dagger/component/CommentsComponent.kt | 2 +- .../adamg/hnreader/dagger/component/JobsComponent.kt | 2 +- .../hnreader/dagger/component/NewStoriesComponent.kt | 2 +- .../hnreader/dagger/component/ShowsComponent.kt | 2 +- .../hnreader/dagger/module/ApplicationModule.kt | 2 +- .../adamg/hnreader/data/repository/ItemRepository.kt | 2 +- .../hnreader/{api => networking}/HackerNewsApi.kt | 2 +- .../{ => activities}/mainactivity/MainActivity.kt | 11 +++++------ .../activities/mainactivity}/ViewPagerAdapter.kt | 2 +- .../com/adamg/hnreader/views/base/BaseActivityMvp.kt | 2 +- .../hnreader/{ => views}/customviews/HtmlTextView.kt | 2 +- .../{ => fragments}/comments/CommentCardModel.kt | 2 +- .../fragments/comments}/CommentsAdapter.kt | 5 ++--- .../{ => fragments}/comments/CommentsFragment.kt | 3 +-- .../views/{ => fragments}/comments/CommentsModel.kt | 2 +- .../{ => fragments}/comments/CommentsPresenter.kt | 4 ++-- .../views/{ => fragments}/comments/CommentsView.kt | 2 +- .../{ => fragments}/listfragments/ItemListener.kt | 2 +- .../fragments/listfragments}/ItemsAdapter.kt | 4 +--- .../{ => fragments}/listfragments/ItemsUiModel.kt | 2 +- .../views/{ => fragments}/listfragments/ItemsView.kt | 2 +- .../listfragments/asks/AsksFragment.kt | 10 +++++----- .../listfragments/asks/AsksPresenter.kt | 8 ++++---- .../listfragments/jobs/JobsFragment.kt | 12 ++++++------ .../listfragments/jobs/JobsPresenter.kt | 8 ++++---- .../listfragments/newstories/NewStoriesFragment.kt | 10 +++++----- .../listfragments/newstories/NewStoriesPresenter.kt | 7 +++---- .../listfragments/shows/ShowsFragment.kt | 12 ++++++------ .../listfragments/shows/ShowsPresenter.kt | 8 ++++---- .../views/{ => fragments}/webview/WebViewFragment.kt | 2 +- app/src/main/res/layout/activity_main.xml | 2 +- app/src/main/res/layout/comment_card.xml | 2 +- app/src/main/res/layout/fragment_comments.xml | 2 +- app/src/main/res/layout/fragment_new_stories.xml | 2 +- app/src/main/res/layout/fragment_web_view.xml | 2 +- 38 files changed, 73 insertions(+), 79 deletions(-) rename app/src/main/java/com/adamg/hnreader/{api => networking}/HackerNewsApi.kt (95%) rename app/src/main/java/com/adamg/hnreader/views/{ => activities}/mainactivity/MainActivity.kt (70%) rename app/src/main/java/com/adamg/hnreader/{adapter => views/activities/mainactivity}/ViewPagerAdapter.kt (92%) rename app/src/main/java/com/adamg/hnreader/{ => views}/customviews/HtmlTextView.kt (95%) rename app/src/main/java/com/adamg/hnreader/views/{ => fragments}/comments/CommentCardModel.kt (89%) rename app/src/main/java/com/adamg/hnreader/{adapter => views/fragments/comments}/CommentsAdapter.kt (96%) rename app/src/main/java/com/adamg/hnreader/views/{ => fragments}/comments/CommentsFragment.kt (97%) rename app/src/main/java/com/adamg/hnreader/views/{ => fragments}/comments/CommentsModel.kt (98%) rename app/src/main/java/com/adamg/hnreader/views/{ => fragments}/comments/CommentsPresenter.kt (92%) rename app/src/main/java/com/adamg/hnreader/views/{ => fragments}/comments/CommentsView.kt (69%) rename app/src/main/java/com/adamg/hnreader/views/{ => fragments}/listfragments/ItemListener.kt (63%) rename app/src/main/java/com/adamg/hnreader/{adapter => views/fragments/listfragments}/ItemsAdapter.kt (94%) rename app/src/main/java/com/adamg/hnreader/views/{ => fragments}/listfragments/ItemsUiModel.kt (92%) rename app/src/main/java/com/adamg/hnreader/views/{ => fragments}/listfragments/ItemsView.kt (68%) rename app/src/main/java/com/adamg/hnreader/views/{ => fragments}/listfragments/asks/AsksFragment.kt (90%) rename app/src/main/java/com/adamg/hnreader/views/{ => fragments}/listfragments/asks/AsksPresenter.kt (76%) rename app/src/main/java/com/adamg/hnreader/views/{ => fragments}/listfragments/jobs/JobsFragment.kt (89%) rename app/src/main/java/com/adamg/hnreader/views/{ => fragments}/listfragments/jobs/JobsPresenter.kt (76%) rename app/src/main/java/com/adamg/hnreader/views/{ => fragments}/listfragments/newstories/NewStoriesFragment.kt (90%) rename app/src/main/java/com/adamg/hnreader/views/{ => fragments}/listfragments/newstories/NewStoriesPresenter.kt (77%) rename app/src/main/java/com/adamg/hnreader/views/{ => fragments}/listfragments/shows/ShowsFragment.kt (89%) rename app/src/main/java/com/adamg/hnreader/views/{ => fragments}/listfragments/shows/ShowsPresenter.kt (76%) rename app/src/main/java/com/adamg/hnreader/views/{ => fragments}/webview/WebViewFragment.kt (98%) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3c76e61..21834f2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> - + diff --git a/app/src/main/java/com/adamg/hnreader/dagger/component/ApplicationComponent.kt b/app/src/main/java/com/adamg/hnreader/dagger/component/ApplicationComponent.kt index 352d1cd..836ee56 100644 --- a/app/src/main/java/com/adamg/hnreader/dagger/component/ApplicationComponent.kt +++ b/app/src/main/java/com/adamg/hnreader/dagger/component/ApplicationComponent.kt @@ -1,6 +1,6 @@ package com.adamg.hnreader.dagger.component -import com.adamg.hnreader.api.HackerNewsApi +import com.adamg.hnreader.networking.HackerNewsApi import com.adamg.hnreader.dagger.module.ApplicationModule import com.adamg.hnreader.dagger.scope.PerApplication import dagger.Component diff --git a/app/src/main/java/com/adamg/hnreader/dagger/component/AsksComponent.kt b/app/src/main/java/com/adamg/hnreader/dagger/component/AsksComponent.kt index 70e5a1e..a5de032 100644 --- a/app/src/main/java/com/adamg/hnreader/dagger/component/AsksComponent.kt +++ b/app/src/main/java/com/adamg/hnreader/dagger/component/AsksComponent.kt @@ -2,7 +2,7 @@ package com.adamg.hnreader.dagger.component import com.adamg.hnreader.dagger.module.AsksModule import com.adamg.hnreader.dagger.scope.PerActivity -import com.adamg.hnreader.views.listfragments.newstories.AsksPresenter +import com.adamg.hnreader.views.fragments.listfragments.newstories.AsksPresenter import dagger.Component @PerActivity diff --git a/app/src/main/java/com/adamg/hnreader/dagger/component/CommentsComponent.kt b/app/src/main/java/com/adamg/hnreader/dagger/component/CommentsComponent.kt index 9e38170..00ef605 100644 --- a/app/src/main/java/com/adamg/hnreader/dagger/component/CommentsComponent.kt +++ b/app/src/main/java/com/adamg/hnreader/dagger/component/CommentsComponent.kt @@ -2,7 +2,7 @@ package com.adamg.hnreader.dagger.component import com.adamg.hnreader.dagger.module.CommentsModule import com.adamg.hnreader.dagger.scope.PerActivity -import com.adamg.hnreader.views.comments.CommentsPresenter +import com.adamg.hnreader.views.fragments.comments.CommentsPresenter import dagger.Component @PerActivity diff --git a/app/src/main/java/com/adamg/hnreader/dagger/component/JobsComponent.kt b/app/src/main/java/com/adamg/hnreader/dagger/component/JobsComponent.kt index e9cf787..499a035 100644 --- a/app/src/main/java/com/adamg/hnreader/dagger/component/JobsComponent.kt +++ b/app/src/main/java/com/adamg/hnreader/dagger/component/JobsComponent.kt @@ -2,7 +2,7 @@ package com.adamg.hnreader.dagger.component import com.adamg.hnreader.dagger.module.JobsModule import com.adamg.hnreader.dagger.scope.PerActivity -import com.adamg.hnreader.views.listfragments.newstories.JobsPresenter +import com.adamg.hnreader.views.fragments.listfragments.newstories.JobsPresenter import dagger.Component @PerActivity diff --git a/app/src/main/java/com/adamg/hnreader/dagger/component/NewStoriesComponent.kt b/app/src/main/java/com/adamg/hnreader/dagger/component/NewStoriesComponent.kt index f5de637..9976cf2 100644 --- a/app/src/main/java/com/adamg/hnreader/dagger/component/NewStoriesComponent.kt +++ b/app/src/main/java/com/adamg/hnreader/dagger/component/NewStoriesComponent.kt @@ -2,7 +2,7 @@ package com.adamg.hnreader.dagger.component import com.adamg.hnreader.dagger.module.NewStoriesModule import com.adamg.hnreader.dagger.scope.PerActivity -import com.adamg.hnreader.views.listfragments.newstories.NewStoriesPresenter +import com.adamg.hnreader.views.fragments.listfragments.newstories.NewStoriesPresenter import dagger.Component @PerActivity diff --git a/app/src/main/java/com/adamg/hnreader/dagger/component/ShowsComponent.kt b/app/src/main/java/com/adamg/hnreader/dagger/component/ShowsComponent.kt index 176f339..eaf68ad 100644 --- a/app/src/main/java/com/adamg/hnreader/dagger/component/ShowsComponent.kt +++ b/app/src/main/java/com/adamg/hnreader/dagger/component/ShowsComponent.kt @@ -2,7 +2,7 @@ package com.adamg.hnreader.dagger.component import com.adamg.hnreader.dagger.module.ShowsModule import com.adamg.hnreader.dagger.scope.PerActivity -import com.adamg.hnreader.views.listfragments.newstories.ShowsPresenter +import com.adamg.hnreader.views.fragments.listfragments.newstories.ShowsPresenter import dagger.Component @PerActivity diff --git a/app/src/main/java/com/adamg/hnreader/dagger/module/ApplicationModule.kt b/app/src/main/java/com/adamg/hnreader/dagger/module/ApplicationModule.kt index 982855d..b294a1e 100644 --- a/app/src/main/java/com/adamg/hnreader/dagger/module/ApplicationModule.kt +++ b/app/src/main/java/com/adamg/hnreader/dagger/module/ApplicationModule.kt @@ -1,6 +1,6 @@ package com.adamg.hnreader.dagger.module -import com.adamg.hnreader.api.HackerNewsApi +import com.adamg.hnreader.networking.HackerNewsApi import com.adamg.hnreader.dagger.scope.PerApplication import com.commit451.regalia.moshi.RealmListJsonAdapterFactory import com.facebook.stetho.okhttp3.StethoInterceptor diff --git a/app/src/main/java/com/adamg/hnreader/data/repository/ItemRepository.kt b/app/src/main/java/com/adamg/hnreader/data/repository/ItemRepository.kt index 3e92b69..1a512bc 100644 --- a/app/src/main/java/com/adamg/hnreader/data/repository/ItemRepository.kt +++ b/app/src/main/java/com/adamg/hnreader/data/repository/ItemRepository.kt @@ -1,6 +1,6 @@ package com.adamg.hnreader.data.repository -import com.adamg.hnreader.api.HackerNewsApi +import com.adamg.hnreader.networking.HackerNewsApi import com.adamg.hnreader.data.dao.ItemDao import com.adamg.hnreader.models.Item import rx.Observable diff --git a/app/src/main/java/com/adamg/hnreader/api/HackerNewsApi.kt b/app/src/main/java/com/adamg/hnreader/networking/HackerNewsApi.kt similarity index 95% rename from app/src/main/java/com/adamg/hnreader/api/HackerNewsApi.kt rename to app/src/main/java/com/adamg/hnreader/networking/HackerNewsApi.kt index 508050f..1de5c27 100644 --- a/app/src/main/java/com/adamg/hnreader/api/HackerNewsApi.kt +++ b/app/src/main/java/com/adamg/hnreader/networking/HackerNewsApi.kt @@ -1,4 +1,4 @@ -package com.adamg.hnreader.api +package com.adamg.hnreader.networking import com.adamg.hnreader.models.Item import retrofit2.http.GET diff --git a/app/src/main/java/com/adamg/hnreader/views/mainactivity/MainActivity.kt b/app/src/main/java/com/adamg/hnreader/views/activities/mainactivity/MainActivity.kt similarity index 70% rename from app/src/main/java/com/adamg/hnreader/views/mainactivity/MainActivity.kt rename to app/src/main/java/com/adamg/hnreader/views/activities/mainactivity/MainActivity.kt index 92b503a..d421c84 100644 --- a/app/src/main/java/com/adamg/hnreader/views/mainactivity/MainActivity.kt +++ b/app/src/main/java/com/adamg/hnreader/views/activities/mainactivity/MainActivity.kt @@ -1,14 +1,13 @@ -package com.adamg.hnreader.views.mainactivity +package com.adamg.hnreader.views.activities.mainactivity import android.os.Bundle import android.support.v4.view.ViewPager import android.support.v7.app.AppCompatActivity import com.adamg.hnreader.R -import com.adamg.hnreader.adapter.ViewPagerAdapter -import com.adamg.hnreader.views.listfragments.newstories.AsksFragment -import com.adamg.hnreader.views.listfragments.newstories.NewStoriesFragment -import com.adamg.hnreader.views.listfragments.shows.JobsFragment -import com.adamg.hnreader.views.listfragments.shows.ShowsFragment +import com.adamg.hnreader.views.fragments.listfragments.newstories.AsksFragment +import com.adamg.hnreader.views.fragments.listfragments.newstories.NewStoriesFragment +import com.adamg.hnreader.views.fragments.listfragments.shows.JobsFragment +import com.adamg.hnreader.views.fragments.listfragments.shows.ShowsFragment import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { diff --git a/app/src/main/java/com/adamg/hnreader/adapter/ViewPagerAdapter.kt b/app/src/main/java/com/adamg/hnreader/views/activities/mainactivity/ViewPagerAdapter.kt similarity index 92% rename from app/src/main/java/com/adamg/hnreader/adapter/ViewPagerAdapter.kt rename to app/src/main/java/com/adamg/hnreader/views/activities/mainactivity/ViewPagerAdapter.kt index f2aa67f..47c1e66 100644 --- a/app/src/main/java/com/adamg/hnreader/adapter/ViewPagerAdapter.kt +++ b/app/src/main/java/com/adamg/hnreader/views/activities/mainactivity/ViewPagerAdapter.kt @@ -1,4 +1,4 @@ -package com.adamg.hnreader.adapter +package com.adamg.hnreader.views.activities.mainactivity import android.support.v4.app.Fragment import android.support.v4.app.FragmentManager diff --git a/app/src/main/java/com/adamg/hnreader/views/base/BaseActivityMvp.kt b/app/src/main/java/com/adamg/hnreader/views/base/BaseActivityMvp.kt index 04cad7a..06e6b0b 100644 --- a/app/src/main/java/com/adamg/hnreader/views/base/BaseActivityMvp.kt +++ b/app/src/main/java/com/adamg/hnreader/views/base/BaseActivityMvp.kt @@ -17,7 +17,7 @@ abstract class BaseActivityMvp>: MvpActivity { super.onBackPressed() return true diff --git a/app/src/main/java/com/adamg/hnreader/customviews/HtmlTextView.kt b/app/src/main/java/com/adamg/hnreader/views/customviews/HtmlTextView.kt similarity index 95% rename from app/src/main/java/com/adamg/hnreader/customviews/HtmlTextView.kt rename to app/src/main/java/com/adamg/hnreader/views/customviews/HtmlTextView.kt index 2902da9..88b2156 100644 --- a/app/src/main/java/com/adamg/hnreader/customviews/HtmlTextView.kt +++ b/app/src/main/java/com/adamg/hnreader/views/customviews/HtmlTextView.kt @@ -1,4 +1,4 @@ -package com.adamg.hnreader.customviews +package com.adamg.hnreader.views.customviews import android.content.Context import android.os.Build diff --git a/app/src/main/java/com/adamg/hnreader/views/comments/CommentCardModel.kt b/app/src/main/java/com/adamg/hnreader/views/fragments/comments/CommentCardModel.kt similarity index 89% rename from app/src/main/java/com/adamg/hnreader/views/comments/CommentCardModel.kt rename to app/src/main/java/com/adamg/hnreader/views/fragments/comments/CommentCardModel.kt index fed309b..31cb7ed 100644 --- a/app/src/main/java/com/adamg/hnreader/views/comments/CommentCardModel.kt +++ b/app/src/main/java/com/adamg/hnreader/views/fragments/comments/CommentCardModel.kt @@ -1,4 +1,4 @@ -package com.adamg.hnreader.views.comments +package com.adamg.hnreader.views.fragments.comments import com.adamg.hnreader.models.Comment diff --git a/app/src/main/java/com/adamg/hnreader/adapter/CommentsAdapter.kt b/app/src/main/java/com/adamg/hnreader/views/fragments/comments/CommentsAdapter.kt similarity index 96% rename from app/src/main/java/com/adamg/hnreader/adapter/CommentsAdapter.kt rename to app/src/main/java/com/adamg/hnreader/views/fragments/comments/CommentsAdapter.kt index 375f982..a8ca7d8 100644 --- a/app/src/main/java/com/adamg/hnreader/adapter/CommentsAdapter.kt +++ b/app/src/main/java/com/adamg/hnreader/views/fragments/comments/CommentsAdapter.kt @@ -1,4 +1,4 @@ -package com.adamg.hnreader.adapter +package com.adamg.hnreader.views.fragments.comments import android.support.v7.widget.RecyclerView import android.view.LayoutInflater @@ -9,7 +9,6 @@ import android.view.ViewGroup import android.widget.LinearLayout import com.adamg.hnreader.R import com.adamg.hnreader.models.Comment -import com.adamg.hnreader.views.comments.CommentCardModel import kotlinx.android.synthetic.main.comment_card.view.* @@ -18,7 +17,7 @@ class CommentsAdapter(var commentCardModels: MutableList, private val cardViewMaxWeight = 20 - override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): CommentViewHolder{ + override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): CommentViewHolder { val view = LayoutInflater.from(parent?.context).inflate(R.layout.comment_card, parent, false) return CommentViewHolder(view) } diff --git a/app/src/main/java/com/adamg/hnreader/views/comments/CommentsFragment.kt b/app/src/main/java/com/adamg/hnreader/views/fragments/comments/CommentsFragment.kt similarity index 97% rename from app/src/main/java/com/adamg/hnreader/views/comments/CommentsFragment.kt rename to app/src/main/java/com/adamg/hnreader/views/fragments/comments/CommentsFragment.kt index 2c439a1..f5db6d9 100644 --- a/app/src/main/java/com/adamg/hnreader/views/comments/CommentsFragment.kt +++ b/app/src/main/java/com/adamg/hnreader/views/fragments/comments/CommentsFragment.kt @@ -1,4 +1,4 @@ -package com.adamg.hnreader.views.comments +package com.adamg.hnreader.views.fragments.comments import android.os.Bundle @@ -10,7 +10,6 @@ import android.view.ViewGroup import com.adamg.hnreader.AppConstants import com.adamg.hnreader.HNApp import com.adamg.hnreader.R -import com.adamg.hnreader.adapter.CommentsAdapter import com.adamg.hnreader.dagger.component.CommentsComponent import com.adamg.hnreader.dagger.component.DaggerCommentsComponent import com.adamg.hnreader.views.base.BaseFragmentMvp diff --git a/app/src/main/java/com/adamg/hnreader/views/comments/CommentsModel.kt b/app/src/main/java/com/adamg/hnreader/views/fragments/comments/CommentsModel.kt similarity index 98% rename from app/src/main/java/com/adamg/hnreader/views/comments/CommentsModel.kt rename to app/src/main/java/com/adamg/hnreader/views/fragments/comments/CommentsModel.kt index 7c64f01..1d19a54 100644 --- a/app/src/main/java/com/adamg/hnreader/views/comments/CommentsModel.kt +++ b/app/src/main/java/com/adamg/hnreader/views/fragments/comments/CommentsModel.kt @@ -1,4 +1,4 @@ -package com.adamg.hnreader.views.comments +package com.adamg.hnreader.views.fragments.comments import android.os.Parcel import android.os.Parcelable diff --git a/app/src/main/java/com/adamg/hnreader/views/comments/CommentsPresenter.kt b/app/src/main/java/com/adamg/hnreader/views/fragments/comments/CommentsPresenter.kt similarity index 92% rename from app/src/main/java/com/adamg/hnreader/views/comments/CommentsPresenter.kt rename to app/src/main/java/com/adamg/hnreader/views/fragments/comments/CommentsPresenter.kt index f1b89be..7ed2978 100644 --- a/app/src/main/java/com/adamg/hnreader/views/comments/CommentsPresenter.kt +++ b/app/src/main/java/com/adamg/hnreader/views/fragments/comments/CommentsPresenter.kt @@ -1,6 +1,6 @@ -package com.adamg.hnreader.views.comments +package com.adamg.hnreader.views.fragments.comments -import com.adamg.hnreader.api.HackerNewsApi +import com.adamg.hnreader.networking.HackerNewsApi import com.adamg.hnreader.views.base.BasePresenter import com.adamg.hnreader.models.Item import rx.android.schedulers.AndroidSchedulers diff --git a/app/src/main/java/com/adamg/hnreader/views/comments/CommentsView.kt b/app/src/main/java/com/adamg/hnreader/views/fragments/comments/CommentsView.kt similarity index 69% rename from app/src/main/java/com/adamg/hnreader/views/comments/CommentsView.kt rename to app/src/main/java/com/adamg/hnreader/views/fragments/comments/CommentsView.kt index 230f9fe..51473d5 100644 --- a/app/src/main/java/com/adamg/hnreader/views/comments/CommentsView.kt +++ b/app/src/main/java/com/adamg/hnreader/views/fragments/comments/CommentsView.kt @@ -1,4 +1,4 @@ -package com.adamg.hnreader.views.comments +package com.adamg.hnreader.views.fragments.comments import com.hannesdorfmann.mosby3.mvp.MvpView diff --git a/app/src/main/java/com/adamg/hnreader/views/listfragments/ItemListener.kt b/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/ItemListener.kt similarity index 63% rename from app/src/main/java/com/adamg/hnreader/views/listfragments/ItemListener.kt rename to app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/ItemListener.kt index 9268cd7..cce6e34 100644 --- a/app/src/main/java/com/adamg/hnreader/views/listfragments/ItemListener.kt +++ b/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/ItemListener.kt @@ -1,4 +1,4 @@ -package com.adamg.hnreader.views.listfragments +package com.adamg.hnreader.views.fragments.listfragments import com.adamg.hnreader.models.Item diff --git a/app/src/main/java/com/adamg/hnreader/adapter/ItemsAdapter.kt b/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/ItemsAdapter.kt similarity index 94% rename from app/src/main/java/com/adamg/hnreader/adapter/ItemsAdapter.kt rename to app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/ItemsAdapter.kt index 405ca4f..330d7e7 100644 --- a/app/src/main/java/com/adamg/hnreader/adapter/ItemsAdapter.kt +++ b/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/ItemsAdapter.kt @@ -1,6 +1,5 @@ -package com.adamg.hnreader.adapter +package com.adamg.hnreader.views.fragments.listfragments -import android.opengl.Visibility import android.support.v7.widget.RecyclerView import android.view.LayoutInflater import android.view.View @@ -10,7 +9,6 @@ import com.adamg.hnreader.models.Item import com.adamg.hnreader.models.ItemType import com.adamg.hnreader.utils.hide import com.adamg.hnreader.utils.show -import com.adamg.hnreader.views.listfragments.ItemListener import kotlinx.android.synthetic.main.item_card.view.* class ItemsAdapter(var stories: List, val itemListener: ItemListener): RecyclerView.Adapter() { diff --git a/app/src/main/java/com/adamg/hnreader/views/listfragments/ItemsUiModel.kt b/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/ItemsUiModel.kt similarity index 92% rename from app/src/main/java/com/adamg/hnreader/views/listfragments/ItemsUiModel.kt rename to app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/ItemsUiModel.kt index 685124d..7960e0f 100644 --- a/app/src/main/java/com/adamg/hnreader/views/listfragments/ItemsUiModel.kt +++ b/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/ItemsUiModel.kt @@ -1,4 +1,4 @@ -package com.adamg.hnreader.views.listfragments +package com.adamg.hnreader.views.fragments.listfragments import com.adamg.hnreader.models.Item diff --git a/app/src/main/java/com/adamg/hnreader/views/listfragments/ItemsView.kt b/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/ItemsView.kt similarity index 68% rename from app/src/main/java/com/adamg/hnreader/views/listfragments/ItemsView.kt rename to app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/ItemsView.kt index caf8607..d9967b6 100644 --- a/app/src/main/java/com/adamg/hnreader/views/listfragments/ItemsView.kt +++ b/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/ItemsView.kt @@ -1,4 +1,4 @@ -package com.adamg.hnreader.views.listfragments +package com.adamg.hnreader.views.fragments.listfragments import com.hannesdorfmann.mosby3.mvp.MvpView diff --git a/app/src/main/java/com/adamg/hnreader/views/listfragments/asks/AsksFragment.kt b/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/asks/AsksFragment.kt similarity index 90% rename from app/src/main/java/com/adamg/hnreader/views/listfragments/asks/AsksFragment.kt rename to app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/asks/AsksFragment.kt index f048c48..9adaa4a 100644 --- a/app/src/main/java/com/adamg/hnreader/views/listfragments/asks/AsksFragment.kt +++ b/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/asks/AsksFragment.kt @@ -1,4 +1,4 @@ -package com.adamg.hnreader.views.listfragments.newstories +package com.adamg.hnreader.views.fragments.listfragments.newstories import android.os.Bundle import android.support.v4.widget.SwipeRefreshLayout @@ -10,14 +10,14 @@ import android.view.View.VISIBLE import android.view.ViewGroup import com.adamg.hnreader.HNApp import com.adamg.hnreader.R -import com.adamg.hnreader.adapter.ItemsAdapter +import com.adamg.hnreader.views.fragments.listfragments.ItemsAdapter import com.adamg.hnreader.dagger.component.AsksComponent import com.adamg.hnreader.dagger.component.DaggerAsksComponent import com.adamg.hnreader.models.Item import com.adamg.hnreader.views.base.BaseFragmentMvp -import com.adamg.hnreader.views.listfragments.ItemListener -import com.adamg.hnreader.views.listfragments.ItemsUiModel -import com.adamg.hnreader.views.listfragments.ItemsView +import com.adamg.hnreader.views.fragments.listfragments.ItemListener +import com.adamg.hnreader.views.fragments.listfragments.ItemsUiModel +import com.adamg.hnreader.views.fragments.listfragments.ItemsView import kotlinx.android.synthetic.main.fragment_new_stories.* class AsksFragment : BaseFragmentMvp(), ItemsView, diff --git a/app/src/main/java/com/adamg/hnreader/views/listfragments/asks/AsksPresenter.kt b/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/asks/AsksPresenter.kt similarity index 76% rename from app/src/main/java/com/adamg/hnreader/views/listfragments/asks/AsksPresenter.kt rename to app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/asks/AsksPresenter.kt index bcf42ef..e024066 100644 --- a/app/src/main/java/com/adamg/hnreader/views/listfragments/asks/AsksPresenter.kt +++ b/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/asks/AsksPresenter.kt @@ -1,9 +1,9 @@ -package com.adamg.hnreader.views.listfragments.newstories +package com.adamg.hnreader.views.fragments.listfragments.newstories -import com.adamg.hnreader.api.HackerNewsApi +import com.adamg.hnreader.networking.HackerNewsApi import com.adamg.hnreader.views.base.BasePresenter -import com.adamg.hnreader.views.listfragments.ItemsUiModel -import com.adamg.hnreader.views.listfragments.ItemsView +import com.adamg.hnreader.views.fragments.listfragments.ItemsUiModel +import com.adamg.hnreader.views.fragments.listfragments.ItemsView import rx.android.schedulers.AndroidSchedulers import rx.lang.kotlin.subscribeBy import rx.schedulers.Schedulers diff --git a/app/src/main/java/com/adamg/hnreader/views/listfragments/jobs/JobsFragment.kt b/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/jobs/JobsFragment.kt similarity index 89% rename from app/src/main/java/com/adamg/hnreader/views/listfragments/jobs/JobsFragment.kt rename to app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/jobs/JobsFragment.kt index f84a770..6743ada 100644 --- a/app/src/main/java/com/adamg/hnreader/views/listfragments/jobs/JobsFragment.kt +++ b/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/jobs/JobsFragment.kt @@ -1,4 +1,4 @@ -package com.adamg.hnreader.views.listfragments.shows +package com.adamg.hnreader.views.fragments.listfragments.shows import android.os.Bundle @@ -10,15 +10,15 @@ import android.view.View import android.view.ViewGroup import com.adamg.hnreader.HNApp import com.adamg.hnreader.R -import com.adamg.hnreader.adapter.ItemsAdapter +import com.adamg.hnreader.views.fragments.listfragments.ItemsAdapter import com.adamg.hnreader.dagger.component.DaggerJobsComponent import com.adamg.hnreader.dagger.component.JobsComponent import com.adamg.hnreader.models.Item import com.adamg.hnreader.views.base.BaseFragmentMvp -import com.adamg.hnreader.views.listfragments.ItemListener -import com.adamg.hnreader.views.listfragments.ItemsUiModel -import com.adamg.hnreader.views.listfragments.ItemsView -import com.adamg.hnreader.views.listfragments.newstories.JobsPresenter +import com.adamg.hnreader.views.fragments.listfragments.ItemListener +import com.adamg.hnreader.views.fragments.listfragments.ItemsUiModel +import com.adamg.hnreader.views.fragments.listfragments.ItemsView +import com.adamg.hnreader.views.fragments.listfragments.newstories.JobsPresenter import kotlinx.android.synthetic.main.fragment_new_stories.* diff --git a/app/src/main/java/com/adamg/hnreader/views/listfragments/jobs/JobsPresenter.kt b/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/jobs/JobsPresenter.kt similarity index 76% rename from app/src/main/java/com/adamg/hnreader/views/listfragments/jobs/JobsPresenter.kt rename to app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/jobs/JobsPresenter.kt index 4b26cef..cd3dab0 100644 --- a/app/src/main/java/com/adamg/hnreader/views/listfragments/jobs/JobsPresenter.kt +++ b/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/jobs/JobsPresenter.kt @@ -1,9 +1,9 @@ -package com.adamg.hnreader.views.listfragments.newstories +package com.adamg.hnreader.views.fragments.listfragments.newstories -import com.adamg.hnreader.api.HackerNewsApi +import com.adamg.hnreader.networking.HackerNewsApi import com.adamg.hnreader.views.base.BasePresenter -import com.adamg.hnreader.views.listfragments.ItemsUiModel -import com.adamg.hnreader.views.listfragments.ItemsView +import com.adamg.hnreader.views.fragments.listfragments.ItemsUiModel +import com.adamg.hnreader.views.fragments.listfragments.ItemsView import rx.android.schedulers.AndroidSchedulers import rx.lang.kotlin.subscribeBy import rx.schedulers.Schedulers diff --git a/app/src/main/java/com/adamg/hnreader/views/listfragments/newstories/NewStoriesFragment.kt b/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/newstories/NewStoriesFragment.kt similarity index 90% rename from app/src/main/java/com/adamg/hnreader/views/listfragments/newstories/NewStoriesFragment.kt rename to app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/newstories/NewStoriesFragment.kt index bd16c28..f21ebee 100644 --- a/app/src/main/java/com/adamg/hnreader/views/listfragments/newstories/NewStoriesFragment.kt +++ b/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/newstories/NewStoriesFragment.kt @@ -1,4 +1,4 @@ -package com.adamg.hnreader.views.listfragments.newstories +package com.adamg.hnreader.views.fragments.listfragments.newstories import android.os.Bundle import android.support.v4.widget.SwipeRefreshLayout @@ -10,14 +10,14 @@ import android.view.View.VISIBLE import android.view.ViewGroup import com.adamg.hnreader.HNApp import com.adamg.hnreader.R -import com.adamg.hnreader.adapter.ItemsAdapter +import com.adamg.hnreader.views.fragments.listfragments.ItemsAdapter import com.adamg.hnreader.dagger.component.DaggerNewStoriesComponent import com.adamg.hnreader.dagger.component.NewStoriesComponent import com.adamg.hnreader.models.Item import com.adamg.hnreader.views.base.BaseFragmentMvp -import com.adamg.hnreader.views.listfragments.ItemListener -import com.adamg.hnreader.views.listfragments.ItemsUiModel -import com.adamg.hnreader.views.listfragments.ItemsView +import com.adamg.hnreader.views.fragments.listfragments.ItemListener +import com.adamg.hnreader.views.fragments.listfragments.ItemsUiModel +import com.adamg.hnreader.views.fragments.listfragments.ItemsView import kotlinx.android.synthetic.main.fragment_new_stories.* class NewStoriesFragment : BaseFragmentMvp(), ItemsView, diff --git a/app/src/main/java/com/adamg/hnreader/views/listfragments/newstories/NewStoriesPresenter.kt b/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/newstories/NewStoriesPresenter.kt similarity index 77% rename from app/src/main/java/com/adamg/hnreader/views/listfragments/newstories/NewStoriesPresenter.kt rename to app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/newstories/NewStoriesPresenter.kt index 240fde2..654b401 100644 --- a/app/src/main/java/com/adamg/hnreader/views/listfragments/newstories/NewStoriesPresenter.kt +++ b/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/newstories/NewStoriesPresenter.kt @@ -1,10 +1,9 @@ -package com.adamg.hnreader.views.listfragments.newstories +package com.adamg.hnreader.views.fragments.listfragments.newstories import com.adamg.hnreader.views.base.BasePresenter import com.adamg.hnreader.data.repository.ItemRepository -import com.adamg.hnreader.models.Item -import com.adamg.hnreader.views.listfragments.ItemsUiModel -import com.adamg.hnreader.views.listfragments.ItemsView +import com.adamg.hnreader.views.fragments.listfragments.ItemsUiModel +import com.adamg.hnreader.views.fragments.listfragments.ItemsView import rx.lang.kotlin.subscribeBy import javax.inject.Inject diff --git a/app/src/main/java/com/adamg/hnreader/views/listfragments/shows/ShowsFragment.kt b/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/shows/ShowsFragment.kt similarity index 89% rename from app/src/main/java/com/adamg/hnreader/views/listfragments/shows/ShowsFragment.kt rename to app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/shows/ShowsFragment.kt index 29a3a0e..490977e 100644 --- a/app/src/main/java/com/adamg/hnreader/views/listfragments/shows/ShowsFragment.kt +++ b/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/shows/ShowsFragment.kt @@ -1,4 +1,4 @@ -package com.adamg.hnreader.views.listfragments.shows +package com.adamg.hnreader.views.fragments.listfragments.shows import android.os.Bundle @@ -10,15 +10,15 @@ import android.view.View import android.view.ViewGroup import com.adamg.hnreader.HNApp import com.adamg.hnreader.R -import com.adamg.hnreader.adapter.ItemsAdapter +import com.adamg.hnreader.views.fragments.listfragments.ItemsAdapter import com.adamg.hnreader.dagger.component.DaggerShowsComponent import com.adamg.hnreader.dagger.component.ShowsComponent import com.adamg.hnreader.models.Item import com.adamg.hnreader.views.base.BaseFragmentMvp -import com.adamg.hnreader.views.listfragments.ItemListener -import com.adamg.hnreader.views.listfragments.ItemsUiModel -import com.adamg.hnreader.views.listfragments.ItemsView -import com.adamg.hnreader.views.listfragments.newstories.ShowsPresenter +import com.adamg.hnreader.views.fragments.listfragments.ItemListener +import com.adamg.hnreader.views.fragments.listfragments.ItemsUiModel +import com.adamg.hnreader.views.fragments.listfragments.ItemsView +import com.adamg.hnreader.views.fragments.listfragments.newstories.ShowsPresenter import kotlinx.android.synthetic.main.fragment_new_stories.* diff --git a/app/src/main/java/com/adamg/hnreader/views/listfragments/shows/ShowsPresenter.kt b/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/shows/ShowsPresenter.kt similarity index 76% rename from app/src/main/java/com/adamg/hnreader/views/listfragments/shows/ShowsPresenter.kt rename to app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/shows/ShowsPresenter.kt index 84ccee0..02a11fa 100644 --- a/app/src/main/java/com/adamg/hnreader/views/listfragments/shows/ShowsPresenter.kt +++ b/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/shows/ShowsPresenter.kt @@ -1,9 +1,9 @@ -package com.adamg.hnreader.views.listfragments.newstories +package com.adamg.hnreader.views.fragments.listfragments.newstories -import com.adamg.hnreader.api.HackerNewsApi +import com.adamg.hnreader.networking.HackerNewsApi import com.adamg.hnreader.views.base.BasePresenter -import com.adamg.hnreader.views.listfragments.ItemsUiModel -import com.adamg.hnreader.views.listfragments.ItemsView +import com.adamg.hnreader.views.fragments.listfragments.ItemsUiModel +import com.adamg.hnreader.views.fragments.listfragments.ItemsView import rx.android.schedulers.AndroidSchedulers import rx.lang.kotlin.subscribeBy import rx.schedulers.Schedulers diff --git a/app/src/main/java/com/adamg/hnreader/views/webview/WebViewFragment.kt b/app/src/main/java/com/adamg/hnreader/views/fragments/webview/WebViewFragment.kt similarity index 98% rename from app/src/main/java/com/adamg/hnreader/views/webview/WebViewFragment.kt rename to app/src/main/java/com/adamg/hnreader/views/fragments/webview/WebViewFragment.kt index e8635ba..f12816e 100644 --- a/app/src/main/java/com/adamg/hnreader/views/webview/WebViewFragment.kt +++ b/app/src/main/java/com/adamg/hnreader/views/fragments/webview/WebViewFragment.kt @@ -1,4 +1,4 @@ -package com.adamg.hnreader.views.webview +package com.adamg.hnreader.views.fragments.webview import android.graphics.Bitmap diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index ee2dc70..0dfdf2a 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -5,7 +5,7 @@ android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context="com.adamg.hnreader.views.mainactivity.MainActivity"> + tools:context=".views.activities.mainactivity.MainActivity"> - + tools:context=".views.fragments.comments.CommentsFragment"> + tools:context=".views.fragments.listfragments.newstories.NewStoriesFragment"> + tools:context=".views.fragments.webview.WebViewFragment"> Date: Sat, 2 Sep 2017 19:38:51 +0200 Subject: [PATCH 2/3] Fixed item card layout --- app/src/main/res/layout/item_card.xml | 49 +++++++++++++++------------ 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/app/src/main/res/layout/item_card.xml b/app/src/main/res/layout/item_card.xml index 250525c..b4a4c72 100644 --- a/app/src/main/res/layout/item_card.xml +++ b/app/src/main/res/layout/item_card.xml @@ -1,16 +1,16 @@ + xmlns:card_view="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginBottom="4dp" + android:layout_marginLeft="8dp" + android:layout_marginRight="8dp" + android:layout_marginTop="4dp" + card_view:cardBackgroundColor="@color/card_background" + card_view:cardCornerRadius="0dp" + card_view:cardElevation="3dp"> + card_view:layout_constraintRight_toLeftOf="@+id/itemTimeAgo" + card_view:layout_constraintVertical_bias="0.0" + card_view:layout_constraintTop_toTopOf="@+id/itemTimeAgo"/> + card_view:layout_constraintRight_toLeftOf="@+id/itemUser" + android:layout_marginRight="8dp" + android:layout_marginTop="8dp" + card_view:layout_constraintTop_toBottomOf="@+id/itemTitle" + card_view:layout_constraintHorizontal_bias="0.0" + card_view:layout_constraintVertical_bias="0.0" + android:layout_marginEnd="8dp"/> Date: Thu, 7 Sep 2017 22:03:39 +0200 Subject: [PATCH 3/3] ItemDetailsActivity view added with basic logic --- app/src/main/AndroidManifest.xml | 7 +- .../dagger/component/ItemDetailsComponent.kt | 12 ++ .../dagger/module/ItemDetailsModule.kt | 7 ++ .../com/adamg/hnreader/data/dao/ItemDao.kt | 17 ++- .../data/repository/ItemRepository.kt | 20 +++- .../adamg/hnreader/utils/ViewExtenstions.kt | 4 + .../itemdetailactivity/ItemDetailsActivity.kt | 58 ++++++++++ .../ItemDetailsPresenter.kt | 21 ++++ .../itemdetailactivity/ItemDetailsView.kt | 9 ++ .../hnreader/views/base/BaseActivityMvp.kt | 5 +- .../fragments/listfragments/ItemsAdapter.kt | 5 +- .../listfragments/asks/AsksFragment.kt | 4 +- .../listfragments/asks/AsksPresenter.kt | 7 +- .../newstories/NewStoriesFragment.kt | 5 +- .../main/res/layout/activity_item_details.xml | 53 +++++++++ app/src/main/res/layout/item_details.xml | 107 ++++++++++++++++++ app/src/main/res/values/dimens.xml | 3 + app/src/main/res/values/strings.xml | 5 +- app/src/main/res/values/styles.xml | 6 +- 19 files changed, 336 insertions(+), 19 deletions(-) create mode 100644 app/src/main/java/com/adamg/hnreader/dagger/component/ItemDetailsComponent.kt create mode 100644 app/src/main/java/com/adamg/hnreader/dagger/module/ItemDetailsModule.kt create mode 100644 app/src/main/java/com/adamg/hnreader/views/activities/itemdetailactivity/ItemDetailsActivity.kt create mode 100644 app/src/main/java/com/adamg/hnreader/views/activities/itemdetailactivity/ItemDetailsPresenter.kt create mode 100644 app/src/main/java/com/adamg/hnreader/views/activities/itemdetailactivity/ItemDetailsView.kt create mode 100644 app/src/main/res/layout/activity_item_details.xml create mode 100644 app/src/main/res/layout/item_details.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 21834f2..751feca 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,13 +11,18 @@ android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> - + + + \ No newline at end of file diff --git a/app/src/main/java/com/adamg/hnreader/dagger/component/ItemDetailsComponent.kt b/app/src/main/java/com/adamg/hnreader/dagger/component/ItemDetailsComponent.kt new file mode 100644 index 0000000..5db5be2 --- /dev/null +++ b/app/src/main/java/com/adamg/hnreader/dagger/component/ItemDetailsComponent.kt @@ -0,0 +1,12 @@ +package com.adamg.hnreader.dagger.component + +import com.adamg.hnreader.dagger.module.ItemDetailsModule +import com.adamg.hnreader.dagger.scope.PerActivity +import com.adamg.hnreader.views.activities.itemdetailactivity.ItemDetailsPresenter +import dagger.Component + +@PerActivity +@Component(modules = arrayOf(ItemDetailsModule::class), dependencies = arrayOf(ApplicationComponent::class)) +interface ItemDetailsComponent { + fun presenter(): ItemDetailsPresenter +} \ No newline at end of file diff --git a/app/src/main/java/com/adamg/hnreader/dagger/module/ItemDetailsModule.kt b/app/src/main/java/com/adamg/hnreader/dagger/module/ItemDetailsModule.kt new file mode 100644 index 0000000..994bcac --- /dev/null +++ b/app/src/main/java/com/adamg/hnreader/dagger/module/ItemDetailsModule.kt @@ -0,0 +1,7 @@ +package com.adamg.hnreader.dagger.module + +import dagger.Module + +@Module +class ItemDetailsModule { +} \ No newline at end of file diff --git a/app/src/main/java/com/adamg/hnreader/data/dao/ItemDao.kt b/app/src/main/java/com/adamg/hnreader/data/dao/ItemDao.kt index 716eabe..00149ea 100644 --- a/app/src/main/java/com/adamg/hnreader/data/dao/ItemDao.kt +++ b/app/src/main/java/com/adamg/hnreader/data/dao/ItemDao.kt @@ -1,8 +1,7 @@ package com.adamg.hnreader.data.dao import com.adamg.hnreader.models.Item -import com.vicpin.krealmextensions.queryAllAsObservable -import com.vicpin.krealmextensions.queryAsObservable +import com.vicpin.krealmextensions.* import rx.Observable import javax.inject.Inject @@ -10,8 +9,20 @@ class ItemDao @Inject constructor() { fun getAllItems() = Item().queryAllAsObservable() - fun getItem(itemId: Long): Observable { + fun getItem(itemId: Long) = Item().queryFirst { query -> query.equalTo("id", itemId) } + + fun getItemAsObservable(itemId: Long): Observable { return Item().queryAsObservable { query -> query.equalTo("id", itemId) } .map { it.first() } } + + fun saveItems(items: List) { + items.saveAll() + } + + fun saveItem(item: Item) { + item.save() + } + + } \ No newline at end of file diff --git a/app/src/main/java/com/adamg/hnreader/data/repository/ItemRepository.kt b/app/src/main/java/com/adamg/hnreader/data/repository/ItemRepository.kt index 1a512bc..59142ba 100644 --- a/app/src/main/java/com/adamg/hnreader/data/repository/ItemRepository.kt +++ b/app/src/main/java/com/adamg/hnreader/data/repository/ItemRepository.kt @@ -11,12 +11,30 @@ import javax.inject.Inject class ItemRepository @Inject constructor(private val itemDao: ItemDao, private val hackerNewsApi: HackerNewsApi) { fun getItem(itemId: Long): Observable { - return itemDao.getItem(itemId) + val cachedItem = itemDao.getItem(itemId) + + val item = hackerNewsApi.getItem(itemId) + .subscribeOn(Schedulers.newThread()) + .observeOn(Schedulers.io()) + .doOnNext { itemDao.saveItem(it!!) } + .flatMap { itemDao.getItemAsObservable(it.id) } + + return item.mergeWith(Observable.just(cachedItem)) } fun getNewStories(page: Int = 0): Observable> { return hackerNewsApi.getNewStories(page) .subscribeOn(Schedulers.newThread()) + .observeOn(Schedulers.io()) + .doOnNext { itemDao.saveItems(it!!) } + .observeOn(AndroidSchedulers.mainThread()) + } + + fun getAsks(page: Int = 0): Observable> { + return hackerNewsApi.getAsks(page) + .subscribeOn(Schedulers.newThread()) + .observeOn(Schedulers.io()) + .doOnNext { itemDao.saveItems(it!!) } .observeOn(AndroidSchedulers.mainThread()) } } \ No newline at end of file diff --git a/app/src/main/java/com/adamg/hnreader/utils/ViewExtenstions.kt b/app/src/main/java/com/adamg/hnreader/utils/ViewExtenstions.kt index 8c3f07f..259b873 100644 --- a/app/src/main/java/com/adamg/hnreader/utils/ViewExtenstions.kt +++ b/app/src/main/java/com/adamg/hnreader/utils/ViewExtenstions.kt @@ -8,4 +8,8 @@ fun View.show() { fun View.hide() { this.visibility = View.GONE +} + +fun View.fade() { + this.visibility = View.INVISIBLE } \ No newline at end of file diff --git a/app/src/main/java/com/adamg/hnreader/views/activities/itemdetailactivity/ItemDetailsActivity.kt b/app/src/main/java/com/adamg/hnreader/views/activities/itemdetailactivity/ItemDetailsActivity.kt new file mode 100644 index 0000000..61599f5 --- /dev/null +++ b/app/src/main/java/com/adamg/hnreader/views/activities/itemdetailactivity/ItemDetailsActivity.kt @@ -0,0 +1,58 @@ +package com.adamg.hnreader.views.activities.itemdetailactivity + +import android.content.Context +import android.os.Bundle +import com.adamg.hnreader.HNApp +import com.adamg.hnreader.R +import com.adamg.hnreader.dagger.component.DaggerItemDetailsComponent +import com.adamg.hnreader.dagger.component.ItemDetailsComponent +import com.adamg.hnreader.models.Item +import com.adamg.hnreader.utils.fade +import com.adamg.hnreader.utils.show +import com.adamg.hnreader.views.base.BaseActivityMvp +import kotlinx.android.synthetic.main.activity_item_details.* +import kotlinx.android.synthetic.main.item_details.* +import org.jetbrains.anko.intentFor + +class ItemDetailsActivity : BaseActivityMvp(), ItemDetailsView { + + lateinit var itemDetailsComponent: ItemDetailsComponent + + companion object { + val ITEM_ID_KEY = "item_id_key" + fun start(context: Context, itemId: Long) { + context.startActivity(context.intentFor(ITEM_ID_KEY to itemId)) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_item_details) + setSupportActionBar(toolbar) + supportActionBar?.setDisplayHomeAsUpEnabled(true) + presenter.loadItem(intent?.extras?.getLong(ITEM_ID_KEY)!!) + } + + override fun showItemDetails(item: Item) { + itemPointsCount.text = item.points?.let { resources.getQuantityString(R.plurals.points, it, it) } + itemTitle.text = item.title + if (item.content != null) { + itemContent.show() + itemContent.text = item.content + } else { + itemContent.fade() + itemContent.text = "" + } + itemDomain.text = item.domain + itemTimeAgo.text = item.time_ago + item.user?.let { itemUser.text = getString(R.string.value_dot_separator, it) } + } + + override fun createPresenter() = itemDetailsComponent.presenter() + + override fun injectDependencies() { + itemDetailsComponent = DaggerItemDetailsComponent.builder() + .applicationComponent(HNApp.applicationComponent) + .build() + } +} diff --git a/app/src/main/java/com/adamg/hnreader/views/activities/itemdetailactivity/ItemDetailsPresenter.kt b/app/src/main/java/com/adamg/hnreader/views/activities/itemdetailactivity/ItemDetailsPresenter.kt new file mode 100644 index 0000000..a93ed42 --- /dev/null +++ b/app/src/main/java/com/adamg/hnreader/views/activities/itemdetailactivity/ItemDetailsPresenter.kt @@ -0,0 +1,21 @@ +package com.adamg.hnreader.views.activities.itemdetailactivity + +import android.util.Log +import com.adamg.hnreader.data.repository.ItemRepository +import com.adamg.hnreader.views.base.BasePresenter +import rx.android.schedulers.AndroidSchedulers +import rx.lang.kotlin.subscribeBy +import javax.inject.Inject + +class ItemDetailsPresenter @Inject constructor(private val itemRepository: ItemRepository): BasePresenter() { + + fun loadItem(itemId: Long) { + itemRepository.getItem(itemId) + .observeOn(AndroidSchedulers.mainThread()) + .subscribeBy( + onNext = { view?.showItemDetails(it!!)}, + onError = { Log.e(ItemDetailsPresenter::class.java.simpleName, "LOL WTF", it)} + ) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/adamg/hnreader/views/activities/itemdetailactivity/ItemDetailsView.kt b/app/src/main/java/com/adamg/hnreader/views/activities/itemdetailactivity/ItemDetailsView.kt new file mode 100644 index 0000000..17682a0 --- /dev/null +++ b/app/src/main/java/com/adamg/hnreader/views/activities/itemdetailactivity/ItemDetailsView.kt @@ -0,0 +1,9 @@ +package com.adamg.hnreader.views.activities.itemdetailactivity + +import com.adamg.hnreader.models.Item +import com.hannesdorfmann.mosby3.mvp.MvpView + +interface ItemDetailsView: MvpView { + fun showItemDetails(item: Item) + +} \ No newline at end of file diff --git a/app/src/main/java/com/adamg/hnreader/views/base/BaseActivityMvp.kt b/app/src/main/java/com/adamg/hnreader/views/base/BaseActivityMvp.kt index 06e6b0b..9f9c9c7 100644 --- a/app/src/main/java/com/adamg/hnreader/views/base/BaseActivityMvp.kt +++ b/app/src/main/java/com/adamg/hnreader/views/base/BaseActivityMvp.kt @@ -9,9 +9,10 @@ import com.hannesdorfmann.mosby3.mvp.MvpView abstract class BaseActivityMvp>: MvpActivity() { - override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) { - super.onCreate(savedInstanceState, persistentState) + + override fun onCreate(savedInstanceState: Bundle?) { injectDependencies() + super.onCreate(savedInstanceState) } abstract fun injectDependencies() diff --git a/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/ItemsAdapter.kt b/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/ItemsAdapter.kt index 330d7e7..198a7cd 100644 --- a/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/ItemsAdapter.kt +++ b/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/ItemsAdapter.kt @@ -30,7 +30,7 @@ class ItemsAdapter(var stories: List, val itemListener: ItemListener): Rec view.itemTitle.text = item.title item.user?.let { view.itemUser.text = view.context.getString(R.string.value_dot_separator, it) } val points = item.points - view.itemPointsCount.text = points?.let { view.context.resources.getQuantityString(R.plurals.points, it, points) } + view.itemPointsCount.text = points?.let { getPointString(it) } view.itemTimeAgo.text = item.time_ago view.itemCommentsCount.text = view.context.resources.getQuantityString(R.plurals.comments, item.comments_count, item.comments_count) if (item.domain != null) view.itemDomain.text = item.domain else view.itemDomain.text = "" @@ -43,5 +43,8 @@ class ItemsAdapter(var stories: List, val itemListener: ItemListener): Rec } view.setOnClickListener{ itemListener.onItemClicked(item) } } + + private fun getPointString(points: Int) = + view.context.resources.getQuantityString(R.plurals.points, points, points) + view.context.getString(R.string.dot_separator) } } diff --git a/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/asks/AsksFragment.kt b/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/asks/AsksFragment.kt index 9adaa4a..09bdeb6 100644 --- a/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/asks/AsksFragment.kt +++ b/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/asks/AsksFragment.kt @@ -14,6 +14,7 @@ import com.adamg.hnreader.views.fragments.listfragments.ItemsAdapter import com.adamg.hnreader.dagger.component.AsksComponent import com.adamg.hnreader.dagger.component.DaggerAsksComponent import com.adamg.hnreader.models.Item +import com.adamg.hnreader.views.activities.itemdetailactivity.ItemDetailsActivity import com.adamg.hnreader.views.base.BaseFragmentMvp import com.adamg.hnreader.views.fragments.listfragments.ItemListener import com.adamg.hnreader.views.fragments.listfragments.ItemsUiModel @@ -94,8 +95,7 @@ class AsksFragment : BaseFragmentMvp(), ItemsView, } override fun onItemClicked(item: Item) { -// val intent = parseItemTypeForIntent(context, item) -// startActivity(intent) + ItemDetailsActivity.start(activity, itemId = item.id) } override fun injectDependencies(){ diff --git a/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/asks/AsksPresenter.kt b/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/asks/AsksPresenter.kt index e024066..9fa0d37 100644 --- a/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/asks/AsksPresenter.kt +++ b/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/asks/AsksPresenter.kt @@ -1,5 +1,6 @@ package com.adamg.hnreader.views.fragments.listfragments.newstories +import com.adamg.hnreader.data.repository.ItemRepository import com.adamg.hnreader.networking.HackerNewsApi import com.adamg.hnreader.views.base.BasePresenter import com.adamg.hnreader.views.fragments.listfragments.ItemsUiModel @@ -9,12 +10,10 @@ import rx.lang.kotlin.subscribeBy import rx.schedulers.Schedulers import javax.inject.Inject -class AsksPresenter @Inject constructor(private val hackerNewsApi: HackerNewsApi) : BasePresenter() { +class AsksPresenter @Inject constructor(private val itemRepository: ItemRepository): BasePresenter() { fun loadNewSAsks(pullToRefresh: Boolean){ - val subscription = hackerNewsApi.getAsks(1) - .subscribeOn(Schedulers.newThread()) - .observeOn(AndroidSchedulers.mainThread()) + val subscription = itemRepository.getAsks(1) .map { ItemsUiModel.success(it) } .onErrorReturn { ItemsUiModel.error(it.message) } .startWith(ItemsUiModel.loading()) diff --git a/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/newstories/NewStoriesFragment.kt b/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/newstories/NewStoriesFragment.kt index f21ebee..b68e561 100644 --- a/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/newstories/NewStoriesFragment.kt +++ b/app/src/main/java/com/adamg/hnreader/views/fragments/listfragments/newstories/NewStoriesFragment.kt @@ -14,11 +14,13 @@ import com.adamg.hnreader.views.fragments.listfragments.ItemsAdapter import com.adamg.hnreader.dagger.component.DaggerNewStoriesComponent import com.adamg.hnreader.dagger.component.NewStoriesComponent import com.adamg.hnreader.models.Item +import com.adamg.hnreader.views.activities.itemdetailactivity.ItemDetailsActivity import com.adamg.hnreader.views.base.BaseFragmentMvp import com.adamg.hnreader.views.fragments.listfragments.ItemListener import com.adamg.hnreader.views.fragments.listfragments.ItemsUiModel import com.adamg.hnreader.views.fragments.listfragments.ItemsView import kotlinx.android.synthetic.main.fragment_new_stories.* +import org.jetbrains.anko.support.v4.startActivity class NewStoriesFragment : BaseFragmentMvp(), ItemsView, SwipeRefreshLayout.OnRefreshListener, ItemListener { @@ -94,8 +96,7 @@ class NewStoriesFragment : BaseFragmentMvp(), It } override fun onItemClicked(item: Item) { -// val intent = parseItemTypeForIntent(context, item) -// startActivity(intent) + ItemDetailsActivity.start(activity, itemId = item.id) } override fun injectDependencies(){ diff --git a/app/src/main/res/layout/activity_item_details.xml b/app/src/main/res/layout/activity_item_details.xml new file mode 100644 index 0000000..f004d6d --- /dev/null +++ b/app/src/main/res/layout/activity_item_details.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/item_details.xml b/app/src/main/res/layout/item_details.xml new file mode 100644 index 0000000..ef6fc4e --- /dev/null +++ b/app/src/main/res/layout/item_details.xml @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index c86a563..d8145d9 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -8,4 +8,7 @@ 72dp 8dp 8dp + 180dp + 16dp + 16dp diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 76e94a8..52a453b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -13,6 +13,7 @@ save points %s •  +  •  %d comment @@ -20,8 +21,8 @@ - %d point •  - %d points •  + %d point + %d points diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 2853880..d62c1c3 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -10,7 +10,7 @@ @color/colorAccent @color/textHighlightColor - + @@ -19,4 +19,8 @@ @color/white +