diff --git a/app/build.gradle b/app/build.gradle
index 7ff11093e..50f4c4393 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -70,7 +70,7 @@ android {
}
dependencies {
- implementation 'com.github.SimpleMobileTools:Simple-Commons:b2a2c40a27'
+ implementation 'com.github.SimpleMobileTools:Simple-Commons:15c753bd01'
implementation 'androidx.multidex:multidex:2.0.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e4175c032..0e9714781 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -11,6 +11,7 @@
+
Unit) {
- if (NotificationManagerCompat.from(this).areNotificationsEnabled()) {
- callback()
- } else {
- ConfirmationDialog(this, messageId = R.string.notifications_disabled, positive = R.string.ok, negative = 0) {
- callback()
- }
- }
- }
-
private fun showReminder1Dialog() {
showPickSecondsDialogHelper(mReminder1Minutes, showDuringDayOption = mIsAllDayEvent) {
mReminder1Minutes = if (it == -1 || it == 0) it else it / 60
diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/MainActivity.kt
index 41a85bd88..0ef88ebf1 100644
--- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/MainActivity.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/MainActivity.kt
@@ -1065,17 +1065,23 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
private fun tryImportEvents() {
if (isQPlus()) {
- hideKeyboard()
- Intent(Intent.ACTION_GET_CONTENT).apply {
- addCategory(Intent.CATEGORY_OPENABLE)
- type = "text/calendar"
+ handleNotificationPermission { granted ->
+ if (granted) {
+ hideKeyboard()
+ Intent(Intent.ACTION_GET_CONTENT).apply {
+ addCategory(Intent.CATEGORY_OPENABLE)
+ type = "text/calendar"
- try {
- startActivityForResult(this, PICK_IMPORT_SOURCE_INTENT)
- } catch (e: ActivityNotFoundException) {
- toast(R.string.system_service_disabled, Toast.LENGTH_LONG)
- } catch (e: Exception) {
- showErrorToast(e)
+ try {
+ startActivityForResult(this, PICK_IMPORT_SOURCE_INTENT)
+ } catch (e: ActivityNotFoundException) {
+ toast(R.string.system_service_disabled, Toast.LENGTH_LONG)
+ } catch (e: Exception) {
+ showErrorToast(e)
+ }
+ }
+ } else {
+ toast(R.string.no_post_notifications_permissions)
}
}
} else {
diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/SettingsActivity.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/SettingsActivity.kt
index 545db25b4..71fff089e 100644
--- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/SettingsActivity.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/SettingsActivity.kt
@@ -250,7 +250,11 @@ class SettingsActivity : SimpleActivity() {
if (it) {
handlePermission(PERMISSION_READ_CALENDAR) {
if (it) {
- toggleCaldavSync(true)
+ handleNotificationPermission { granted ->
+ if (granted) {
+ toggleCaldavSync(true)
+ }
+ }
}
}
}
diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/SimpleActivity.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/SimpleActivity.kt
index ed185a195..84b5e4cdf 100644
--- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/SimpleActivity.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/SimpleActivity.kt
@@ -4,10 +4,13 @@ import android.content.Context
import android.database.ContentObserver
import android.os.Handler
import android.provider.CalendarContract
+import androidx.core.app.NotificationManagerCompat
import com.simplemobiletools.calendar.pro.R
import com.simplemobiletools.calendar.pro.extensions.config
import com.simplemobiletools.calendar.pro.extensions.refreshCalDAVCalendars
import com.simplemobiletools.commons.activities.BaseSimpleActivity
+import com.simplemobiletools.commons.dialogs.ConfirmationDialog
+import com.simplemobiletools.commons.extensions.toast
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
open class SimpleActivity : BaseSimpleActivity() {
@@ -69,4 +72,20 @@ open class SimpleActivity : BaseSimpleActivity() {
private fun unregisterObserver() {
contentResolver.unregisterContentObserver(calDAVSyncObserver)
}
+
+ protected fun handleNotificationAvailability(callback: () -> Unit) {
+ handleNotificationPermission { granted ->
+ if (granted) {
+ if (NotificationManagerCompat.from(this).areNotificationsEnabled()) {
+ callback()
+ } else {
+ ConfirmationDialog(this, messageId = R.string.notifications_disabled, positive = R.string.ok, negative = 0) {
+ callback()
+ }
+ }
+ } else {
+ toast(R.string.no_post_notifications_permissions)
+ }
+ }
+ }
}
diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/TaskActivity.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/TaskActivity.kt
index 24014e21f..89722ad62 100644
--- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/TaskActivity.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/TaskActivity.kt
@@ -656,16 +656,6 @@ class TaskActivity : SimpleActivity() {
}
}
- private fun handleNotificationAvailability(callback: () -> Unit) {
- if (NotificationManagerCompat.from(this).areNotificationsEnabled()) {
- callback()
- } else {
- ConfirmationDialog(this, messageId = R.string.notifications_disabled, positive = R.string.ok, negative = 0) {
- callback()
- }
- }
- }
-
private fun showReminder1Dialog() {
showPickSecondsDialogHelper(mReminder1Minutes) {
mReminder1Minutes = if (it == -1 || it == 0) it else it / 60
diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/dialogs/SetRemindersDialog.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/dialogs/SetRemindersDialog.kt
index e4ffc6f7c..17c9bb256 100644
--- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/dialogs/SetRemindersDialog.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/dialogs/SetRemindersDialog.kt
@@ -1,8 +1,8 @@
package com.simplemobiletools.calendar.pro.dialogs
-import android.app.Activity
import android.view.View
import com.simplemobiletools.calendar.pro.R
+import com.simplemobiletools.calendar.pro.activities.SimpleActivity
import com.simplemobiletools.calendar.pro.extensions.config
import com.simplemobiletools.calendar.pro.helpers.ANNIVERSARY_EVENT
import com.simplemobiletools.calendar.pro.helpers.BIRTHDAY_EVENT
@@ -11,7 +11,7 @@ import com.simplemobiletools.calendar.pro.helpers.REMINDER_OFF
import com.simplemobiletools.commons.extensions.*
import kotlinx.android.synthetic.main.dialog_set_reminders.view.*
-class SetRemindersDialog(val activity: Activity, val eventType: Int, val callback: (reminders: ArrayList) -> Unit) {
+class SetRemindersDialog(val activity: SimpleActivity, val eventType: Int, val callback: (reminders: ArrayList) -> Unit) {
private var mReminder1Minutes = REMINDER_OFF
private var mReminder2Minutes = REMINDER_OFF
private var mReminder3Minutes = REMINDER_OFF
@@ -25,11 +25,17 @@ class SetRemindersDialog(val activity: Activity, val eventType: Int, val callbac
set_reminders_3.text = activity.getFormattedMinutes(mReminder1Minutes)
set_reminders_1.setOnClickListener {
- activity.showPickSecondsDialogHelper(mReminder1Minutes, showDuringDayOption = true) {
- mReminder1Minutes = if (it == -1 || it == 0) it else it / 60
- set_reminders_1.text = activity.getFormattedMinutes(mReminder1Minutes)
- if (mReminder1Minutes != REMINDER_OFF) {
- set_reminders_2.beVisible()
+ activity.handleNotificationPermission { granted ->
+ if (granted) {
+ activity.showPickSecondsDialogHelper(mReminder1Minutes, showDuringDayOption = true) {
+ mReminder1Minutes = if (it == -1 || it == 0) it else it / 60
+ set_reminders_1.text = activity.getFormattedMinutes(mReminder1Minutes)
+ if (mReminder1Minutes != REMINDER_OFF) {
+ set_reminders_2.beVisible()
+ }
+ }
+ } else {
+ activity.toast(R.string.no_post_notifications_permissions)
}
}
}