Skip to content

Commit

Permalink
-Code cleanup
Browse files Browse the repository at this point in the history
-Library updates
-Better Loading Bar visibility
-Error notifications
  • Loading branch information
wiltgen committed Nov 19, 2019
1 parent dba119b commit f96f954
Show file tree
Hide file tree
Showing 21 changed files with 131 additions and 143 deletions.
28 changes: 15 additions & 13 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ android {
minSdkVersion 24
targetSdkVersion 29
versionCode 4
versionName "3.0.0 alpha 7"
versionName "3.0.0 alpha 8"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

Expand Down Expand Up @@ -66,7 +66,7 @@ dependencies {
implementation "androidx.recyclerview:recyclerview:1.1.0-rc01"

// Extensions
implementation 'com.kyoapps:zkotlinextensions:1.0.3'
implementation 'com.kyoapps:zkotlinextensions:1.0.5'

// Navigation
def nav_version = '1.0.0'
Expand Down Expand Up @@ -105,23 +105,25 @@ dependencies {

// RxJava
implementation "io.reactivex.rxjava2:rxandroid:2.1.1"
implementation "io.reactivex.rxjava2:rxjava:2.2.12"
implementation "io.reactivex.rxjava2:rxjava:2.2.14"

// Json
implementation "com.squareup.moshi:moshi:$rootProject.moshi"
implementation "com.squareup.retrofit2:converter-moshi:$rootProject.moshiRetrofitConverter"
def moshi_version = '1.9.2'
implementation "com.squareup.moshi:moshi-kotlin:$moshi_version"
implementation 'com.squareup.retrofit2:converter-moshi:2.6.2'
//kapt "com.squareup.moshi:moshi-kotlin-codegen:$moshi_version"

// Network
implementation "com.squareup.retrofit2:retrofit:$rootProject.retrofit"
implementation "com.squareup.retrofit2:adapter-rxjava2:$rootProject.retrofit"
implementation "com.squareup.okhttp3:okhttp:$rootProject.okhttp"
implementation "com.squareup.okio:okio:$rootProject.okio"
def retrofit_version = '2.6.2'
implementation "com.squareup.retrofit2:retrofit:$retrofit_version"
implementation "com.squareup.retrofit2:adapter-rxjava2:$retrofit_version"
implementation 'com.squareup.okhttp3:okhttp:4.2.2'
implementation 'com.squareup.okio:okio:2.4.1'

// Dagger 2
implementation "com.google.dagger:dagger:$rootProject.dagger"
kapt "com.google.dagger:dagger-compiler:$rootProject.dagger"
implementation "com.google.dagger:dagger-android-support:$rootProject.dagger"
kapt "com.google.dagger:dagger-android-processor:$rootProject.dagger"
def dagger_version = '2.25.2'
implementation "com.google.dagger:dagger:$dagger_version"
kapt "com.google.dagger:dagger-compiler:$dagger_version"

// Android State
//implementation "com.evernote:android-state:$rootProject.androidState"
Expand Down
6 changes: 3 additions & 3 deletions app/src/main/java/com/kyoapps/maniac/api/ManiacApiLEGACY.kt
Original file line number Diff line number Diff line change
Expand Up @@ -15,22 +15,22 @@ interface ManiacApiLEGACY {
@GET("pxmboard.php")
fun getThreads(
@Query("mode") threadlist: String,
@Query("brdid") brdid: Short
@Query("brdid") brdid: Int
): Single<Response<ResponseBody>>


@GET("pxmboard.php")
fun getReplies(
@Query("mode") thread: String,
@Query("brdid") brdid: Short,
@Query("brdid") brdid: Int,
@Query("thrdid") thrdid: Int
): Single<Response<ResponseBody>>


@GET("pxmboard.php")
fun getMessage(
@Query("mode") message: String,
@Query("brdid") brdid: Short,
@Query("brdid") brdid: Int,
@Query("msgid") msgid: Int
): Single<Response<ResponseBody>>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ object DbModule {
@Provides
@CommonActivityScope
fun getDB(context: Context): DatabaseDefault {
return DatabaseDefault.getInstance(context)!!
return DatabaseDefault.getInstance(context)
}

}
32 changes: 9 additions & 23 deletions app/src/main/java/com/kyoapps/maniac/functions/FuncFetch.kt
Original file line number Diff line number Diff line change
@@ -1,50 +1,36 @@
package com.kyoapps.maniac.functions

import android.util.Log
import com.kyoapps.maniac.helpers.classes.LoadRequestItem
import com.kyoapps.maniac.viewmodel.MainDS
import com.kyoapps.maniac.viewmodel.MainVM
import com.kyoapps.zkotlinextensions.extensions.disposeOn
import io.reactivex.Single
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import io.reactivex.schedulers.Schedulers
import java.util.concurrent.TimeUnit

object FuncFetch {

private val compositeDisposable: CompositeDisposable = CompositeDisposable()

// optional delay loading for faster start and smoother animations
fun fetchThreads(mainVM: MainVM, mainDS: MainDS, loadRequestItem: LoadRequestItem, delayLoading: Boolean) {
fun fetchThreads(mainVM: MainVM, mainDS: MainDS, loadRequestItem: LoadRequestItem, delayLoading: Boolean): Single<Boolean> {
mainVM.setIsLoadingThreads(true)
mainDS.fetchThreadsIntoDb(loadRequestItem.brdid)
return mainDS.fetchThreadsIntoDb(loadRequestItem.brdid)
.delay(if (delayLoading) 2 else 0, TimeUnit.SECONDS)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
result -> Log.i(TAG, "fetchThreads success $result")
mainVM.setIsLoadingThreads(false)
}, {Log.e(TAG, it.localizedMessage, it)})
.disposeOn(compositeDisposable)
.doFinally { mainVM.setIsLoadingThreads(false) }

}

fun fetchReplies(mainVM: MainVM, mainDS: MainDS, loadRequestItem: LoadRequestItem) {
fun fetchReplies(mainVM: MainVM, mainDS: MainDS, loadRequestItem: LoadRequestItem): Single<Boolean> {
mainVM.setIsLoadingReplies(true)
if (loadRequestItem.thrdid != null && loadRequestItem.thrdid != -1) {
return if (loadRequestItem.thrdid != null && loadRequestItem.thrdid != -1) {
mainDS.fetchRepliesIntoDb(loadRequestItem.brdid, loadRequestItem.thrdid)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
result -> Log.i(TAG, "fetchReplies success $result")
mainVM.setIsLoadingReplies(false)
}, {Log.e(TAG, it.localizedMessage, it)})
.disposeOn(compositeDisposable)

}
.doFinally { mainVM.setIsLoadingReplies(false) }
} else Single.error(Throwable("thread id invalid: ${loadRequestItem.thrdid}"))
}

fun clearDisposables() { compositeDisposable.clear() }

private const val TAG = "FuncFetch"

}
6 changes: 3 additions & 3 deletions app/src/main/java/com/kyoapps/maniac/functions/FuncParse.kt
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import android.text.Html
object FuncParse {

// bad code. use new api asap
fun parseThreadsLegacy(response: Response<ResponseBody>, brdid: Short): List<ThreadEnt> {
fun parseThreadsLegacy(response: Response<ResponseBody>, brdid: Int): List<ThreadEnt> {

val timeMs = System.currentTimeMillis()

Expand Down Expand Up @@ -86,7 +86,7 @@ object FuncParse {
}

// bad code. use new api asap
fun parseRepliesLegacy(response: Response<ResponseBody>, brdid: Short, thrdid: Int): List<ReplyEnt> {
fun parseRepliesLegacy(response: Response<ResponseBody>, brdid: Int, thrdid: Int): List<ReplyEnt> {
val timeMs = System.currentTimeMillis()

val resultList: ArrayList<ReplyEnt> = ArrayList()
Expand Down Expand Up @@ -253,7 +253,7 @@ object FuncParse {
val subStringStart = it.substring(start + 39)
val endId = subStringStart.indexOf("\">")
if (endId != -1) {
val brdid = Integer.parseInt(subStringStart.substring(0, endId)).toShort()
val brdid = Integer.parseInt(subStringStart.substring(0, endId))
val label = Html.fromHtml(subStringStart.substring(endId + 2, subStringStart.indexOf("</a>"))).toString()
resultList.add(Board(brdid, label))
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package com.kyoapps.maniac.helpers.classes

//@JsonClass(generateAdapter = true)
data class LoadRequestItem(
val brdid: Short,
val brdid: Int,
val thrdid: Int?,
val msgid: Int?
)
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ package com.kyoapps.maniac.helpers.classes.pojo

data class Board(

val brdid: Short,
val brdid: Int,
val label: String
)
14 changes: 6 additions & 8 deletions app/src/main/java/com/kyoapps/maniac/room/DatabaseDefault.kt
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,12 @@ abstract class DatabaseDefault : RoomDatabase() {
companion object {
private var sInstance: DatabaseDefault? = null

@Synchronized fun getInstance(context: Context): DatabaseDefault? {
if (sInstance == null) {
sInstance = Room
.databaseBuilder(context.applicationContext, DatabaseDefault::class.java, "appdatabasekotlin")
.fallbackToDestructiveMigration()
.build()
}
return sInstance
@Synchronized fun getInstance(context: Context): DatabaseDefault {
return sInstance?: Room
.databaseBuilder(context.applicationContext, DatabaseDefault::class.java, "appdatabasekotlin")
.fallbackToDestructiveMigration()
.build()
.also { sInstance = it }
}


Expand Down
7 changes: 6 additions & 1 deletion app/src/main/java/com/kyoapps/maniac/room/dao/ReplyDao.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,17 @@ interface ReplyDao {
@Update
fun updateAll(replyEntList: List<ReplyEnt>): Int

@Insert
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insert(replyEnt: ReplyEnt): Long

@Insert
fun insertAll(replyEntList: List<ReplyEnt>)



@Query("SELECT * FROM $TABLE_NAME WHERE $COLUMN_THRDID = :thrdid AND $COLUMN_MSGID = :msgId")
fun getReply(thrdid: Int, msgId: Int): ReplyEnt

@Query("SELECT $COLUMN_MSGID FROM $TABLE_NAME WHERE $COLUMN_THRDID = :thrdid AND $COLUMN_READ")
fun getReadTuples(thrdid: Int): List<ReplyEntReadTuple>

Expand Down
6 changes: 3 additions & 3 deletions app/src/main/java/com/kyoapps/maniac/room/dao/ThreadDao.kt
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ interface ThreadDao {


@Query("SELECT * FROM $TABLE_NAME WHERE $COLUMN_BRDID = :brdid ORDER BY $COLUMN_FETCH_TIME")
fun getThreadsOrderedRx(brdid: Short): Flowable<List<ThreadEnt>>
fun getThreadsOrderedRx(brdid: Int): Flowable<List<ThreadEnt>>

@Insert
fun insert(gameEnt: ThreadEnt): Long
Expand All @@ -42,14 +42,14 @@ interface ThreadDao {
fun deleteAll()

@Query("DELETE FROM $TABLE_NAME WHERE $COLUMN_BRDID = :brdid")
fun delete(brdid: Short)
fun delete(brdid: Int)


@Query("SELECT COUNT(*) FROM $TABLE_NAME")
fun count(): Int

@Query("SELECT COUNT(*) FROM $TABLE_NAME WHERE $COLUMN_BRDID = :brdid")
fun count(brdid: Short): Int
fun count(brdid: Int): Int



Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import androidx.room.PrimaryKey
@Entity(tableName = "reply")
data class ReplyEnt(

val brdid: Short,
val brdid: Int,
val thrdid: Int,
@PrimaryKey
val msgid: Int,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import androidx.room.PrimaryKey

@Entity(tableName = "thread")
data class ThreadEnt(
val brdid: Short,
val brdid: Int,
@PrimaryKey
val thrdid: Int,
val subject: String,
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/com/kyoapps/maniac/ui/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ class MainActivity : AppCompatActivity() {
// Set up SlidingPane fade color
val typedValue = TypedValue()
theme.resolveAttribute(R.attr.colorPrimary, typedValue, true)
(findViewById<androidx.slidingpanelayout.widget.SlidingPaneLayout>(R.id.pane_main))?.sliderFadeColor = typedValue.data
(findViewById<SlidingPaneLayout>(R.id.pane_main))?.sliderFadeColor = typedValue.data


val navController = host.navController
Expand Down
17 changes: 8 additions & 9 deletions app/src/main/java/com/kyoapps/maniac/ui/MainRepliesFrag.kt
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ import androidx.recyclerview.widget.RecyclerView
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import com.kyoapps.maniac.dagger.components.DaggerActivityComponent
import com.kyoapps.maniac.functions.FuncParse
import com.kyoapps.maniac.helpers.classes.commonrrxwrap.ResultObject
import com.kyoapps.zkotlinextensions.extensions.alert


class MainRepliesFrag : androidx.fragment.app.Fragment() {
Expand Down Expand Up @@ -80,7 +82,6 @@ class MainRepliesFrag : androidx.fragment.app.Fragment() {
component.mainVM.getLatestRequestItem().observe(viewLifecycleOwner, Observer { requestItem ->
requestItem?.let {
newThread = it.thrdid != lastRequest?.thrdid
if (newThread) adapter.setMarkRead()
lastRequest = it
if (it.msgid != null) adapter.setLastSelected(null, it.msgid.toLong())
}
Expand Down Expand Up @@ -110,20 +111,18 @@ class MainRepliesFrag : androidx.fragment.app.Fragment() {
ww.setBackgroundColor(backGroundColor)

component.mainVM.getMessageLiveDataRx()?.observe(viewLifecycleOwner, Observer { resource ->
resource?.extractData?.let{
val formattedText = FuncParse.formatHtmlLegacy(it, adapter.getSubjectFromId(lastRequest?.msgid?.toLong()), textColor, quoteColor, linkColor, " ")
ww.loadData(formattedText, "text/html; charset=utf-8", "UTF-8")
component.mainVM.setIsLoadingMsg(false)
when (resource) {
is ResultObject.Success -> {
val formattedText = FuncParse.formatHtmlLegacy(resource.data, adapter.getSubjectFromId(lastRequest?.msgid?.toLong()), textColor, quoteColor, linkColor, " ")
ww.loadData(formattedText, "text/html; charset=utf-8", "UTF-8")
}
is ResultObject.Error -> alert(resource.throwable)
}
})
}
}


override fun onDetach() {
(recyclerView?.adapter as MainRepliesPagedAdapter).setMarkRead()
super.onDetach()
}

companion object {
private const val TAG = "MainRepliesFrag"
Expand Down
Loading

0 comments on commit f96f954

Please sign in to comment.