Skip to content

Instantly share code, notes, and snippets.

View arulwastaken's full-sized avatar
🎯
Focusing

Arul arulwastaken

🎯
Focusing
  • Tamilnadu
View GitHub Profile
@arulwastaken
arulwastaken / ImageCaptureView.kt
Last active July 18, 2025 11:03
Common ImageCaptureView Includes with custom camera design
@Preview
@Composable
fun ImageCaptureView(onImageCaptured: (Path?) -> Unit, onClose: () -> Unit = {}) {
val scope = rememberCoroutineScope()
val callback = remember {
object : CameraCallback() {
override fun onCaptureImage(image: Path?, error: String?) {
showToast("Image Captured $image")
onImageCaptured(image)
@arulwastaken
arulwastaken / Camera.ios.kt
Created July 18, 2025 10:26
/iosMain/Camera.ios.kt
@OptIn(ExperimentalForeignApi::class)
@Composable
actual fun CameraView(callback: CameraCallback) {
val session = AVCaptureSession()
session.sessionPreset = AVCaptureSessionPresetPhoto
val output = AVCaptureStillImageOutput().apply {
outputSettings = mapOf(AVVideoCodecKey to platform.AVFoundation.AVVideoCodecJPEG)
}
session.addOutput(output)
val cameraPreviewLayer = AVCaptureVideoPreviewLayer(session = session)
@arulwastaken
arulwastaken / Camera.android.kt
Created July 18, 2025 09:41
/androidMain/CameraView.android.kt
package com.codingwitharul.bookmyslot.common
import android.content.Context
import android.net.Uri
import android.util.Log
import androidx.camera.core.CameraSelector
import androidx.camera.core.ImageCapture
import androidx.camera.core.ImageCapture.OutputFileOptions.Builder
import androidx.camera.core.ImageCaptureException
import androidx.camera.core.Preview
@arulwastaken
arulwastaken / Camera.kt
Last active July 18, 2025 06:17
/commonMain/common/Camera.kt
sealed class CameraEvent {
object Init : CameraEvent()
object CaptureImage : CameraEvent()
object SwitchCamera : CameraEvent()
}
abstract class CameraCallback {
private val _event = Channel<CameraEvent>()
val eventFlow: Flow<CameraEvent> get() = _event.receiveAsFlow()
suspend fun sendEvent(event: CameraEvent) {
package com.codingwitharul.bookmyslot.data.repo
import com.codingwitharul.bookmyslot.data.db.DatabaseHelper
import com.codingwitharul.bookmyslot.data.networking.ApiClientHelper
import com.codingwitharul.bookmyslot.data.networking.EndPoints
import com.codingwitharul.bookmyslot.data.networking.apiEndPoint
import com.codingwitharul.bookmyslot.data.networking.models.ApiResponse
import com.codingwitharul.bookmyslot.data.networking.models.ErrorType
import com.codingwitharul.bookmyslot.data.networking.models.getErrorData
import com.codingwitharul.bookmyslot.data.networking.safeRequest
@arulwastaken
arulwastaken / HttpClient.ios.kt
Created July 7, 2025 06:14
iosMain/Common/HttpClient.ios.kt
package com.codingwitharul.bookmyslot.common
import io.ktor.client.HttpClient
import io.ktor.client.HttpClientConfig
import io.ktor.client.engine.darwin.Darwin
import io.ktor.client.plugins.HttpTimeout
import io.ktor.client.plugins.contentnegotiation.ContentNegotiation
import io.ktor.client.plugins.defaultRequest
import io.ktor.client.request.header
import io.ktor.serialization.kotlinx.json.json
@arulwastaken
arulwastaken / HttpClient.android.kt
Created July 7, 2025 06:12
androidMain/common/HttpClient.android.kt
package com.codingwitharul.bookmyslot.common
import io.ktor.client.HttpClient
import io.ktor.client.HttpClientConfig
import io.ktor.client.engine.okhttp.OkHttp
import io.ktor.client.plugins.HttpTimeout
import io.ktor.client.plugins.contentnegotiation.ContentNegotiation
import io.ktor.client.plugins.defaultRequest
import io.ktor.client.request.header
import io.ktor.serialization.kotlinx.json.json
@arulwastaken
arulwastaken / HttpClient.kt
Last active July 7, 2025 06:10
common/HttpClient.kt
package com.codingwitharul.bookmyslot.common
import io.ktor.client.HttpClient
import io.ktor.client.HttpClientConfig
expect fun httpClient(config: HttpClientConfig<*>.() -> Unit = {}): HttpClient
package com.codingwitharul.bookmyslot.data.networking
import com.codingwitharul.bookmyslot.common.httpClient
import com.codingwitharul.bookmyslot.data.db.DatabaseHelper
import com.codingwitharul.bookmyslot.db.UserInfo
import com.codingwitharul.bookmyslot.data.networking.models.ApiResponse
import io.github.aakira.napier.Napier
import io.ktor.client.HttpClient
import io.ktor.client.call.body
import io.ktor.client.plugins.ClientRequestException
package com.codingwitharul.bookmyslot.data.networking
internal object Constants {
const val HOST = "https://642d737e66a20ec9ce9de798.mockapi.io/api/v1/"
}
internal object EndPoints {
const val Auth = "auth"
}