Skip to content

Commit bcca06b

Browse files
authored
Desktop support for local notification (#46)
* Implementing Desktop support for local notification (#44) * Initializing Desktop target * Initial local notifier implementation * Implementation of joptionspane for not supported tray notification * Updating api, and ReadME
1 parent 6807e2d commit bcca06b

File tree

24 files changed

+610
-7
lines changed

24 files changed

+610
-7
lines changed

README.md

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,16 @@
55

66
![badge-android](http://img.shields.io/badge/platform-android-6EDB8D.svg?style=flat)
77
![badge-ios](http://img.shields.io/badge/platform-ios-CDCDCD.svg?style=flat)
8+
![badge-desktop](https://img.shields.io/badge/platform-desktop-3474eb.svg?style=flat)
9+
810

911
Simple and easy to use Kotlin Multiplatform Push Notification library (using Firebase Cloud Messaging) targeting ios and android.
1012
This library is used in [FindTravelNow](https://github.com/mirzemehdi/FindTravelNow-KMM/) production KMP project.
1113
You can check out [Documentation](https://mirzemehdi.github.io/KMPNotifier) for full library api information.
1214

1315
## Features
1416
- 🔔 Local and Push Notification (Firebase Cloud Messaging)
15-
- 📱 Multiplatform (android and iOS)
17+
- 📱 Multiplatform (android, iOS and desktop(alpha)) (Desktop supports only local notification for now)
1618

1719
## Installation
1820
Before starting you need to setup basic setup using Firebase official guideline (like initializing project in Firebase, adding `google-services.json` to android, `GoogleService-Info.plist` to iOS).
@@ -64,7 +66,7 @@ plugins {
6466

6567

6668
### Platform Setup
67-
In both platforms on Application Start you need to initialize library using
69+
In all platforms on Application Start you need to initialize library using
6870
```kotlin
6971
NotifierManager.initialize(NotificationPlatformConfiguration) //passing android or ios configuration depending on the platform
7072
```
@@ -152,6 +154,39 @@ struct iOSApp: App {
152154

153155

154156

157+
</details>
158+
159+
<details>
160+
<summary>Desktop</summary>
161+
162+
### Desktop Setup
163+
You need to put notification icon into resources/common folder. For more information:
164+
[Compose Desktop Resources](https://github.com/JetBrains/compose-multiplatform/blob/master/tutorials/Native_distributions_and_local_execution/README.md#packaging-resources)
165+
```kotlin
166+
fun main() = application {
167+
168+
NotifierManager.initialize(
169+
NotificationPlatformConfiguration.Desktop(
170+
showPushNotification = true,
171+
notificationIconPath = composeDesktopResourcesPath() + File.separator + "ic_notification.png"
172+
)
173+
)
174+
175+
AppInitializer.onApplicationStart()
176+
Window(
177+
onCloseRequest = ::exitApplication,
178+
title = "KMPNotifier Desktop",
179+
) {
180+
println("Desktop app is started")
181+
App()
182+
183+
}
184+
}
185+
```
186+
187+
188+
189+
155190
</details>
156191

157192
## Usage

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ plugins {
2121

2222
allprojects {
2323
group = "io.github.mirzemehdi"
24-
version = "1.0.1"
24+
version = "1.1.0"
2525
val sonatypeUsername = gradleLocalProperties(rootDir).getProperty("sonatypeUsername")
2626
val sonatypePassword = gradleLocalProperties(rootDir).getProperty("sonatypePassword")
2727
val gpgKeySecret = gradleLocalProperties(rootDir).getProperty("gpgKeySecret")

gradle/libs.versions.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ koin-core = { group = "io.insert-koin", name = "koin-core", version.ref = "koin"
4747
firebase-messaging = { group = "com.google.firebase", name = "firebase-messaging-ktx" ,version.ref="firebase-messaging"}
4848

4949

50-
5150
[plugins]
5251
jetbrainsCompose = { id = "org.jetbrains.compose", version.ref = "compose-plugin" }
5352
composeCompiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
public final class com/mmk/kmpnotifier/extensions/NotifierManagerExtKt {
2+
public static final fun onCreateOrOnNewIntent (Lcom/mmk/kmpnotifier/notification/NotifierManager;Landroid/content/Intent;)V
3+
}
4+
5+
public abstract interface class com/mmk/kmpnotifier/notification/Notifier {
6+
public abstract fun notify (ILjava/lang/String;Ljava/lang/String;Ljava/util/Map;)V
7+
public abstract fun notify (Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)I
8+
public abstract fun remove (I)V
9+
public abstract fun removeAll ()V
10+
}
11+
12+
public final class com/mmk/kmpnotifier/notification/Notifier$DefaultImpls {
13+
public static synthetic fun notify$default (Lcom/mmk/kmpnotifier/notification/Notifier;ILjava/lang/String;Ljava/lang/String;Ljava/util/Map;ILjava/lang/Object;)V
14+
public static synthetic fun notify$default (Lcom/mmk/kmpnotifier/notification/Notifier;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;ILjava/lang/Object;)I
15+
}
16+
17+
public final class com/mmk/kmpnotifier/notification/NotifierManager {
18+
public static final field INSTANCE Lcom/mmk/kmpnotifier/notification/NotifierManager;
19+
public final fun addListener (Lcom/mmk/kmpnotifier/notification/NotifierManager$Listener;)V
20+
public final fun getLocalNotifier ()Lcom/mmk/kmpnotifier/notification/Notifier;
21+
public final fun getPermissionUtil ()Lcom/mmk/kmpnotifier/permission/PermissionUtil;
22+
public final fun getPushNotifier ()Lcom/mmk/kmpnotifier/notification/PushNotifier;
23+
public final fun initialize (Lcom/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration;)V
24+
}
25+
26+
public abstract interface class com/mmk/kmpnotifier/notification/NotifierManager$Listener {
27+
public abstract fun onNewToken (Ljava/lang/String;)V
28+
public abstract fun onNotificationClicked (Ljava/util/Map;)V
29+
public abstract fun onPayloadData (Ljava/util/Map;)V
30+
public abstract fun onPushNotification (Ljava/lang/String;Ljava/lang/String;)V
31+
}
32+
33+
public final class com/mmk/kmpnotifier/notification/NotifierManager$Listener$DefaultImpls {
34+
public static fun onNewToken (Lcom/mmk/kmpnotifier/notification/NotifierManager$Listener;Ljava/lang/String;)V
35+
public static fun onNotificationClicked (Lcom/mmk/kmpnotifier/notification/NotifierManager$Listener;Ljava/util/Map;)V
36+
public static fun onPayloadData (Lcom/mmk/kmpnotifier/notification/NotifierManager$Listener;Ljava/util/Map;)V
37+
public static fun onPushNotification (Lcom/mmk/kmpnotifier/notification/NotifierManager$Listener;Ljava/lang/String;Ljava/lang/String;)V
38+
}
39+
40+
public abstract interface class com/mmk/kmpnotifier/notification/PushNotifier {
41+
public abstract fun deleteMyToken (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
42+
public abstract fun getToken (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
43+
public abstract fun subscribeToTopic (Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
44+
public abstract fun unSubscribeFromTopic (Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
45+
}
46+
47+
public abstract interface class com/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration {
48+
}
49+
50+
public final class com/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration$Android : com/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration {
51+
public fun <init> (ILjava/lang/Integer;Lcom/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration$Android$NotificationChannelData;Z)V
52+
public synthetic fun <init> (ILjava/lang/Integer;Lcom/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration$Android$NotificationChannelData;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V
53+
public final fun getNotificationChannelData ()Lcom/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration$Android$NotificationChannelData;
54+
public final fun getNotificationIconColorResId ()Ljava/lang/Integer;
55+
public final fun getNotificationIconResId ()I
56+
public final fun getShowPushNotification ()Z
57+
}
58+
59+
public final class com/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration$Android$NotificationChannelData {
60+
public fun <init> ()V
61+
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
62+
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
63+
public final fun getDescription ()Ljava/lang/String;
64+
public final fun getId ()Ljava/lang/String;
65+
public final fun getName ()Ljava/lang/String;
66+
}
67+
68+
public final class com/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration$Desktop : com/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration {
69+
public fun <init> ()V
70+
public fun <init> (ZLjava/lang/String;)V
71+
public synthetic fun <init> (ZLjava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
72+
public final fun component1 ()Z
73+
public final fun component2 ()Ljava/lang/String;
74+
public final fun copy (ZLjava/lang/String;)Lcom/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration$Desktop;
75+
public static synthetic fun copy$default (Lcom/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration$Desktop;ZLjava/lang/String;ILjava/lang/Object;)Lcom/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration$Desktop;
76+
public fun equals (Ljava/lang/Object;)Z
77+
public final fun getNotificationIconPath ()Ljava/lang/String;
78+
public final fun getShowPushNotification ()Z
79+
public fun hashCode ()I
80+
public fun toString ()Ljava/lang/String;
81+
}
82+
83+
public final class com/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration$Ios : com/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration {
84+
public fun <init> ()V
85+
public fun <init> (ZZ)V
86+
public synthetic fun <init> (ZZILkotlin/jvm/internal/DefaultConstructorMarker;)V
87+
public final fun component1 ()Z
88+
public final fun component2 ()Z
89+
public final fun copy (ZZ)Lcom/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration$Ios;
90+
public static synthetic fun copy$default (Lcom/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration$Ios;ZZILjava/lang/Object;)Lcom/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration$Ios;
91+
public fun equals (Ljava/lang/Object;)Z
92+
public final fun getAskNotificationPermissionOnStart ()Z
93+
public final fun getShowPushNotification ()Z
94+
public fun hashCode ()I
95+
public fun toString ()Ljava/lang/String;
96+
}
97+
98+
public final class com/mmk/kmpnotifier/permission/AndroidPermissionUtil {
99+
public fun <init> (Landroidx/activity/ComponentActivity;)V
100+
public final fun askNotificationPermission (Lkotlin/jvm/functions/Function1;)V
101+
public static synthetic fun askNotificationPermission$default (Lcom/mmk/kmpnotifier/permission/AndroidPermissionUtil;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
102+
}
103+
104+
public final class com/mmk/kmpnotifier/permission/AndroidPermissionUtilKt {
105+
public static final fun permissionUtil (Landroidx/activity/ComponentActivity;)Lkotlin/Lazy;
106+
}
107+
108+
public abstract interface class com/mmk/kmpnotifier/permission/PermissionUtil {
109+
public abstract fun askNotificationPermission (Lkotlin/jvm/functions/Function0;)V
110+
public abstract fun hasNotificationPermission (Lkotlin/jvm/functions/Function1;)V
111+
}
112+
113+
public final class com/mmk/kmpnotifier/permission/PermissionUtil$DefaultImpls {
114+
public static synthetic fun askNotificationPermission$default (Lcom/mmk/kmpnotifier/permission/PermissionUtil;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)V
115+
public static synthetic fun hasNotificationPermission$default (Lcom/mmk/kmpnotifier/permission/PermissionUtil;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
116+
}
117+
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
public final class com/mmk/kmpnotifier/extensions/DesktopPlatformExtKt {
2+
public static final fun composeDesktopResourcesPath ()Ljava/lang/String;
3+
}
4+
5+
public abstract interface class com/mmk/kmpnotifier/notification/Notifier {
6+
public abstract fun notify (ILjava/lang/String;Ljava/lang/String;Ljava/util/Map;)V
7+
public abstract fun notify (Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)I
8+
public abstract fun remove (I)V
9+
public abstract fun removeAll ()V
10+
}
11+
12+
public final class com/mmk/kmpnotifier/notification/Notifier$DefaultImpls {
13+
public static synthetic fun notify$default (Lcom/mmk/kmpnotifier/notification/Notifier;ILjava/lang/String;Ljava/lang/String;Ljava/util/Map;ILjava/lang/Object;)V
14+
public static synthetic fun notify$default (Lcom/mmk/kmpnotifier/notification/Notifier;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;ILjava/lang/Object;)I
15+
}
16+
17+
public final class com/mmk/kmpnotifier/notification/NotifierManager {
18+
public static final field INSTANCE Lcom/mmk/kmpnotifier/notification/NotifierManager;
19+
public final fun addListener (Lcom/mmk/kmpnotifier/notification/NotifierManager$Listener;)V
20+
public final fun getLocalNotifier ()Lcom/mmk/kmpnotifier/notification/Notifier;
21+
public final fun getPermissionUtil ()Lcom/mmk/kmpnotifier/permission/PermissionUtil;
22+
public final fun getPushNotifier ()Lcom/mmk/kmpnotifier/notification/PushNotifier;
23+
public final fun initialize (Lcom/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration;)V
24+
}
25+
26+
public abstract interface class com/mmk/kmpnotifier/notification/NotifierManager$Listener {
27+
public abstract fun onNewToken (Ljava/lang/String;)V
28+
public abstract fun onNotificationClicked (Ljava/util/Map;)V
29+
public abstract fun onPayloadData (Ljava/util/Map;)V
30+
public abstract fun onPushNotification (Ljava/lang/String;Ljava/lang/String;)V
31+
}
32+
33+
public final class com/mmk/kmpnotifier/notification/NotifierManager$Listener$DefaultImpls {
34+
public static fun onNewToken (Lcom/mmk/kmpnotifier/notification/NotifierManager$Listener;Ljava/lang/String;)V
35+
public static fun onNotificationClicked (Lcom/mmk/kmpnotifier/notification/NotifierManager$Listener;Ljava/util/Map;)V
36+
public static fun onPayloadData (Lcom/mmk/kmpnotifier/notification/NotifierManager$Listener;Ljava/util/Map;)V
37+
public static fun onPushNotification (Lcom/mmk/kmpnotifier/notification/NotifierManager$Listener;Ljava/lang/String;Ljava/lang/String;)V
38+
}
39+
40+
public abstract interface class com/mmk/kmpnotifier/notification/PushNotifier {
41+
public abstract fun deleteMyToken (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
42+
public abstract fun getToken (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
43+
public abstract fun subscribeToTopic (Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
44+
public abstract fun unSubscribeFromTopic (Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
45+
}
46+
47+
public abstract interface class com/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration {
48+
}
49+
50+
public final class com/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration$Android : com/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration {
51+
public fun <init> (ILjava/lang/Integer;Lcom/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration$Android$NotificationChannelData;Z)V
52+
public synthetic fun <init> (ILjava/lang/Integer;Lcom/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration$Android$NotificationChannelData;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V
53+
public final fun getNotificationChannelData ()Lcom/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration$Android$NotificationChannelData;
54+
public final fun getNotificationIconColorResId ()Ljava/lang/Integer;
55+
public final fun getNotificationIconResId ()I
56+
public final fun getShowPushNotification ()Z
57+
}
58+
59+
public final class com/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration$Android$NotificationChannelData {
60+
public fun <init> ()V
61+
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
62+
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
63+
public final fun getDescription ()Ljava/lang/String;
64+
public final fun getId ()Ljava/lang/String;
65+
public final fun getName ()Ljava/lang/String;
66+
}
67+
68+
public final class com/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration$Desktop : com/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration {
69+
public fun <init> ()V
70+
public fun <init> (ZLjava/lang/String;)V
71+
public synthetic fun <init> (ZLjava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
72+
public final fun component1 ()Z
73+
public final fun component2 ()Ljava/lang/String;
74+
public final fun copy (ZLjava/lang/String;)Lcom/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration$Desktop;
75+
public static synthetic fun copy$default (Lcom/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration$Desktop;ZLjava/lang/String;ILjava/lang/Object;)Lcom/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration$Desktop;
76+
public fun equals (Ljava/lang/Object;)Z
77+
public final fun getNotificationIconPath ()Ljava/lang/String;
78+
public final fun getShowPushNotification ()Z
79+
public fun hashCode ()I
80+
public fun toString ()Ljava/lang/String;
81+
}
82+
83+
public final class com/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration$Ios : com/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration {
84+
public fun <init> ()V
85+
public fun <init> (ZZ)V
86+
public synthetic fun <init> (ZZILkotlin/jvm/internal/DefaultConstructorMarker;)V
87+
public final fun component1 ()Z
88+
public final fun component2 ()Z
89+
public final fun copy (ZZ)Lcom/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration$Ios;
90+
public static synthetic fun copy$default (Lcom/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration$Ios;ZZILjava/lang/Object;)Lcom/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration$Ios;
91+
public fun equals (Ljava/lang/Object;)Z
92+
public final fun getAskNotificationPermissionOnStart ()Z
93+
public final fun getShowPushNotification ()Z
94+
public fun hashCode ()I
95+
public fun toString ()Ljava/lang/String;
96+
}
97+
98+
public abstract interface class com/mmk/kmpnotifier/permission/PermissionUtil {
99+
public abstract fun askNotificationPermission (Lkotlin/jvm/functions/Function0;)V
100+
public abstract fun hasNotificationPermission (Lkotlin/jvm/functions/Function1;)V
101+
}
102+
103+
public final class com/mmk/kmpnotifier/permission/PermissionUtil$DefaultImpls {
104+
public static synthetic fun askNotificationPermission$default (Lcom/mmk/kmpnotifier/permission/PermissionUtil;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)V
105+
public static synthetic fun hasNotificationPermission$default (Lcom/mmk/kmpnotifier/permission/PermissionUtil;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
106+
}
107+

kmpnotifier/build.gradle.kts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ kotlin {
1616
}
1717
}
1818

19-
19+
jvm()
2020
iosX64()
2121
iosArm64()
2222
iosSimulatorArm64()
@@ -47,6 +47,11 @@ kotlin {
4747
implementation(libs.koin.core)
4848
implementation(libs.kotlinx.coroutine)
4949
}
50+
51+
commonTest.dependencies {
52+
implementation(libs.kotlin.test)
53+
}
54+
5055
}
5156
}
5257

kmpnotifier/src/commonMain/kotlin/com/mmk/kmpnotifier/di/LibDependencyInitializer.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,14 @@ private fun Koin.onLibraryInitialized() {
4242
get<PushNotifier>() //This will make sure that that when lib is initialized, init method is called
4343

4444
when (platform) {
45-
Platform.Android -> Unit //In Android platform permission should be asked in activity
45+
Platform.Android, Platform.Desktop -> Unit //In Android platform permission should be asked in activity
4646
Platform.Ios -> {
4747
val askNotificationPermissionOnStart =
4848
(configuration as? NotificationPlatformConfiguration.Ios)?.askNotificationPermissionOnStart
4949
?: true
5050
if (askNotificationPermissionOnStart) permissionUtil.askNotificationPermission()
5151
}
52+
5253
}
5354
}
5455

kmpnotifier/src/commonMain/kotlin/com/mmk/kmpnotifier/di/PlatformModule.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,6 @@ import org.koin.core.module.Module
66
internal sealed interface Platform {
77
data object Android : Platform
88
data object Ios : Platform
9+
data object Desktop : Platform
910
}
1011
internal expect val platformModule: Module

kmpnotifier/src/commonMain/kotlin/com/mmk/kmpnotifier/notification/configuration/NotificationPlatformConfiguration.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.mmk.kmpnotifier.notification.configuration
22

3+
34
/**
45
* You can configure some customization for notifications depending on the platform
56
*/
@@ -55,4 +56,10 @@ public sealed interface NotificationPlatformConfiguration {
5556
public val showPushNotification: Boolean = true,
5657
public val askNotificationPermissionOnStart: Boolean = true
5758
) : NotificationPlatformConfiguration
59+
60+
61+
public data class Desktop(
62+
public val showPushNotification: Boolean = true,
63+
public val notificationIconPath: String? = null
64+
) : NotificationPlatformConfiguration
5865
}

0 commit comments

Comments
 (0)