Skip to content

Instantly share code, notes, and snippets.

View rommansabbir's full-sized avatar
👓
Only Development

Romman Sabbir rommansabbir

👓
Only Development
View GitHub Profile
@rommansabbir
rommansabbir / MonitorNetworkStatus.kt
Created October 3, 2024 15:56
Android: MonitorNetworkStatus in Jetpack Compose
/**
* Checks if the current network is connected to the internet and validated.
* Validation indicates the network is functional (e.g., it can be used for browsing).
*
* @return True if the network is connected, has internet capability, and is validated; false otherwise.
*/
private fun Context.isInternetFunctional(): Boolean {
val connectivityManager = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val network = connectivityManager.activeNetwork
val networkCapabilities = connectivityManager.getNetworkCapabilities(network)
@rommansabbir
rommansabbir / JWTHelper.kt
Created February 18, 2024 15:28
Creating a Custom JWT Token Utility in Spring Boot. #springboot #kotlin #jwt #jwttoken #jwtutil #customjwt
object JwtHelper {
/**
* Enum class representing JWT algorithms with their corresponding values.
*/
enum class JwtAlgorithm(val value: String) {
ALGORITHM_HS256("HS256"), ALGORITHM_HS384("HS384"), ALGORITHM_HS512("HS512")
}
/**
* Enum class representing HMAC signature algorithms with their corresponding values.
@rommansabbir
rommansabbir / WithCoroutineExt.kt
Last active October 16, 2023 08:54
Simplifying concurrency with Kotlin Coroutines : A utility function | Executes a coroutine with configurable dispatchers for subscription and observation.
/**
* Executes a coroutine with configurable dispatchers for subscription and observation.
*
* @param subscribeOn The dispatcher context for subscribing to the asynchronous operation (default: Dispatchers.IO).
* @param observeOn The dispatcher context for observing the result (default: Dispatchers.Main).
* @param block A suspend function representing the asynchronous operation to be executed.
* @param onSuccess A suspend function that is invoked with the result of the asynchronous operation when it succeeds.
* @param onError A function that is invoked if the asynchronous operation encounters an error.
*/
fun <T> withCoroutine(
/**
* Default implementation of [LocaleHelperKt].
*/
class DefaultLocaleHelper private constructor(context: Context) : BaseLocaleHelper(context) {
companion object {
/* Mark the instance as Volatile*/
@Volatile
private var instance: LocaleHelperKt? = null
private var LOCK: Any = Any()
@rommansabbir
rommansabbir / IntentExt.kt
Created October 10, 2022 15:46
Intent Debug Ext
fun Intent?.toDebugString(): String {
val intent = this ?: return ""
return StringBuilder().apply {
appendLine("--- Intent ---")
appendLine("type: ${intent.type}")
appendLine("package: ${intent.`package`}")
appendLine("scheme: ${intent.scheme}")
appendLine("component: ${intent.component}")
appendLine("flags: ${intent.flags}")
appendLine("categories: ${intent.categories}")
@rommansabbir
rommansabbir / LoadJSONFromAssests.kt
Last active August 25, 2022 11:54
Android: Load JSON from `src/main/assets/`
/* Android: Load JSON from `src/main/assets/` */
/* Extension function where `Context` passed explicitly */
fun loadJSONFromAsset(context: Context, fileName: String): String {
val inputStream: InputStream = context.assets.open(fileName)
val size: Int = inputStream.available()
val buffer = ByteArray(size)
inputStream.read(buffer)
inputStream.close()
@rommansabbir
rommansabbir / AndroidRetrofitOkHttp.kt
Created July 18, 2022 06:19
Android : Mock Response with Retrofit & OkHttp
class LoginInterceptor: Interceptor{
override fun intercept(chain: Interceptor.Chain): Response {
//If requested endpoint matched to targeted endpoint, we will return an mocked response.
if (chain.request().url.toUri().toString().endsWith("fake-login")) {
val responseString = "OUR_JSON_RESPONSE_FROM_ASSET_OR_OTHER_SOURCE"
return chain.proceed(chain.request())
.newBuilder()
.code(200)
.protocol(Protocol.HTTP_2)
.message(responseString)
@rommansabbir
rommansabbir / AndroidTips5.kt
Created June 2, 2022 16:19
Use UseCase to execute operation by following SRP.
/**
* UseCase is designed to execute a given operation by following
* Single Responsibility Design Principle.
*/
abstract class UseCaseV2<ReturnType, in Params> where ReturnType : Any {
/**
* Abstract API that should be implemented by the respective child to execute the operation.
*
* @param params [Params]
*
@rommansabbir
rommansabbir / BFS.kt
Created June 2, 2022 05:50
BFS Algorithm Implementation in Kotlin
object BFS {
@JvmStatic
fun main(args: Array<String>) {
val station1 = Node("Westminster", null, null)
val station2 = Node("Waterloo", station1, null)
val station3 = Node("Trafalgar Square", station1, station2)
val station4 = Node("Canary Wharf", station2, station3)
val station5 = Node("London Bridge", station4, station3)
val station6 = Node("Tottenham Court Road", station5, station4)
val bfs = BreadthFirstSearch(station6, station3)
@rommansabbir
rommansabbir / BinarySearch.kt
Last active June 1, 2022 06:41
BinarySearch
class BinarySearch {
companion object {
@JvmStatic
fun main(args: Array<String>) {
println("Index position: " + binarySearch(mutableListOf(1,15,34,45,65,76,87), 76))
}
private fun binarySearch(list: List<Int>, itemToFind: Int): Int {
//Starting point
var left = 0