diff --git a/app/build.gradle b/app/build.gradle index 5fbd33a..a70da05 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,6 +3,7 @@ apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: 'io.gitlab.arturbosch.detekt' apply plugin: 'kotlin-kapt' +apply plugin: "kotlin-allopen" apply from: 'detekt.gradle' apply from: 'cpd.gradle' apply from: 'jacoco.gradle' @@ -15,7 +16,7 @@ android { minSdkVersion 21 targetSdkVersion 29 versionCode 1 - versionName '3.2.1' + versionName '4.0.0' testInstrumentationRunner 'com.smlnskgmail.jaman.randomnotes.runner.AndroidJacocoTestRunner' @@ -53,6 +54,10 @@ android { } } +allOpen { + annotation('com.smlnskgmail.jaman.randomnotes.utils.OpenForTests') +} + dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation 'androidx.appcompat:appcompat:1.1.0' diff --git a/app/src/androidTest/java/com/smlnskgmail/jaman/randomnotes/auth/BaseAuthTest.kt b/app/src/androidTest/java/com/smlnskgmail/jaman/randomnotes/auth/BaseAuthTest.kt index bec4152..5b16452 100644 --- a/app/src/androidTest/java/com/smlnskgmail/jaman/randomnotes/auth/BaseAuthTest.kt +++ b/app/src/androidTest/java/com/smlnskgmail/jaman/randomnotes/auth/BaseAuthTest.kt @@ -17,16 +17,15 @@ import com.smlnskgmail.jaman.randomnotes.di.components.TestAppComponent import com.smlnskgmail.jaman.randomnotes.di.modules.CloudAuthModule import com.smlnskgmail.jaman.randomnotes.di.modules.CloudInviteModule import com.smlnskgmail.jaman.randomnotes.di.modules.DataRepositoryModule -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudInvite -import com.smlnskgmail.jaman.randomnotes.logic.repository.impl.cloud.fake.FakeCloudAuth -import com.smlnskgmail.jaman.randomnotes.logic.repository.impl.cloud.fake.FakeCloudDataSource -import com.smlnskgmail.jaman.randomnotes.logic.repository.impl.local.ormlite.OrmLiteDataSource +import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudInvite +import com.smlnskgmail.jaman.randomnotes.model.impl.cloud.fake.FakeCloudAuth +import com.smlnskgmail.jaman.randomnotes.model.impl.cloud.fake.FakeCloudDataSource +import com.smlnskgmail.jaman.randomnotes.model.impl.ormlite.OrmLiteDataSource import org.junit.Before import org.junit.Rule import org.mockito.Mock import org.mockito.MockitoAnnotations - open class BaseAuthTest { @get:Rule diff --git a/app/src/androidTest/java/com/smlnskgmail/jaman/randomnotes/auth/EmailAuthTest.kt b/app/src/androidTest/java/com/smlnskgmail/jaman/randomnotes/auth/EmailAuthTest.kt index bc71b2a..df6235f 100644 --- a/app/src/androidTest/java/com/smlnskgmail/jaman/randomnotes/auth/EmailAuthTest.kt +++ b/app/src/androidTest/java/com/smlnskgmail/jaman/randomnotes/auth/EmailAuthTest.kt @@ -7,8 +7,8 @@ import androidx.test.runner.AndroidJUnit4 import com.nhaarman.mockito_kotlin.any import com.nhaarman.mockito_kotlin.whenever import com.smlnskgmail.jaman.randomnotes.R -import com.smlnskgmail.jaman.randomnotes.logic.login.LoginFragment -import com.smlnskgmail.jaman.randomnotes.logic.main.MainFragment +import com.smlnskgmail.jaman.randomnotes.view.auth.CloudAuthFragment +import com.smlnskgmail.jaman.randomnotes.view.list.NotesListFragment import org.junit.Assert.assertEquals import org.junit.Test import org.junit.runner.RunWith @@ -61,7 +61,7 @@ class EmailAuthTest : BaseAuthTest() { fragmentManager.fragments.size ) assertEquals( - MainFragment::class.java.simpleName, + NotesListFragment::class.java.simpleName, fragmentManager.fragments[0].javaClass.simpleName ) } @@ -110,7 +110,7 @@ class EmailAuthTest : BaseAuthTest() { fragmentManager.fragments.size ) assertEquals( - LoginFragment::class.java.simpleName, + CloudAuthFragment::class.java.simpleName, fragmentManager.fragments[1].javaClass.simpleName ) } diff --git a/app/src/androidTest/java/com/smlnskgmail/jaman/randomnotes/auth/FacebookAuthTest.kt b/app/src/androidTest/java/com/smlnskgmail/jaman/randomnotes/auth/FacebookAuthTest.kt index 50ffe81..185f68e 100644 --- a/app/src/androidTest/java/com/smlnskgmail/jaman/randomnotes/auth/FacebookAuthTest.kt +++ b/app/src/androidTest/java/com/smlnskgmail/jaman/randomnotes/auth/FacebookAuthTest.kt @@ -8,8 +8,8 @@ import androidx.test.runner.AndroidJUnit4 import com.nhaarman.mockito_kotlin.any import com.nhaarman.mockito_kotlin.whenever import com.smlnskgmail.jaman.randomnotes.R -import com.smlnskgmail.jaman.randomnotes.logic.login.LoginFragment -import com.smlnskgmail.jaman.randomnotes.logic.main.MainFragment +import com.smlnskgmail.jaman.randomnotes.view.auth.CloudAuthFragment +import com.smlnskgmail.jaman.randomnotes.view.list.NotesListFragment import org.junit.Assert.assertEquals import org.junit.Test import org.junit.runner.RunWith @@ -39,7 +39,7 @@ class FacebookAuthTest : BaseAuthTest() { fragmentManager.fragments.size ) assertEquals( - MainFragment::class.java.simpleName, + NotesListFragment::class.java.simpleName, fragmentManager.fragments[0].javaClass.simpleName ) } @@ -68,7 +68,7 @@ class FacebookAuthTest : BaseAuthTest() { fragmentManager.fragments.size ) assertEquals( - LoginFragment::class.java.simpleName, + CloudAuthFragment::class.java.simpleName, fragmentManager.fragments[1].javaClass.simpleName ) } diff --git a/app/src/androidTest/java/com/smlnskgmail/jaman/randomnotes/auth/GoogleAuthTest.kt b/app/src/androidTest/java/com/smlnskgmail/jaman/randomnotes/auth/GoogleAuthTest.kt index 28107d5..3423969 100644 --- a/app/src/androidTest/java/com/smlnskgmail/jaman/randomnotes/auth/GoogleAuthTest.kt +++ b/app/src/androidTest/java/com/smlnskgmail/jaman/randomnotes/auth/GoogleAuthTest.kt @@ -7,8 +7,8 @@ import androidx.test.runner.AndroidJUnit4 import com.nhaarman.mockito_kotlin.any import com.nhaarman.mockito_kotlin.whenever import com.smlnskgmail.jaman.randomnotes.R -import com.smlnskgmail.jaman.randomnotes.logic.login.LoginFragment -import com.smlnskgmail.jaman.randomnotes.logic.main.MainFragment +import com.smlnskgmail.jaman.randomnotes.view.auth.CloudAuthFragment +import com.smlnskgmail.jaman.randomnotes.view.list.NotesListFragment import org.junit.Assert.assertEquals import org.junit.Test import org.junit.runner.RunWith @@ -38,7 +38,7 @@ class GoogleAuthTest : BaseAuthTest() { fragmentManager.fragments.size ) assertEquals( - MainFragment::class.java.simpleName, + NotesListFragment::class.java.simpleName, fragmentManager.fragments[0].javaClass.simpleName ) } @@ -67,7 +67,7 @@ class GoogleAuthTest : BaseAuthTest() { fragmentManager.fragments.size ) assertEquals( - LoginFragment::class.java.simpleName, + CloudAuthFragment::class.java.simpleName, fragmentManager.fragments[1].javaClass.simpleName ) } diff --git a/app/src/androidTest/java/com/smlnskgmail/jaman/randomnotes/invite/InviteTest.kt b/app/src/androidTest/java/com/smlnskgmail/jaman/randomnotes/invite/InviteTest.kt index 9e1a4b8..bbe17d4 100644 --- a/app/src/androidTest/java/com/smlnskgmail/jaman/randomnotes/invite/InviteTest.kt +++ b/app/src/androidTest/java/com/smlnskgmail/jaman/randomnotes/invite/InviteTest.kt @@ -15,10 +15,10 @@ import com.smlnskgmail.jaman.randomnotes.di.components.DaggerTestAppComponent import com.smlnskgmail.jaman.randomnotes.di.modules.CloudAuthModule import com.smlnskgmail.jaman.randomnotes.di.modules.CloudInviteModule import com.smlnskgmail.jaman.randomnotes.di.modules.DataRepositoryModule -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudAuth -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudDataSource -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudInvite -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.local.LocalDataSource +import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudAuth +import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudDataSource +import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudInvite +import com.smlnskgmail.jaman.randomnotes.model.api.local.LocalDataSource import org.junit.Before import org.junit.Rule import org.junit.Test diff --git a/app/src/androidTest/java/com/smlnskgmail/jaman/randomnotes/note/BaseNoteTest.kt b/app/src/androidTest/java/com/smlnskgmail/jaman/randomnotes/note/BaseNoteTest.kt index 94337a9..cade49b 100644 --- a/app/src/androidTest/java/com/smlnskgmail/jaman/randomnotes/note/BaseNoteTest.kt +++ b/app/src/androidTest/java/com/smlnskgmail/jaman/randomnotes/note/BaseNoteTest.kt @@ -11,12 +11,12 @@ import com.smlnskgmail.jaman.randomnotes.di.components.TestAppComponent import com.smlnskgmail.jaman.randomnotes.di.modules.CloudAuthModule import com.smlnskgmail.jaman.randomnotes.di.modules.CloudInviteModule import com.smlnskgmail.jaman.randomnotes.di.modules.DataRepositoryModule -import com.smlnskgmail.jaman.randomnotes.logic.repository.DataRepository -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudInvite -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.entities.Note -import com.smlnskgmail.jaman.randomnotes.logic.repository.impl.cloud.fake.FakeCloudAuth -import com.smlnskgmail.jaman.randomnotes.logic.repository.impl.cloud.fake.FakeCloudDataSource -import com.smlnskgmail.jaman.randomnotes.logic.repository.impl.local.ormlite.OrmLiteDataSource +import com.smlnskgmail.jaman.randomnotes.model.DataRepository +import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudInvite +import com.smlnskgmail.jaman.randomnotes.model.api.entities.Note +import com.smlnskgmail.jaman.randomnotes.model.impl.cloud.fake.FakeCloudAuth +import com.smlnskgmail.jaman.randomnotes.model.impl.cloud.fake.FakeCloudDataSource +import com.smlnskgmail.jaman.randomnotes.model.impl.ormlite.OrmLiteDataSource import org.junit.Before import org.junit.Rule import org.mockito.Mock diff --git a/app/src/androidTest/java/com/smlnskgmail/jaman/randomnotes/note/NoteDeletionTest.kt b/app/src/androidTest/java/com/smlnskgmail/jaman/randomnotes/note/NoteDeletionTest.kt index 46356ad..ead1fc6 100644 --- a/app/src/androidTest/java/com/smlnskgmail/jaman/randomnotes/note/NoteDeletionTest.kt +++ b/app/src/androidTest/java/com/smlnskgmail/jaman/randomnotes/note/NoteDeletionTest.kt @@ -5,8 +5,8 @@ import androidx.test.espresso.contrib.RecyclerViewActions.actionOnItemAtPosition import androidx.test.espresso.matcher.ViewMatchers.withId import androidx.test.runner.AndroidJUnit4 import com.smlnskgmail.jaman.randomnotes.R -import com.smlnskgmail.jaman.randomnotes.logic.main.noteslist.NoteHolder import com.smlnskgmail.jaman.randomnotes.utils.ViewChildClick.withChildId +import com.smlnskgmail.jaman.randomnotes.view.list.recycler.NoteHolder import org.junit.Assert.assertEquals import org.junit.Test import org.junit.runner.RunWith diff --git a/app/src/androidTest/java/com/smlnskgmail/jaman/randomnotes/note/NotesRestoreTest.kt b/app/src/androidTest/java/com/smlnskgmail/jaman/randomnotes/note/NotesRestoreTest.kt index 0e67ba2..858b779 100644 --- a/app/src/androidTest/java/com/smlnskgmail/jaman/randomnotes/note/NotesRestoreTest.kt +++ b/app/src/androidTest/java/com/smlnskgmail/jaman/randomnotes/note/NotesRestoreTest.kt @@ -29,10 +29,6 @@ class NotesRestoreTest : BaseNoteTest() { onView(withId(R.id.restore_notes)).perform(click()) delay() - assertEquals( - 1, - dataRepository.allNotes().size - ) assertEquals( dataRepository.allNotes().size, (activityTestRule.activity.findViewById( diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/App.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/App.kt index a7898cd..73968e3 100644 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/App.kt +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/App.kt @@ -6,17 +6,17 @@ import com.smlnskgmail.jaman.randomnotes.di.components.DaggerAppComponent import com.smlnskgmail.jaman.randomnotes.di.modules.CloudAuthModule import com.smlnskgmail.jaman.randomnotes.di.modules.CloudInviteModule import com.smlnskgmail.jaman.randomnotes.di.modules.DataRepositoryModule -import com.smlnskgmail.jaman.randomnotes.logic.repository.DataRepository -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudAuth -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudDataSource -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudInvite -import com.smlnskgmail.jaman.randomnotes.logic.repository.impl.cloud.fake.FakeCloudAuth -import com.smlnskgmail.jaman.randomnotes.logic.repository.impl.cloud.fake.FakeCloudDataSource -import com.smlnskgmail.jaman.randomnotes.logic.repository.impl.cloud.fake.FakeCloudInvite -import com.smlnskgmail.jaman.randomnotes.logic.repository.impl.cloud.parse.ParseServerAuth -import com.smlnskgmail.jaman.randomnotes.logic.repository.impl.cloud.parse.ParseServerDataSource -import com.smlnskgmail.jaman.randomnotes.logic.repository.impl.cloud.parse.ParseServerInvite -import com.smlnskgmail.jaman.randomnotes.logic.repository.impl.local.ormlite.OrmLiteDataSource +import com.smlnskgmail.jaman.randomnotes.model.DataRepository +import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudAuth +import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudDataSource +import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudInvite +import com.smlnskgmail.jaman.randomnotes.model.impl.cloud.fake.FakeCloudAuth +import com.smlnskgmail.jaman.randomnotes.model.impl.cloud.fake.FakeCloudDataSource +import com.smlnskgmail.jaman.randomnotes.model.impl.cloud.fake.FakeCloudInvite +import com.smlnskgmail.jaman.randomnotes.model.impl.cloud.parse.ParseServerAuth +import com.smlnskgmail.jaman.randomnotes.model.impl.cloud.parse.ParseServerDataSource +import com.smlnskgmail.jaman.randomnotes.model.impl.cloud.parse.ParseServerInvite +import com.smlnskgmail.jaman.randomnotes.model.impl.ormlite.OrmLiteDataSource import javax.inject.Inject class App : Application() { diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/MainActivity.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/MainActivity.kt index c9348ef..353d9ff 100644 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/MainActivity.kt +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/MainActivity.kt @@ -2,40 +2,35 @@ package com.smlnskgmail.jaman.randomnotes import android.os.Bundle import androidx.appcompat.app.AppCompatActivity -import com.smlnskgmail.jaman.randomnotes.components.fragments.BaseFragment -import com.smlnskgmail.jaman.randomnotes.components.views.LongSnackbar -import com.smlnskgmail.jaman.randomnotes.logic.login.LoginFragment -import com.smlnskgmail.jaman.randomnotes.logic.main.MainFragment +import com.smlnskgmail.jaman.randomnotes.components.BaseFragment +import com.smlnskgmail.jaman.randomnotes.view.auth.CloudAuthFragment +import com.smlnskgmail.jaman.randomnotes.view.list.NotesListFragment class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) - showMainFragment() + supportFragmentManager.addOnBackStackChangedListener { + val count = supportFragmentManager.fragments.size + val currentFragment = supportFragmentManager.fragments[count - 1] + if (currentFragment is BaseFragment) { + currentFragment.showed() + } + } + showNotesListFragment() } - private fun showMainFragment() { + fun showNotesListFragment() { showBaseFragment( - MainFragment(), + NotesListFragment(), true ) } - fun loginComplete() { - showMainFragment() - } - - fun loginError() { - LongSnackbar( - findViewById(android.R.id.content), - getString(R.string.error_auth) - ).show() - } - fun showLoginFragment() { showBaseFragment( - LoginFragment() + CloudAuthFragment() ) } diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/components/fragments/BaseFragment.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/components/BaseFragment.kt similarity index 79% rename from app/src/main/java/com/smlnskgmail/jaman/randomnotes/components/fragments/BaseFragment.kt rename to app/src/main/java/com/smlnskgmail/jaman/randomnotes/components/BaseFragment.kt index 2b2b323..51b38ec 100644 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/components/fragments/BaseFragment.kt +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/components/BaseFragment.kt @@ -1,31 +1,26 @@ -package com.smlnskgmail.jaman.randomnotes.components.fragments +package com.smlnskgmail.jaman.randomnotes.components import android.os.Bundle import android.view.* import androidx.fragment.app.Fragment -abstract class BaseFragment : Fragment(), FragmentResume { +abstract class BaseFragment : Fragment() { - private lateinit var menu: Menu + private var menu: Menu? = null override fun onViewCreated( view: View, savedInstanceState: Bundle? ) { setHasOptionsMenu(true) - setTitle() } - private fun setTitle() { + fun showed() { activity!!.setTitle( getTitleResId() ) } - override fun onFragmentResume() { - setTitle() - } - abstract fun getTitleResId(): Int abstract fun showToolbarMenu(): Boolean @@ -55,10 +50,10 @@ abstract class BaseFragment : Fragment(), FragmentResume { menu.clear() } this.menu = menu - onPostMenuInflated() + onMenuInflated() } - open fun onPostMenuInflated() { + open fun onMenuInflated() { } diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/components/views/LongSnackbar.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/components/LongSnackbar.kt similarity index 89% rename from app/src/main/java/com/smlnskgmail/jaman/randomnotes/components/views/LongSnackbar.kt rename to app/src/main/java/com/smlnskgmail/jaman/randomnotes/components/LongSnackbar.kt index 6048013..6a93193 100644 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/components/views/LongSnackbar.kt +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/components/LongSnackbar.kt @@ -1,4 +1,4 @@ -package com.smlnskgmail.jaman.randomnotes.components.views +package com.smlnskgmail.jaman.randomnotes.components import android.view.View import com.google.android.material.snackbar.Snackbar diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/components/views/VectorDrawableButton.java b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/components/VectorDrawableButton.java similarity index 97% rename from app/src/main/java/com/smlnskgmail/jaman/randomnotes/components/views/VectorDrawableButton.java rename to app/src/main/java/com/smlnskgmail/jaman/randomnotes/components/VectorDrawableButton.java index a739ae0..ef23ad9 100644 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/components/views/VectorDrawableButton.java +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/components/VectorDrawableButton.java @@ -1,4 +1,4 @@ -package com.smlnskgmail.jaman.randomnotes.components.views; +package com.smlnskgmail.jaman.randomnotes.components; import android.content.Context; import android.content.res.TypedArray; @@ -54,11 +54,11 @@ private void initSupportVectorDrawablesAttrs(AttributeSet attrs) { this, getDrawable( attributeArray, - DRAWABLE_TOP_ID + DRAWABLE_START_ID ), getDrawable( attributeArray, - DRAWABLE_START_ID + DRAWABLE_TOP_ID ), getDrawable( attributeArray, diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/components/fragments/FragmentResume.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/components/fragments/FragmentResume.kt deleted file mode 100644 index 8f5c768..0000000 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/components/fragments/FragmentResume.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.smlnskgmail.jaman.randomnotes.components.fragments - -interface FragmentResume { - - fun onFragmentResume() - -} diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/di/components/AppComponent.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/di/components/AppComponent.kt index e8216cb..588eef7 100644 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/di/components/AppComponent.kt +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/di/components/AppComponent.kt @@ -4,9 +4,9 @@ import com.smlnskgmail.jaman.randomnotes.App import com.smlnskgmail.jaman.randomnotes.di.modules.CloudAuthModule import com.smlnskgmail.jaman.randomnotes.di.modules.CloudInviteModule import com.smlnskgmail.jaman.randomnotes.di.modules.DataRepositoryModule -import com.smlnskgmail.jaman.randomnotes.logic.invite.InviteDialog -import com.smlnskgmail.jaman.randomnotes.logic.login.LoginFragment -import com.smlnskgmail.jaman.randomnotes.logic.main.MainFragment +import com.smlnskgmail.jaman.randomnotes.view.auth.CloudAuthFragment +import com.smlnskgmail.jaman.randomnotes.view.invite.CloudInviteDialog +import com.smlnskgmail.jaman.randomnotes.view.list.NotesListFragment import dagger.Component import javax.inject.Singleton @@ -21,8 +21,8 @@ import javax.inject.Singleton interface AppComponent { fun inject(app: App) - fun inject(mainFragment: MainFragment) - fun inject(loginFragment: LoginFragment) - fun inject(inviteDialog: InviteDialog) + fun inject(notesListFragment: NotesListFragment) + fun inject(cloudAuthFragment: CloudAuthFragment) + fun inject(cloudInviteDialog: CloudInviteDialog) } diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/di/modules/CloudAuthModule.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/di/modules/CloudAuthModule.kt index 66fc171..2579a85 100644 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/di/modules/CloudAuthModule.kt +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/di/modules/CloudAuthModule.kt @@ -1,12 +1,14 @@ package com.smlnskgmail.jaman.randomnotes.di.modules -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudAuth +import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudAuth +import com.smlnskgmail.jaman.randomnotes.utils.OpenForTests import dagger.Module import dagger.Provides import javax.inject.Singleton +@OpenForTests @Module -open class CloudAuthModule( +class CloudAuthModule( private val cloudAuth: CloudAuth ) { diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/di/modules/CloudInviteModule.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/di/modules/CloudInviteModule.kt index 61f3a4a..5b7c70f 100644 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/di/modules/CloudInviteModule.kt +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/di/modules/CloudInviteModule.kt @@ -1,6 +1,6 @@ package com.smlnskgmail.jaman.randomnotes.di.modules -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudInvite +import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudInvite import dagger.Module import dagger.Provides diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/di/modules/DataRepositoryModule.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/di/modules/DataRepositoryModule.kt index f2514e2..ec48480 100644 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/di/modules/DataRepositoryModule.kt +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/di/modules/DataRepositoryModule.kt @@ -1,14 +1,16 @@ package com.smlnskgmail.jaman.randomnotes.di.modules -import com.smlnskgmail.jaman.randomnotes.logic.repository.DataRepository -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudDataSource -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.local.LocalDataSource +import com.smlnskgmail.jaman.randomnotes.model.DataRepository +import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudDataSource +import com.smlnskgmail.jaman.randomnotes.model.api.local.LocalDataSource +import com.smlnskgmail.jaman.randomnotes.utils.OpenForTests import dagger.Module import dagger.Provides import javax.inject.Singleton +@OpenForTests @Module -open class DataRepositoryModule( +class DataRepositoryModule( private val localDataSource: LocalDataSource, private val cloudDataSource: CloudDataSource ) { diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/invite/InviteDialog.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/invite/InviteDialog.kt deleted file mode 100644 index c1c2fb8..0000000 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/invite/InviteDialog.kt +++ /dev/null @@ -1,44 +0,0 @@ -package com.smlnskgmail.jaman.randomnotes.logic.invite - -import android.content.Context -import android.os.Bundle -import com.smlnskgmail.jaman.randomnotes.App -import com.smlnskgmail.jaman.randomnotes.R -import com.smlnskgmail.jaman.randomnotes.components.BaseDialog -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudInvite -import kotlinx.android.synthetic.main.dialog_invite.* -import javax.inject.Inject - -class InviteDialog(context: Context) : BaseDialog(context) { - - @Inject - lateinit var cloudInvite: CloudInvite - - private var inviteUserTarget: InviteUserTarget? = null - - override fun onCreate(savedInstanceState: Bundle?) { - (context.applicationContext as App).appComponent.inject(this) - super.onCreate(savedInstanceState) - dialog_invite_cancel.setOnClickListener { - cancel() - } - dialog_invite_request.setOnClickListener { - cancel() - cloudInvite.invite( - dialog_invite_email.text.toString() - ) { - inviteUserTarget?.onInviteAction( - it == null - ) - } - } - dialog_invite_email.requestFocus() - } - - fun setInviteCallback(inviteUserTarget: InviteUserTarget) { - this.inviteUserTarget = inviteUserTarget - } - - override fun layoutResId() = R.layout.dialog_invite - -} diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/invite/InviteUserTarget.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/invite/InviteUserTarget.kt deleted file mode 100644 index 3c8760c..0000000 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/invite/InviteUserTarget.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.smlnskgmail.jaman.randomnotes.logic.invite - -interface InviteUserTarget { - - fun onInviteAction(success: Boolean) - -} diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/main/MainFragment.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/main/MainFragment.kt deleted file mode 100644 index 31fff03..0000000 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/main/MainFragment.kt +++ /dev/null @@ -1,192 +0,0 @@ -package com.smlnskgmail.jaman.randomnotes.logic.main - -import android.os.Bundle -import android.view.View -import androidx.core.content.ContextCompat -import com.smlnskgmail.jaman.randomnotes.App -import com.smlnskgmail.jaman.randomnotes.MainActivity -import com.smlnskgmail.jaman.randomnotes.R -import com.smlnskgmail.jaman.randomnotes.components.fragments.BaseFragment -import com.smlnskgmail.jaman.randomnotes.components.views.LongSnackbar -import com.smlnskgmail.jaman.randomnotes.logic.invite.InviteDialog -import com.smlnskgmail.jaman.randomnotes.logic.invite.InviteUserTarget -import com.smlnskgmail.jaman.randomnotes.logic.main.noteslist.NoteDeleteTarget -import com.smlnskgmail.jaman.randomnotes.logic.main.noteslist.NotesAdapter -import com.smlnskgmail.jaman.randomnotes.logic.notecreation.AddNoteBottomSheet -import com.smlnskgmail.jaman.randomnotes.logic.notecreation.AddNoteTarget -import com.smlnskgmail.jaman.randomnotes.logic.repository.DataRepository -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudAuth -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.entities.Note -import kotlinx.android.synthetic.main.fragment_main.* -import javax.inject.Inject - -class MainFragment : BaseFragment(), AddNoteTarget, InviteUserTarget, NoteDeleteTarget { - - private val notes: MutableList = mutableListOf() - - @Inject - lateinit var dataRepository: DataRepository - - @Inject - lateinit var cloudAuth: CloudAuth - - override fun onViewCreated( - view: View, - savedInstanceState: Bundle? - ) { - super.onViewCreated( - view, - savedInstanceState - ) - (context!!.applicationContext as App).appComponent.inject(this) - addNotesToList() - setupFabMenu() - } - - private fun addNotesToList() { - notes.addAll(dataRepository.allNotes()) - notes_list.messageView = notes_list_empty_view - notes_list.adapter = NotesAdapter(notes, this) - } - - private fun setupFabMenu() { - share_access.setOnClickListener { - actionWithNotes { - share() - } - } - restore_notes.setOnClickListener { - actionWithNotes { - dataRepository.restoreAllNotes() { e -> - if (e == null) { - refreshNotes() - } else { - LongSnackbar( - notes_screen, - getString(R.string.error_cannot_restore_notes) - ).show() - } - } - } - } - sync_notes.setOnClickListener { - actionWithNotes { - dataRepository.syncNotes() { - LongSnackbar( - notes_screen, - getString(R.string.error_cannot_sync_notes) - ).show() - } - } - } - add_note.setOnClickListener { - collapseMenuAndRun { - addNote() - } - } - } - - private fun share() { - val inviteDialog = InviteDialog(context!!) - inviteDialog.setInviteCallback(this) - inviteDialog.show() - } - - private fun addNote() { - val addNoteBottomSheet = AddNoteBottomSheet() - addNoteBottomSheet.show( - childFragmentManager, - addNoteBottomSheet.javaClass.name - ) - } - - private fun collapseMenuAndRun(action: () -> Unit) { - main_fab_menu.collapse() - action() - } - - private fun actionWithNotes(action: () -> Unit) { - collapseMenuAndRun { - if (cloudAuth.isAuthorized()) { - action() - } else { - LongSnackbar( - notes_screen, - getString(R.string.message_sign_in) - ).show() - } - } - } - - private fun refreshNotes() { - notes.clear() - notes.addAll(dataRepository.allNotes()) - notes_list.adapter!!.notifyDataSetChanged() - } - - override fun newNoteAdded(note: Note) { - dataRepository.saveNote(note) - notes.add(note) - (notes_list.adapter as NotesAdapter).validateLastNote() - } - - override fun onInviteAction(success: Boolean) { - LongSnackbar( - notes_screen, - getString( - if (success) { - R.string.message_invite_sent - } else { - R.string.error_invite_sent - } - ) - ).show() - } - - override fun handleMenuItemClick(menuItemId: Int) { - when (menuItemId) { - R.id.menu_login_action -> { - if (cloudAuth.isAuthorized()) { - cloudAuth.logOut { - validateLoginMenuIcon() - } - } else { - (activity as MainActivity).showLoginFragment() - } - } - } - } - - override fun onPostMenuInflated() { - validateLoginMenuIcon() - } - - private fun validateLoginMenuIcon() { - val icon = if (cloudAuth.isAuthorized()) { - R.drawable.ic_logout - } else { - R.drawable.ic_login - } - getMenu().findItem( - R.id.menu_login_action - )!!.icon = ContextCompat.getDrawable(context!!, icon) - } - - override fun onNoteDelete(position: Int) { - dataRepository.delete( - notes.removeAt(position) - ) - notes_list.adapter!!.notifyItemRemoved(position) - } - - override fun getTitleResId() = R.string.title_main_fragment - - override fun showToolbarMenu() = true - - override fun layoutResId() = R.layout.fragment_main - - override fun showMenuInToolbar() = true - - override fun getToolbarMenuResId() = R.menu.menu_main - -} diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/main/noteslist/NoteDeleteTarget.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/main/noteslist/NoteDeleteTarget.kt deleted file mode 100644 index 37df67b..0000000 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/main/noteslist/NoteDeleteTarget.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.smlnskgmail.jaman.randomnotes.logic.main.noteslist - -interface NoteDeleteTarget { - - fun onNoteDelete(position: Int) - -} diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/notecreation/AddNoteBottomSheet.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/notecreation/AddNoteBottomSheet.kt deleted file mode 100644 index e85ad42..0000000 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/notecreation/AddNoteBottomSheet.kt +++ /dev/null @@ -1,36 +0,0 @@ -package com.smlnskgmail.jaman.randomnotes.logic.notecreation - -import android.os.Bundle -import android.view.View -import android.widget.EditText -import com.smlnskgmail.jaman.randomnotes.R -import com.smlnskgmail.jaman.randomnotes.components.BaseBottomSheet -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.entities.Note -import kotlinx.android.synthetic.main.bottom_sheet_add_note.* - -class AddNoteBottomSheet : BaseBottomSheet() { - - override fun onViewCreated( - view: View, - savedInstanceState: Bundle? - ) { - super.onViewCreated(view, savedInstanceState) - edit_title.requestFocus() - save_note.setOnClickListener { - val note = Note( - title = edit_title.textInString(), - subtitle = edit_subtitle.textInString() - ) - - (parentFragment as AddNoteTarget).newNoteAdded(note) - dismiss() - } - } - - private fun EditText.textInString(): String { - return text.toString() - } - - override fun layoutResId() = R.layout.bottom_sheet_add_note - -} diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/notecreation/AddNoteTarget.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/notecreation/AddNoteTarget.kt deleted file mode 100644 index e274e62..0000000 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/notecreation/AddNoteTarget.kt +++ /dev/null @@ -1,9 +0,0 @@ -package com.smlnskgmail.jaman.randomnotes.logic.notecreation - -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.entities.Note - -interface AddNoteTarget { - - fun newNoteAdded(note: Note) - -} diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/api/local/LocalDataSource.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/api/local/LocalDataSource.kt deleted file mode 100644 index 623bf90..0000000 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/api/local/LocalDataSource.kt +++ /dev/null @@ -1,16 +0,0 @@ -package com.smlnskgmail.jaman.randomnotes.logic.repository.api.local - -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.entities.Note - -interface LocalDataSource { - - fun allNotes(): List - - fun createOrUpdateNote(note: Note) - fun createNotes(notes: List) - - fun delete(note: Note) - - fun destroy() - -} diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/DataRepository.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/DataRepository.kt similarity index 79% rename from app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/DataRepository.kt rename to app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/DataRepository.kt index adaf342..1f09566 100644 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/DataRepository.kt +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/DataRepository.kt @@ -1,15 +1,15 @@ -package com.smlnskgmail.jaman.randomnotes.logic.repository +package com.smlnskgmail.jaman.randomnotes.model -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudDataSource -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.entities.Note -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.local.LocalDataSource +import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudDataSource +import com.smlnskgmail.jaman.randomnotes.model.api.entities.Note +import com.smlnskgmail.jaman.randomnotes.model.api.local.LocalDataSource class DataRepository( private val localDataSource: LocalDataSource, private val cloudDataSource: CloudDataSource ) { - fun allNotes(): List { + fun allNotes(): MutableList { return localDataSource.allNotes() } @@ -42,7 +42,7 @@ class DataRepository( afterRestore: (e: Exception?) -> Unit ) { val localNotes = localDataSource.allNotes() - cloudDataSource.restoreAllNotes() { notes, e -> + cloudDataSource.restoreAllNotes { notes, e -> if (e == null) { notes.forEach { note -> val localNote = localNotes.firstOrNull { diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/api/cloud/CloudAuth.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/api/cloud/CloudAuth.kt similarity index 93% rename from app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/api/cloud/CloudAuth.kt rename to app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/api/cloud/CloudAuth.kt index 2df44ee..39e019d 100644 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/api/cloud/CloudAuth.kt +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/api/cloud/CloudAuth.kt @@ -1,4 +1,4 @@ -package com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud +package com.smlnskgmail.jaman.randomnotes.model.api.cloud import android.app.Activity import android.content.Intent diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/api/cloud/CloudDataSource.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/api/cloud/CloudDataSource.kt similarity index 61% rename from app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/api/cloud/CloudDataSource.kt rename to app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/api/cloud/CloudDataSource.kt index 8ad4c61..73f6b7f 100644 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/api/cloud/CloudDataSource.kt +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/api/cloud/CloudDataSource.kt @@ -1,6 +1,6 @@ -package com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud +package com.smlnskgmail.jaman.randomnotes.model.api.cloud -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.entities.Note +import com.smlnskgmail.jaman.randomnotes.model.api.entities.Note interface CloudDataSource { diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/api/cloud/CloudInvite.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/api/cloud/CloudInvite.kt similarity index 63% rename from app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/api/cloud/CloudInvite.kt rename to app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/api/cloud/CloudInvite.kt index 781696d..0950f1d 100644 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/api/cloud/CloudInvite.kt +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/api/cloud/CloudInvite.kt @@ -1,4 +1,4 @@ -package com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud +package com.smlnskgmail.jaman.randomnotes.model.api.cloud interface CloudInvite { diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/api/entities/EntityWithId.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/api/entities/EntityWithId.kt similarity index 66% rename from app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/api/entities/EntityWithId.kt rename to app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/api/entities/EntityWithId.kt index 486335b..36ab433 100644 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/api/entities/EntityWithId.kt +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/api/entities/EntityWithId.kt @@ -1,4 +1,4 @@ -package com.smlnskgmail.jaman.randomnotes.logic.repository.api.entities +package com.smlnskgmail.jaman.randomnotes.model.api.entities import com.j256.ormlite.field.DatabaseField diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/api/entities/Note.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/api/entities/Note.kt similarity index 84% rename from app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/api/entities/Note.kt rename to app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/api/entities/Note.kt index a127411..e40e0b9 100644 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/api/entities/Note.kt +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/api/entities/Note.kt @@ -1,4 +1,4 @@ -package com.smlnskgmail.jaman.randomnotes.logic.repository.api.entities +package com.smlnskgmail.jaman.randomnotes.model.api.entities import com.j256.ormlite.field.DatabaseField @@ -11,9 +11,7 @@ class Note( var subtitle: String? = null, @DatabaseField - var remoteId: String? = null, - - var positionInList: Int = 0 + var remoteId: String? = null ) : EntityWithId() { diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/api/local/LocalDataSource.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/api/local/LocalDataSource.kt new file mode 100644 index 0000000..b9d6af0 --- /dev/null +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/api/local/LocalDataSource.kt @@ -0,0 +1,16 @@ +package com.smlnskgmail.jaman.randomnotes.model.api.local + +import com.smlnskgmail.jaman.randomnotes.model.api.entities.Note + +interface LocalDataSource { + + fun allNotes(): MutableList + + fun createOrUpdateNote(note: Note) + fun createNotes(notes: List) + + fun delete(note: Note) + + fun destroy() + +} diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/impl/cloud/fake/FakeCloudAuth.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/impl/cloud/fake/FakeCloudAuth.kt similarity index 89% rename from app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/impl/cloud/fake/FakeCloudAuth.kt rename to app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/impl/cloud/fake/FakeCloudAuth.kt index fa7386c..8d0b556 100644 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/impl/cloud/fake/FakeCloudAuth.kt +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/impl/cloud/fake/FakeCloudAuth.kt @@ -1,11 +1,13 @@ -package com.smlnskgmail.jaman.randomnotes.logic.repository.impl.cloud.fake +package com.smlnskgmail.jaman.randomnotes.model.impl.cloud.fake import android.app.Activity import android.content.Intent -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudAuth +import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudAuth +import com.smlnskgmail.jaman.randomnotes.utils.OpenForTests import java.util.regex.Pattern -open class FakeCloudAuth : CloudAuth { +@OpenForTests +class FakeCloudAuth : CloudAuth { companion object { diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/impl/cloud/fake/FakeCloudDataSource.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/impl/cloud/fake/FakeCloudDataSource.kt similarity index 56% rename from app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/impl/cloud/fake/FakeCloudDataSource.kt rename to app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/impl/cloud/fake/FakeCloudDataSource.kt index 2d317f3..e683dca 100644 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/impl/cloud/fake/FakeCloudDataSource.kt +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/impl/cloud/fake/FakeCloudDataSource.kt @@ -1,9 +1,11 @@ -package com.smlnskgmail.jaman.randomnotes.logic.repository.impl.cloud.fake +package com.smlnskgmail.jaman.randomnotes.model.impl.cloud.fake -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudDataSource -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.entities.Note +import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudDataSource +import com.smlnskgmail.jaman.randomnotes.model.api.entities.Note +import com.smlnskgmail.jaman.randomnotes.utils.OpenForTests -open class FakeCloudDataSource : CloudDataSource { +@OpenForTests +class FakeCloudDataSource : CloudDataSource { private val storage = mutableListOf() diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/impl/cloud/fake/FakeCloudInvite.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/impl/cloud/fake/FakeCloudInvite.kt similarity index 53% rename from app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/impl/cloud/fake/FakeCloudInvite.kt rename to app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/impl/cloud/fake/FakeCloudInvite.kt index 372b4df..dc99737 100644 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/impl/cloud/fake/FakeCloudInvite.kt +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/impl/cloud/fake/FakeCloudInvite.kt @@ -1,6 +1,6 @@ -package com.smlnskgmail.jaman.randomnotes.logic.repository.impl.cloud.fake +package com.smlnskgmail.jaman.randomnotes.model.impl.cloud.fake -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudInvite +import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudInvite class FakeCloudInvite : CloudInvite { diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/impl/cloud/parse/ParseServerAuth.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/impl/cloud/parse/ParseServerAuth.kt similarity index 97% rename from app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/impl/cloud/parse/ParseServerAuth.kt rename to app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/impl/cloud/parse/ParseServerAuth.kt index 55c0ad7..59c45a7 100644 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/impl/cloud/parse/ParseServerAuth.kt +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/impl/cloud/parse/ParseServerAuth.kt @@ -1,4 +1,4 @@ -package com.smlnskgmail.jaman.randomnotes.logic.repository.impl.cloud.parse +package com.smlnskgmail.jaman.randomnotes.model.impl.cloud.parse import android.app.Activity import android.content.Context @@ -11,7 +11,7 @@ import com.google.android.gms.common.api.ApiException import com.parse.ParseUser import com.parse.facebook.ParseFacebookUtils import com.smlnskgmail.jaman.randomnotes.R -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudAuth +import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudAuth import java.util.regex.Pattern class ParseServerAuth : CloudAuth { diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/impl/cloud/parse/ParseServerDataSource.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/impl/cloud/parse/ParseServerDataSource.kt similarity index 93% rename from app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/impl/cloud/parse/ParseServerDataSource.kt rename to app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/impl/cloud/parse/ParseServerDataSource.kt index 76e23a5..cb94cd4 100644 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/impl/cloud/parse/ParseServerDataSource.kt +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/impl/cloud/parse/ParseServerDataSource.kt @@ -1,12 +1,12 @@ -package com.smlnskgmail.jaman.randomnotes.logic.repository.impl.cloud.parse +package com.smlnskgmail.jaman.randomnotes.model.impl.cloud.parse import android.content.Context import com.parse.Parse import com.parse.ParseObject import com.parse.ParseQuery import com.parse.facebook.ParseFacebookUtils -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudDataSource -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.entities.Note +import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudDataSource +import com.smlnskgmail.jaman.randomnotes.model.api.entities.Note import okhttp3.OkHttpClient import java.util.concurrent.TimeUnit diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/impl/cloud/parse/ParseServerInvite.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/impl/cloud/parse/ParseServerInvite.kt similarity index 73% rename from app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/impl/cloud/parse/ParseServerInvite.kt rename to app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/impl/cloud/parse/ParseServerInvite.kt index 46f0676..5175bc6 100644 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/impl/cloud/parse/ParseServerInvite.kt +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/impl/cloud/parse/ParseServerInvite.kt @@ -1,8 +1,8 @@ -package com.smlnskgmail.jaman.randomnotes.logic.repository.impl.cloud.parse +package com.smlnskgmail.jaman.randomnotes.model.impl.cloud.parse import com.parse.FunctionCallback import com.parse.ParseCloud -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudInvite +import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudInvite class ParseServerInvite : CloudInvite { diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/impl/local/ormlite/OrmLiteDataSource.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/impl/ormlite/OrmLiteDataSource.kt similarity index 85% rename from app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/impl/local/ormlite/OrmLiteDataSource.kt rename to app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/impl/ormlite/OrmLiteDataSource.kt index b589632..20ca74c 100644 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/impl/local/ormlite/OrmLiteDataSource.kt +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/impl/ormlite/OrmLiteDataSource.kt @@ -1,4 +1,4 @@ -package com.smlnskgmail.jaman.randomnotes.logic.repository.impl.local.ormlite +package com.smlnskgmail.jaman.randomnotes.model.impl.ormlite import android.content.Context import android.database.sqlite.SQLiteDatabase @@ -7,12 +7,14 @@ import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper import com.j256.ormlite.support.ConnectionSource import com.j256.ormlite.table.TableUtils import com.smlnskgmail.jaman.randomnotes.R -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.entities.Note -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.local.LocalDataSource -import com.smlnskgmail.jaman.randomnotes.logic.support.L +import com.smlnskgmail.jaman.randomnotes.model.api.entities.Note +import com.smlnskgmail.jaman.randomnotes.model.api.local.LocalDataSource +import com.smlnskgmail.jaman.randomnotes.utils.L +import com.smlnskgmail.jaman.randomnotes.utils.OpenForTests import java.sql.SQLException -open class OrmLiteDataSource( +@OpenForTests +class OrmLiteDataSource( private var context: Context ) : OrmLiteSqliteOpenHelper( context, @@ -69,13 +71,13 @@ open class OrmLiteDataSource( } - override fun allNotes(): List { + override fun allNotes(): MutableList { try { return getDao(Note::class.java).queryForAll() } catch (e: SQLException) { L.e(e) } - return emptyList() + return mutableListOf() } override fun createOrUpdateNote(note: Note) { diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/impl/local/ormlite/config/OrmLiteDatabaseConfigurator.java b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/impl/ormlite/config/OrmLiteDatabaseConfigurator.java similarity index 86% rename from app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/impl/local/ormlite/config/OrmLiteDatabaseConfigurator.java rename to app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/impl/ormlite/config/OrmLiteDatabaseConfigurator.java index 8287031..b2cb163 100644 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/repository/impl/local/ormlite/config/OrmLiteDatabaseConfigurator.java +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/model/impl/ormlite/config/OrmLiteDatabaseConfigurator.java @@ -1,7 +1,7 @@ -package com.smlnskgmail.jaman.randomnotes.logic.repository.impl.local.ormlite.config; +package com.smlnskgmail.jaman.randomnotes.model.impl.ormlite.config; import com.j256.ormlite.android.apptools.OrmLiteConfigUtil; -import com.smlnskgmail.jaman.randomnotes.logic.repository.impl.local.ormlite.OrmLiteDataSource; +import com.smlnskgmail.jaman.randomnotes.model.impl.ormlite.OrmLiteDataSource; import java.io.File; import java.lang.reflect.Method; diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/presenter/auth/CloudAuthPresenter.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/presenter/auth/CloudAuthPresenter.kt new file mode 100644 index 0000000..e278747 --- /dev/null +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/presenter/auth/CloudAuthPresenter.kt @@ -0,0 +1,37 @@ +package com.smlnskgmail.jaman.randomnotes.presenter.auth + +import android.app.Activity +import android.content.Intent +import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudAuth +import com.smlnskgmail.jaman.randomnotes.view.auth.CloudAuthView + +interface CloudAuthPresenter { + + fun init( + cloudAuth: CloudAuth, + cloudAuthView: CloudAuthView + ) + + fun signUpWithEmail( + email: String, + password: String + ) + fun logInWithEmail( + email: String, + password: String + ) + + fun logInWithGoogle( + activity: Activity + ) + fun logInWithFacebook( + activity: Activity + ) + + fun handleSocialAuthRequest( + requestCode: Int, + resultCode: Int, + data: Intent? + ) + +} diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/presenter/auth/CloudAuthPresenterImpl.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/presenter/auth/CloudAuthPresenterImpl.kt new file mode 100644 index 0000000..26b5dc0 --- /dev/null +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/presenter/auth/CloudAuthPresenterImpl.kt @@ -0,0 +1,80 @@ +package com.smlnskgmail.jaman.randomnotes.presenter.auth + +import android.app.Activity +import android.content.Intent +import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudAuth +import com.smlnskgmail.jaman.randomnotes.view.auth.CloudAuthView + +class CloudAuthPresenterImpl : CloudAuthPresenter { + + private lateinit var cloudAuth: CloudAuth + private lateinit var cloudAuthView: CloudAuthView + + override fun init( + cloudAuth: CloudAuth, + cloudAuthView: CloudAuthView + ) { + this.cloudAuth = cloudAuth + this.cloudAuthView = cloudAuthView + } + + override fun signUpWithEmail( + email: String, + password: String + ) { + cloudAuth.signUpWithEmail( + email, + email, + password + ) { handleAuthResult(it) } + } + + private fun handleAuthResult( + e: Exception? + ) { + if (e == null) { + cloudAuthView.authSuccess() + } else { + cloudAuthView.authError() + } + } + + override fun logInWithEmail( + email: String, + password: String + ) { + cloudAuth.signInWithEmail( + email, + password + ) { handleAuthResult(it) } + } + + override fun logInWithGoogle( + activity: Activity + ) { + cloudAuth.logInWithGoogle( + activity + ) { handleAuthResult(it) } + } + + override fun logInWithFacebook( + activity: Activity + ) { + cloudAuth.logInWithFacebook( + activity + ) { handleAuthResult(it) } + } + + override fun handleSocialAuthRequest( + requestCode: Int, + resultCode: Int, + data: Intent? + ) { + cloudAuth.bindForAuth( + requestCode, + resultCode, + data + ) + } + +} diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/presenter/creation/NoteCreationPresenter.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/presenter/creation/NoteCreationPresenter.kt new file mode 100644 index 0000000..f1f4a98 --- /dev/null +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/presenter/creation/NoteCreationPresenter.kt @@ -0,0 +1,16 @@ +package com.smlnskgmail.jaman.randomnotes.presenter.creation + +import com.smlnskgmail.jaman.randomnotes.view.creation.NoteCreationView + +interface NoteCreationPresenter { + + fun init( + noteCreationView: NoteCreationView + ) + + fun createNote( + title: String, + subtitle: String + ) + +} diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/presenter/creation/NoteCreationPresenterImpl.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/presenter/creation/NoteCreationPresenterImpl.kt new file mode 100644 index 0000000..0b05db7 --- /dev/null +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/presenter/creation/NoteCreationPresenterImpl.kt @@ -0,0 +1,27 @@ +package com.smlnskgmail.jaman.randomnotes.presenter.creation + +import com.smlnskgmail.jaman.randomnotes.model.api.entities.Note +import com.smlnskgmail.jaman.randomnotes.view.creation.NoteCreationView + +class NoteCreationPresenterImpl : NoteCreationPresenter { + + private lateinit var noteCreationView: NoteCreationView + + override fun init( + noteCreationView: NoteCreationView + ) { + this.noteCreationView = noteCreationView + } + + override fun createNote( + title: String, + subtitle: String + ) { + val note = Note( + title, + subtitle + ) + noteCreationView.noteCreated(note) + } + +} diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/presenter/invite/CloudInvitePresenter.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/presenter/invite/CloudInvitePresenter.kt new file mode 100644 index 0000000..4361d0d --- /dev/null +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/presenter/invite/CloudInvitePresenter.kt @@ -0,0 +1,15 @@ +package com.smlnskgmail.jaman.randomnotes.presenter.invite + +import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudInvite +import com.smlnskgmail.jaman.randomnotes.view.invite.CloudInviteView + +interface CloudInvitePresenter { + + fun init( + cloudInvite: CloudInvite, + cloudInviteView: CloudInviteView + ) + + fun invite(email: String) + +} diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/presenter/invite/CloudInvitePresenterImpl.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/presenter/invite/CloudInvitePresenterImpl.kt new file mode 100644 index 0000000..e555da7 --- /dev/null +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/presenter/invite/CloudInvitePresenterImpl.kt @@ -0,0 +1,29 @@ +package com.smlnskgmail.jaman.randomnotes.presenter.invite + +import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudInvite +import com.smlnskgmail.jaman.randomnotes.view.invite.CloudInviteView + +class CloudInvitePresenterImpl : CloudInvitePresenter { + + private lateinit var cloudInvite: CloudInvite + private lateinit var cloudInviteView: CloudInviteView + + override fun init( + cloudInvite: CloudInvite, + cloudInviteView: CloudInviteView + ) { + this.cloudInvite = cloudInvite + this.cloudInviteView = cloudInviteView + } + + override fun invite(email: String) { + cloudInvite.invite(email) { + if (it == null) { + cloudInviteView.inviteSuccess() + } else { + cloudInviteView.inviteError() + } + } + } + +} diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/presenter/list/NotesListPresenter.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/presenter/list/NotesListPresenter.kt new file mode 100644 index 0000000..dd7c748 --- /dev/null +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/presenter/list/NotesListPresenter.kt @@ -0,0 +1,33 @@ +package com.smlnskgmail.jaman.randomnotes.presenter.list + +import com.smlnskgmail.jaman.randomnotes.model.DataRepository +import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudAuth +import com.smlnskgmail.jaman.randomnotes.model.api.entities.Note +import com.smlnskgmail.jaman.randomnotes.view.list.NotesListView + +interface NotesListPresenter { + + fun init( + dataRepository: DataRepository, + cloudAuth: CloudAuth, + notesListView: NotesListView + ) + + fun shareNotes() + fun restoreNotes() + fun syncNotes() + fun createNote() + + fun handleCreatedNote( + note: Note + ) + fun handleNoteDeletion( + note: Note + ) + fun handleSharedMessage( + success: Boolean + ) + + fun handleAuthRequest() + +} diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/presenter/list/NotesListPresenterImpl.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/presenter/list/NotesListPresenterImpl.kt new file mode 100644 index 0000000..a66c832 --- /dev/null +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/presenter/list/NotesListPresenterImpl.kt @@ -0,0 +1,109 @@ +package com.smlnskgmail.jaman.randomnotes.presenter.list + +import com.smlnskgmail.jaman.randomnotes.model.DataRepository +import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudAuth +import com.smlnskgmail.jaman.randomnotes.model.api.entities.Note +import com.smlnskgmail.jaman.randomnotes.view.list.NotesListView + +class NotesListPresenterImpl : NotesListPresenter { + + private lateinit var dataRepository: DataRepository + private lateinit var cloudAuth: CloudAuth + private lateinit var notesListView: NotesListView + + private val notes = arrayListOf() + + override fun init( + dataRepository: DataRepository, + cloudAuth: CloudAuth, + notesListView: NotesListView + ) { + this.dataRepository = dataRepository + this.cloudAuth = cloudAuth + this.notesListView = notesListView + + + notes.addAll(dataRepository.allNotes()) + this.notesListView.refreshNotesList(notes) + if (this.cloudAuth.isAuthorized()) { + this.notesListView.setAuthenticated() + } else { + this.notesListView.setUnauthenticated() + } + } + + override fun shareNotes() { + notesListView.openShareSender() + } + + override fun restoreNotes() { + if (cloudAuth.isAuthorized()) { + dataRepository.restoreAllNotes { + if (it == null) { + notesListView.refreshNotesList( + dataRepository.allNotes() + ) + } else { + notesListView.showRestoreError() + } + } + } else { + notesListView.showAuthError() + } + } + + override fun syncNotes() { + if (cloudAuth.isAuthorized()) { + dataRepository.syncNotes { + if (it != null) { + notesListView.showSyncError() + } + } + } else { + notesListView.showAuthError() + } + } + + override fun createNote() { + notesListView.openNoteCreator() + } + + override fun handleCreatedNote( + note: Note + ) { + dataRepository.saveNote(note) + notes.add(note) + notesListView.addNote(note) + } + + override fun handleNoteDeletion(note: Note) { + dataRepository.delete(note) + notes.remove(note) + notesListView.deleteNote(note) + } + + override fun handleSharedMessage( + success: Boolean + ) { + if (success) { + notesListView.showShareSuccess() + } else { + notesListView.showShareError() + } + } + + override fun handleAuthRequest() { + if (cloudAuth.isAuthorized()) { + cloudAuth.logOut { + if (it == null) { + notesListView.setUnauthenticated() + } else { + notesListView.showAuthError() + } + } + } else { + notesListView.openAuthPage() + } + } + +} diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/support/L.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/utils/L.kt similarity index 75% rename from app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/support/L.kt rename to app/src/main/java/com/smlnskgmail/jaman/randomnotes/utils/L.kt index 24c01d5..e46069c 100644 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/support/L.kt +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/utils/L.kt @@ -1,4 +1,4 @@ -package com.smlnskgmail.jaman.randomnotes.logic.support +package com.smlnskgmail.jaman.randomnotes.utils import android.util.Log diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/utils/OpenForTests.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/utils/OpenForTests.kt new file mode 100644 index 0000000..39babed --- /dev/null +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/utils/OpenForTests.kt @@ -0,0 +1,3 @@ +package com.smlnskgmail.jaman.randomnotes.utils + +annotation class OpenForTests diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/login/LoginFragment.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/auth/CloudAuthFragment.kt similarity index 67% rename from app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/login/LoginFragment.kt rename to app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/auth/CloudAuthFragment.kt index bc63179..d0baf37 100644 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/login/LoginFragment.kt +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/auth/CloudAuthFragment.kt @@ -1,4 +1,4 @@ -package com.smlnskgmail.jaman.randomnotes.logic.login +package com.smlnskgmail.jaman.randomnotes.view.auth import android.content.Intent import android.os.Bundle @@ -6,20 +6,23 @@ import android.view.View import com.smlnskgmail.jaman.randomnotes.App import com.smlnskgmail.jaman.randomnotes.MainActivity import com.smlnskgmail.jaman.randomnotes.R -import com.smlnskgmail.jaman.randomnotes.components.fragments.BaseFragment -import com.smlnskgmail.jaman.randomnotes.components.views.LongSnackbar -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudAuth -import com.smlnskgmail.jaman.randomnotes.logic.support.L +import com.smlnskgmail.jaman.randomnotes.components.BaseFragment +import com.smlnskgmail.jaman.randomnotes.components.LongSnackbar +import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudAuth +import com.smlnskgmail.jaman.randomnotes.presenter.auth.CloudAuthPresenter +import com.smlnskgmail.jaman.randomnotes.presenter.auth.CloudAuthPresenterImpl import kotlinx.android.synthetic.main.fragment_login.* import javax.inject.Inject -class LoginFragment : BaseFragment() { - - private var loginMode = true +class CloudAuthFragment : BaseFragment(), CloudAuthView { @Inject lateinit var cloudAuth: CloudAuth + private lateinit var cloudAuthPresenter: CloudAuthPresenter + + private var loginMode = true + override fun onViewCreated( view: View, savedInstanceState: Bundle? @@ -27,6 +30,12 @@ class LoginFragment : BaseFragment() { super.onViewCreated(view, savedInstanceState) (context!!.applicationContext as App).appComponent.inject(this) + cloudAuthPresenter = CloudAuthPresenterImpl() + cloudAuthPresenter.init( + cloudAuth, + this + ) + register_account.setOnClickListener { changeLoginMode() } @@ -34,10 +43,14 @@ class LoginFragment : BaseFragment() { actionWithEmail() } google_login.setOnClickListener { - loginWithGoogle() + cloudAuthPresenter.logInWithGoogle( + activity!! + ) } facebook_login.setOnClickListener { - loginWithFacebook() + cloudAuthPresenter.logInWithFacebook( + activity!! + ) } } @@ -52,6 +65,17 @@ class LoginFragment : BaseFragment() { loginMode = !loginMode } + override fun authSuccess() { + (activity as MainActivity).showNotesListFragment() + } + + override fun authError() { + LongSnackbar( + login_screen, + getString(R.string.error_auth) + ).show() + } + private fun actionWithEmail() { val email = email.text.toString() if (!cloudAuth.isValidEmail(email)) { @@ -73,41 +97,15 @@ class LoginFragment : BaseFragment() { return } if (loginMode) { - cloudAuth.signInWithEmail( + cloudAuthPresenter.logInWithEmail( email, password - ) { - handleLoginResult(it) - } + ) } else { - cloudAuth.signUpWithEmail( - email, + cloudAuthPresenter.signUpWithEmail( email, password - ) { - handleLoginResult(it) - } - } - } - - private fun handleLoginResult(exception: Exception?) { - if (exception == null) { - (activity as MainActivity).loginComplete() - } else { - L.e(exception) - (activity as MainActivity).loginError() - } - } - - private fun loginWithGoogle() { - cloudAuth.logInWithGoogle(activity!!) { - handleLoginResult(it) - } - } - - private fun loginWithFacebook() { - cloudAuth.logInWithFacebook(activity!!) { - handleLoginResult(it) + ) } } @@ -116,7 +114,7 @@ class LoginFragment : BaseFragment() { resultCode: Int, data: Intent? ) { - cloudAuth.bindForAuth( + cloudAuthPresenter.handleSocialAuthRequest( requestCode, resultCode, data diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/auth/CloudAuthView.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/auth/CloudAuthView.kt new file mode 100644 index 0000000..23bdb6e --- /dev/null +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/auth/CloudAuthView.kt @@ -0,0 +1,8 @@ +package com.smlnskgmail.jaman.randomnotes.view.auth + +interface CloudAuthView { + + fun authSuccess() + fun authError() + +} diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/creation/NoteCreationBottomSheet.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/creation/NoteCreationBottomSheet.kt new file mode 100644 index 0000000..0eb92ad --- /dev/null +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/creation/NoteCreationBottomSheet.kt @@ -0,0 +1,40 @@ +package com.smlnskgmail.jaman.randomnotes.view.creation + +import android.os.Bundle +import android.view.View +import com.smlnskgmail.jaman.randomnotes.R +import com.smlnskgmail.jaman.randomnotes.components.BaseBottomSheet +import com.smlnskgmail.jaman.randomnotes.model.api.entities.Note +import com.smlnskgmail.jaman.randomnotes.presenter.creation.NoteCreationPresenter +import com.smlnskgmail.jaman.randomnotes.presenter.creation.NoteCreationPresenterImpl +import kotlinx.android.synthetic.main.bottom_sheet_add_note.* + +class NoteCreationBottomSheet : BaseBottomSheet(), NoteCreationView { + + private lateinit var noteCreationPresenter: NoteCreationPresenter + + override fun onViewCreated( + view: View, + savedInstanceState: Bundle? + ) { + super.onViewCreated(view, savedInstanceState) + noteCreationPresenter = NoteCreationPresenterImpl() + noteCreationPresenter.init(this) + save_note.setOnClickListener { + noteCreationPresenter.createNote( + title = edit_title.text.toString(), + subtitle = edit_subtitle.text.toString() + ) + } + } + + override fun noteCreated(note: Note) { + (parentFragment as NoteCreationTarget).newNoteAdded( + note + ) + dismiss() + } + + override fun layoutResId() = R.layout.bottom_sheet_add_note + +} diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/creation/NoteCreationTarget.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/creation/NoteCreationTarget.kt new file mode 100644 index 0000000..b772e21 --- /dev/null +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/creation/NoteCreationTarget.kt @@ -0,0 +1,9 @@ +package com.smlnskgmail.jaman.randomnotes.view.creation + +import com.smlnskgmail.jaman.randomnotes.model.api.entities.Note + +interface NoteCreationTarget { + + fun newNoteAdded(note: Note) + +} diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/creation/NoteCreationView.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/creation/NoteCreationView.kt new file mode 100644 index 0000000..3b844ac --- /dev/null +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/creation/NoteCreationView.kt @@ -0,0 +1,11 @@ +package com.smlnskgmail.jaman.randomnotes.view.creation + +import com.smlnskgmail.jaman.randomnotes.model.api.entities.Note + +interface NoteCreationView { + + fun noteCreated( + note: Note + ) + +} diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/invite/CloudInviteDialog.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/invite/CloudInviteDialog.kt new file mode 100644 index 0000000..0752e16 --- /dev/null +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/invite/CloudInviteDialog.kt @@ -0,0 +1,64 @@ +package com.smlnskgmail.jaman.randomnotes.view.invite + +import android.content.Context +import android.os.Bundle +import com.smlnskgmail.jaman.randomnotes.App +import com.smlnskgmail.jaman.randomnotes.R +import com.smlnskgmail.jaman.randomnotes.components.BaseDialog +import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudInvite +import com.smlnskgmail.jaman.randomnotes.presenter.invite.CloudInvitePresenter +import com.smlnskgmail.jaman.randomnotes.presenter.invite.CloudInvitePresenterImpl +import kotlinx.android.synthetic.main.dialog_invite.* +import javax.inject.Inject + +class CloudInviteDialog( + context: Context +) : BaseDialog(context), CloudInviteView { + + @Inject + lateinit var cloudInvite: CloudInvite + + private lateinit var cloudCloudInvitePresenter: CloudInvitePresenter + + private var cloudInviteTarget: CloudInviteTarget? = null + + override fun onCreate(savedInstanceState: Bundle?) { + (context.applicationContext as App).appComponent.inject(this) + super.onCreate(savedInstanceState) + + cloudCloudInvitePresenter = CloudInvitePresenterImpl() + cloudCloudInvitePresenter.init( + cloudInvite, + this + ) + + dialog_invite_cancel.setOnClickListener { + cancel() + } + dialog_invite_request.setOnClickListener { + cancel() + cloudCloudInvitePresenter.invite( + dialog_invite_email.text.toString() + ) + } + } + + override fun inviteSuccess() { + cloudInviteTarget?.onInviteAction( + true + ) + } + + override fun inviteError() { + cloudInviteTarget?.onInviteAction( + false + ) + } + + fun setInviteCallback(cloudInviteTarget: CloudInviteTarget) { + this.cloudInviteTarget = cloudInviteTarget + } + + override fun layoutResId() = R.layout.dialog_invite + +} diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/invite/CloudInviteTarget.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/invite/CloudInviteTarget.kt new file mode 100644 index 0000000..7ba17ca --- /dev/null +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/invite/CloudInviteTarget.kt @@ -0,0 +1,7 @@ +package com.smlnskgmail.jaman.randomnotes.view.invite + +interface CloudInviteTarget { + + fun onInviteAction(success: Boolean) + +} diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/invite/CloudInviteView.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/invite/CloudInviteView.kt new file mode 100644 index 0000000..697c616 --- /dev/null +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/invite/CloudInviteView.kt @@ -0,0 +1,8 @@ +package com.smlnskgmail.jaman.randomnotes.view.invite + +interface CloudInviteView { + + fun inviteSuccess() + fun inviteError() + +} diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/list/NotesListFragment.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/list/NotesListFragment.kt new file mode 100644 index 0000000..56dd544 --- /dev/null +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/list/NotesListFragment.kt @@ -0,0 +1,239 @@ +package com.smlnskgmail.jaman.randomnotes.view.list + +import android.os.Bundle +import android.view.View +import androidx.core.content.ContextCompat +import com.smlnskgmail.jaman.randomnotes.App +import com.smlnskgmail.jaman.randomnotes.MainActivity +import com.smlnskgmail.jaman.randomnotes.R +import com.smlnskgmail.jaman.randomnotes.components.BaseFragment +import com.smlnskgmail.jaman.randomnotes.components.LongSnackbar +import com.smlnskgmail.jaman.randomnotes.model.DataRepository +import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudAuth +import com.smlnskgmail.jaman.randomnotes.model.api.entities.Note +import com.smlnskgmail.jaman.randomnotes.presenter.list.NotesListPresenter +import com.smlnskgmail.jaman.randomnotes.presenter.list.NotesListPresenterImpl +import com.smlnskgmail.jaman.randomnotes.view.creation.NoteCreationBottomSheet +import com.smlnskgmail.jaman.randomnotes.view.creation.NoteCreationTarget +import com.smlnskgmail.jaman.randomnotes.view.invite.CloudInviteDialog +import com.smlnskgmail.jaman.randomnotes.view.invite.CloudInviteTarget +import com.smlnskgmail.jaman.randomnotes.view.list.recycler.NoteDeleteTarget +import com.smlnskgmail.jaman.randomnotes.view.list.recycler.NotesAdapter +import kotlinx.android.synthetic.main.fragment_main.* +import javax.inject.Inject + +@Suppress("TooManyFunctions") +class NotesListFragment : BaseFragment(), + NotesListView, NoteCreationTarget, + NoteDeleteTarget, + CloudInviteTarget { + + @Inject + lateinit var dataRepository: DataRepository + + @Inject + lateinit var cloudAuth: CloudAuth + + private lateinit var notesListPresenter: NotesListPresenter + + private val menuInitTasks = mutableListOf() + + override fun onViewCreated( + view: View, + savedInstanceState: Bundle? + ) { + super.onViewCreated( + view, + savedInstanceState + ) + (context!!.applicationContext as App).appComponent.inject(this) + notesListPresenter = NotesListPresenterImpl() + notesListPresenter.init( + dataRepository, + cloudAuth, + this + ) + + share_access.setOnClickListener { + actionWithNotes { + notesListPresenter.shareNotes() + } + } + restore_notes.setOnClickListener { + actionWithNotes { + notesListPresenter.restoreNotes() + } + } + sync_notes.setOnClickListener { + actionWithNotes { + notesListPresenter.syncNotes() + } + } + add_note.setOnClickListener { + actionWithNotes { + notesListPresenter.createNote() + } + } + } + + override fun refreshNotesList(notes: MutableList) { + notes_list.messageView = notes_list_empty_view + notes_list.adapter = NotesAdapter( + notes, + this + ) + } + + override fun addNote(note: Note) { + notes_list.adapter?.notifyItemInserted( + notes_list.adapter?.itemCount!!.minus(1) + ) + } + + override fun deleteNote(note: Note) { + notes_list.adapter?.notifyDataSetChanged() + } + + override fun showShareSuccess() { + LongSnackbar( + notes_screen, + getString(R.string.message_invite_sent) + ).show() + } + + override fun showAuthError() { + LongSnackbar( + notes_screen, + getString(R.string.message_sign_in) + ).show() + } + + override fun showShareError() { + LongSnackbar( + notes_screen, + getString(R.string.error_invite_sent) + ).show() + } + + override fun showRestoreError() { + LongSnackbar( + notes_screen, + getString(R.string.error_cannot_restore_notes) + ).show() + } + + override fun showSyncError() { + LongSnackbar( + notes_screen, + getString(R.string.error_cannot_sync_notes) + ).show() + } + + override fun openShareSender() { + val inviteDialog = CloudInviteDialog(context!!) + inviteDialog.setInviteCallback(this) + inviteDialog.show() + } + + override fun openAuthPage() { + (activity as MainActivity).showLoginFragment() + } + + override fun setAuthenticated() { + if (getMenu() == null) { + menuInitTasks.add(object : MenuTask { + override fun execute() { + validateLoginMenuIcon(true) + } + }) + } else { + validateLoginMenuIcon(true) + } + } + + override fun setUnauthenticated() { + if (getMenu() == null) { + menuInitTasks.add(object : MenuTask { + override fun execute() { + validateLoginMenuIcon(false) + } + }) + } else { + validateLoginMenuIcon(false) + } + } + + override fun openNoteCreator() { + val addNoteBottomSheet = NoteCreationBottomSheet() + addNoteBottomSheet.show( + childFragmentManager, + addNoteBottomSheet.javaClass.name + ) + } + + private fun actionWithNotes(action: () -> Unit) { + main_fab_menu.collapse() + action() + } + + override fun newNoteAdded(note: Note) { + notesListPresenter.handleCreatedNote(note) + } + + override fun onInviteAction(success: Boolean) { + notesListPresenter.handleSharedMessage( + success + ) + } + + override fun onMenuInflated() { + menuInitTasks.forEach { + it.execute() + } + menuInitTasks.clear() + } + + override fun handleMenuItemClick(menuItemId: Int) { + when (menuItemId) { + R.id.menu_login_action -> { + notesListPresenter.handleAuthRequest() + } + } + } + + private fun validateLoginMenuIcon( + isAuth: Boolean + ) { + val icon = if (isAuth) { + R.drawable.ic_logout + } else { + R.drawable.ic_login + } + getMenu()!!.findItem( + R.id.menu_login_action + )!!.icon = ContextCompat.getDrawable(context!!, icon) + } + + override fun onNoteDelete(note: Note) { + notesListPresenter.handleNoteDeletion( + note + ) + } + + override fun getTitleResId() = R.string.app_name + + override fun showToolbarMenu() = true + + override fun layoutResId() = R.layout.fragment_main + + override fun showMenuInToolbar() = true + + override fun getToolbarMenuResId() = R.menu.menu_main + + interface MenuTask { + + fun execute() + + } + +} diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/list/NotesListView.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/list/NotesListView.kt new file mode 100644 index 0000000..e4bb56d --- /dev/null +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/list/NotesListView.kt @@ -0,0 +1,29 @@ +package com.smlnskgmail.jaman.randomnotes.view.list + +import com.smlnskgmail.jaman.randomnotes.model.api.entities.Note + +interface NotesListView { + + fun refreshNotesList( + notes: MutableList + ) + + fun addNote(note: Note) + fun deleteNote(note: Note) + + fun showShareSuccess() + + fun showAuthError() + fun showShareError() + fun showRestoreError() + fun showSyncError() + + fun openNoteCreator() + fun openShareSender() + + fun openAuthPage() + + fun setAuthenticated() + fun setUnauthenticated() + +} diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/list/recycler/NoteDeleteTarget.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/list/recycler/NoteDeleteTarget.kt new file mode 100644 index 0000000..de0fe39 --- /dev/null +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/list/recycler/NoteDeleteTarget.kt @@ -0,0 +1,9 @@ +package com.smlnskgmail.jaman.randomnotes.view.list.recycler + +import com.smlnskgmail.jaman.randomnotes.model.api.entities.Note + +interface NoteDeleteTarget { + + fun onNoteDelete(note: Note) + +} diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/main/noteslist/NoteHolder.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/list/recycler/NoteHolder.kt similarity index 66% rename from app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/main/noteslist/NoteHolder.kt rename to app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/list/recycler/NoteHolder.kt index 286f03d..8a8d58a 100644 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/main/noteslist/NoteHolder.kt +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/list/recycler/NoteHolder.kt @@ -1,8 +1,8 @@ -package com.smlnskgmail.jaman.randomnotes.logic.main.noteslist +package com.smlnskgmail.jaman.randomnotes.view.list.recycler import android.view.View import androidx.recyclerview.widget.RecyclerView -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.entities.Note +import com.smlnskgmail.jaman.randomnotes.model.api.entities.Note import kotlinx.android.synthetic.main.item_note.view.* class NoteHolder( @@ -14,9 +14,7 @@ class NoteHolder( itemView.note_title.text = note.title itemView.note_subtitle.text = note.subtitle itemView.delete_note.setOnClickListener { - noteDeleteTarget.onNoteDelete( - note.positionInList - ) + noteDeleteTarget.onNoteDelete(note) } } diff --git a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/main/noteslist/NotesAdapter.kt b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/list/recycler/NotesAdapter.kt similarity index 64% rename from app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/main/noteslist/NotesAdapter.kt rename to app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/list/recycler/NotesAdapter.kt index c81a9f5..fc8a672 100644 --- a/app/src/main/java/com/smlnskgmail/jaman/randomnotes/logic/main/noteslist/NotesAdapter.kt +++ b/app/src/main/java/com/smlnskgmail/jaman/randomnotes/view/list/recycler/NotesAdapter.kt @@ -1,10 +1,10 @@ -package com.smlnskgmail.jaman.randomnotes.logic.main.noteslist +package com.smlnskgmail.jaman.randomnotes.view.list.recycler import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import com.smlnskgmail.jaman.randomnotes.R -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.entities.Note +import com.smlnskgmail.jaman.randomnotes.model.api.entities.Note class NotesAdapter( private val notes: MutableList, @@ -15,17 +15,9 @@ class NotesAdapter( holder: NoteHolder, position: Int ) { - val note = notes[position] - note.positionInList = position - holder.bind(note) - } - - fun validateLastNote() { - if (notes.size == 1) { - notifyDataSetChanged() - } else { - notifyItemInserted(itemCount - 1) - } + holder.bind( + notes[position] + ) } override fun onCreateViewHolder( diff --git a/app/src/main/res/layout/fragment_login.xml b/app/src/main/res/layout/fragment_login.xml index 1a69513..6f25019 100644 --- a/app/src/main/res/layout/fragment_login.xml +++ b/app/src/main/res/layout/fragment_login.xml @@ -38,7 +38,7 @@ android:hint="@string/hint_password" tools:ignore="Autofill,TextFields"/> - - - diff --git a/app/src/main/res/raw/db_config.txt b/app/src/main/res/raw/db_config.txt index 071c66d..c91e319 100644 --- a/app/src/main/res/raw/db_config.txt +++ b/app/src/main/res/raw/db_config.txt @@ -2,7 +2,7 @@ # generated on 2020/03/29 03:52:04 # # --table-start-- -dataClass=com.smlnskgmail.jaman.randomnotes.logic.repository.api.entities.Note +dataClass=com.smlnskgmail.jaman.randomnotes.model.api.entities.Note tableName=note # --table-fields-start-- # --field-start-- diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3b5ec83..2e3eb31 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -7,7 +7,6 @@ This is subtitle - Main Auth diff --git a/app/src/test/java/com/smlnskgmail/jaman/randomnotes/auth/verification/BaseAuthEmailVerificationTest.kt b/app/src/test/java/com/smlnskgmail/jaman/randomnotes/auth/verification/BaseAuthEmailVerificationTest.kt index 53c29a9..c89ea18 100644 --- a/app/src/test/java/com/smlnskgmail/jaman/randomnotes/auth/verification/BaseAuthEmailVerificationTest.kt +++ b/app/src/test/java/com/smlnskgmail/jaman/randomnotes/auth/verification/BaseAuthEmailVerificationTest.kt @@ -1,6 +1,6 @@ package com.smlnskgmail.jaman.randomnotes.auth.verification -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudAuth +import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudAuth import org.junit.Assert.assertFalse import org.junit.Assert.assertTrue import org.junit.Test diff --git a/app/src/test/java/com/smlnskgmail/jaman/randomnotes/auth/verification/BaseAuthPasswordVerificationTest.kt b/app/src/test/java/com/smlnskgmail/jaman/randomnotes/auth/verification/BaseAuthPasswordVerificationTest.kt index 923c377..c39265e 100644 --- a/app/src/test/java/com/smlnskgmail/jaman/randomnotes/auth/verification/BaseAuthPasswordVerificationTest.kt +++ b/app/src/test/java/com/smlnskgmail/jaman/randomnotes/auth/verification/BaseAuthPasswordVerificationTest.kt @@ -1,6 +1,6 @@ package com.smlnskgmail.jaman.randomnotes.auth.verification -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudAuth +import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudAuth import org.junit.Assert import org.junit.Test diff --git a/app/src/test/java/com/smlnskgmail/jaman/randomnotes/auth/verification/fake/FakeCloudAuthEmailVerificationTest.kt b/app/src/test/java/com/smlnskgmail/jaman/randomnotes/auth/verification/fake/FakeCloudAuthEmailVerificationTest.kt index 4495115..0df1635 100644 --- a/app/src/test/java/com/smlnskgmail/jaman/randomnotes/auth/verification/fake/FakeCloudAuthEmailVerificationTest.kt +++ b/app/src/test/java/com/smlnskgmail/jaman/randomnotes/auth/verification/fake/FakeCloudAuthEmailVerificationTest.kt @@ -1,8 +1,8 @@ package com.smlnskgmail.jaman.randomnotes.auth.verification.fake import com.smlnskgmail.jaman.randomnotes.auth.verification.BaseAuthEmailVerificationTest -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudAuth -import com.smlnskgmail.jaman.randomnotes.logic.repository.impl.cloud.fake.FakeCloudAuth +import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudAuth +import com.smlnskgmail.jaman.randomnotes.model.impl.cloud.fake.FakeCloudAuth class FakeCloudAuthEmailVerificationTest : BaseAuthEmailVerificationTest() { diff --git a/app/src/test/java/com/smlnskgmail/jaman/randomnotes/auth/verification/fake/FakeCloudAuthPasswordVerificationTest.kt b/app/src/test/java/com/smlnskgmail/jaman/randomnotes/auth/verification/fake/FakeCloudAuthPasswordVerificationTest.kt index 6ef30ae..04f2b07 100644 --- a/app/src/test/java/com/smlnskgmail/jaman/randomnotes/auth/verification/fake/FakeCloudAuthPasswordVerificationTest.kt +++ b/app/src/test/java/com/smlnskgmail/jaman/randomnotes/auth/verification/fake/FakeCloudAuthPasswordVerificationTest.kt @@ -1,8 +1,8 @@ package com.smlnskgmail.jaman.randomnotes.auth.verification.fake import com.smlnskgmail.jaman.randomnotes.auth.verification.BaseAuthPasswordVerificationTest -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudAuth -import com.smlnskgmail.jaman.randomnotes.logic.repository.impl.cloud.fake.FakeCloudAuth +import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudAuth +import com.smlnskgmail.jaman.randomnotes.model.impl.cloud.fake.FakeCloudAuth class FakeCloudAuthPasswordVerificationTest : BaseAuthPasswordVerificationTest() { diff --git a/app/src/test/java/com/smlnskgmail/jaman/randomnotes/auth/verification/parse/ParseServerAuthEmailVerificationTest.kt b/app/src/test/java/com/smlnskgmail/jaman/randomnotes/auth/verification/parse/ParseServerAuthEmailVerificationTest.kt index 1585506..70bb817 100644 --- a/app/src/test/java/com/smlnskgmail/jaman/randomnotes/auth/verification/parse/ParseServerAuthEmailVerificationTest.kt +++ b/app/src/test/java/com/smlnskgmail/jaman/randomnotes/auth/verification/parse/ParseServerAuthEmailVerificationTest.kt @@ -1,8 +1,8 @@ package com.smlnskgmail.jaman.randomnotes.auth.verification.parse import com.smlnskgmail.jaman.randomnotes.auth.verification.BaseAuthEmailVerificationTest -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudAuth -import com.smlnskgmail.jaman.randomnotes.logic.repository.impl.cloud.parse.ParseServerAuth +import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudAuth +import com.smlnskgmail.jaman.randomnotes.model.impl.cloud.parse.ParseServerAuth class ParseServerAuthEmailVerificationTest : BaseAuthEmailVerificationTest() { diff --git a/app/src/test/java/com/smlnskgmail/jaman/randomnotes/auth/verification/parse/ParseServerAuthPasswordVerificationTest.kt b/app/src/test/java/com/smlnskgmail/jaman/randomnotes/auth/verification/parse/ParseServerAuthPasswordVerificationTest.kt index fc46f66..a2c62df 100644 --- a/app/src/test/java/com/smlnskgmail/jaman/randomnotes/auth/verification/parse/ParseServerAuthPasswordVerificationTest.kt +++ b/app/src/test/java/com/smlnskgmail/jaman/randomnotes/auth/verification/parse/ParseServerAuthPasswordVerificationTest.kt @@ -1,8 +1,8 @@ package com.smlnskgmail.jaman.randomnotes.auth.verification.parse import com.smlnskgmail.jaman.randomnotes.auth.verification.BaseAuthEmailVerificationTest -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudAuth -import com.smlnskgmail.jaman.randomnotes.logic.repository.impl.cloud.parse.ParseServerAuth +import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudAuth +import com.smlnskgmail.jaman.randomnotes.model.impl.cloud.parse.ParseServerAuth class ParseServerAuthPasswordVerificationTest : BaseAuthEmailVerificationTest() { diff --git a/app/src/test/java/com/smlnskgmail/jaman/randomnotes/entities/EntityWithIdTest.kt b/app/src/test/java/com/smlnskgmail/jaman/randomnotes/entities/EntityWithIdTest.kt index 5365cfd..69123b6 100644 --- a/app/src/test/java/com/smlnskgmail/jaman/randomnotes/entities/EntityWithIdTest.kt +++ b/app/src/test/java/com/smlnskgmail/jaman/randomnotes/entities/EntityWithIdTest.kt @@ -1,6 +1,6 @@ package com.smlnskgmail.jaman.randomnotes.entities -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.entities.EntityWithId +import com.smlnskgmail.jaman.randomnotes.model.api.entities.EntityWithId import org.junit.Assert.assertEquals import org.junit.Test diff --git a/app/src/test/java/com/smlnskgmail/jaman/randomnotes/entities/NoteTest.kt b/app/src/test/java/com/smlnskgmail/jaman/randomnotes/entities/NoteTest.kt index 5eb44c2..a291d66 100644 --- a/app/src/test/java/com/smlnskgmail/jaman/randomnotes/entities/NoteTest.kt +++ b/app/src/test/java/com/smlnskgmail/jaman/randomnotes/entities/NoteTest.kt @@ -1,6 +1,6 @@ package com.smlnskgmail.jaman.randomnotes.entities -import com.smlnskgmail.jaman.randomnotes.logic.repository.api.entities.Note +import com.smlnskgmail.jaman.randomnotes.model.api.entities.Note import org.junit.Assert.assertEquals import org.junit.Assert.assertNotEquals import org.junit.Test @@ -17,8 +17,7 @@ class NoteTest { val note = Note( title, subtitle, - remoteId, - positionInList + remoteId ) assertEquals( @@ -33,10 +32,6 @@ class NoteTest { remoteId, note.remoteId ) - assertEquals( - positionInList, - note.positionInList - ) } @Test @@ -49,20 +44,17 @@ class NoteTest { val firstNote = Note( title, subtitle, - remoteId, - positionInList + remoteId ) val secondNote = Note( title, subtitle, - remoteId, - positionInList + remoteId ) val thirdNote = Note( "Third note", "Subtitle", - "q31jkal", - 2 + "q31jkal" ) assertEquals( diff --git a/build.gradle b/build.gradle index 3e7b824..04d2d06 100644 --- a/build.gradle +++ b/build.gradle @@ -14,7 +14,8 @@ buildscript { } plugins { - id "io.gitlab.arturbosch.detekt" version "1.6.0" + id 'io.gitlab.arturbosch.detekt' version '1.6.0' + id 'org.jetbrains.kotlin.plugin.allopen' version '1.3.71' } allprojects {