package com.taf.waf import android.Manifest import android.app.Activity import android.content.Intent import android.content.SharedPreferences import android.content.pm.PackageManager import android.net.Uri import android.os.Bundle import android.provider.MediaStore import android.widget.Button import android.widget.EditText import android.widget.Spinner import android.widget.TextView import android.widget.Toast import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat import androidx.core.content.FileProvider import androidx.lifecycle.lifecycleScope import com.google.android.gms.location.LocationServices import kotlinx.coroutines.launch import okhttp3.MediaType.Companion.toMediaType import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.MultipartBody import okhttp3.OkHttpClient import okhttp3.RequestBody.Companion.asRequestBody import okhttp3.RequestBody.Companion.toRequestBody import org.json.JSONObject import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory import java.io.File class ReportSafetyIncidentActivity : AppCompatActivity() { private lateinit var repo: IncidentRepository private lateinit var service: IncidentApiService private lateinit var prefs: SharedPreferences private lateinit var cameraLauncher: ActivityResultLauncher private lateinit var galleryLauncher: ActivityResultLauncher private val images = mutableListOf() private var currentPhoto: File? = null private var gps: String? = null private val locationClient by lazy { LocationServices.getFusedLocationProviderClient(this) } companion object { private const val REQ_LOCATION = 100 private const val REQ_CAMERA = 101 private const val REQ_GALLERY = 102 } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_report_safety_incident) repo = IncidentRepository(this) prefs = getSharedPreferences("auth", MODE_PRIVATE) val token = prefs.getString("token", null) val client = OkHttpClient.Builder() .addInterceptor { chain -> val req = chain.request().newBuilder() if (!token.isNullOrEmpty()) { req.addHeader("Authorization", "Bearer $token") } chain.proceed(req.build()) } .build() service = Retrofit.Builder() .baseUrl(ApiConfig.BASE_URL) .client(client) .addConverterFactory(GsonConverterFactory.create()) .build() .create(IncidentApiService::class.java) checkLocationPermission() val takePhotoBtn = findViewById