1
0
mirror of https://github.com/wulkanowy/wulkanowy.git synced 2025-02-20 21:34:45 +01:00

Refactor packages hierarchy (#170)

This commit is contained in:
Rafał Borcz 2018-10-23 17:12:57 +02:00 committed by Mikołaj Pich
parent 837bce7286
commit 0211a7f0a0
74 changed files with 188 additions and 196 deletions

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="io.github.wulkanowy"
android:installLocation="internalOnly">
@ -15,9 +16,10 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="false"
android:theme="@style/WulkanowyTheme"
android:usesCleartextTraffic="true">
android:usesCleartextTraffic="true"
tools:ignore="GoogleAppIndexingWarning">
<activity
android:name=".ui.splash.SplashActivity"
android:name=".ui.modules.splash.SplashActivity"
android:screenOrientation="portrait"
android:theme="@style/WulkanowyTheme.SplashScreen">
<intent-filter>
@ -27,12 +29,12 @@
</intent-filter>
</activity>
<activity
android:name=".ui.login.LoginActivity"
android:name="ui.modules.login.LoginActivity"
android:configChanges="orientation|screenSize"
android:label="@string/login_title"
android:windowSoftInputMode="adjustResize" />
<activity
android:name=".ui.main.MainActivity"
android:name="ui.modules.main.MainActivity"
android:configChanges="orientation|screenSize"
android:label="@string/main_title"
android:launchMode="singleTop"

View File

@ -6,8 +6,7 @@ import dagger.Provides
import eu.davidea.flexibleadapter.FlexibleAdapter
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem
import io.github.wulkanowy.WulkanowyApp
import io.github.wulkanowy.utils.schedulers.SchedulersManager
import io.github.wulkanowy.utils.schedulers.SchedulersProvider
import io.github.wulkanowy.utils.SchedulersProvider
import javax.inject.Singleton
@Module
@ -19,7 +18,7 @@ internal class AppModule {
@Singleton
@Provides
fun provideSchedulers(): SchedulersManager = SchedulersProvider()
fun provideSchedulersProvider() = SchedulersProvider()
@Provides
fun provideFlexibleAdapter() = FlexibleAdapter<AbstractFlexibleItem<*>>(null, null, true)

View File

@ -3,11 +3,11 @@ package io.github.wulkanowy.di
import dagger.Module
import dagger.android.ContributesAndroidInjector
import io.github.wulkanowy.di.scopes.PerActivity
import io.github.wulkanowy.ui.login.LoginActivity
import io.github.wulkanowy.ui.login.LoginModule
import io.github.wulkanowy.ui.main.MainActivity
import io.github.wulkanowy.ui.main.MainModule
import io.github.wulkanowy.ui.splash.SplashActivity
import io.github.wulkanowy.ui.modules.login.LoginActivity
import io.github.wulkanowy.ui.modules.login.LoginModule
import io.github.wulkanowy.ui.modules.main.MainActivity
import io.github.wulkanowy.ui.modules.main.MainModule
import io.github.wulkanowy.ui.modules.splash.SplashActivity
@Module
internal abstract class BuilderModule {

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.about
package io.github.wulkanowy.ui.modules.about
import android.content.Intent
import android.os.Bundle
@ -9,7 +9,7 @@ import com.mikepenz.aboutlibraries.LibsBuilder
import com.mikepenz.aboutlibraries.LibsFragmentCompat
import io.github.wulkanowy.R
import io.github.wulkanowy.ui.base.BaseFragment
import io.github.wulkanowy.ui.main.MainView
import io.github.wulkanowy.ui.modules.main.MainView
import io.github.wulkanowy.utils.withOnExtraListener
import javax.inject.Inject

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.about
package io.github.wulkanowy.ui.modules.about
import com.mikepenz.aboutlibraries.LibsFragmentCompat
import dagger.Module

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.about
package io.github.wulkanowy.ui.modules.about
import com.mikepenz.aboutlibraries.Libs
import com.mikepenz.aboutlibraries.Libs.SpecialButton.SPECIAL1

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.about
package io.github.wulkanowy.ui.modules.about
import io.github.wulkanowy.ui.base.BaseView

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.attendance
package io.github.wulkanowy.ui.modules.attendance
import android.os.Bundle
import android.view.LayoutInflater

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.attendance
package io.github.wulkanowy.ui.modules.attendance
import android.os.Bundle
import android.view.LayoutInflater
@ -10,7 +10,7 @@ import eu.davidea.flexibleadapter.items.AbstractFlexibleItem
import io.github.wulkanowy.R
import io.github.wulkanowy.data.db.entities.Attendance
import io.github.wulkanowy.ui.base.BaseFragment
import io.github.wulkanowy.ui.main.MainView
import io.github.wulkanowy.ui.modules.main.MainView
import io.github.wulkanowy.utils.setOnItemClickListener
import kotlinx.android.synthetic.main.fragment_attendance.*
import javax.inject.Inject

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.attendance
package io.github.wulkanowy.ui.modules.attendance
import android.view.View
import android.view.View.INVISIBLE

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.attendance
package io.github.wulkanowy.ui.modules.attendance
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem
import io.github.wulkanowy.data.ErrorHandler
@ -7,7 +7,6 @@ import io.github.wulkanowy.data.repositories.PreferencesRepository
import io.github.wulkanowy.data.repositories.SessionRepository
import io.github.wulkanowy.ui.base.BasePresenter
import io.github.wulkanowy.utils.*
import io.github.wulkanowy.utils.schedulers.SchedulersManager
import org.threeten.bp.LocalDate
import org.threeten.bp.LocalDate.now
import org.threeten.bp.LocalDate.ofEpochDay
@ -16,7 +15,7 @@ import javax.inject.Inject
class AttendancePresenter @Inject constructor(
private val errorHandler: ErrorHandler,
private val schedulers: SchedulersManager,
private val schedulers: SchedulersProvider,
private val attendanceRepository: AttendanceRepository,
private val sessionRepository: SessionRepository,
private val prefRepository: PreferencesRepository
@ -68,8 +67,8 @@ class AttendancePresenter @Inject constructor(
else list.filter { !it.presence }
}
.map { items -> items.map { AttendanceItem(it) } }
.subscribeOn(schedulers.backgroundThread())
.observeOn(schedulers.mainThread())
.subscribeOn(schedulers.backgroundThread)
.observeOn(schedulers.mainThread)
.doFinally {
view?.run {
hideRefresh()

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.attendance
package io.github.wulkanowy.ui.modules.attendance
import io.github.wulkanowy.data.db.entities.Attendance
import io.github.wulkanowy.ui.base.BaseView

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.exam
package io.github.wulkanowy.ui.modules.exam
import android.os.Bundle
import android.view.LayoutInflater

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.exam
package io.github.wulkanowy.ui.modules.exam
import android.os.Bundle
import android.view.LayoutInflater
@ -11,7 +11,7 @@ import eu.davidea.flexibleadapter.items.AbstractFlexibleItem
import io.github.wulkanowy.R
import io.github.wulkanowy.data.db.entities.Exam
import io.github.wulkanowy.ui.base.BaseFragment
import io.github.wulkanowy.ui.main.MainView
import io.github.wulkanowy.ui.modules.main.MainView
import io.github.wulkanowy.utils.setOnItemClickListener
import kotlinx.android.synthetic.main.fragment_exam.*
import javax.inject.Inject

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.exam
package io.github.wulkanowy.ui.modules.exam
import android.view.View
import eu.davidea.flexibleadapter.FlexibleAdapter

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.exam
package io.github.wulkanowy.ui.modules.exam
import android.view.View
import eu.davidea.flexibleadapter.FlexibleAdapter

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.exam
package io.github.wulkanowy.ui.modules.exam
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem
import io.github.wulkanowy.data.ErrorHandler
@ -7,7 +7,6 @@ import io.github.wulkanowy.data.repositories.ExamRepository
import io.github.wulkanowy.data.repositories.SessionRepository
import io.github.wulkanowy.ui.base.BasePresenter
import io.github.wulkanowy.utils.*
import io.github.wulkanowy.utils.schedulers.SchedulersManager
import org.threeten.bp.LocalDate
import org.threeten.bp.LocalDate.now
import org.threeten.bp.LocalDate.ofEpochDay
@ -16,7 +15,7 @@ import javax.inject.Inject
class ExamPresenter @Inject constructor(
private val errorHandler: ErrorHandler,
private val schedulers: SchedulersManager,
private val schedulers: SchedulersProvider,
private val examRepository: ExamRepository,
private val sessionRepository: SessionRepository
) : BasePresenter<ExamView>(errorHandler) {
@ -65,8 +64,8 @@ class ExamPresenter @Inject constructor(
examRepository.getExams(it, currentDate.monday, currentDate.friday, forceRefresh)
}.map { it.groupBy { exam -> exam.date }.toSortedMap() }
.map { createExamItems(it) }
.subscribeOn(schedulers.backgroundThread())
.observeOn(schedulers.mainThread())
.subscribeOn(schedulers.backgroundThread)
.observeOn(schedulers.mainThread)
.doFinally {
view?.run {
hideRefresh()

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.exam
package io.github.wulkanowy.ui.modules.exam
import io.github.wulkanowy.data.db.entities.Exam
import io.github.wulkanowy.ui.base.BaseView

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.grade
package io.github.wulkanowy.ui.modules.grade
import android.os.Bundle
import android.view.*
@ -8,9 +8,9 @@ import androidx.appcompat.app.AlertDialog
import io.github.wulkanowy.R
import io.github.wulkanowy.ui.base.BaseFragment
import io.github.wulkanowy.ui.base.BasePagerAdapter
import io.github.wulkanowy.ui.main.MainView
import io.github.wulkanowy.ui.main.grade.details.GradeDetailsFragment
import io.github.wulkanowy.ui.main.grade.summary.GradeSummaryFragment
import io.github.wulkanowy.ui.modules.grade.details.GradeDetailsFragment
import io.github.wulkanowy.ui.modules.grade.summary.GradeSummaryFragment
import io.github.wulkanowy.ui.modules.main.MainView
import io.github.wulkanowy.utils.setOnSelectPageListener
import kotlinx.android.synthetic.main.fragment_grade.*
import javax.inject.Inject

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.grade
package io.github.wulkanowy.ui.modules.grade
import dagger.Module
import dagger.Provides
@ -6,8 +6,8 @@ import dagger.android.ContributesAndroidInjector
import io.github.wulkanowy.di.scopes.PerChildFragment
import io.github.wulkanowy.di.scopes.PerFragment
import io.github.wulkanowy.ui.base.BasePagerAdapter
import io.github.wulkanowy.ui.main.grade.details.GradeDetailsFragment
import io.github.wulkanowy.ui.main.grade.summary.GradeSummaryFragment
import io.github.wulkanowy.ui.modules.grade.details.GradeDetailsFragment
import io.github.wulkanowy.ui.modules.grade.summary.GradeSummaryFragment
@Module
abstract class GradeModule {

View File

@ -1,17 +1,17 @@
package io.github.wulkanowy.ui.main.grade
package io.github.wulkanowy.ui.modules.grade
import io.github.wulkanowy.data.ErrorHandler
import io.github.wulkanowy.data.db.entities.Semester
import io.github.wulkanowy.data.repositories.SessionRepository
import io.github.wulkanowy.ui.base.BasePresenter
import io.github.wulkanowy.utils.schedulers.SchedulersManager
import io.github.wulkanowy.utils.SchedulersProvider
import io.reactivex.Completable
import java.util.concurrent.TimeUnit.MILLISECONDS
import javax.inject.Inject
class GradePresenter @Inject constructor(
private val errorHandler: ErrorHandler,
private val schedulers: SchedulersManager,
private val schedulers: SchedulersProvider,
private val sessionRepository: SessionRepository) : BasePresenter<GradeView>(errorHandler) {
var selectedIndex = 0
@ -23,7 +23,7 @@ class GradePresenter @Inject constructor(
fun onAttachView(view: GradeView, savedIndex: Int?) {
super.onAttachView(view)
disposable.add(Completable.timer(150, MILLISECONDS, schedulers.mainThread())
disposable.add(Completable.timer(150, MILLISECONDS, schedulers.mainThread)
.subscribe {
selectedIndex = savedIndex ?: 0
view.initView()
@ -52,7 +52,7 @@ class GradePresenter @Inject constructor(
}
fun onChildViewRefresh() {
view?.let { loadChild(it.currentPageIndex, forceRefresh = true) }
view?.let { loadChild(it.currentPageIndex, true) }
}
fun onChildViewLoaded(semesterId: Int) {
@ -75,8 +75,8 @@ class GradePresenter @Inject constructor(
semesters = it.filter { semester -> semester.diaryId == current.diaryId }
}
}
.subscribeOn(schedulers.backgroundThread())
.observeOn(schedulers.mainThread())
.subscribeOn(schedulers.backgroundThread)
.observeOn(schedulers.mainThread)
.subscribe({ _ ->
view?.let { loadChild(it.currentPageIndex) }
}) { errorHandler.proceed(it) })

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.grade
package io.github.wulkanowy.ui.modules.grade
import io.github.wulkanowy.ui.base.BaseView

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.grade.details
package io.github.wulkanowy.ui.modules.grade.details
import android.os.Bundle
import android.view.LayoutInflater

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.grade.details
package io.github.wulkanowy.ui.modules.grade.details
import android.os.Bundle
import android.view.LayoutInflater
@ -13,8 +13,8 @@ import eu.davidea.flexibleadapter.items.IFlexible
import io.github.wulkanowy.R
import io.github.wulkanowy.data.db.entities.Grade
import io.github.wulkanowy.ui.base.BaseFragment
import io.github.wulkanowy.ui.main.grade.GradeFragment
import io.github.wulkanowy.ui.main.grade.GradeView
import io.github.wulkanowy.ui.modules.grade.GradeFragment
import io.github.wulkanowy.ui.modules.grade.GradeView
import io.github.wulkanowy.utils.setOnItemClickListener
import kotlinx.android.synthetic.main.fragment_grade_details.*
import javax.inject.Inject

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.grade.details
package io.github.wulkanowy.ui.modules.grade.details
import android.view.View
import android.view.View.GONE

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.grade.details
package io.github.wulkanowy.ui.modules.grade.details
import android.annotation.SuppressLint
import android.view.View

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.grade.details
package io.github.wulkanowy.ui.modules.grade.details
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem
import io.github.wulkanowy.data.ErrorHandler
@ -6,14 +6,14 @@ import io.github.wulkanowy.data.db.entities.Grade
import io.github.wulkanowy.data.repositories.GradeRepository
import io.github.wulkanowy.data.repositories.SessionRepository
import io.github.wulkanowy.ui.base.BasePresenter
import io.github.wulkanowy.utils.SchedulersProvider
import io.github.wulkanowy.utils.calcAverage
import io.github.wulkanowy.utils.schedulers.SchedulersManager
import io.github.wulkanowy.utils.valueColor
import javax.inject.Inject
class GradeDetailsPresenter @Inject constructor(
private val errorHandler: ErrorHandler,
private val schedulers: SchedulersManager,
private val schedulers: SchedulersProvider,
private val gradeRepository: GradeRepository,
private val sessionRepository: SessionRepository) : BasePresenter<GradeDetailsView>(errorHandler) {
@ -26,8 +26,8 @@ class GradeDetailsPresenter @Inject constructor(
disposable.add(sessionRepository.getSemesters()
.flatMap { gradeRepository.getGrades(it.first { item -> item.semesterId == semesterId }, forceRefresh) }
.map { createGradeItems(it.groupBy { grade -> grade.subject }.toSortedMap()) }
.subscribeOn(schedulers.backgroundThread())
.observeOn(schedulers.mainThread())
.subscribeOn(schedulers.backgroundThread)
.observeOn(schedulers.mainThread)
.doFinally {
view?.run {
showRefresh(false)
@ -117,8 +117,8 @@ class GradeDetailsPresenter @Inject constructor(
private fun updateGrade(grade: Grade) {
disposable.add(gradeRepository.updateGrade(grade)
.subscribeOn(schedulers.backgroundThread())
.observeOn(schedulers.mainThread())
.subscribeOn(schedulers.backgroundThread)
.observeOn(schedulers.mainThread)
.subscribe({}) { error -> errorHandler.proceed(error) })
}
}

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.grade.details
package io.github.wulkanowy.ui.modules.grade.details
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem
import eu.davidea.flexibleadapter.items.IExpandable

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.grade.summary
package io.github.wulkanowy.ui.modules.grade.summary
import android.os.Bundle
import android.view.LayoutInflater
@ -10,8 +10,8 @@ import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem
import io.github.wulkanowy.R
import io.github.wulkanowy.ui.base.BaseFragment
import io.github.wulkanowy.ui.main.grade.GradeFragment
import io.github.wulkanowy.ui.main.grade.GradeView
import io.github.wulkanowy.ui.modules.grade.GradeFragment
import io.github.wulkanowy.ui.modules.grade.GradeView
import kotlinx.android.synthetic.main.fragment_grade_summary.*
import javax.inject.Inject

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.grade.summary
package io.github.wulkanowy.ui.modules.grade.summary
import android.view.View
import eu.davidea.flexibleadapter.FlexibleAdapter

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.grade.summary
package io.github.wulkanowy.ui.modules.grade.summary
import android.view.View
import eu.davidea.flexibleadapter.FlexibleAdapter

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.grade.summary
package io.github.wulkanowy.ui.modules.grade.summary
import io.github.wulkanowy.data.ErrorHandler
import io.github.wulkanowy.data.db.entities.GradeSummary
@ -6,8 +6,8 @@ import io.github.wulkanowy.data.repositories.GradeRepository
import io.github.wulkanowy.data.repositories.GradeSummaryRepository
import io.github.wulkanowy.data.repositories.SessionRepository
import io.github.wulkanowy.ui.base.BasePresenter
import io.github.wulkanowy.utils.SchedulersProvider
import io.github.wulkanowy.utils.calcAverage
import io.github.wulkanowy.utils.schedulers.SchedulersManager
import java.lang.String.format
import java.util.Locale.FRANCE
import javax.inject.Inject
@ -17,7 +17,7 @@ class GradeSummaryPresenter @Inject constructor(
private val gradeSummaryRepository: GradeSummaryRepository,
private val gradeRepository: GradeRepository,
private val sessionRepository: SessionRepository,
private val schedulers: SchedulersManager)
private val schedulers: SchedulersProvider)
: BasePresenter<GradeSummaryView>(errorHandler) {
override fun onAttachView(view: GradeSummaryView) {
@ -46,8 +46,8 @@ class GradeSummaryPresenter @Inject constructor(
}
}
}
.subscribeOn(schedulers.backgroundThread())
.observeOn(schedulers.mainThread())
.subscribeOn(schedulers.backgroundThread)
.observeOn(schedulers.mainThread)
.doFinally {
view?.run {
showRefresh(false)

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.grade.summary
package io.github.wulkanowy.ui.modules.grade.summary
import android.view.View
import eu.davidea.flexibleadapter.FlexibleAdapter

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.grade.summary
package io.github.wulkanowy.ui.modules.grade.summary
import io.github.wulkanowy.ui.base.BaseView

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.login
package io.github.wulkanowy.ui.modules.login
import android.content.Context
import android.content.Intent
@ -6,8 +6,8 @@ import android.os.Bundle
import io.github.wulkanowy.R
import io.github.wulkanowy.ui.base.BaseActivity
import io.github.wulkanowy.ui.base.BasePagerAdapter
import io.github.wulkanowy.ui.login.form.LoginFormFragment
import io.github.wulkanowy.ui.login.options.LoginOptionsFragment
import io.github.wulkanowy.ui.modules.login.form.LoginFormFragment
import io.github.wulkanowy.ui.modules.login.options.LoginOptionsFragment
import io.github.wulkanowy.utils.setOnSelectPageListener
import kotlinx.android.synthetic.main.activity_login.*
import javax.inject.Inject

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.login
package io.github.wulkanowy.ui.modules.login
import android.content.res.Resources
import io.github.wulkanowy.api.login.BadCredentialsException

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.login
package io.github.wulkanowy.ui.modules.login
import android.content.Context
import dagger.Module
@ -7,8 +7,8 @@ import dagger.android.ContributesAndroidInjector
import io.github.wulkanowy.di.scopes.PerActivity
import io.github.wulkanowy.di.scopes.PerFragment
import io.github.wulkanowy.ui.base.BasePagerAdapter
import io.github.wulkanowy.ui.login.form.LoginFormFragment
import io.github.wulkanowy.ui.login.options.LoginOptionsFragment
import io.github.wulkanowy.ui.modules.login.form.LoginFormFragment
import io.github.wulkanowy.ui.modules.login.options.LoginOptionsFragment
@Module
internal abstract class LoginModule {

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.login
package io.github.wulkanowy.ui.modules.login
import io.github.wulkanowy.data.ErrorHandler
import io.github.wulkanowy.ui.base.BasePresenter

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.login
package io.github.wulkanowy.ui.modules.login
interface LoginSwitchListener {

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.login
package io.github.wulkanowy.ui.modules.login
import io.github.wulkanowy.ui.base.BaseView

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.login.form
package io.github.wulkanowy.ui.modules.login.form
import android.os.Bundle
import android.view.LayoutInflater
@ -10,7 +10,7 @@ import android.view.inputmethod.EditorInfo
import android.widget.ArrayAdapter
import io.github.wulkanowy.R
import io.github.wulkanowy.ui.base.BaseFragment
import io.github.wulkanowy.ui.login.LoginSwitchListener
import io.github.wulkanowy.ui.modules.login.LoginSwitchListener
import io.github.wulkanowy.utils.hideSoftInput
import io.github.wulkanowy.utils.showSoftInput
import kotlinx.android.synthetic.main.fragment_login_form.*

View File

@ -1,13 +1,13 @@
package io.github.wulkanowy.ui.login.form
package io.github.wulkanowy.ui.modules.login.form
import io.github.wulkanowy.data.repositories.SessionRepository
import io.github.wulkanowy.ui.base.BasePresenter
import io.github.wulkanowy.ui.login.LoginErrorHandler
import io.github.wulkanowy.utils.schedulers.SchedulersManager
import io.github.wulkanowy.ui.modules.login.LoginErrorHandler
import io.github.wulkanowy.utils.SchedulersProvider
import javax.inject.Inject
class LoginFormPresenter @Inject constructor(
private val schedulers: SchedulersManager,
private val schedulers: SchedulersProvider,
private val errorHandler: LoginErrorHandler,
private val sessionRepository: SessionRepository)
: BasePresenter<LoginFormView>(errorHandler) {
@ -22,8 +22,8 @@ class LoginFormPresenter @Inject constructor(
fun attemptLogin(email: String, password: String, symbol: String, endpoint: String) {
if (!validateCredentials(email, password, symbol)) return
disposable.add(sessionRepository.getConnectedStudents(email, password, symbol, endpoint)
.observeOn(schedulers.mainThread())
.subscribeOn(schedulers.backgroundThread())
.observeOn(schedulers.mainThread)
.subscribeOn(schedulers.backgroundThread)
.doOnSubscribe {
view?.run {
hideSoftKeyboard()

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.login.form
package io.github.wulkanowy.ui.modules.login.form
import io.github.wulkanowy.ui.base.BaseView

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.login.options
package io.github.wulkanowy.ui.modules.login.options
import android.os.Bundle
import android.view.LayoutInflater
@ -12,7 +12,7 @@ import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem
import io.github.wulkanowy.R
import io.github.wulkanowy.ui.base.BaseFragment
import io.github.wulkanowy.ui.main.MainActivity
import io.github.wulkanowy.ui.modules.main.MainActivity
import io.github.wulkanowy.utils.setOnItemClickListener
import kotlinx.android.synthetic.main.fragment_login_options.*
import javax.inject.Inject

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.login.options
package io.github.wulkanowy.ui.modules.login.options
import android.view.View
import eu.davidea.flexibleadapter.FlexibleAdapter

View File

@ -1,16 +1,16 @@
package io.github.wulkanowy.ui.login.options
package io.github.wulkanowy.ui.modules.login.options
import io.github.wulkanowy.data.ErrorHandler
import io.github.wulkanowy.data.db.entities.Student
import io.github.wulkanowy.data.repositories.SessionRepository
import io.github.wulkanowy.ui.base.BasePresenter
import io.github.wulkanowy.utils.schedulers.SchedulersManager
import io.github.wulkanowy.utils.SchedulersProvider
import javax.inject.Inject
class LoginOptionsPresenter @Inject constructor(
private val errorHandler: ErrorHandler,
private val repository: SessionRepository,
private val schedulers: SchedulersManager)
private val schedulers: SchedulersProvider)
: BasePresenter<LoginOptionsView>(errorHandler) {
override fun onAttachView(view: LoginOptionsView) {
@ -20,8 +20,8 @@ class LoginOptionsPresenter @Inject constructor(
fun refreshData() {
disposable.add(repository.cachedStudents
.observeOn(schedulers.mainThread())
.subscribeOn(schedulers.backgroundThread())
.observeOn(schedulers.mainThread)
.subscribeOn(schedulers.backgroundThread)
.doOnSubscribe { view?.showActionBar(true) }
.doFinally { repository.clearCache() }
.subscribe({
@ -33,8 +33,8 @@ class LoginOptionsPresenter @Inject constructor(
fun onSelectStudent(student: Student) {
disposable.add(repository.saveStudent(student)
.subscribeOn(schedulers.backgroundThread())
.observeOn(schedulers.mainThread())
.subscribeOn(schedulers.backgroundThread)
.observeOn(schedulers.mainThread)
.doOnSubscribe { _ ->
view?.showLoginProgress(true)
view?.showActionBar(false)

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.login.options
package io.github.wulkanowy.ui.modules.login.options
import io.github.wulkanowy.ui.base.BaseView

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main
package io.github.wulkanowy.ui.modules.main
import android.content.Context
import android.content.Intent
@ -11,11 +11,11 @@ import com.ncapdevi.fragnav.FragNavController
import com.ncapdevi.fragnav.FragNavController.Companion.HIDE
import io.github.wulkanowy.R
import io.github.wulkanowy.ui.base.BaseActivity
import io.github.wulkanowy.ui.main.attendance.AttendanceFragment
import io.github.wulkanowy.ui.main.exam.ExamFragment
import io.github.wulkanowy.ui.main.grade.GradeFragment
import io.github.wulkanowy.ui.main.more.MoreFragment
import io.github.wulkanowy.ui.main.timetable.TimetableFragment
import io.github.wulkanowy.ui.modules.attendance.AttendanceFragment
import io.github.wulkanowy.ui.modules.exam.ExamFragment
import io.github.wulkanowy.ui.modules.grade.GradeFragment
import io.github.wulkanowy.ui.modules.more.MoreFragment
import io.github.wulkanowy.ui.modules.timetable.TimetableFragment
import io.github.wulkanowy.utils.safelyPopFragment
import io.github.wulkanowy.utils.setOnViewChangeListener
import kotlinx.android.synthetic.main.activity_main.*

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main
package io.github.wulkanowy.ui.modules.main
import com.ncapdevi.fragnav.FragNavController
import dagger.Module
@ -7,14 +7,14 @@ import dagger.android.ContributesAndroidInjector
import io.github.wulkanowy.R
import io.github.wulkanowy.di.scopes.PerActivity
import io.github.wulkanowy.di.scopes.PerFragment
import io.github.wulkanowy.ui.main.about.AboutFragment
import io.github.wulkanowy.ui.main.about.AboutModule
import io.github.wulkanowy.ui.main.attendance.AttendanceFragment
import io.github.wulkanowy.ui.main.exam.ExamFragment
import io.github.wulkanowy.ui.main.grade.GradeFragment
import io.github.wulkanowy.ui.main.grade.GradeModule
import io.github.wulkanowy.ui.main.more.MoreFragment
import io.github.wulkanowy.ui.main.timetable.TimetableFragment
import io.github.wulkanowy.ui.modules.about.AboutFragment
import io.github.wulkanowy.ui.modules.about.AboutModule
import io.github.wulkanowy.ui.modules.attendance.AttendanceFragment
import io.github.wulkanowy.ui.modules.exam.ExamFragment
import io.github.wulkanowy.ui.modules.grade.GradeFragment
import io.github.wulkanowy.ui.modules.grade.GradeModule
import io.github.wulkanowy.ui.modules.more.MoreFragment
import io.github.wulkanowy.ui.modules.timetable.TimetableFragment
@Module
abstract class MainModule {

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main
package io.github.wulkanowy.ui.modules.main
import io.github.wulkanowy.data.ErrorHandler
import io.github.wulkanowy.data.repositories.PreferencesRepository

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main
package io.github.wulkanowy.ui.modules.main
import io.github.wulkanowy.ui.base.BaseView

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.more
package io.github.wulkanowy.ui.modules.more
import android.graphics.drawable.Drawable
import android.os.Bundle
@ -11,10 +11,10 @@ import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem
import io.github.wulkanowy.R
import io.github.wulkanowy.ui.base.BaseFragment
import io.github.wulkanowy.ui.main.MainActivity
import io.github.wulkanowy.ui.main.MainView
import io.github.wulkanowy.ui.main.about.AboutFragment
import io.github.wulkanowy.ui.main.settings.SettingsFragment
import io.github.wulkanowy.ui.modules.about.AboutFragment
import io.github.wulkanowy.ui.modules.main.MainActivity
import io.github.wulkanowy.ui.modules.main.MainView
import io.github.wulkanowy.ui.modules.settings.SettingsFragment
import io.github.wulkanowy.utils.setOnItemClickListener
import kotlinx.android.synthetic.main.fragment_more.*
import javax.inject.Inject

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.more
package io.github.wulkanowy.ui.modules.more
import android.graphics.drawable.Drawable
import android.view.View

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.more
package io.github.wulkanowy.ui.modules.more
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem
import io.github.wulkanowy.data.ErrorHandler

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.more
package io.github.wulkanowy.ui.modules.more
import android.graphics.drawable.Drawable
import io.github.wulkanowy.ui.base.BaseView

View File

@ -1,9 +1,9 @@
package io.github.wulkanowy.ui.main.settings
package io.github.wulkanowy.ui.modules.settings
import android.os.Bundle
import com.takisoft.preferencex.PreferenceFragmentCompat
import io.github.wulkanowy.R
import io.github.wulkanowy.ui.main.MainView
import io.github.wulkanowy.ui.modules.main.MainView
class SettingsFragment : PreferenceFragmentCompat(), MainView.TitledView {

View File

@ -1,9 +1,9 @@
package io.github.wulkanowy.ui.splash
package io.github.wulkanowy.ui.modules.splash
import android.os.Bundle
import io.github.wulkanowy.ui.base.BaseActivity
import io.github.wulkanowy.ui.login.LoginActivity
import io.github.wulkanowy.ui.main.MainActivity
import io.github.wulkanowy.ui.modules.login.LoginActivity
import io.github.wulkanowy.ui.modules.main.MainActivity
import javax.inject.Inject
class SplashActivity : BaseActivity(), SplashView {

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.splash
package io.github.wulkanowy.ui.modules.splash
import io.github.wulkanowy.data.ErrorHandler
import io.github.wulkanowy.data.repositories.SessionRepository

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.splash
package io.github.wulkanowy.ui.modules.splash
import io.github.wulkanowy.ui.base.BaseView

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.timetable
package io.github.wulkanowy.ui.modules.timetable
import android.annotation.SuppressLint
import android.os.Bundle

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.timetable
package io.github.wulkanowy.ui.modules.timetable
import android.os.Bundle
import android.view.LayoutInflater
@ -10,7 +10,7 @@ import eu.davidea.flexibleadapter.items.AbstractFlexibleItem
import io.github.wulkanowy.R
import io.github.wulkanowy.data.db.entities.Timetable
import io.github.wulkanowy.ui.base.BaseFragment
import io.github.wulkanowy.ui.main.MainView
import io.github.wulkanowy.ui.modules.main.MainView
import io.github.wulkanowy.utils.setOnItemClickListener
import kotlinx.android.synthetic.main.fragment_timetable.*
import javax.inject.Inject

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.timetable
package io.github.wulkanowy.ui.modules.timetable
import android.annotation.SuppressLint
import android.graphics.Paint

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.timetable
package io.github.wulkanowy.ui.modules.timetable
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem
import io.github.wulkanowy.data.ErrorHandler
@ -6,7 +6,6 @@ import io.github.wulkanowy.data.repositories.SessionRepository
import io.github.wulkanowy.data.repositories.TimetableRepository
import io.github.wulkanowy.ui.base.BasePresenter
import io.github.wulkanowy.utils.*
import io.github.wulkanowy.utils.schedulers.SchedulersManager
import org.threeten.bp.LocalDate
import org.threeten.bp.LocalDate.now
import org.threeten.bp.LocalDate.ofEpochDay
@ -15,7 +14,7 @@ import javax.inject.Inject
class TimetablePresenter @Inject constructor(
private val errorHandler: ErrorHandler,
private val schedulers: SchedulersManager,
private val schedulers: SchedulersProvider,
private val timetableRepository: TimetableRepository,
private val sessionRepository: SessionRepository
) : BasePresenter<TimetableView>(errorHandler) {
@ -62,8 +61,8 @@ class TimetablePresenter @Inject constructor(
.map { it.single { semester -> semester.current } }
.flatMap { timetableRepository.getTimetable(it, currentDate, currentDate, forceRefresh) }
.map { items -> items.map { TimetableItem(it, view?.roomString.orEmpty()) } }
.subscribeOn(schedulers.backgroundThread())
.observeOn(schedulers.mainThread())
.subscribeOn(schedulers.backgroundThread)
.observeOn(schedulers.mainThread)
.doFinally {
view?.run {
hideRefresh()

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main.timetable
package io.github.wulkanowy.ui.modules.timetable
import io.github.wulkanowy.data.db.entities.Timetable
import io.github.wulkanowy.ui.base.BaseView

View File

@ -0,0 +1,14 @@
package io.github.wulkanowy.utils
import io.reactivex.Scheduler
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
open class SchedulersProvider {
open val mainThread: Scheduler
get() = AndroidSchedulers.mainThread()
open val backgroundThread: Scheduler
get() = Schedulers.io()
}

View File

@ -1,10 +0,0 @@
package io.github.wulkanowy.utils.schedulers
import io.reactivex.Scheduler
interface SchedulersManager {
fun mainThread(): Scheduler
fun backgroundThread(): Scheduler
}

View File

@ -1,12 +0,0 @@
package io.github.wulkanowy.utils.schedulers
import io.reactivex.Scheduler
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
class SchedulersProvider : SchedulersManager {
override fun mainThread(): Scheduler = AndroidSchedulers.mainThread()
override fun backgroundThread(): Scheduler = Schedulers.io()
}

View File

@ -1,13 +0,0 @@
package io.github.wulkanowy
import io.github.wulkanowy.utils.schedulers.SchedulersManager
import io.reactivex.Scheduler
import io.reactivex.schedulers.Schedulers
class TestSchedulers : SchedulersManager {
override fun backgroundThread(): Scheduler = Schedulers.trampoline()
override fun mainThread(): Scheduler = Schedulers.trampoline()
}

View File

@ -0,0 +1,15 @@
package io.github.wulkanowy
import io.github.wulkanowy.utils.SchedulersProvider
import io.reactivex.Scheduler
import io.reactivex.schedulers.Schedulers
class TestSchedulersProvider : SchedulersProvider() {
override val backgroundThread: Scheduler
get() = Schedulers.trampoline()
override val mainThread: Scheduler
get() = Schedulers.trampoline()
}

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.login
package io.github.wulkanowy.ui.modules.login
import org.junit.Assert.assertNotEquals
import org.junit.Before

View File

@ -1,9 +1,9 @@
package io.github.wulkanowy.ui.login.form
package io.github.wulkanowy.ui.modules.login.form
import io.github.wulkanowy.TestSchedulers
import io.github.wulkanowy.TestSchedulersProvider
import io.github.wulkanowy.data.db.entities.Student
import io.github.wulkanowy.data.repositories.SessionRepository
import io.github.wulkanowy.ui.login.LoginErrorHandler
import io.github.wulkanowy.ui.modules.login.LoginErrorHandler
import io.reactivex.Single
import org.junit.Before
import org.junit.Test
@ -29,7 +29,7 @@ class LoginFormPresenterTest {
fun initPresenter() {
MockitoAnnotations.initMocks(this)
clearInvocations(repository, loginFormView)
presenter = LoginFormPresenter(TestSchedulers(), errorHandler, repository)
presenter = LoginFormPresenter(TestSchedulersProvider(), errorHandler, repository)
presenter.onAttachView(loginFormView)
}

View File

@ -1,6 +1,6 @@
package io.github.wulkanowy.ui.login.options
package io.github.wulkanowy.ui.modules.login.options
import io.github.wulkanowy.TestSchedulers
import io.github.wulkanowy.TestSchedulersProvider
import io.github.wulkanowy.data.ErrorHandler
import io.github.wulkanowy.data.db.entities.Student
import io.github.wulkanowy.data.repositories.SessionRepository
@ -33,7 +33,7 @@ class LoginOptionsPresenterTest {
fun initPresenter() {
MockitoAnnotations.initMocks(this)
clearInvocations(repository, loginOptionsView)
presenter = LoginOptionsPresenter(errorHandler, repository, TestSchedulers())
presenter = LoginOptionsPresenter(errorHandler, repository, TestSchedulersProvider())
presenter.onAttachView(loginOptionsView)
}

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.main
package io.github.wulkanowy.ui.modules.main
import io.github.wulkanowy.data.ErrorHandler
import io.github.wulkanowy.data.repositories.PreferencesRepository

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.ui.splash
package io.github.wulkanowy.ui.modules.splash
import io.github.wulkanowy.data.ErrorHandler
import io.github.wulkanowy.data.repositories.SessionRepository