Skip to content

Instantly share code, notes, and snippets.

View farshadrezaee's full-sized avatar

farshad farshadrezaee

View GitHub Profile
@farshadrezaee
farshadrezaee / Stepper.kt
Created May 19, 2023 04:52
Stepper with Jetpack Compose.
import androidx.compose.foundation.background
import androidx.compose.foundation.horizontalScroll
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material.Divider
import androidx.compose.material.Icon
import androidx.compose.material.Text
import androidx.compose.material.icons.Icons
@farshadrezaee
farshadrezaee / EventBus
Created March 22, 2022 04:56
Impelment EventBus by Flow
class EventBus{
private val event = MutableSharedFlow<Any>()
fun post(o: Any) = GlobalScope.launch(Dispatchers.IO) {
event.emit(o)
}
inline fun <reified T> subscribeOn(): Flow<T> = event.asSharedFlow()
@farshadrezaee
farshadrezaee / RecyclerViewExtensions.kt
Created October 3, 2020 21:52
Infinite scroll provider for recycler view
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.StaggeredGridLayoutManager
import kotlin.math.min
fun RecyclerView.onLoadMoreListener(onLoadMore: () -> Unit) {
this.addOnScrollListener(object : RecyclerView.OnScrollListener() {
@farshadrezaee
farshadrezaee / AndroidManifest.xml
Last active December 29, 2019 18:46
install APK from cache directory
<!-- add this permission -->
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<!-- add provider -->
<application ...>
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
@farshadrezaee
farshadrezaee / OAuthInterceptor.kt
Last active April 15, 2020 23:15
Handle refresh token with OkHttp
import android.util.Log
import okhttp3.Interceptor
import okhttp3.Response
class OAuthInterceptor(private val tokenEntry: TokenEntry) : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
var request = chain.request()
request = request.newBuilder()
.addHeader("Accept", "application/json")