diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml
new file mode 100644
index 0000000..b268ef3
--- /dev/null
+++ b/.idea/deploymentTargetSelector.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/id/ac/ubharajaya/panicbutton/MainActivity.kt b/app/src/main/java/id/ac/ubharajaya/panicbutton/MainActivity.kt
index e73bf5a..2102c8b 100644
--- a/app/src/main/java/id/ac/ubharajaya/panicbutton/MainActivity.kt
+++ b/app/src/main/java/id/ac/ubharajaya/panicbutton/MainActivity.kt
@@ -3,16 +3,13 @@ package id.ac.ubharajaya.panicbutton
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
-import androidx.activity.enableEdgeToEdge
-import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.foundation.layout.padding
-import androidx.compose.material3.Scaffold
+import androidx.compose.foundation.layout.*
import androidx.compose.material3.Button
import androidx.compose.material3.Text
-import androidx.compose.runtime.Composable
+import androidx.compose.runtime.*
+import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
-import androidx.compose.ui.tooling.preview.Preview
-import id.ac.ubharajaya.panicbutton.ui.theme.PanicButtonTheme
+import androidx.compose.ui.unit.dp
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.OkHttpClient
import okhttp3.Request
@@ -21,32 +18,75 @@ import okhttp3.RequestBody
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
- enableEdgeToEdge()
setContent {
- PanicButtonTheme {
- Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
- Greeting(
- name = "Android",
- modifier = Modifier.padding(innerPadding)
- )
- }
- }
+ MyApp()
}
}
}
+
@Composable
-fun Greeting(name: String, modifier: Modifier = Modifier) {
- Text(
- text = "Hello $name!",
- modifier = modifier
- )
+fun MyApp() {
+ // State untuk menampilkan hasil request
+ var message by remember { mutableStateOf("Klik tombol untuk mengirim notifikasi") }
+
+
+ // UI
+ Column(
+ modifier = Modifier
+ .fillMaxSize()
+ .padding(16.dp),
+ verticalArrangement = Arrangement.Center,
+ horizontalAlignment = Alignment.CenterHorizontally
+ ) {
+ Text(text = message, Modifier.padding(bottom = 16.dp))
+ Button(onClick = {
+ // Kirim HTTP request saat tombol ditekan
+ sendNotification { response ->
+ message = response
+ }
+ }) {
+ Text(text = "Kirim Alert")
+ }
+ }
}
-@Preview(showBackground = true)
-@Composable
-fun GreetingPreview() {
- PanicButtonTheme {
- Greeting("Android")
- }
+
+// Fungsi untuk mengirimkan HTTP request
+fun sendNotification(onResult: (String) -> Unit) {
+ val client = OkHttpClient()
+ val url = "https://ntfy.ubharajaya.ac.id/panic-button" // Ganti dengan topik Anda
+
+
+
+
+ val requestBody = RequestBody.create(
+ "text/plain".toMediaType(), // Mengirim plain text
+ "Notifikasi dari Nuryuda Maulana (202310715038)!" // Pesan yang akan tampil
+ )
+
+
+ val request = Request.Builder()
+ .url(url)
+ .addHeader("Title", "Alert")
+ .addHeader("Priority", "urgent")
+ .addHeader("Tags", "alert warning,rotating_light")
+ .post(requestBody)
+ .build()
+
+
+
+ // Eksekusi request di thread terpisah
+ Thread {
+ try {
+ val response = client.newCall(request).execute()
+ if (response.isSuccessful) {
+ onResult("Notifikasi berhasil dikirim!")
+ } else {
+ onResult("Gagal mengirim notifikasi: ${response.code}")
+ }
+ } catch (e: Exception) {
+ onResult("Error: ${e.message}")
+ }
+ }.start()
}
\ No newline at end of file