summaryrefslogtreecommitdiff
path: root/app/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java')
-rw-r--r--app/src/main/java/foundation/e/privacycentralapp/common/BootCompletedReceiver.kt73
-rw-r--r--app/src/main/java/foundation/e/privacycentralapp/data/repositories/LocalStateRepository.kt8
2 files changed, 80 insertions, 1 deletions
diff --git a/app/src/main/java/foundation/e/privacycentralapp/common/BootCompletedReceiver.kt b/app/src/main/java/foundation/e/privacycentralapp/common/BootCompletedReceiver.kt
new file mode 100644
index 0000000..a26c06a
--- /dev/null
+++ b/app/src/main/java/foundation/e/privacycentralapp/common/BootCompletedReceiver.kt
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2022 E FOUNDATION
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package foundation.e.privacycentralapp.common
+
+import android.app.NotificationChannel
+import android.app.NotificationManager
+import android.app.PendingIntent
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import androidx.core.app.NotificationCompat
+import foundation.e.privacycentralapp.R
+import foundation.e.privacycentralapp.data.repositories.LocalStateRepository
+
+class BootCompletedReceiver : BroadcastReceiver() {
+ companion object {
+ const val FIRST_BOOT_NOTIFICATION_ID = 10
+ }
+
+ override fun onReceive(context: Context, intent: Intent?) {
+ if (intent?.action == Intent.ACTION_BOOT_COMPLETED) {
+ val localStateRepository = LocalStateRepository(context)
+ if (localStateRepository.firstBoot) {
+ showNotification(context)
+ localStateRepository.firstBoot = false
+ }
+ }
+ }
+
+ private fun showNotification(context: Context) {
+ val channelId = "first_boot_notification"
+ val pendingIntent =
+ PendingIntent.getActivity(
+ context,
+ 0,
+ context.packageManager.getLaunchIntentForPackage(context.packageName),
+ PendingIntent.FLAG_IMMUTABLE
+ )
+ val notificationBuilder: NotificationCompat.Builder =
+ NotificationCompat.Builder(context, channelId)
+ .setSmallIcon(R.drawable.ic_notification_logo)
+ .setContentTitle(context.getString(R.string.first_notification_title))
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent)
+ .setStyle(
+ NotificationCompat.BigTextStyle()
+ .bigText(context.getString(R.string.first_notification_summary))
+ )
+ val notificationManager =
+ context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
+
+ val name: CharSequence = "First Boot"
+ val importance = NotificationManager.IMPORTANCE_HIGH
+ val mChannel = NotificationChannel(channelId, name, importance)
+ notificationManager.createNotificationChannel(mChannel)
+ notificationManager.notify(FIRST_BOOT_NOTIFICATION_ID, notificationBuilder.build())
+ }
+}
diff --git a/app/src/main/java/foundation/e/privacycentralapp/data/repositories/LocalStateRepository.kt b/app/src/main/java/foundation/e/privacycentralapp/data/repositories/LocalStateRepository.kt
index 145ff32..9a7fd15 100644
--- a/app/src/main/java/foundation/e/privacycentralapp/data/repositories/LocalStateRepository.kt
+++ b/app/src/main/java/foundation/e/privacycentralapp/data/repositories/LocalStateRepository.kt
@@ -28,11 +28,13 @@ class LocalStateRepository(context: Context) {
private const val KEY_IP_SCRAMBLING = "ipScrambling"
private const val KEY_FAKE_LATITUDE = "fakeLatitude"
private const val KEY_FAKE_LONGITUDE = "fakeLongitude"
+ private const val KEY_FIRST_BOOT = "firstBoot"
}
private val sharedPref = context.getSharedPreferences(SHARED_PREFS_FILE, Context.MODE_PRIVATE)
- private val quickPrivacyEnabledMutableFlow = MutableStateFlow<Boolean>(sharedPref.getBoolean(KEY_QUICK_PRIVACY, false))
+ private val quickPrivacyEnabledMutableFlow =
+ MutableStateFlow<Boolean>(sharedPref.getBoolean(KEY_QUICK_PRIVACY, false))
var isQuickPrivacyEnabled: Boolean
get() = quickPrivacyEnabledMutableFlow.value
set(value) {
@@ -70,6 +72,10 @@ class LocalStateRepository(context: Context) {
get() = sharedPref.getBoolean(KEY_IP_SCRAMBLING, false)
set(value) = set(KEY_IP_SCRAMBLING, value)
+ var firstBoot: Boolean
+ get() = sharedPref.getBoolean(KEY_FIRST_BOOT, true)
+ set(value) = set(KEY_FIRST_BOOT, value)
+
private fun set(key: String, value: Boolean) {
sharedPref.edit().putBoolean(key, value).commit()
}