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