Use Notifications Master app ID

This commit is contained in:
ajp_anton
2026-08-16 01:57:44 +00:00
parent 572660a967
commit af3673c2e8
51 changed files with 142 additions and 142 deletions
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog
package se.ajpanton.notificationsmaster
import android.os.Bundle
import android.content.res.ColorStateList
@@ -20,17 +20,17 @@ import androidx.recyclerview.widget.RecyclerView
import androidx.lifecycle.lifecycleScope
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.switchmaterial.SwitchMaterial
import se.ajpanton.notificationlog.capture.SeenApps
import se.ajpanton.notificationlog.databinding.FragmentEventSettingsBinding
import se.ajpanton.notificationlog.settings.AppListItem
import se.ajpanton.notificationlog.settings.AppListOrdering
import se.ajpanton.notificationlog.settings.AppRuleMode
import se.ajpanton.notificationlog.settings.ListedApp
import se.ajpanton.notificationlog.settings.AppFilterSettings
import se.ajpanton.notificationlog.settings.AppFilterSettingsStore
import se.ajpanton.notificationlog.settings.LoggingRuleStore
import se.ajpanton.notificationlog.settings.LoggingType
import se.ajpanton.notificationlog.settings.PerAppEventSettingsStore
import se.ajpanton.notificationsmaster.capture.SeenApps
import se.ajpanton.notificationsmaster.databinding.FragmentEventSettingsBinding
import se.ajpanton.notificationsmaster.settings.AppListItem
import se.ajpanton.notificationsmaster.settings.AppListOrdering
import se.ajpanton.notificationsmaster.settings.AppRuleMode
import se.ajpanton.notificationsmaster.settings.ListedApp
import se.ajpanton.notificationsmaster.settings.AppFilterSettings
import se.ajpanton.notificationsmaster.settings.AppFilterSettingsStore
import se.ajpanton.notificationsmaster.settings.LoggingRuleStore
import se.ajpanton.notificationsmaster.settings.LoggingType
import se.ajpanton.notificationsmaster.settings.PerAppEventSettingsStore
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
@@ -1,13 +1,13 @@
package se.ajpanton.notificationlog
package se.ajpanton.notificationsmaster
import android.os.Bundle
import android.view.View
import androidx.fragment.app.Fragment
import com.google.android.material.switchmaterial.SwitchMaterial
import se.ajpanton.notificationlog.databinding.FragmentFilterLoggingBinding
import se.ajpanton.notificationlog.settings.CaptureSettingsStore
import se.ajpanton.notificationlog.settings.LoggingRuleStore
import se.ajpanton.notificationlog.settings.LoggingType
import se.ajpanton.notificationsmaster.databinding.FragmentFilterLoggingBinding
import se.ajpanton.notificationsmaster.settings.CaptureSettingsStore
import se.ajpanton.notificationsmaster.settings.LoggingRuleStore
import se.ajpanton.notificationsmaster.settings.LoggingType
class FilterLoggingFragment : Fragment(R.layout.fragment_filter_logging) {
private var binding: FragmentFilterLoggingBinding? = null
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog
package se.ajpanton.notificationsmaster
import android.app.Dialog
import android.graphics.Bitmap
@@ -19,7 +19,7 @@ import androidx.core.view.WindowInsetsCompat
import androidx.core.view.WindowInsetsControllerCompat
import androidx.fragment.app.DialogFragment
import androidx.lifecycle.lifecycleScope
import se.ajpanton.notificationlog.data.EncryptedImageStore
import se.ajpanton.notificationsmaster.data.EncryptedImageStore
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog
package se.ajpanton.notificationsmaster
import android.content.ClipData
import android.os.Bundle
@@ -9,14 +9,14 @@ import android.widget.Spinner
import android.widget.TextView
import androidx.fragment.app.Fragment
import com.google.android.material.switchmaterial.SwitchMaterial
import se.ajpanton.notificationlog.databinding.FragmentLogDisplayBinding
import se.ajpanton.notificationlog.settings.DisplayEvent
import se.ajpanton.notificationlog.settings.LogField
import se.ajpanton.notificationlog.settings.LogViewSettings
import se.ajpanton.notificationlog.settings.LogViewSettingsStore
import se.ajpanton.notificationlog.settings.TimestampClockFormat
import se.ajpanton.notificationlog.settings.TimestampDateFormat
import se.ajpanton.notificationlog.settings.TimestampZone
import se.ajpanton.notificationsmaster.databinding.FragmentLogDisplayBinding
import se.ajpanton.notificationsmaster.settings.DisplayEvent
import se.ajpanton.notificationsmaster.settings.LogField
import se.ajpanton.notificationsmaster.settings.LogViewSettings
import se.ajpanton.notificationsmaster.settings.LogViewSettingsStore
import se.ajpanton.notificationsmaster.settings.TimestampClockFormat
import se.ajpanton.notificationsmaster.settings.TimestampDateFormat
import se.ajpanton.notificationsmaster.settings.TimestampZone
class LogDisplayFragment : Fragment(R.layout.fragment_log_display) {
private var binding: FragmentLogDisplayBinding? = null
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog
package se.ajpanton.notificationsmaster
import android.os.Bundle
import android.hardware.biometrics.BiometricPrompt
@@ -22,9 +22,9 @@ import androidx.core.view.forEach
import androidx.drawerlayout.widget.DrawerLayout
import androidx.fragment.app.commit
import com.google.android.material.navigation.NavigationView
import se.ajpanton.notificationlog.databinding.ActivityMainBinding
import se.ajpanton.notificationlog.settings.AppLockStore
import se.ajpanton.notificationlog.settings.LogAppFilterStore
import se.ajpanton.notificationsmaster.databinding.ActivityMainBinding
import se.ajpanton.notificationsmaster.settings.AppLockStore
import se.ajpanton.notificationsmaster.settings.LogAppFilterStore
class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener {
private lateinit var binding: ActivityMainBinding
@@ -1,13 +1,13 @@
package se.ajpanton.notificationlog
package se.ajpanton.notificationsmaster
import android.app.Application
import android.content.pm.PackageManager
import se.ajpanton.notificationlog.data.EncryptedNotificationLogStore
import se.ajpanton.notificationlog.settings.AppFilterSettingsStore
import se.ajpanton.notificationlog.settings.LoggingRuleStore
import se.ajpanton.notificationlog.settings.LoggingType
import se.ajpanton.notificationlog.settings.NotificationListenerComponentController
import se.ajpanton.notificationlog.settings.PerAppEventSettingsStore
import se.ajpanton.notificationsmaster.data.EncryptedNotificationLogStore
import se.ajpanton.notificationsmaster.settings.AppFilterSettingsStore
import se.ajpanton.notificationsmaster.settings.LoggingRuleStore
import se.ajpanton.notificationsmaster.settings.LoggingType
import se.ajpanton.notificationsmaster.settings.NotificationListenerComponentController
import se.ajpanton.notificationsmaster.settings.PerAppEventSettingsStore
class NotificationLogApplication : Application() {
override fun onCreate() {
@@ -1,10 +1,10 @@
package se.ajpanton.notificationlog
package se.ajpanton.notificationsmaster
import android.os.Bundle
import android.view.View
import androidx.annotation.StringRes
import androidx.fragment.app.Fragment
import se.ajpanton.notificationlog.databinding.FragmentPageBinding
import se.ajpanton.notificationsmaster.databinding.FragmentPageBinding
class PageFragment : Fragment(R.layout.fragment_page) {
private var binding: FragmentPageBinding? = null
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog
package se.ajpanton.notificationsmaster
import android.content.Context
import android.graphics.Canvas
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog
package se.ajpanton.notificationsmaster
import android.os.Bundle
import android.net.Uri
@@ -9,17 +9,17 @@ import android.view.View
import androidx.fragment.app.Fragment
import androidx.lifecycle.lifecycleScope
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import se.ajpanton.notificationlog.databinding.FragmentSettingsBinding
import se.ajpanton.notificationlog.settings.LogField
import se.ajpanton.notificationlog.settings.LogViewSettingsStore
import se.ajpanton.notificationlog.settings.AppLockStore
import se.ajpanton.notificationlog.data.EncryptedNotificationLogStore
import se.ajpanton.notificationlog.data.EncryptedImageStore
import se.ajpanton.notificationlog.capture.NotificationCaptureService
import se.ajpanton.notificationlog.export.LogExporter
import se.ajpanton.notificationlog.settings.StorageLimits
import se.ajpanton.notificationlog.settings.StorageLimitsStore
import se.ajpanton.notificationlog.settings.LogAppFilterStore
import se.ajpanton.notificationsmaster.databinding.FragmentSettingsBinding
import se.ajpanton.notificationsmaster.settings.LogField
import se.ajpanton.notificationsmaster.settings.LogViewSettingsStore
import se.ajpanton.notificationsmaster.settings.AppLockStore
import se.ajpanton.notificationsmaster.data.EncryptedNotificationLogStore
import se.ajpanton.notificationsmaster.data.EncryptedImageStore
import se.ajpanton.notificationsmaster.capture.NotificationCaptureService
import se.ajpanton.notificationsmaster.export.LogExporter
import se.ajpanton.notificationsmaster.settings.StorageLimits
import se.ajpanton.notificationsmaster.settings.StorageLimitsStore
import se.ajpanton.notificationsmaster.settings.LogAppFilterStore
import java.util.zip.ZipOutputStream
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
@@ -148,7 +148,7 @@ class SettingsFragment : Fragment(R.layout.fragment_settings) {
private fun writeCsv(
writer: java.io.BufferedWriter,
logStore: EncryptedNotificationLogStore,
settings: se.ajpanton.notificationlog.settings.LogViewSettings,
settings: se.ajpanton.notificationsmaster.settings.LogViewSettings,
context: android.content.Context,
) = writer.use {
it.write(LogExporter.csvHeader(settings))
@@ -161,7 +161,7 @@ class SettingsFragment : Fragment(R.layout.fragment_settings) {
private fun writeFormatted(
writer: java.io.BufferedWriter,
logStore: EncryptedNotificationLogStore,
settings: se.ajpanton.notificationlog.settings.LogViewSettings,
settings: se.ajpanton.notificationsmaster.settings.LogViewSettings,
context: android.content.Context,
) = writer.use {
val headers = LogExporter.headers(settings)
@@ -181,7 +181,7 @@ class SettingsFragment : Fragment(R.layout.fragment_settings) {
private fun writeHtmlZip(
zip: ZipOutputStream,
logStore: EncryptedNotificationLogStore,
settings: se.ajpanton.notificationlog.settings.LogViewSettings,
settings: se.ajpanton.notificationsmaster.settings.LogViewSettings,
context: android.content.Context,
) = zip.use { zipOutput ->
val imageStore = EncryptedImageStore(context)
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog
package se.ajpanton.notificationsmaster
import android.animation.Animator
import android.animation.AnimatorListenerAdapter
@@ -18,19 +18,19 @@ import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import se.ajpanton.notificationlog.data.EncryptedImageStore
import se.ajpanton.notificationlog.data.EncryptedNotificationLogStore
import se.ajpanton.notificationlog.data.NewestLogCursor
import se.ajpanton.notificationlog.databinding.FragmentViewLogsBinding
import se.ajpanton.notificationlog.model.NotificationAction
import se.ajpanton.notificationlog.model.NotificationLogEntry
import se.ajpanton.notificationlog.settings.LogField
import se.ajpanton.notificationlog.settings.LogViewSettings
import se.ajpanton.notificationlog.settings.LogViewSettingsStore
import se.ajpanton.notificationlog.settings.LogAppFilterStore
import se.ajpanton.notificationlog.settings.TimestampFormatter
import se.ajpanton.notificationlog.settings.DisplayEvent
import se.ajpanton.notificationlog.capture.NotificationCaptureService
import se.ajpanton.notificationsmaster.data.EncryptedImageStore
import se.ajpanton.notificationsmaster.data.EncryptedNotificationLogStore
import se.ajpanton.notificationsmaster.data.NewestLogCursor
import se.ajpanton.notificationsmaster.databinding.FragmentViewLogsBinding
import se.ajpanton.notificationsmaster.model.NotificationAction
import se.ajpanton.notificationsmaster.model.NotificationLogEntry
import se.ajpanton.notificationsmaster.settings.LogField
import se.ajpanton.notificationsmaster.settings.LogViewSettings
import se.ajpanton.notificationsmaster.settings.LogViewSettingsStore
import se.ajpanton.notificationsmaster.settings.LogAppFilterStore
import se.ajpanton.notificationsmaster.settings.TimestampFormatter
import se.ajpanton.notificationsmaster.settings.DisplayEvent
import se.ajpanton.notificationsmaster.capture.NotificationCaptureService
import androidx.fragment.app.Fragment
import androidx.core.content.ContextCompat
import androidx.core.view.doOnPreDraw
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog
package se.ajpanton.notificationsmaster
import android.content.Context
import android.graphics.Bitmap
@@ -1,6 +1,6 @@
package se.ajpanton.notificationlog.capture
package se.ajpanton.notificationsmaster.capture
import se.ajpanton.notificationlog.model.NotificationAction
import se.ajpanton.notificationsmaster.model.NotificationAction
/** Applies the global, Android-provided group-summary classification without inspecting text. */
object GroupSummaryPolicy {
@@ -1,20 +1,20 @@
package se.ajpanton.notificationlog.capture
package se.ajpanton.notificationsmaster.capture
import android.app.Notification
import android.content.pm.PackageManager
import android.service.notification.NotificationListenerService
import android.service.notification.StatusBarNotification
import android.util.Log
import se.ajpanton.notificationlog.data.EncryptedNotificationLogStore
import se.ajpanton.notificationlog.data.EncryptedImageStore
import se.ajpanton.notificationlog.model.NotificationAction
import se.ajpanton.notificationlog.model.NotificationLogEntry
import se.ajpanton.notificationlog.settings.LoggingRuleStore
import se.ajpanton.notificationlog.settings.LoggingType
import se.ajpanton.notificationlog.settings.NotificationRuleEvaluator
import se.ajpanton.notificationlog.settings.CaptureSettingsStore
import se.ajpanton.notificationlog.settings.AppFilterSettingsStore
import se.ajpanton.notificationlog.settings.PerAppEventSettingsStore
import se.ajpanton.notificationsmaster.data.EncryptedNotificationLogStore
import se.ajpanton.notificationsmaster.data.EncryptedImageStore
import se.ajpanton.notificationsmaster.model.NotificationAction
import se.ajpanton.notificationsmaster.model.NotificationLogEntry
import se.ajpanton.notificationsmaster.settings.LoggingRuleStore
import se.ajpanton.notificationsmaster.settings.LoggingType
import se.ajpanton.notificationsmaster.settings.NotificationRuleEvaluator
import se.ajpanton.notificationsmaster.settings.CaptureSettingsStore
import se.ajpanton.notificationsmaster.settings.AppFilterSettingsStore
import se.ajpanton.notificationsmaster.settings.PerAppEventSettingsStore
import java.util.concurrent.ExecutorService
import java.util.concurrent.Executors
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog.capture
package se.ajpanton.notificationsmaster.capture
/** Keeps update classification deterministic and independently testable. */
object NotificationChangeClassifier {
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog.capture
package se.ajpanton.notificationsmaster.capture
import android.app.Notification
import android.content.Context
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog.capture
package se.ajpanton.notificationsmaster.capture
import java.util.concurrent.ConcurrentHashMap
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog.data
package se.ajpanton.notificationsmaster.data
import javax.crypto.Cipher
import javax.crypto.SecretKey
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog.data
package se.ajpanton.notificationsmaster.data
import android.content.Context
import android.util.AtomicFile
@@ -1,9 +1,9 @@
package se.ajpanton.notificationlog.data
package se.ajpanton.notificationsmaster.data
import android.content.Context
import android.util.AtomicFile
import se.ajpanton.notificationlog.model.NotificationLogEntry
import se.ajpanton.notificationlog.settings.StorageLimitsStore
import se.ajpanton.notificationsmaster.model.NotificationLogEntry
import se.ajpanton.notificationsmaster.settings.StorageLimitsStore
import java.io.BufferedInputStream
import java.io.BufferedOutputStream
import java.io.DataInputStream
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog.data
package se.ajpanton.notificationsmaster.data
import android.security.keystore.KeyGenParameterSpec
import android.security.keystore.KeyProperties
@@ -1,9 +1,9 @@
package se.ajpanton.notificationlog.data
package se.ajpanton.notificationsmaster.data
import org.json.JSONArray
import org.json.JSONObject
import se.ajpanton.notificationlog.model.NotificationAction
import se.ajpanton.notificationlog.model.NotificationLogEntry
import se.ajpanton.notificationsmaster.model.NotificationAction
import se.ajpanton.notificationsmaster.model.NotificationLogEntry
/** Versioned, private plaintext representation which is encrypted before it reaches disk. */
object NotificationLogEntryJson {
@@ -1,10 +1,10 @@
package se.ajpanton.notificationlog.export
package se.ajpanton.notificationsmaster.export
import android.content.Context
import se.ajpanton.notificationlog.model.NotificationLogEntry
import se.ajpanton.notificationlog.settings.LogField
import se.ajpanton.notificationlog.settings.LogViewSettings
import se.ajpanton.notificationlog.settings.TimestampFormatter
import se.ajpanton.notificationsmaster.model.NotificationLogEntry
import se.ajpanton.notificationsmaster.settings.LogField
import se.ajpanton.notificationsmaster.settings.LogViewSettings
import se.ajpanton.notificationsmaster.settings.TimestampFormatter
object LogExporter {
fun csv(entries: List<NotificationLogEntry>, settings: LogViewSettings, context: Context? = null): String = (
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog.model
package se.ajpanton.notificationsmaster.model
import java.util.UUID
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog.settings
package se.ajpanton.notificationsmaster.settings
import android.content.Context
import androidx.core.content.edit
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog.settings
package se.ajpanton.notificationsmaster.settings
data class ListedApp(
val label: String,
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog.settings
package se.ajpanton.notificationsmaster.settings
import android.content.Context
import androidx.core.content.edit
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog.settings
package se.ajpanton.notificationsmaster.settings
import android.content.Context
import androidx.core.content.edit
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog.settings
package se.ajpanton.notificationsmaster.settings
import android.content.Context
import androidx.core.content.edit
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog.settings
package se.ajpanton.notificationsmaster.settings
enum class LogField { TIMESTAMP, APP_NAME, PACKAGE_NAME, ACTION, CONTENTS }
enum class TimestampZone { EVENT_LOCAL, LOCAL_NOW, UTC }
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog.settings
package se.ajpanton.notificationsmaster.settings
import android.content.Context
import androidx.core.content.edit
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog.settings
package se.ajpanton.notificationsmaster.settings
import android.content.Context
import androidx.core.content.edit
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog.settings
package se.ajpanton.notificationsmaster.settings
enum class LoggingType {
APPEARING,
@@ -1,11 +1,11 @@
package se.ajpanton.notificationlog.settings
package se.ajpanton.notificationsmaster.settings
import android.content.ComponentName
import android.content.Context
import android.content.pm.PackageManager
import android.service.notification.NotificationListenerService
import android.util.Log
import se.ajpanton.notificationlog.capture.NotificationCaptureService
import se.ajpanton.notificationsmaster.capture.NotificationCaptureService
/**
* Notification listeners are re-bound by Android after boot when their component
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog.settings
package se.ajpanton.notificationsmaster.settings
/** The listener is useful only when at least one event type is enabled. */
object NotificationListenerPolicy {
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog.settings
package se.ajpanton.notificationsmaster.settings
object NotificationRuleEvaluator {
fun allows(filter: AppFilterSettings, packageName: String): Boolean {
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog.settings
package se.ajpanton.notificationsmaster.settings
import android.content.Context
import androidx.core.content.edit
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog.settings
package se.ajpanton.notificationsmaster.settings
import android.content.Context
import androidx.core.content.edit
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog.settings
package se.ajpanton.notificationsmaster.settings
import android.content.Context
import android.text.format.DateFormat as AndroidDateFormat
+2 -2
View File
@@ -3,7 +3,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<se.ajpanton.notificationlog.SafeInsetDrawerLayout
<se.ajpanton.notificationsmaster.SafeInsetDrawerLayout
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
@@ -65,7 +65,7 @@
app:itemTextColor="@color/drawer_item_text_color"
app:menu="@menu/drawer_menu" />
</se.ajpanton.notificationlog.SafeInsetDrawerLayout>
</se.ajpanton.notificationsmaster.SafeInsetDrawerLayout>
<LinearLayout
android:id="@+id/lock_overlay"
@@ -1,9 +1,9 @@
package se.ajpanton.notificationlog.capture
package se.ajpanton.notificationsmaster.capture
import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
import org.junit.Test
import se.ajpanton.notificationlog.model.NotificationAction
import se.ajpanton.notificationsmaster.model.NotificationAction
class GroupSummaryPolicyTest {
private fun snapshot(isGroupSummary: Boolean) = NotificationSnapshot(
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog.capture
package se.ajpanton.notificationsmaster.capture
import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog.capture
package se.ajpanton.notificationsmaster.capture
import org.junit.Assert.assertEquals
import org.junit.Test
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog.data
package se.ajpanton.notificationsmaster.data
import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
@@ -1,15 +1,15 @@
package se.ajpanton.notificationlog.export
package se.ajpanton.notificationsmaster.export
import org.junit.Assert.assertFalse
import org.junit.Assert.assertEquals
import org.junit.Assert.assertTrue
import org.junit.Test
import se.ajpanton.notificationlog.model.NotificationAction
import se.ajpanton.notificationlog.model.NotificationLogEntry
import se.ajpanton.notificationlog.settings.LogViewSettings
import se.ajpanton.notificationlog.settings.TimestampClockFormat
import se.ajpanton.notificationlog.settings.TimestampDateFormat
import se.ajpanton.notificationlog.settings.TimestampZone
import se.ajpanton.notificationsmaster.model.NotificationAction
import se.ajpanton.notificationsmaster.model.NotificationLogEntry
import se.ajpanton.notificationsmaster.settings.LogViewSettings
import se.ajpanton.notificationsmaster.settings.TimestampClockFormat
import se.ajpanton.notificationsmaster.settings.TimestampDateFormat
import se.ajpanton.notificationsmaster.settings.TimestampZone
class LogExporterTest {
private val imageEntry = NotificationLogEntry(
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog.settings
package se.ajpanton.notificationsmaster.settings
import org.junit.Assert.assertEquals
import org.junit.Test
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog.settings
package se.ajpanton.notificationsmaster.settings
import org.junit.Assert.assertTrue
import org.junit.Test
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog.settings
package se.ajpanton.notificationsmaster.settings
import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
@@ -1,4 +1,4 @@
package se.ajpanton.notificationlog.settings
package se.ajpanton.notificationsmaster.settings
import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue