Move notification related classes to notification package

This commit is contained in:
Zorica Stojchevska 2022-02-06 21:21:32 +01:00 committed by Zorica Stojchevska
parent 6fc4ff7225
commit 9e515a71e1
33 changed files with 70 additions and 105 deletions

View File

@ -12,7 +12,7 @@
-keep class ch.protonmail.android.permissions { *; }
-keep class ch.protonmail.android.prefs { *; }
-keep class ch.protonmail.android.receivers { *; }
-keep class ch.protonmail.android.servers.notification { *; }
-keep class ch.protonmail.android.notifications { *; }
-keep class ch.protonmail.android.storage { *; }
-keep class ch.protonmail.android.tasks { *; }
-keep class ch.protonmail.android.toasts { *; }

View File

@ -134,7 +134,7 @@
</receiver>
<service
android:name=".fcm.PMFirebaseMessagingService"
android:name="ch.protonmail.android.notifications.data.remote.fcm.PMFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />

View File

@ -55,7 +55,6 @@ import ch.protonmail.android.data.local.CounterDatabase
import ch.protonmail.android.data.local.MessageDao
import ch.protonmail.android.data.local.MessageDatabase
import ch.protonmail.android.data.local.NotificationDao
import ch.protonmail.android.data.local.NotificationDatabase
import ch.protonmail.android.data.local.PendingActionDao
import ch.protonmail.android.data.local.PendingActionDatabase
import ch.protonmail.android.domain.entity.user.Address
@ -65,7 +64,8 @@ import ch.protonmail.android.jobs.FetchByLocationJob
import ch.protonmail.android.labels.presentation.ui.EXTRA_MANAGE_FOLDERS
import ch.protonmail.android.labels.presentation.ui.LabelsManagerActivity
import ch.protonmail.android.mailbox.data.local.ConversationDao
import ch.protonmail.android.servers.notification.CHANNEL_ID_EMAIL
import ch.protonmail.android.notifications.domain.NotificationDatabase
import ch.protonmail.android.notifications.presentation.utils.CHANNEL_ID_EMAIL
import ch.protonmail.android.settings.pin.PinSettingsActivity
import ch.protonmail.android.settings.presentation.AccountSettingsActivity
import ch.protonmail.android.settings.presentation.AccountTypeActivity

View File

@ -28,10 +28,10 @@ import ch.protonmail.android.data.local.MessageDao
import ch.protonmail.android.data.local.MessageDatabase
import ch.protonmail.android.data.local.MessagePreferenceDao
import ch.protonmail.android.data.local.NotificationDao
import ch.protonmail.android.data.local.NotificationDatabase
import ch.protonmail.android.data.local.PendingActionDao
import ch.protonmail.android.data.local.PendingActionDatabase
import ch.protonmail.android.mailbox.data.local.ConversationDao
import ch.protonmail.android.notifications.domain.NotificationDatabase
import me.proton.core.domain.entity.UserId
import javax.inject.Inject
import javax.inject.Singleton

View File

@ -85,13 +85,13 @@ import ch.protonmail.android.events.Status;
import ch.protonmail.android.events.StorageLimitEvent;
import ch.protonmail.android.events.organizations.OrganizationEvent;
import ch.protonmail.android.exceptions.ErrorStateGeneratorsKt;
import ch.protonmail.android.fcm.MultiUserFcmTokenManager;
import ch.protonmail.android.feature.account.AccountManagerKt;
import ch.protonmail.android.feature.account.AccountStateHandlerInitializer;
import ch.protonmail.android.feature.account.CoreAccountManagerMigration;
import ch.protonmail.android.notifications.data.remote.fcm.MultiUserFcmTokenManager;
import ch.protonmail.android.notifications.presentation.utils.NotificationServer;
import ch.protonmail.android.prefs.SecureSharedPreferences;
import ch.protonmail.android.security.presentation.SecurityManagerInitializer;
import ch.protonmail.android.servers.notification.NotificationServer;
import ch.protonmail.android.settings.domain.usecase.ApplyAppThemeFromSettings;
import ch.protonmail.android.utils.CoreTimberLogger;
import ch.protonmail.android.utils.CustomLocale;

View File

@ -44,7 +44,7 @@ import ch.protonmail.android.core.QueueNetworkUtil
import ch.protonmail.android.core.UserManager
import ch.protonmail.android.crypto.UserCrypto
import ch.protonmail.android.domain.usecase.DownloadFile
import ch.protonmail.android.servers.notification.NotificationServer
import ch.protonmail.android.notifications.presentation.utils.NotificationServer
import ch.protonmail.android.utils.BuildInfo
import ch.protonmail.android.utils.base64.AndroidBase64Encoder
import ch.protonmail.android.utils.base64.Base64Encoder

View File

@ -29,8 +29,8 @@ import ch.protonmail.android.api.segments.event.EventManager
import ch.protonmail.android.core.Constants
import ch.protonmail.android.core.PREF_PIN
import ch.protonmail.android.di.AppProcessLifecycleOwner
import ch.protonmail.android.fcm.FcmTokenManager
import ch.protonmail.android.fcm.UnregisterDeviceWorker
import ch.protonmail.android.notifications.data.remote.fcm.FcmTokenManager
import ch.protonmail.android.notifications.data.remote.fcm.UnregisterDeviceWorker
import ch.protonmail.android.usecase.delete.ClearUserData
import ch.protonmail.android.usecase.fetch.LaunchInitialDataFetch
import ch.protonmail.android.utils.AppUtil

View File

@ -92,9 +92,6 @@ import ch.protonmail.android.events.MailboxLoadedEvent
import ch.protonmail.android.events.MailboxNoMessagesEvent
import ch.protonmail.android.events.SettingsChangedEvent
import ch.protonmail.android.events.Status
import ch.protonmail.android.fcm.MultiUserFcmTokenManager
import ch.protonmail.android.fcm.RegisterDeviceWorker
import ch.protonmail.android.fcm.model.FirebaseToken
import ch.protonmail.android.labels.domain.model.Label
import ch.protonmail.android.labels.domain.model.LabelId
import ch.protonmail.android.labels.domain.model.LabelType
@ -104,9 +101,12 @@ import ch.protonmail.android.mailbox.presentation.model.EmptyMailboxUiModel
import ch.protonmail.android.mailbox.presentation.model.MailboxItemUiModel
import ch.protonmail.android.navigation.presentation.EXTRA_FIRST_LOGIN
import ch.protonmail.android.navigation.presentation.NavigationActivity
import ch.protonmail.android.notifications.data.remote.fcm.MultiUserFcmTokenManager
import ch.protonmail.android.notifications.data.remote.fcm.RegisterDeviceWorker
import ch.protonmail.android.notifications.data.remote.fcm.model.FirebaseToken
import ch.protonmail.android.notifications.presentation.utils.EXTRA_MAILBOX_LOCATION
import ch.protonmail.android.onboarding.presentation.OnboardingActivity
import ch.protonmail.android.prefs.SecureSharedPreferences
import ch.protonmail.android.servers.notification.EXTRA_MAILBOX_LOCATION
import ch.protonmail.android.settings.domain.GetMailSettings
import ch.protonmail.android.ui.actionsheet.MessageActionSheet
import ch.protonmail.android.ui.actionsheet.model.ActionSheetTarget

View File

@ -53,7 +53,7 @@ import ch.protonmail.android.labels.presentation.ui.EXTRA_MANAGE_FOLDERS
import ch.protonmail.android.labels.presentation.ui.LabelsManagerActivity
import ch.protonmail.android.navigation.presentation.model.NavigationViewState
import ch.protonmail.android.navigation.presentation.model.TemporaryMessage
import ch.protonmail.android.servers.notification.EXTRA_USER_ID
import ch.protonmail.android.notifications.presentation.utils.EXTRA_USER_ID
import ch.protonmail.android.settings.pin.ValidatePinActivity
import ch.protonmail.android.utils.AppUtil
import ch.protonmail.android.utils.UiUtil

View File

@ -17,14 +17,14 @@
* along with ProtonMail. If not, see https://www.gnu.org/licenses/.
*/
package ch.protonmail.android.fcm
package ch.protonmail.android.notifications.data.remote.fcm
import android.content.SharedPreferences
import ch.protonmail.android.BuildConfig
import ch.protonmail.android.core.Constants.Prefs.PREF_APP_VERSION
import ch.protonmail.android.core.Constants.Prefs.PREF_REGISTRATION_ID
import ch.protonmail.android.core.Constants.Prefs.PREF_SENT_TOKEN_TO_SERVER
import ch.protonmail.android.fcm.model.FirebaseToken
import ch.protonmail.android.notifications.data.remote.fcm.model.FirebaseToken
import com.squareup.inject.assisted.Assisted
import com.squareup.inject.assisted.AssistedInject
import kotlinx.coroutines.runBlocking

View File

@ -17,11 +17,11 @@
* along with ProtonMail. If not, see https://www.gnu.org/licenses/.
*/
package ch.protonmail.android.fcm
package ch.protonmail.android.notifications.data.remote.fcm
import ch.protonmail.android.fcm.model.FirebaseToken
import ch.protonmail.android.feature.account.allLoggedIn
import ch.protonmail.android.feature.account.allSaved
import ch.protonmail.android.notifications.data.remote.fcm.model.FirebaseToken
import ch.protonmail.android.prefs.SecureSharedPreferences
import kotlinx.coroutines.runBlocking
import me.proton.core.accountmanager.domain.AccountManager

View File

@ -17,14 +17,15 @@
* along with ProtonMail. If not, see https://www.gnu.org/licenses/.
*/
package ch.protonmail.android.fcm
package ch.protonmail.android.notifications.data.remote.fcm
import android.content.Intent
import android.os.Bundle
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import ch.protonmail.android.R
import ch.protonmail.android.core.UserManager
import ch.protonmail.android.fcm.model.FirebaseToken
import ch.protonmail.android.notifications.data.remote.fcm.model.FirebaseToken
import ch.protonmail.android.notifications.domain.ProcessPushNotificationDataWorker
import com.google.firebase.messaging.FirebaseMessagingService
import com.google.firebase.messaging.RemoteMessage
import dagger.hilt.android.AndroidEntryPoint

View File

@ -17,7 +17,7 @@
* along with ProtonMail. If not, see https://www.gnu.org/licenses/.
*/
package ch.protonmail.android.fcm
package ch.protonmail.android.notifications.data.remote.fcm
import android.content.Context
import androidx.hilt.work.HiltWorker

View File

@ -17,7 +17,7 @@
* along with ProtonMail. If not, see https://www.gnu.org/licenses/.
*/
package ch.protonmail.android.fcm
package ch.protonmail.android.notifications.data.remote.fcm
import android.content.Context
import androidx.hilt.work.HiltWorker

View File

@ -17,7 +17,7 @@
* along with ProtonMail. If not, see https://www.gnu.org/licenses/.
*/
package ch.protonmail.android.fcm.model
package ch.protonmail.android.notifications.data.remote.fcm.model
import ch.protonmail.android.domain.entity.NotBlankStringValidator
import ch.protonmail.android.domain.entity.Validable

View File

@ -16,7 +16,8 @@
* You should have received a copy of the GNU General Public License
* along with ProtonMail. If not, see https://www.gnu.org/licenses/.
*/
package ch.protonmail.android.fcm.model
package ch.protonmail.android.notifications.data.remote.model
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

View File

@ -1,22 +1,23 @@
/*
* Copyright (c) 2020 Proton Technologies AG
*
*
* This file is part of ProtonMail.
*
*
* ProtonMail 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.
*
*
* ProtonMail 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 ProtonMail. If not, see https://www.gnu.org/licenses/.
*/
package ch.protonmail.android.fcm.model
package ch.protonmail.android.notifications.data.remote.model
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

View File

@ -16,7 +16,7 @@
* You should have received a copy of the GNU General Public License
* along with ProtonMail. If not, see https://www.gnu.org/licenses/.
*/
package ch.protonmail.android.fcm.model
package ch.protonmail.android.notifications.data.remote.model
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

View File

@ -16,10 +16,13 @@
* You should have received a copy of the GNU General Public License
* along with ProtonMail. If not, see https://www.gnu.org/licenses/.
*/
package ch.protonmail.android.data.local
package ch.protonmail.android.notifications.domain
import androidx.room.Database
import androidx.room.RoomDatabase
import ch.protonmail.android.data.local.DatabaseFactory
import ch.protonmail.android.data.local.NotificationDao
import ch.protonmail.android.data.local.model.Notification
@Database(entities = [Notification::class], version = 1)

View File

@ -17,7 +17,7 @@
* along with ProtonMail. If not, see https://www.gnu.org/licenses/.
*/
package ch.protonmail.android.fcm
package ch.protonmail.android.notifications.domain
import android.content.Context
import androidx.hilt.work.HiltWorker
@ -37,11 +37,11 @@ import ch.protonmail.android.core.QueueNetworkUtil
import ch.protonmail.android.core.UserManager
import ch.protonmail.android.crypto.UserCrypto
import ch.protonmail.android.data.local.model.Notification
import ch.protonmail.android.fcm.model.PushNotification
import ch.protonmail.android.fcm.model.PushNotificationData
import ch.protonmail.android.mailbox.presentation.ConversationModeEnabled
import ch.protonmail.android.notifications.data.remote.model.PushNotification
import ch.protonmail.android.notifications.data.remote.model.PushNotificationData
import ch.protonmail.android.notifications.presentation.utils.NotificationServer
import ch.protonmail.android.repository.MessageRepository
import ch.protonmail.android.servers.notification.NotificationServer
import ch.protonmail.android.utils.AppUtil
import dagger.assisted.Assisted
import dagger.assisted.AssistedInject
@ -101,7 +101,7 @@ internal class ProcessPushNotificationDataWorker @AssistedInject constructor(
queueNetworkUtil.setCurrentlyHasConnectivity()
val notificationUserId = sessionManager.getUserId(SessionId(sessionId))
// we do not show notifications for unknown/inactive users
// we do not show notifications for unknown/inactive users
?: return Result.failure(
workDataOf(
KEY_PROCESS_PUSH_NOTIFICATION_DATA_ERROR to "User is unknown or inactive"

View File

@ -16,7 +16,7 @@
* You should have received a copy of the GNU General Public License
* along with ProtonMail. If not, see https://www.gnu.org/licenses/.
*/
package ch.protonmail.android.servers.notification
package ch.protonmail.android.notifications.presentation.utils
import android.app.Notification
import android.app.NotificationChannel

View File

@ -42,10 +42,10 @@ import ch.protonmail.android.data.local.AttachmentMetadataDatabase;
import ch.protonmail.android.data.local.ContactDatabase;
import ch.protonmail.android.data.local.CounterDatabase;
import ch.protonmail.android.data.local.MessageDatabase;
import ch.protonmail.android.data.local.NotificationDatabase;
import ch.protonmail.android.data.local.PendingActionDatabase;
import ch.protonmail.android.data.local.model.AttachmentMetadata;
import ch.protonmail.android.data.local.model.Message;
import ch.protonmail.android.notifications.domain.NotificationDatabase;
import dagger.hilt.android.AndroidEntryPoint;
import me.proton.core.domain.entity.UserId;
import timber.log.Timber;

View File

@ -23,11 +23,11 @@ import android.content.Context
import android.content.Intent
import androidx.core.app.JobIntentService
import ch.protonmail.android.core.Constants.JOB_INTENT_SERVICE_ID_ATTACHMENT_CLEARING
import me.proton.core.domain.entity.UserId
import ch.protonmail.android.servers.notification.EXTRA_USER_ID
import ch.protonmail.android.notifications.presentation.utils.EXTRA_USER_ID
import ch.protonmail.android.storage.AttachmentClearingService.ACTION_CLEAR_CACHE_IMMEDIATELY
import ch.protonmail.android.storage.AttachmentClearingService.ACTION_CLEAR_CACHE_IMMEDIATELY_DELETE_TABLES
import ch.protonmail.android.storage.AttachmentClearingService.ACTION_REGULAR_CHECK
import me.proton.core.domain.entity.UserId
import javax.inject.Inject
class AttachmentClearingServiceHelper @Inject constructor(

View File

@ -1,45 +0,0 @@
/*
* Copyright (c) 2020 Proton Technologies AG
*
* This file is part of ProtonMail.
*
* ProtonMail 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.
*
* ProtonMail 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 ProtonMail. If not, see https://www.gnu.org/licenses/.
*/
package ch.protonmail.android.usecase
import me.proton.core.domain.entity.UserId
import ch.protonmail.android.servers.notification.NotificationServer
import kotlinx.coroutines.runBlocking
import javax.inject.Inject
class NotifyLoggedOut @Inject constructor(
private val loadUser: LoadUser,
private val notificationServer: NotificationServer
) {
suspend operator fun invoke(userId: UserId) {
val user = loadUser(userId).orNull()
notificationServer.notifyUserLoggedOut(user)
}
@Deprecated(
"Should not be used, necessary only for when non-blocking variant is not suitable",
ReplaceWith("invoke(userId)")
)
fun blocking(userId: UserId) {
runBlocking {
invoke(userId)
}
}
}

View File

@ -64,12 +64,12 @@ import ch.protonmail.android.data.local.ContactDatabase;
import ch.protonmail.android.data.local.MessageDao;
import ch.protonmail.android.data.local.MessageDatabase;
import ch.protonmail.android.data.local.NotificationDao;
import ch.protonmail.android.data.local.NotificationDatabase;
import ch.protonmail.android.data.local.PendingActionDao;
import ch.protonmail.android.data.local.PendingActionDatabase;
import ch.protonmail.android.events.ApiOfflineEvent;
import ch.protonmail.android.events.ForceUpgradeEvent;
import ch.protonmail.android.mailbox.data.local.ConversationDao;
import ch.protonmail.android.notifications.domain.NotificationDatabase;
import ch.protonmail.android.storage.AttachmentClearingService;
import ch.protonmail.android.storage.MessageBodyClearingService;
import me.proton.core.domain.entity.UserId;

View File

@ -26,7 +26,7 @@ import android.content.Intent
import android.net.Uri
import android.webkit.MimeTypeMap
import ch.protonmail.android.core.Constants
import ch.protonmail.android.servers.notification.NotificationServer
import ch.protonmail.android.notifications.presentation.utils.NotificationServer
import timber.log.Timber
import java.util.Locale
import javax.inject.Inject

View File

@ -20,12 +20,12 @@ package ch.protonmail.android.utils
import android.content.Context
import android.content.Intent
import ch.protonmail.android.navigation.presentation.EXTRA_FIRST_LOGIN
import ch.protonmail.android.core.Constants
import ch.protonmail.android.core.ProtonMailApplication
import ch.protonmail.android.mailbox.presentation.MailboxActivity
import ch.protonmail.android.servers.notification.EXTRA_MAILBOX_LOCATION
import ch.protonmail.android.servers.notification.EXTRA_USER_ID
import ch.protonmail.android.navigation.presentation.EXTRA_FIRST_LOGIN
import ch.protonmail.android.notifications.presentation.utils.EXTRA_MAILBOX_LOCATION
import ch.protonmail.android.notifications.presentation.utils.EXTRA_USER_ID
import me.proton.core.domain.entity.UserId
fun Context.startMailboxActivity(

View File

@ -24,7 +24,7 @@ import android.os.Handler
import android.os.Looper
import ch.protonmail.android.R
import ch.protonmail.android.core.UserManager
import ch.protonmail.android.servers.notification.NotificationServer
import ch.protonmail.android.notifications.presentation.utils.NotificationServer
import ch.protonmail.android.utils.extensions.showToast
import kotlinx.coroutines.withContext
import me.proton.core.util.kotlin.DispatcherProvider

View File

@ -17,14 +17,14 @@
* along with ProtonMail. If not, see https://www.gnu.org/licenses/.
*/
package ch.protonmail.android.fcm
package ch.protonmail.android.notifications.data.remote.fcm
import assert4k.assert
import assert4k.coFails
import assert4k.equals
import assert4k.that
import ch.protonmail.android.domain.entity.ValidationException
import ch.protonmail.android.fcm.model.FirebaseToken
import ch.protonmail.android.notifications.data.remote.fcm.model.FirebaseToken
import me.proton.core.test.android.mocks.mockSharedPreferences
import me.proton.core.test.kotlin.CoroutinesTest
import kotlin.test.Test

View File

@ -17,10 +17,10 @@
* along with ProtonMail. If not, see https://www.gnu.org/licenses/.
*/
package ch.protonmail.android.fcm
package ch.protonmail.android.notifications.data.remote.fcm
import android.content.SharedPreferences
import ch.protonmail.android.fcm.model.FirebaseToken
import ch.protonmail.android.notifications.data.remote.fcm.model.FirebaseToken
import ch.protonmail.android.prefs.SecureSharedPreferences
import io.mockk.coEvery
import io.mockk.coVerify

View File

@ -17,7 +17,7 @@
* along with ProtonMail. If not, see https://www.gnu.org/licenses/.
*/
package ch.protonmail.android.fcm
package ch.protonmail.android.notifications.data.remote.fcm
import android.content.Context
import androidx.work.ListenableWorker
@ -33,12 +33,16 @@ import ch.protonmail.android.core.UserManager
import ch.protonmail.android.crypto.UserCrypto
import ch.protonmail.android.data.local.model.Message
import ch.protonmail.android.data.local.model.Notification
import ch.protonmail.android.fcm.model.PushNotification
import ch.protonmail.android.fcm.model.PushNotificationData
import ch.protonmail.android.fcm.model.PushNotificationSender
import ch.protonmail.android.mailbox.presentation.ConversationModeEnabled
import ch.protonmail.android.notifications.data.remote.model.PushNotification
import ch.protonmail.android.notifications.data.remote.model.PushNotificationData
import ch.protonmail.android.notifications.data.remote.model.PushNotificationSender
import ch.protonmail.android.notifications.domain.KEY_PROCESS_PUSH_NOTIFICATION_DATA_ERROR
import ch.protonmail.android.notifications.domain.KEY_PUSH_NOTIFICATION_ENCRYPTED_MESSAGE
import ch.protonmail.android.notifications.domain.KEY_PUSH_NOTIFICATION_UID
import ch.protonmail.android.notifications.domain.ProcessPushNotificationDataWorker
import ch.protonmail.android.notifications.presentation.utils.NotificationServer
import ch.protonmail.android.repository.MessageRepository
import ch.protonmail.android.servers.notification.NotificationServer
import ch.protonmail.android.utils.AppUtil
import io.mockk.Runs
import io.mockk.coEvery

View File

@ -17,7 +17,7 @@
* along with ProtonMail. If not, see https://www.gnu.org/licenses/.
*/
package ch.protonmail.android.fcm
package ch.protonmail.android.notifications.data.remote.fcm
import android.content.Context
import androidx.work.Constraints
@ -30,7 +30,7 @@ import androidx.work.workDataOf
import ch.protonmail.android.api.ProtonMailApiManager
import ch.protonmail.android.api.models.ResponseBody
import ch.protonmail.android.core.Constants.RESPONSE_CODE_OK
import ch.protonmail.android.fcm.model.FirebaseToken
import ch.protonmail.android.notifications.data.remote.fcm.model.FirebaseToken
import ch.protonmail.android.prefs.SecureSharedPreferences
import ch.protonmail.android.utils.BuildInfo
import io.mockk.MockKAnnotations

View File

@ -22,9 +22,8 @@ package ch.protonmail.android.utils.notifier
import android.content.Context
import ch.protonmail.android.R
import ch.protonmail.android.core.UserManager
import me.proton.core.domain.entity.UserId
import ch.protonmail.android.domain.entity.Name
import ch.protonmail.android.servers.notification.NotificationServer
import ch.protonmail.android.notifications.presentation.utils.NotificationServer
import ch.protonmail.android.utils.extensions.showToast
import io.mockk.MockKAnnotations
import io.mockk.Runs
@ -35,6 +34,7 @@ import io.mockk.mockkStatic
import io.mockk.unmockkStatic
import io.mockk.verify
import kotlinx.coroutines.test.runBlockingTest
import me.proton.core.domain.entity.UserId
import me.proton.core.test.kotlin.CoroutinesTest
import kotlin.test.BeforeTest
import kotlin.test.Test