Skip to content

Instantly share code, notes, and snippets.

View ghasemdev's full-sized avatar
☠️
Later , means never. So do it right now

Ghasem Shirdel ghasemdev

☠️
Later , means never. So do it right now
View GitHub Profile
@ghasemdev
ghasemdev / Main.kt
Created January 25, 2024 14:03
thread safe
val formatter by safeThread {
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss:SSS'Z'", Locale.getDefault())
}
fun main(): Unit = runBlocking {
val time = "2024-01-24T22:58:54:322Z"
launch {
launch {
withContext(Dispatchers.Default) {
sealed interface LoginAction {
data object NavigateToTerm: LoginAction
data object Login: LoginAction
data object ShowDialog: LoginAction
data object HideDialog: LoginAction
}
@ghasemdev
ghasemdev / MainActivity.kt
Last active August 20, 2023 06:51
SnackBar
class MainActivity {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
navController = rememberAnimatedNavController()
TickTheme {
ProvideLocalNavHost(navController) {
NavigationController(
snackbarManager = viewModel.snackbarManager,
@ghasemdev
ghasemdev / AppSignatureHelper
Created September 12, 2022 07:32
App Signature for OTP
import android.annotation.SuppressLint
import android.content.Context
import android.content.ContextWrapper
import android.content.pm.PackageManager
import android.content.pm.Signature
import android.os.Build
import android.util.Base64
import timber.log.Timber
import java.security.MessageDigest
@ghasemdev
ghasemdev / init.vim
Created July 25, 2022 14:01
Neo Vim Config
:set number
:set relativenumber
:set tabstop=4
:set shiftwidth=4
:set autoindent
:set smarttab
:set softtabstop=4
:set mouse=a
call plug#begin()
@ghasemdev
ghasemdev / .vimrc
Created July 25, 2022 14:00
Vim Config
set number
set relativenumber
set tabstop=4
set shiftwidth=4
set autoindent
set mouse=a
@ghasemdev
ghasemdev / resource.kt
Created July 6, 2022 09:02
Release Resource
import arrow.fx.coroutines.continuations.resource
import arrow.fx.coroutines.release
class UserProcessor {
fun start(): Unit = println("Creating UserProcessor")
fun shutdown(): Unit = println("Shutting down UserProcessor")
fun process(ds: DataSource): List<String> =
ds.users().map { "Processed $it" }
}
@ghasemdev
ghasemdev / Preview.kt
Last active October 31, 2022 19:46
jetpack Compose Preview
@Preview(
name = "NEXUS_5 -> 4.95\"",
group = "devices",
device = Devices.NEXUS_5,
showBackground = true
)
@Preview(
name = "PIXEL -> 5.0\"",
group = "devices",
@ghasemdev
ghasemdev / .editorconfig
Last active July 6, 2022 08:59
git hooks - Kotlin projects
[*]
charset = utf-8
end_of_line = crlf
indent_size = 4
trim_trailing_whitespace = true
insert_final_newline = true
max_line_length = 100
ij_kotlin_imports_layout = *, android.*, androidx.*, com.*, java.*, javax.*, kotlin.*, kotlinx.*, $*
# Tab indentation (no size specified)
@ghasemdev
ghasemdev / Operator.kt
Last active January 3, 2022 09:24
Operator Functions
import kotlin.math.pow
fun main() {
println("^" * 5) // "^^^^^"
println(5 `^` 3) // 125.0
println(199 `%%` 24) // (24 * 199) / 100 = 47.76
println(5 / 2) // 2
println(5 `÷` 2) // 2.5