Ver Fonte

Changed project structure

Vadik Sirekanyan há 7 anos atrás
pai
commit
583e98ab97
70 ficheiros alterados com 286 adições e 246 exclusões
  1. 5 5
      app/src/main/AndroidManifest.xml
  2. 0 1
      app/src/main/java/me/vadik/knigopis/App.kt
  3. 3 3
      app/src/main/java/me/vadik/knigopis/Router.kt
  4. 2 2
      app/src/main/java/me/vadik/knigopis/common/Adapter.kt
  5. 1 1
      app/src/main/java/me/vadik/knigopis/common/NetworkChecker.kt
  6. 4 4
      app/src/main/java/me/vadik/knigopis/common/adapter/AbstractBooksAdapter.kt
  7. 1 1
      app/src/main/java/me/vadik/knigopis/common/adapter/BookViewHolder.kt
  8. 1 1
      app/src/main/java/me/vadik/knigopis/common/extensions/activity.kt
  9. 1 1
      app/src/main/java/me/vadik/knigopis/common/extensions/context.kt
  10. 1 1
      app/src/main/java/me/vadik/knigopis/common/extensions/image_view.kt
  11. 1 1
      app/src/main/java/me/vadik/knigopis/common/extensions/view.kt
  12. 1 1
      app/src/main/java/me/vadik/knigopis/common/extensions/view_group.kt
  13. 2 1
      app/src/main/java/me/vadik/knigopis/common/utils.kt
  14. 2 2
      app/src/main/java/me/vadik/knigopis/common/view/dialog/DialogFactory.kt
  15. 1 1
      app/src/main/java/me/vadik/knigopis/common/view/dialog/DialogItem.kt
  16. 1 1
      app/src/main/java/me/vadik/knigopis/common/view/header/HeaderItemDecoration.java
  17. 1 1
      app/src/main/java/me/vadik/knigopis/common/view/header/StickyHeaderInterface.java
  18. 21 18
      app/src/main/java/me/vadik/knigopis/dependency.kt
  19. 42 28
      app/src/main/java/me/vadik/knigopis/feature/MainActivity.kt
  20. 14 13
      app/src/main/java/me/vadik/knigopis/feature/book/BookActivity.kt
  21. 2 2
      app/src/main/java/me/vadik/knigopis/feature/book/CoverPagerAdapter.kt
  22. 19 15
      app/src/main/java/me/vadik/knigopis/feature/books/BooksAdapter.kt
  23. 2 2
      app/src/main/java/me/vadik/knigopis/feature/notes/NoteViewHolder.kt
  24. 4 4
      app/src/main/java/me/vadik/knigopis/feature/notes/NotesAdapter.kt
  25. 7 9
      app/src/main/java/me/vadik/knigopis/feature/profile/ProfileActivity.kt
  26. 7 7
      app/src/main/java/me/vadik/knigopis/feature/user/BooksAdapter.kt
  27. 9 9
      app/src/main/java/me/vadik/knigopis/feature/user/UserActivity.kt
  28. 6 6
      app/src/main/java/me/vadik/knigopis/feature/user/UserInteractor.kt
  29. 7 2
      app/src/main/java/me/vadik/knigopis/feature/user/behavior/BehaviorHelper.kt
  30. 3 2
      app/src/main/java/me/vadik/knigopis/feature/user/behavior/SimpleBehavior.kt
  31. 1 1
      app/src/main/java/me/vadik/knigopis/feature/user/behavior/SimpleViewState.kt
  32. 1 1
      app/src/main/java/me/vadik/knigopis/feature/users/SocialNetwork.kt
  33. 1 1
      app/src/main/java/me/vadik/knigopis/feature/users/UriItem.kt
  34. 4 4
      app/src/main/java/me/vadik/knigopis/feature/users/UserViewHolder.kt
  35. 6 6
      app/src/main/java/me/vadik/knigopis/feature/users/UsersAdapter.kt
  36. 0 3
      app/src/main/java/me/vadik/knigopis/model/ImageThumbnail.kt
  37. 0 3
      app/src/main/java/me/vadik/knigopis/model/Profile.kt
  38. 5 5
      app/src/main/java/me/vadik/knigopis/repository/BookOrganizer.kt
  39. 6 6
      app/src/main/java/me/vadik/knigopis/repository/BookRepository.kt
  40. 1 1
      app/src/main/java/me/vadik/knigopis/repository/Configuration.kt
  41. 4 4
      app/src/main/java/me/vadik/knigopis/repository/KAuth.kt
  42. 6 5
      app/src/main/java/me/vadik/knigopis/repository/NoteRepository.kt
  43. 6 6
      app/src/main/java/me/vadik/knigopis/repository/SubscriptionRepository.kt
  44. 5 5
      app/src/main/java/me/vadik/knigopis/repository/api/BookCoverSearch.kt
  45. 4 4
      app/src/main/java/me/vadik/knigopis/repository/api/Endpoint.kt
  46. 2 2
      app/src/main/java/me/vadik/knigopis/repository/api/ImageEndpoint.kt
  47. 2 2
      app/src/main/java/me/vadik/knigopis/repository/api/gson/ImageThumbnailDeserializer.kt
  48. 1 1
      app/src/main/java/me/vadik/knigopis/repository/cache/AvatarCache.kt
  49. 14 8
      app/src/main/java/me/vadik/knigopis/repository/cache/BookCache.kt
  50. 1 1
      app/src/main/java/me/vadik/knigopis/repository/cache/BookCoverCache.kt
  51. 9 6
      app/src/main/java/me/vadik/knigopis/repository/cache/NoteCache.kt
  52. 11 7
      app/src/main/java/me/vadik/knigopis/repository/cache/SubscriptionCache.kt
  53. 1 1
      app/src/main/java/me/vadik/knigopis/repository/cache/common/CacheKey.kt
  54. 1 1
      app/src/main/java/me/vadik/knigopis/repository/cache/common/CommonCache.kt
  55. 2 2
      app/src/main/java/me/vadik/knigopis/repository/model/Book.kt
  56. 1 1
      app/src/main/java/me/vadik/knigopis/repository/model/BookHeader.kt
  57. 1 1
      app/src/main/java/me/vadik/knigopis/repository/model/Credentials.kt
  58. 1 1
      app/src/main/java/me/vadik/knigopis/repository/model/CurrentTab.kt
  59. 1 1
      app/src/main/java/me/vadik/knigopis/repository/model/FinishedBook.kt
  60. 1 1
      app/src/main/java/me/vadik/knigopis/repository/model/FinishedBookToSend.kt
  61. 3 0
      app/src/main/java/me/vadik/knigopis/repository/model/ImageThumbnail.kt
  62. 1 1
      app/src/main/java/me/vadik/knigopis/repository/model/PlannedBook.kt
  63. 1 1
      app/src/main/java/me/vadik/knigopis/repository/model/PlannedBookToSend.kt
  64. 3 0
      app/src/main/java/me/vadik/knigopis/repository/model/Profile.kt
  65. 1 1
      app/src/main/java/me/vadik/knigopis/repository/model/note/Identity.kt
  66. 1 1
      app/src/main/java/me/vadik/knigopis/repository/model/note/Note.kt
  67. 2 2
      app/src/main/java/me/vadik/knigopis/repository/model/subscription/SubUser.kt
  68. 1 1
      app/src/main/java/me/vadik/knigopis/repository/model/subscription/Subscription.kt
  69. 1 1
      app/src/main/res/layout/activity_main.xml
  70. 2 2
      app/src/main/res/layout/user_activity.xml

+ 5 - 5
app/src/main/AndroidManifest.xml

@@ -20,7 +20,7 @@
         tools:replace="allowBackup,label">
 
         <activity
-            android:name=".MainActivity"
+            android:name=".feature.MainActivity"
             android:label="@string/common.title.app"
             android:launchMode="singleTop">
             <intent-filter>
@@ -37,14 +37,14 @@
             </intent-filter>
         </activity>
 
-        <activity android:name=".BookActivity"/>
+        <activity android:name="me.vadik.knigopis.feature.book.BookActivity"/>
 
         <activity
-            android:name=".user.UserActivity"
-            android:parentActivityName=".MainActivity"/>
+            android:name="me.vadik.knigopis.feature.user.UserActivity"
+            android:parentActivityName=".feature.MainActivity"/>
 
         <activity
-            android:name=".profile.ProfileActivity"
+            android:name="me.vadik.knigopis.feature.profile.ProfileActivity"
             android:screenOrientation="portrait"
             android:theme="@style/ProfileAppTheme" />
 

+ 0 - 1
app/src/main/java/me/vadik/knigopis/App.kt

@@ -1,7 +1,6 @@
 package me.vadik.knigopis
 
 import android.app.Application
-import me.vadik.knigopis.dependency.appModule
 import org.koin.android.ext.android.startKoin
 
 class App : Application() {

+ 3 - 3
app/src/main/java/me/vadik/knigopis/Router.kt

@@ -1,10 +1,10 @@
 package me.vadik.knigopis
 
 import android.net.Uri
-import me.vadik.knigopis.model.Book
+import me.vadik.knigopis.repository.model.Book
 
 interface Router {
-    fun openEditBookScreen(book: Book)
+    fun openBookScreen(book: Book)
     fun openUserScreen(id: String, name: String, avatar: String?)
-    fun openBrowser(uri: Uri)
+    fun openWebPage(uri: Uri)
 }

+ 2 - 2
app/src/main/java/me/vadik/knigopis/adapters/Adapter.kt → app/src/main/java/me/vadik/knigopis/common/Adapter.kt

@@ -1,10 +1,10 @@
-package me.vadik.knigopis.adapters
+package me.vadik.knigopis.common
 
 import android.support.annotation.IdRes
 import android.support.v7.widget.RecyclerView
 import android.view.View
 import android.view.ViewGroup
-import me.vadik.knigopis.utils.inflate
+import me.vadik.knigopis.common.extensions.inflate
 
 class Adapter<T>(
     private val items: List<T>,

+ 1 - 1
app/src/main/java/me/vadik/knigopis/common/NetworkChecker.kt

@@ -1,7 +1,7 @@
 package me.vadik.knigopis.common
 
 import android.app.Application
-import me.vadik.knigopis.utils.systemConnectivityManager
+import me.vadik.knigopis.common.extensions.systemConnectivityManager
 
 interface NetworkChecker {
 

+ 4 - 4
app/src/main/java/me/vadik/knigopis/common/adapter/AbstractBooksAdapter.kt

@@ -3,10 +3,10 @@ package me.vadik.knigopis.common.adapter
 import android.support.annotation.LayoutRes
 import android.support.v7.widget.RecyclerView
 import android.view.ViewGroup
-import me.vadik.knigopis.utils.inflate
-import me.vadik.knigopis.model.Book
-import me.vadik.knigopis.model.BookHeader
-import me.vadik.knigopis.model.FinishedBook
+import me.vadik.knigopis.common.extensions.inflate
+import me.vadik.knigopis.repository.model.Book
+import me.vadik.knigopis.repository.model.BookHeader
+import me.vadik.knigopis.repository.model.FinishedBook
 
 private const val HEADER_TYPE = 0
 private const val ITEM_TYPE = 1

+ 1 - 1
app/src/main/java/me/vadik/knigopis/common/adapter/BookViewHolder.kt

@@ -6,7 +6,7 @@ import android.view.View
 import kotlinx.android.synthetic.main.header.view.*
 import kotlinx.android.synthetic.main.user_book.view.*
 import me.vadik.knigopis.R
-import me.vadik.knigopis.utils.showNow
+import me.vadik.knigopis.common.extensions.showNow
 
 sealed class BookViewHolder(view: View) : RecyclerView.ViewHolder(view)
 

+ 1 - 1
app/src/main/java/me/vadik/knigopis/utils/activity.kt → app/src/main/java/me/vadik/knigopis/common/extensions/activity.kt

@@ -1,4 +1,4 @@
-package me.vadik.knigopis.utils
+package me.vadik.knigopis.common.extensions
 
 import android.app.Activity
 

+ 1 - 1
app/src/main/java/me/vadik/knigopis/utils/context.kt → app/src/main/java/me/vadik/knigopis/common/extensions/context.kt

@@ -1,4 +1,4 @@
-package me.vadik.knigopis.utils
+package me.vadik.knigopis.common.extensions
 
 import android.content.ClipboardManager
 import android.content.Context

+ 1 - 1
app/src/main/java/me/vadik/knigopis/utils/image_view.kt → app/src/main/java/me/vadik/knigopis/common/extensions/image_view.kt

@@ -1,4 +1,4 @@
-package me.vadik.knigopis.utils
+package me.vadik.knigopis.common.extensions
 
 import android.widget.ImageView
 import com.bumptech.glide.Glide

+ 1 - 1
app/src/main/java/me/vadik/knigopis/utils/view.kt → app/src/main/java/me/vadik/knigopis/common/extensions/view.kt

@@ -1,4 +1,4 @@
-package me.vadik.knigopis.utils
+package me.vadik.knigopis.common.extensions
 
 import android.support.annotation.StringRes
 import android.support.design.widget.Snackbar

+ 1 - 1
app/src/main/java/me/vadik/knigopis/utils/view_group.kt → app/src/main/java/me/vadik/knigopis/common/extensions/view_group.kt

@@ -1,4 +1,4 @@
-package me.vadik.knigopis.utils
+package me.vadik.knigopis.common.extensions
 
 import android.support.annotation.LayoutRes
 import android.view.LayoutInflater

+ 2 - 1
app/src/main/java/me/vadik/knigopis/extensions.kt → app/src/main/java/me/vadik/knigopis/common/utils.kt

@@ -1,4 +1,4 @@
-package me.vadik.knigopis
+package me.vadik.knigopis.common
 
 import android.animation.ObjectAnimator
 import android.app.Activity
@@ -23,6 +23,7 @@ import io.reactivex.Completable
 import io.reactivex.Single
 import io.reactivex.android.schedulers.AndroidSchedulers
 import io.reactivex.schedulers.Schedulers
+import me.vadik.knigopis.App
 
 private const val TAG = "Knigopis"
 private val HTTP_SCHEMES = setOf("http", "https")

+ 2 - 2
app/src/main/java/me/vadik/knigopis/dialog/DialogFactory.kt → app/src/main/java/me/vadik/knigopis/common/view/dialog/DialogFactory.kt

@@ -1,11 +1,11 @@
-package me.vadik.knigopis.dialog
+package me.vadik.knigopis.common.view.dialog
 
 import android.content.Context
 import android.support.design.widget.BottomSheetDialog
 import kotlinx.android.synthetic.main.bottom_sheet_dialog_item.view.*
 import kotlinx.android.synthetic.main.bottom_sheet_dialog_view.*
 import me.vadik.knigopis.R
-import me.vadik.knigopis.utils.inflate
+import me.vadik.knigopis.common.extensions.inflate
 
 interface DialogFactory {
 

+ 1 - 1
app/src/main/java/me/vadik/knigopis/dialog/DialogItem.kt → app/src/main/java/me/vadik/knigopis/common/view/dialog/DialogItem.kt

@@ -1,4 +1,4 @@
-package me.vadik.knigopis.dialog
+package me.vadik.knigopis.common.view.dialog
 
 import android.support.annotation.DrawableRes
 import me.vadik.knigopis.common.IntegerStringResource

+ 1 - 1
app/src/main/java/me/vadik/knigopis/common/HeaderItemDecoration.java → app/src/main/java/me/vadik/knigopis/common/view/header/HeaderItemDecoration.java

@@ -1,4 +1,4 @@
-package me.vadik.knigopis.common;
+package me.vadik.knigopis.common.view.header;
 
 import android.graphics.Canvas;
 import android.support.annotation.NonNull;

+ 1 - 1
app/src/main/java/me/vadik/knigopis/common/StickyHeaderInterface.java → app/src/main/java/me/vadik/knigopis/common/view/header/StickyHeaderInterface.java

@@ -1,4 +1,4 @@
-package me.vadik.knigopis.common;
+package me.vadik.knigopis.common.view.header;
 
 import android.view.View;
 

+ 21 - 18
app/src/main/java/me/vadik/knigopis/dependency/modules.kt → app/src/main/java/me/vadik/knigopis/dependency.kt

@@ -1,24 +1,27 @@
-package me.vadik.knigopis.dependency
+package me.vadik.knigopis
 
 import com.google.gson.Gson
 import com.google.gson.GsonBuilder
-import me.vadik.knigopis.BuildConfig
-import me.vadik.knigopis.api.BookCoverSearch
-import me.vadik.knigopis.api.BookCoverSearchImpl
-import me.vadik.knigopis.api.Endpoint
-import me.vadik.knigopis.api.ImageEndpoint
-import me.vadik.knigopis.api.gson.ImageThumbnailDeserializer
-import me.vadik.knigopis.auth.KAuth
-import me.vadik.knigopis.auth.KAuthImpl
-import me.vadik.knigopis.common.*
-import me.vadik.knigopis.data.*
-import me.vadik.knigopis.dialog.BottomSheetDialogFactory
-import me.vadik.knigopis.dialog.DialogFactory
-import me.vadik.knigopis.model.FinishedBook
-import me.vadik.knigopis.model.ImageThumbnail
-import me.vadik.knigopis.model.PlannedBook
-import me.vadik.knigopis.user.UserInteractor
-import me.vadik.knigopis.user.UserInteractorImpl
+import me.vadik.knigopis.common.NetworkChecker
+import me.vadik.knigopis.common.NetworkCheckerImpl
+import me.vadik.knigopis.common.ResourceProvider
+import me.vadik.knigopis.common.ResourceProviderImpl
+import me.vadik.knigopis.common.view.dialog.BottomSheetDialogFactory
+import me.vadik.knigopis.common.view.dialog.DialogFactory
+import me.vadik.knigopis.feature.user.UserInteractor
+import me.vadik.knigopis.feature.user.UserInteractorImpl
+import me.vadik.knigopis.repository.*
+import me.vadik.knigopis.repository.api.BookCoverSearch
+import me.vadik.knigopis.repository.api.BookCoverSearchImpl
+import me.vadik.knigopis.repository.api.Endpoint
+import me.vadik.knigopis.repository.api.ImageEndpoint
+import me.vadik.knigopis.repository.api.gson.ImageThumbnailDeserializer
+import me.vadik.knigopis.repository.cache.*
+import me.vadik.knigopis.repository.cache.common.CommonCache
+import me.vadik.knigopis.repository.cache.common.CommonCacheImpl
+import me.vadik.knigopis.repository.model.FinishedBook
+import me.vadik.knigopis.repository.model.ImageThumbnail
+import me.vadik.knigopis.repository.model.PlannedBook
 import okhttp3.OkHttpClient
 import okhttp3.logging.HttpLoggingInterceptor
 import org.koin.dsl.context.Context

+ 42 - 28
app/src/main/java/me/vadik/knigopis/MainActivity.kt → app/src/main/java/me/vadik/knigopis/feature/MainActivity.kt

@@ -1,4 +1,4 @@
-package me.vadik.knigopis
+package me.vadik.knigopis.feature
 
 import android.Manifest.permission.READ_PHONE_STATE
 import android.content.Intent
@@ -21,26 +21,31 @@ import kotlinx.android.synthetic.main.activity_main.*
 import kotlinx.android.synthetic.main.books_page.*
 import kotlinx.android.synthetic.main.notes_page.*
 import kotlinx.android.synthetic.main.users_page.*
-import me.vadik.knigopis.adapters.BooksAdapter
-import me.vadik.knigopis.adapters.notes.NotesAdapter
-import me.vadik.knigopis.adapters.users.UsersAdapter
-import me.vadik.knigopis.api.BookCoverSearch
-import me.vadik.knigopis.api.Endpoint
-import me.vadik.knigopis.auth.KAuth
-import me.vadik.knigopis.common.HeaderItemDecoration
-import me.vadik.knigopis.common.ResourceProvider
-import me.vadik.knigopis.common.StickyHeaderInterface
-import me.vadik.knigopis.data.*
-import me.vadik.knigopis.dialog.DialogFactory
-import me.vadik.knigopis.model.*
-import me.vadik.knigopis.model.CurrentTab.*
-import me.vadik.knigopis.model.note.Note
-import me.vadik.knigopis.model.subscription.Subscription
-import me.vadik.knigopis.profile.createProfileIntent
-import me.vadik.knigopis.user.createUserIntent
-import me.vadik.knigopis.utils.showNow
-import me.vadik.knigopis.utils.startActivityOrNull
-import me.vadik.knigopis.utils.toast
+import me.vadik.knigopis.*
+import me.vadik.knigopis.common.*
+import me.vadik.knigopis.feature.books.BooksAdapter
+import me.vadik.knigopis.feature.notes.NotesAdapter
+import me.vadik.knigopis.feature.users.UsersAdapter
+import me.vadik.knigopis.repository.api.BookCoverSearch
+import me.vadik.knigopis.repository.api.Endpoint
+import me.vadik.knigopis.repository.KAuth
+import me.vadik.knigopis.feature.book.createEditBookIntent
+import me.vadik.knigopis.feature.book.createNewBookIntent
+import me.vadik.knigopis.repository.cache.AvatarCache
+import me.vadik.knigopis.repository.cache.AvatarCacheImpl
+import me.vadik.knigopis.common.view.header.HeaderItemDecoration
+import me.vadik.knigopis.common.view.header.StickyHeaderInterface
+import me.vadik.knigopis.repository.*
+import me.vadik.knigopis.common.view.dialog.DialogFactory
+import me.vadik.knigopis.repository.model.*
+import me.vadik.knigopis.repository.model.CurrentTab.*
+import me.vadik.knigopis.repository.model.note.Note
+import me.vadik.knigopis.repository.model.subscription.Subscription
+import me.vadik.knigopis.feature.profile.createProfileIntent
+import me.vadik.knigopis.feature.user.createUserIntent
+import me.vadik.knigopis.common.extensions.showNow
+import me.vadik.knigopis.common.extensions.startActivityOrNull
+import me.vadik.knigopis.common.extensions.toast
 import org.koin.android.ext.android.inject
 import retrofit2.HttpException
 
@@ -140,7 +145,9 @@ class MainActivity : AppCompatActivity(), Router {
         initNavigationView()
         initToolbar(toolbar)
         addBookButton.setOnClickListener {
-            startActivityForResult(createNewBookIntent(), BOOK_REQUEST_CODE)
+            startActivityForResult(createNewBookIntent(),
+                BOOK_REQUEST_CODE
+            )
         }
         booksRecyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
             override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
@@ -202,10 +209,14 @@ class MainActivity : AppCompatActivity(), Router {
         }
     }
 
-    override fun openEditBookScreen(book: Book) {
+    override fun openBookScreen(book: Book) {
         when (book) {
-            is PlannedBook -> startActivityForResult(createEditBookIntent(book), BOOK_REQUEST_CODE)
-            is FinishedBook -> startActivityForResult(createEditBookIntent(book), BOOK_REQUEST_CODE)
+            is PlannedBook -> startActivityForResult(createEditBookIntent(book),
+                BOOK_REQUEST_CODE
+            )
+            is FinishedBook -> startActivityForResult(createEditBookIntent(book),
+                BOOK_REQUEST_CODE
+            )
             else -> throw UnsupportedOperationException()
         }
     }
@@ -214,7 +225,7 @@ class MainActivity : AppCompatActivity(), Router {
         startActivity(createUserIntent(id, name, avatar))
     }
 
-    override fun openBrowser(uri: Uri) {
+    override fun openWebPage(uri: Uri) {
         startActivityOrNull(Intent(ACTION_VIEW, uri)) ?: toast(R.string.users_info_no_browser)
     }
 
@@ -291,7 +302,8 @@ class MainActivity : AppCompatActivity(), Router {
         profileOption = toolbar.menu.findItem(R.id.option_profile)
         val darkThemeOption = toolbar.menu.findItem(R.id.option_dark_theme)
         darkThemeOption.isChecked = config.isDarkTheme
-        darkThemeOption.isVisible = BuildConfig.DEBUG // todo: remove before release
+        darkThemeOption.isVisible =
+                BuildConfig.DEBUG // todo: remove before release
         toolbar.setOnClickListener {
             if (currentTab == HOME_TAB) {
                 config.sortingMode = if (config.sortingMode == 0) 1 else 0
@@ -308,7 +320,9 @@ class MainActivity : AppCompatActivity(), Router {
                         auth.logout()
                         refresh()
                     } else {
-                        startActivityForResult(auth.getTokenRequest(), ULOGIN_REQUEST_CODE)
+                        startActivityForResult(auth.getTokenRequest(),
+                            ULOGIN_REQUEST_CODE
+                        )
                     }
                     refreshOptionsMenu()
                 }

+ 14 - 13
app/src/main/java/me/vadik/knigopis/BookActivity.kt → app/src/main/java/me/vadik/knigopis/feature/book/BookActivity.kt

@@ -1,4 +1,4 @@
-package me.vadik.knigopis
+package me.vadik.knigopis.feature.book
 
 import android.content.Context
 import android.content.Intent
@@ -9,18 +9,19 @@ import android.view.View.VISIBLE
 import android.widget.SeekBar
 import android.widget.SeekBar.OnSeekBarChangeListener
 import kotlinx.android.synthetic.main.book_edit.*
-import me.vadik.knigopis.adapters.CoverPagerAdapter
-import me.vadik.knigopis.api.BookCoverSearch
-import me.vadik.knigopis.data.BookRepository
-import me.vadik.knigopis.data.Configuration
-import me.vadik.knigopis.model.FinishedBook
-import me.vadik.knigopis.model.FinishedBookToSend
-import me.vadik.knigopis.model.PlannedBook
-import me.vadik.knigopis.model.PlannedBookToSend
-import me.vadik.knigopis.utils.hideKeyboard
-import me.vadik.knigopis.utils.hideNow
-import me.vadik.knigopis.utils.showNow
-import me.vadik.knigopis.utils.toast
+import me.vadik.knigopis.*
+import me.vadik.knigopis.common.*
+import me.vadik.knigopis.repository.api.BookCoverSearch
+import me.vadik.knigopis.repository.BookRepository
+import me.vadik.knigopis.repository.Configuration
+import me.vadik.knigopis.repository.model.FinishedBook
+import me.vadik.knigopis.repository.model.FinishedBookToSend
+import me.vadik.knigopis.repository.model.PlannedBook
+import me.vadik.knigopis.repository.model.PlannedBookToSend
+import me.vadik.knigopis.common.extensions.hideKeyboard
+import me.vadik.knigopis.common.extensions.hideNow
+import me.vadik.knigopis.common.extensions.showNow
+import me.vadik.knigopis.common.extensions.toast
 import org.koin.android.ext.android.inject
 import java.util.*
 

+ 2 - 2
app/src/main/java/me/vadik/knigopis/adapters/CoverPagerAdapter.kt → app/src/main/java/me/vadik/knigopis/feature/book/CoverPagerAdapter.kt

@@ -1,4 +1,4 @@
-package me.vadik.knigopis.adapters
+package me.vadik.knigopis.feature.book
 
 import android.support.v4.view.PagerAdapter
 import android.view.View
@@ -8,7 +8,7 @@ import android.view.ViewGroup.LayoutParams.MATCH_PARENT
 import android.widget.ImageView
 import com.bumptech.glide.Glide
 import com.bumptech.glide.request.RequestOptions
-import me.vadik.knigopis.doOnSuccess
+import me.vadik.knigopis.common.doOnSuccess
 
 class CoverPagerAdapter(
     private val urls: List<String>,

+ 19 - 15
app/src/main/java/me/vadik/knigopis/adapters/BooksAdapter.kt → app/src/main/java/me/vadik/knigopis/feature/books/BooksAdapter.kt

@@ -1,4 +1,4 @@
-package me.vadik.knigopis.adapters
+package me.vadik.knigopis.feature.books
 
 import android.app.AlertDialog
 import android.view.View
@@ -9,18 +9,22 @@ import com.bumptech.glide.Glide
 import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions
 import com.bumptech.glide.request.RequestOptions
 import me.vadik.knigopis.*
-import me.vadik.knigopis.api.BookCoverSearch
-import me.vadik.knigopis.api.Endpoint
-import me.vadik.knigopis.auth.KAuth
-import me.vadik.knigopis.dialog.DialogFactory
-import me.vadik.knigopis.dialog.createDialogItem
-import me.vadik.knigopis.model.Book
-import me.vadik.knigopis.model.BookHeader
-import me.vadik.knigopis.model.FinishedBook
-import me.vadik.knigopis.model.PlannedBook
-import me.vadik.knigopis.utils.hideNow
-import me.vadik.knigopis.utils.showNow
-import me.vadik.knigopis.utils.toast
+import me.vadik.knigopis.common.Adapter
+import me.vadik.knigopis.common.io2main
+import me.vadik.knigopis.common.logError
+import me.vadik.knigopis.common.setProgressSmoothly
+import me.vadik.knigopis.repository.api.BookCoverSearch
+import me.vadik.knigopis.repository.api.Endpoint
+import me.vadik.knigopis.repository.KAuth
+import me.vadik.knigopis.common.view.dialog.DialogFactory
+import me.vadik.knigopis.common.view.dialog.createDialogItem
+import me.vadik.knigopis.repository.model.Book
+import me.vadik.knigopis.repository.model.BookHeader
+import me.vadik.knigopis.repository.model.FinishedBook
+import me.vadik.knigopis.repository.model.PlannedBook
+import me.vadik.knigopis.common.extensions.hideNow
+import me.vadik.knigopis.common.extensions.showNow
+import me.vadik.knigopis.common.extensions.toast
 
 class BooksAdapter(
     private val coverSearch: BookCoverSearch,
@@ -76,13 +80,13 @@ class BooksAdapter(
             }
             val book = books[bookIndex]
             setOnClickListener {
-                router.openEditBookScreen(book)
+                router.openBookScreen(book)
             }
             setOnLongClickListener {
                 dialogs.showDialog(
                     book.fullTitle,
                     createDialogItem(R.string.books_button_edit, R.drawable.ic_edit) {
-                        router.openEditBookScreen(book)
+                        router.openBookScreen(book)
                     },
                     createDialogItem(R.string.books_button_delete, R.drawable.ic_delete) {
                         onDeleteClicked(book)

+ 2 - 2
app/src/main/java/me/vadik/knigopis/adapters/notes/NoteViewHolder.kt → app/src/main/java/me/vadik/knigopis/feature/notes/NoteViewHolder.kt

@@ -1,10 +1,10 @@
-package me.vadik.knigopis.adapters.notes
+package me.vadik.knigopis.feature.notes
 
 import android.support.v7.widget.RecyclerView
 import android.text.format.DateUtils
 import android.view.View
 import kotlinx.android.synthetic.main.note.view.*
-import me.vadik.knigopis.utils.setCircleImage
+import me.vadik.knigopis.common.extensions.setCircleImage
 
 class NoteViewHolder(val view: View) : RecyclerView.ViewHolder(view) {
 

+ 4 - 4
app/src/main/java/me/vadik/knigopis/adapters/notes/NotesAdapter.kt → app/src/main/java/me/vadik/knigopis/feature/notes/NotesAdapter.kt

@@ -1,12 +1,12 @@
-package me.vadik.knigopis.adapters.notes
+package me.vadik.knigopis.feature.notes
 
 import android.support.v7.widget.RecyclerView
 import android.view.ViewGroup
 import me.vadik.knigopis.R
 import me.vadik.knigopis.Router
-import me.vadik.knigopis.data.AvatarCache
-import me.vadik.knigopis.utils.inflate
-import me.vadik.knigopis.model.note.Note
+import me.vadik.knigopis.repository.cache.AvatarCache
+import me.vadik.knigopis.common.extensions.inflate
+import me.vadik.knigopis.repository.model.note.Note
 
 class NotesAdapter(
     private val notes: List<Note>,

+ 7 - 9
app/src/main/java/me/vadik/knigopis/profile/ProfileActivity.kt → app/src/main/java/me/vadik/knigopis/feature/profile/ProfileActivity.kt

@@ -1,4 +1,4 @@
-package me.vadik.knigopis.profile
+package me.vadik.knigopis.feature.profile
 
 import android.content.Context
 import android.content.Intent
@@ -10,14 +10,12 @@ import android.view.animation.AccelerateInterpolator
 import android.view.inputmethod.EditorInfo
 import kotlinx.android.synthetic.main.profile_activity.*
 import me.vadik.knigopis.*
-import me.vadik.knigopis.api.Endpoint
-import me.vadik.knigopis.auth.KAuth
-import me.vadik.knigopis.common.clearAndAddAll
-import me.vadik.knigopis.common.createTextShareIntent
-import me.vadik.knigopis.common.random
-import me.vadik.knigopis.utils.setCircleImage
-import me.vadik.knigopis.model.*
-import me.vadik.knigopis.utils.*
+import me.vadik.knigopis.common.*
+import me.vadik.knigopis.repository.api.Endpoint
+import me.vadik.knigopis.repository.KAuth
+import me.vadik.knigopis.common.extensions.setCircleImage
+import me.vadik.knigopis.repository.model.*
+import me.vadik.knigopis.common.extensions.*
 import org.koin.android.ext.android.inject
 
 fun Context.createProfileIntent() = Intent(this, ProfileActivity::class.java)

+ 7 - 7
app/src/main/java/me/vadik/knigopis/adapters/books/BooksAdapter.kt → app/src/main/java/me/vadik/knigopis/feature/user/BooksAdapter.kt

@@ -1,15 +1,15 @@
-package me.vadik.knigopis.adapters.books
+package me.vadik.knigopis.feature.user
 
 import me.vadik.knigopis.R
 import me.vadik.knigopis.common.adapter.AbstractBooksAdapter
 import me.vadik.knigopis.common.adapter.BookHeaderViewHolder
 import me.vadik.knigopis.common.adapter.BookItemViewHolder
-import me.vadik.knigopis.createNewBookIntent
-import me.vadik.knigopis.dialog.DialogFactory
-import me.vadik.knigopis.dialog.createDialogItem
-import me.vadik.knigopis.model.Book
-import me.vadik.knigopis.model.BookHeader
-import me.vadik.knigopis.model.FinishedBook
+import me.vadik.knigopis.feature.book.createNewBookIntent
+import me.vadik.knigopis.common.view.dialog.DialogFactory
+import me.vadik.knigopis.common.view.dialog.createDialogItem
+import me.vadik.knigopis.repository.model.Book
+import me.vadik.knigopis.repository.model.BookHeader
+import me.vadik.knigopis.repository.model.FinishedBook
 
 class BooksAdapter(
     books: List<Book>,

+ 9 - 9
app/src/main/java/me/vadik/knigopis/user/UserActivity.kt → app/src/main/java/me/vadik/knigopis/feature/user/UserActivity.kt

@@ -1,4 +1,4 @@
-package me.vadik.knigopis.user
+package me.vadik.knigopis.feature.user
 
 import android.content.ClipData
 import android.content.Context
@@ -12,14 +12,14 @@ import android.view.View
 import android.widget.TextView
 import kotlinx.android.synthetic.main.user_activity.*
 import me.vadik.knigopis.*
-import me.vadik.knigopis.adapters.books.BooksAdapter
-import me.vadik.knigopis.common.HeaderItemDecoration
-import me.vadik.knigopis.common.StickyHeaderInterface
-import me.vadik.knigopis.data.Configuration
-import me.vadik.knigopis.dialog.DialogFactory
-import me.vadik.knigopis.model.Book
-import me.vadik.knigopis.model.BookHeader
-import me.vadik.knigopis.utils.*
+import me.vadik.knigopis.common.*
+import me.vadik.knigopis.common.view.header.HeaderItemDecoration
+import me.vadik.knigopis.common.view.header.StickyHeaderInterface
+import me.vadik.knigopis.repository.Configuration
+import me.vadik.knigopis.common.view.dialog.DialogFactory
+import me.vadik.knigopis.repository.model.Book
+import me.vadik.knigopis.repository.model.BookHeader
+import me.vadik.knigopis.common.extensions.*
 import org.koin.android.ext.android.inject
 
 private const val EXTRA_USER_ID = "me.vadik.knigopis.extra_user_id"

+ 6 - 6
app/src/main/java/me/vadik/knigopis/user/UserInteractor.kt → app/src/main/java/me/vadik/knigopis/feature/user/UserInteractor.kt

@@ -1,12 +1,12 @@
-package me.vadik.knigopis.user
+package me.vadik.knigopis.feature.user
 
 import io.reactivex.Completable
 import io.reactivex.Single
-import me.vadik.knigopis.api.Endpoint
-import me.vadik.knigopis.auth.KAuth
-import me.vadik.knigopis.io2main
-import me.vadik.knigopis.model.Book
-import me.vadik.knigopis.model.BookHeader
+import me.vadik.knigopis.repository.api.Endpoint
+import me.vadik.knigopis.repository.KAuth
+import me.vadik.knigopis.common.io2main
+import me.vadik.knigopis.repository.model.Book
+import me.vadik.knigopis.repository.model.BookHeader
 
 interface UserInteractor {
 

+ 7 - 2
app/src/main/java/me/vadik/knigopis/view/BehaviorHelper.kt → app/src/main/java/me/vadik/knigopis/feature/user/behavior/BehaviorHelper.kt

@@ -1,8 +1,13 @@
-package me.vadik.knigopis.view
+package me.vadik.knigopis.feature.user.behavior
 
 import android.view.View
 
-val View.simpleState get() = SimpleViewState(x.toInt(), y.toInt(), width, height)
+val View.simpleState get() = SimpleViewState(
+    x.toInt(),
+    y.toInt(),
+    width,
+    height
+)
 
 class BehaviorHelper(val start: SimpleViewState, val end: SimpleViewState) {
 

+ 3 - 2
app/src/main/java/me/vadik/knigopis/view/SimpleBehavior.kt → app/src/main/java/me/vadik/knigopis/feature/user/behavior/SimpleBehavior.kt

@@ -1,4 +1,4 @@
-package me.vadik.knigopis.view
+package me.vadik.knigopis.feature.user.behavior
 
 import android.content.Context
 import android.support.design.widget.CoordinatorLayout
@@ -43,7 +43,8 @@ class SimpleBehavior(
             val ratio = Math.abs(dependency.y) / (maxHeight - minHeight)
             helper.updateDimensions(child, Math.min(1f, ratio))
         } ?: run {
-            behaviorHelper = BehaviorHelper(child.simpleState, endState)
+            behaviorHelper =
+                    BehaviorHelper(child.simpleState, endState)
         }
         return false
     }

+ 1 - 1
app/src/main/java/me/vadik/knigopis/view/SimpleViewState.kt → app/src/main/java/me/vadik/knigopis/feature/user/behavior/SimpleViewState.kt

@@ -1,4 +1,4 @@
-package me.vadik.knigopis.view
+package me.vadik.knigopis.feature.user.behavior
 
 class SimpleViewState(
     val x: Int,

+ 1 - 1
app/src/main/java/me/vadik/knigopis/adapters/users/SocialNetwork.kt → app/src/main/java/me/vadik/knigopis/feature/users/SocialNetwork.kt

@@ -1,4 +1,4 @@
-package me.vadik.knigopis.adapters.users
+package me.vadik.knigopis.feature.users
 
 import android.net.Uri
 import android.support.annotation.DrawableRes

+ 1 - 1
app/src/main/java/me/vadik/knigopis/adapters/users/UriItem.kt → app/src/main/java/me/vadik/knigopis/feature/users/UriItem.kt

@@ -1,4 +1,4 @@
-package me.vadik.knigopis.adapters.users
+package me.vadik.knigopis.feature.users
 
 import android.net.Uri
 import me.vadik.knigopis.R

+ 4 - 4
app/src/main/java/me/vadik/knigopis/adapters/users/UserViewHolder.kt → app/src/main/java/me/vadik/knigopis/feature/users/UserViewHolder.kt

@@ -1,12 +1,12 @@
-package me.vadik.knigopis.adapters.users
+package me.vadik.knigopis.feature.users
 
 import android.support.v7.widget.RecyclerView
 import android.view.View
 import kotlinx.android.synthetic.main.user.view.*
 import me.vadik.knigopis.R
-import me.vadik.knigopis.utils.setCircleImage
-import me.vadik.knigopis.getHtmlString
-import me.vadik.knigopis.utils.showNow
+import me.vadik.knigopis.common.extensions.setCircleImage
+import me.vadik.knigopis.common.getHtmlString
+import me.vadik.knigopis.common.extensions.showNow
 
 class UserViewHolder(val view: View) : RecyclerView.ViewHolder(view) {
 

+ 6 - 6
app/src/main/java/me/vadik/knigopis/adapters/users/UsersAdapter.kt → app/src/main/java/me/vadik/knigopis/feature/users/UsersAdapter.kt

@@ -1,14 +1,14 @@
-package me.vadik.knigopis.adapters.users
+package me.vadik.knigopis.feature.users
 
 import android.support.v7.widget.RecyclerView
 import android.view.ViewGroup
 import me.vadik.knigopis.R
 import me.vadik.knigopis.Router
 import me.vadik.knigopis.common.ResourceProvider
-import me.vadik.knigopis.dialog.DialogFactory
-import me.vadik.knigopis.dialog.createDialogItem
-import me.vadik.knigopis.utils.inflate
-import me.vadik.knigopis.model.subscription.Subscription
+import me.vadik.knigopis.common.view.dialog.DialogFactory
+import me.vadik.knigopis.common.view.dialog.createDialogItem
+import me.vadik.knigopis.common.extensions.inflate
+import me.vadik.knigopis.repository.model.subscription.Subscription
 
 class UsersAdapter(
     private val users: List<Subscription>,
@@ -41,7 +41,7 @@ class UsersAdapter(
             .distinctBy(UriItem::title)
             .map { uriItem ->
                 createDialogItem(uriItem.title, uriItem.iconRes) {
-                    router.openBrowser(uriItem.uri)
+                    router.openWebPage(uriItem.uri)
                 }
             }
         holder.view.setOnLongClickListener {

+ 0 - 3
app/src/main/java/me/vadik/knigopis/model/ImageThumbnail.kt

@@ -1,3 +0,0 @@
-package me.vadik.knigopis.model
-
-class ImageThumbnail(val urls: List<String>)

+ 0 - 3
app/src/main/java/me/vadik/knigopis/model/Profile.kt

@@ -1,3 +0,0 @@
-package me.vadik.knigopis.model
-
-class Profile(val nickname: String, val profile: String)

+ 5 - 5
app/src/main/java/me/vadik/knigopis/data/BookOrganizer.kt → app/src/main/java/me/vadik/knigopis/repository/BookOrganizer.kt

@@ -1,11 +1,11 @@
-package me.vadik.knigopis.data
+package me.vadik.knigopis.repository
 
 import me.vadik.knigopis.R
 import me.vadik.knigopis.common.ResourceProvider
-import me.vadik.knigopis.model.Book
-import me.vadik.knigopis.model.BookHeader
-import me.vadik.knigopis.model.FinishedBook
-import me.vadik.knigopis.model.PlannedBook
+import me.vadik.knigopis.repository.model.Book
+import me.vadik.knigopis.repository.model.BookHeader
+import me.vadik.knigopis.repository.model.FinishedBook
+import me.vadik.knigopis.repository.model.PlannedBook
 
 interface BookOrganizer<T : Book> {
 

+ 6 - 6
app/src/main/java/me/vadik/knigopis/data/BookRepository.kt → app/src/main/java/me/vadik/knigopis/repository/BookRepository.kt

@@ -1,14 +1,14 @@
-package me.vadik.knigopis.data
+package me.vadik.knigopis.repository
 
 import io.reactivex.Completable
 import io.reactivex.Single
 import io.reactivex.rxkotlin.Singles
-import me.vadik.knigopis.api.Endpoint
-import me.vadik.knigopis.auth.KAuth
+import me.vadik.knigopis.repository.api.Endpoint
+import me.vadik.knigopis.repository.cache.BookCache
 import me.vadik.knigopis.common.NetworkChecker
-import me.vadik.knigopis.logError
-import me.vadik.knigopis.logWarn
-import me.vadik.knigopis.model.*
+import me.vadik.knigopis.common.logError
+import me.vadik.knigopis.common.logWarn
+import me.vadik.knigopis.repository.model.*
 
 interface BookRepository {
 

+ 1 - 1
app/src/main/java/me/vadik/knigopis/data/Configuration.kt → app/src/main/java/me/vadik/knigopis/repository/Configuration.kt

@@ -1,4 +1,4 @@
-package me.vadik.knigopis.data
+package me.vadik.knigopis.repository
 
 import android.content.Context
 

+ 4 - 4
app/src/main/java/me/vadik/knigopis/auth/KAuth.kt → app/src/main/java/me/vadik/knigopis/repository/KAuth.kt

@@ -1,10 +1,10 @@
-package me.vadik.knigopis.auth
+package me.vadik.knigopis.repository
 
 import android.content.Context
 import android.content.Intent
-import me.vadik.knigopis.api.Endpoint
-import me.vadik.knigopis.io2main
-import me.vadik.knigopis.logError
+import me.vadik.knigopis.repository.api.Endpoint
+import me.vadik.knigopis.common.io2main
+import me.vadik.knigopis.common.logError
 import ru.ulogin.sdk.UloginAuthActivity
 import java.util.*
 

+ 6 - 5
app/src/main/java/me/vadik/knigopis/data/NoteRepository.kt → app/src/main/java/me/vadik/knigopis/repository/NoteRepository.kt

@@ -1,12 +1,13 @@
-package me.vadik.knigopis.data
+package me.vadik.knigopis.repository
 
 import io.reactivex.Completable
 import io.reactivex.Single
-import me.vadik.knigopis.api.Endpoint
+import me.vadik.knigopis.repository.api.Endpoint
+import me.vadik.knigopis.repository.cache.NoteCache
 import me.vadik.knigopis.common.NetworkChecker
-import me.vadik.knigopis.logError
-import me.vadik.knigopis.logWarn
-import me.vadik.knigopis.model.note.Note
+import me.vadik.knigopis.common.logError
+import me.vadik.knigopis.common.logWarn
+import me.vadik.knigopis.repository.model.note.Note
 
 interface NoteRepository {
 

+ 6 - 6
app/src/main/java/me/vadik/knigopis/data/SubscriptionRepository.kt → app/src/main/java/me/vadik/knigopis/repository/SubscriptionRepository.kt

@@ -1,13 +1,13 @@
-package me.vadik.knigopis.data
+package me.vadik.knigopis.repository
 
 import io.reactivex.Completable
 import io.reactivex.Single
-import me.vadik.knigopis.api.Endpoint
-import me.vadik.knigopis.auth.KAuth
+import me.vadik.knigopis.repository.api.Endpoint
+import me.vadik.knigopis.repository.cache.SubscriptionCache
 import me.vadik.knigopis.common.NetworkChecker
-import me.vadik.knigopis.logError
-import me.vadik.knigopis.logWarn
-import me.vadik.knigopis.model.subscription.Subscription
+import me.vadik.knigopis.common.logError
+import me.vadik.knigopis.common.logWarn
+import me.vadik.knigopis.repository.model.subscription.Subscription
 
 interface SubscriptionRepository {
 

+ 5 - 5
app/src/main/java/me/vadik/knigopis/api/BookCoverSearch.kt → app/src/main/java/me/vadik/knigopis/repository/api/BookCoverSearch.kt

@@ -1,10 +1,10 @@
-package me.vadik.knigopis.api
+package me.vadik.knigopis.repository.api
 
 import io.reactivex.Single
-import me.vadik.knigopis.data.BookCoverCache
-import me.vadik.knigopis.io2main
-import me.vadik.knigopis.model.Book
-import me.vadik.knigopis.model.ImageThumbnail
+import me.vadik.knigopis.repository.cache.BookCoverCache
+import me.vadik.knigopis.common.io2main
+import me.vadik.knigopis.repository.model.Book
+import me.vadik.knigopis.repository.model.ImageThumbnail
 import java.util.concurrent.TimeUnit
 
 private const val MAX_DELAY_IN_MICROSECONDS = 3000

+ 4 - 4
app/src/main/java/me/vadik/knigopis/api/Endpoint.kt → app/src/main/java/me/vadik/knigopis/repository/api/Endpoint.kt

@@ -1,10 +1,10 @@
-package me.vadik.knigopis.api
+package me.vadik.knigopis.repository.api
 
 import io.reactivex.Completable
 import io.reactivex.Single
-import me.vadik.knigopis.model.*
-import me.vadik.knigopis.model.note.Note
-import me.vadik.knigopis.model.subscription.Subscription
+import me.vadik.knigopis.repository.model.*
+import me.vadik.knigopis.repository.model.note.Note
+import me.vadik.knigopis.repository.model.subscription.Subscription
 import retrofit2.http.*
 
 interface Endpoint {

+ 2 - 2
app/src/main/java/me/vadik/knigopis/api/ImageEndpoint.kt → app/src/main/java/me/vadik/knigopis/repository/api/ImageEndpoint.kt

@@ -1,7 +1,7 @@
-package me.vadik.knigopis.api
+package me.vadik.knigopis.repository.api
 
 import io.reactivex.Single
-import me.vadik.knigopis.model.ImageThumbnail
+import me.vadik.knigopis.repository.model.ImageThumbnail
 import retrofit2.http.GET
 import retrofit2.http.Query
 

+ 2 - 2
app/src/main/java/me/vadik/knigopis/api/gson/ImageThumbnailDeserializer.kt → app/src/main/java/me/vadik/knigopis/repository/api/gson/ImageThumbnailDeserializer.kt

@@ -1,9 +1,9 @@
-package me.vadik.knigopis.api.gson
+package me.vadik.knigopis.repository.api.gson
 
 import com.google.gson.JsonDeserializationContext
 import com.google.gson.JsonDeserializer
 import com.google.gson.JsonElement
-import me.vadik.knigopis.model.ImageThumbnail
+import me.vadik.knigopis.repository.model.ImageThumbnail
 import java.lang.reflect.Type
 
 class ImageThumbnailDeserializer : JsonDeserializer<ImageThumbnail> {

+ 1 - 1
app/src/main/java/me/vadik/knigopis/data/AvatarCache.kt → app/src/main/java/me/vadik/knigopis/repository/cache/AvatarCache.kt

@@ -1,4 +1,4 @@
-package me.vadik.knigopis.data
+package me.vadik.knigopis.repository.cache
 
 interface AvatarCache {
     var urls: Map<String, String?>

+ 14 - 8
app/src/main/java/me/vadik/knigopis/data/BookCache.kt → app/src/main/java/me/vadik/knigopis/repository/cache/BookCache.kt

@@ -1,12 +1,12 @@
-package me.vadik.knigopis.data
+package me.vadik.knigopis.repository.cache
 
 import io.reactivex.Completable
 import io.reactivex.Maybe
-import me.vadik.knigopis.common.CacheKey
-import me.vadik.knigopis.common.CommonCache
-import me.vadik.knigopis.common.genericType
-import me.vadik.knigopis.model.FinishedBook
-import me.vadik.knigopis.model.PlannedBook
+import me.vadik.knigopis.repository.cache.common.CacheKey
+import me.vadik.knigopis.repository.cache.common.CommonCache
+import me.vadik.knigopis.repository.cache.common.genericType
+import me.vadik.knigopis.repository.model.FinishedBook
+import me.vadik.knigopis.repository.model.PlannedBook
 
 interface BookCache {
 
@@ -23,10 +23,16 @@ interface BookCache {
 class BookCacheImpl(private val commonCache: CommonCache) : BookCache {
 
     override fun getPlannedBooks(): Maybe<List<PlannedBook>> =
-        commonCache.getFromJson(CacheKey.PLANNED_BOOKS, genericType<List<PlannedBook>>())
+        commonCache.getFromJson(
+            CacheKey.PLANNED_BOOKS,
+            genericType<List<PlannedBook>>()
+        )
 
     override fun getFinishedBooks(): Maybe<List<FinishedBook>> =
-        commonCache.getFromJson(CacheKey.FINISHED_BOOKS, genericType<List<FinishedBook>>())
+        commonCache.getFromJson(
+            CacheKey.FINISHED_BOOKS,
+            genericType<List<FinishedBook>>()
+        )
 
     override fun savePlannedBooks(planned: List<PlannedBook>): Completable =
         commonCache.saveToJson(CacheKey.PLANNED_BOOKS, planned)

+ 1 - 1
app/src/main/java/me/vadik/knigopis/data/BookCoverCache.kt → app/src/main/java/me/vadik/knigopis/repository/cache/BookCoverCache.kt

@@ -1,4 +1,4 @@
-package me.vadik.knigopis.data
+package me.vadik.knigopis.repository.cache
 
 import android.content.Context
 import android.content.Context.MODE_PRIVATE

+ 9 - 6
app/src/main/java/me/vadik/knigopis/data/NoteCache.kt → app/src/main/java/me/vadik/knigopis/repository/cache/NoteCache.kt

@@ -1,11 +1,11 @@
-package me.vadik.knigopis.data
+package me.vadik.knigopis.repository.cache
 
 import io.reactivex.Completable
 import io.reactivex.Maybe
-import me.vadik.knigopis.common.CacheKey
-import me.vadik.knigopis.common.CommonCache
-import me.vadik.knigopis.common.genericType
-import me.vadik.knigopis.model.note.Note
+import me.vadik.knigopis.repository.cache.common.CacheKey
+import me.vadik.knigopis.repository.cache.common.CommonCache
+import me.vadik.knigopis.repository.cache.common.genericType
+import me.vadik.knigopis.repository.model.note.Note
 
 interface NoteCache {
 
@@ -18,7 +18,10 @@ interface NoteCache {
 class NoteCacheImpl(private val commonCache: CommonCache) : NoteCache {
 
     override fun getNotes(): Maybe<List<Note>> =
-        commonCache.getFromJson(CacheKey.NOTES, genericType<List<Note>>())
+        commonCache.getFromJson(
+            CacheKey.NOTES,
+            genericType<List<Note>>()
+        )
 
     override fun saveNotes(notes: List<Note>): Completable =
         commonCache.saveToJson(CacheKey.NOTES, notes)

+ 11 - 7
app/src/main/java/me/vadik/knigopis/data/SubscriptionCache.kt → app/src/main/java/me/vadik/knigopis/repository/cache/SubscriptionCache.kt

@@ -1,11 +1,11 @@
-package me.vadik.knigopis.data
+package me.vadik.knigopis.repository.cache
 
 import io.reactivex.Completable
 import io.reactivex.Maybe
-import me.vadik.knigopis.common.CacheKey
-import me.vadik.knigopis.common.CommonCache
-import me.vadik.knigopis.common.genericType
-import me.vadik.knigopis.model.subscription.Subscription
+import me.vadik.knigopis.repository.cache.common.CacheKey
+import me.vadik.knigopis.repository.cache.common.CommonCache
+import me.vadik.knigopis.repository.cache.common.genericType
+import me.vadik.knigopis.repository.model.subscription.Subscription
 
 interface SubscriptionCache {
 
@@ -15,10 +15,14 @@ interface SubscriptionCache {
 
 }
 
-class SubscriptionCacheImpl(private val commonCache: CommonCache) : SubscriptionCache {
+class SubscriptionCacheImpl(private val commonCache: CommonCache) :
+    SubscriptionCache {
 
     override fun getSubscriptions(): Maybe<List<Subscription>> =
-        commonCache.getFromJson(CacheKey.SUBSCRIPTIONS, genericType<List<Subscription>>())
+        commonCache.getFromJson(
+            CacheKey.SUBSCRIPTIONS,
+            genericType<List<Subscription>>()
+        )
 
     override fun saveSubscriptions(subscriptions: List<Subscription>): Completable =
         commonCache.saveToJson(CacheKey.SUBSCRIPTIONS, subscriptions)

+ 1 - 1
app/src/main/java/me/vadik/knigopis/common/CacheKey.kt → app/src/main/java/me/vadik/knigopis/repository/cache/common/CacheKey.kt

@@ -1,4 +1,4 @@
-package me.vadik.knigopis.common
+package me.vadik.knigopis.repository.cache.common
 
 enum class CacheKey {
 

+ 1 - 1
app/src/main/java/me/vadik/knigopis/common/CommonCache.kt → app/src/main/java/me/vadik/knigopis/repository/cache/common/CommonCache.kt

@@ -1,4 +1,4 @@
-package me.vadik.knigopis.common
+package me.vadik.knigopis.repository.cache.common
 
 import android.content.Context
 import com.google.gson.Gson

+ 2 - 2
app/src/main/java/me/vadik/knigopis/model/Book.kt → app/src/main/java/me/vadik/knigopis/repository/model/Book.kt

@@ -1,6 +1,6 @@
-package me.vadik.knigopis.model
+package me.vadik.knigopis.repository.model
 
-import me.vadik.knigopis.orDefault
+import me.vadik.knigopis.common.orDefault
 
 interface Book {
     val id: String

+ 1 - 1
app/src/main/java/me/vadik/knigopis/model/BookHeader.kt → app/src/main/java/me/vadik/knigopis/repository/model/BookHeader.kt

@@ -1,4 +1,4 @@
-package me.vadik.knigopis.model
+package me.vadik.knigopis.repository.model
 
 class BookHeader(
     override val title: String,

+ 1 - 1
app/src/main/java/me/vadik/knigopis/model/Credentials.kt → app/src/main/java/me/vadik/knigopis/repository/model/Credentials.kt

@@ -1,4 +1,4 @@
-package me.vadik.knigopis.model
+package me.vadik.knigopis.repository.model
 
 import com.google.gson.annotations.SerializedName
 import java.util.*

+ 1 - 1
app/src/main/java/me/vadik/knigopis/model/CurrentTab.kt → app/src/main/java/me/vadik/knigopis/repository/model/CurrentTab.kt

@@ -1,4 +1,4 @@
-package me.vadik.knigopis.model
+package me.vadik.knigopis.repository.model
 
 import android.support.annotation.IdRes
 import me.vadik.knigopis.R

+ 1 - 1
app/src/main/java/me/vadik/knigopis/model/FinishedBook.kt → app/src/main/java/me/vadik/knigopis/repository/model/FinishedBook.kt

@@ -1,4 +1,4 @@
-package me.vadik.knigopis.model
+package me.vadik.knigopis.repository.model
 
 class FinishedBook(
     override val id: String,

+ 1 - 1
app/src/main/java/me/vadik/knigopis/model/FinishedBookToSend.kt → app/src/main/java/me/vadik/knigopis/repository/model/FinishedBookToSend.kt

@@ -1,4 +1,4 @@
-package me.vadik.knigopis.model
+package me.vadik.knigopis.repository.model
 
 class FinishedBookToSend(
     val title: String,

+ 3 - 0
app/src/main/java/me/vadik/knigopis/repository/model/ImageThumbnail.kt

@@ -0,0 +1,3 @@
+package me.vadik.knigopis.repository.model
+
+class ImageThumbnail(val urls: List<String>)

+ 1 - 1
app/src/main/java/me/vadik/knigopis/model/PlannedBook.kt → app/src/main/java/me/vadik/knigopis/repository/model/PlannedBook.kt

@@ -1,4 +1,4 @@
-package me.vadik.knigopis.model
+package me.vadik.knigopis.repository.model
 
 import java.util.*
 

+ 1 - 1
app/src/main/java/me/vadik/knigopis/model/PlannedBookToSend.kt → app/src/main/java/me/vadik/knigopis/repository/model/PlannedBookToSend.kt

@@ -1,4 +1,4 @@
-package me.vadik.knigopis.model
+package me.vadik.knigopis.repository.model
 
 class PlannedBookToSend(
     val title: String,

+ 3 - 0
app/src/main/java/me/vadik/knigopis/repository/model/Profile.kt

@@ -0,0 +1,3 @@
+package me.vadik.knigopis.repository.model
+
+class Profile(val nickname: String, val profile: String)

+ 1 - 1
app/src/main/java/me/vadik/knigopis/model/note/Identity.kt → app/src/main/java/me/vadik/knigopis/repository/model/note/Identity.kt

@@ -1,4 +1,4 @@
-package me.vadik.knigopis.model.note
+package me.vadik.knigopis.repository.model.note
 
 class Identity(
     val id: String,

+ 1 - 1
app/src/main/java/me/vadik/knigopis/model/note/Note.kt → app/src/main/java/me/vadik/knigopis/repository/model/note/Note.kt

@@ -1,4 +1,4 @@
-package me.vadik.knigopis.model.note
+package me.vadik.knigopis.repository.model.note
 
 import java.util.*
 

+ 2 - 2
app/src/main/java/me/vadik/knigopis/model/subscription/SubUser.kt → app/src/main/java/me/vadik/knigopis/repository/model/subscription/SubUser.kt

@@ -1,7 +1,7 @@
-package me.vadik.knigopis.model.subscription
+package me.vadik.knigopis.repository.model.subscription
 
 import android.net.Uri
-import me.vadik.knigopis.toUriOrNull
+import me.vadik.knigopis.common.toUriOrNull
 
 private val defaultAvatars = setOf(
     "https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/photo.jpg?sz=100",

+ 1 - 1
app/src/main/java/me/vadik/knigopis/model/subscription/Subscription.kt → app/src/main/java/me/vadik/knigopis/repository/model/subscription/Subscription.kt

@@ -1,4 +1,4 @@
-package me.vadik.knigopis.model.subscription
+package me.vadik.knigopis.repository.model.subscription
 
 class Subscription(
     val subUser: SubUser,

+ 1 - 1
app/src/main/res/layout/activity_main.xml

@@ -6,7 +6,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical"
-    tools:context="me.vadik.knigopis.MainActivity">
+    tools:context="me.vadik.knigopis.feature.MainActivity">
 
     <android.support.design.widget.AppBarLayout
         android:layout_width="match_parent"

+ 2 - 2
app/src/main/res/layout/user_activity.xml

@@ -4,7 +4,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context="me.vadik.knigopis.user.UserActivity">
+    tools:context=".feature.user.UserActivity">
 
     <android.support.design.widget.AppBarLayout
         android:id="@+id/app_bar"
@@ -48,7 +48,7 @@
         app:appBarLayout="@+id/app_bar"
         app:appBarMaxHeight="@dimen/app_bar_height"
         app:appBarMinHeight="@dimen/toolbar_height"
-        app:layout_behavior="me.vadik.knigopis.view.SimpleBehavior"
+        app:layout_behavior="me.vadik.knigopis.feature.user.behavior.SimpleBehavior"
         app:toHeight="40dp"
         app:toWidth="40dp"
         app:toX="64dp"