Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
65013c3
add public API to interface
nan-li Mar 27, 2026
b6f3e4e
Add JwtTokenStore, Operation.externalId, ConfigModel.useIdentityVerif…
nan-li Mar 29, 2026
372d924
Add jwt parameter to backend service interfaces/impls, add Authorizat…
nan-li Mar 29, 2026
12a918b
Add JWT gating, centralized externalId stamping, and FAIL_UNAUTHORIZE…
nan-li Mar 30, 2026
2295fe7
Update all operation executors to resolve JWT and alias based on iden…
nan-li Mar 30, 2026
1f6a60b
Add JWT to In-App Messages backend calls, guard anonymous IAM fetch
nan-li Mar 30, 2026
38f250b
Use alias-based IAM fetch endpoint: /users/by/:alias_label/:alias_id/…
nan-li Mar 30, 2026
da67b04
Wire JWT storage and identity verification guards into login, logout,…
nan-li Mar 30, 2026
8ab58a1
Add IdentityVerificationService, register JwtTokenStore in DI
nan-li Mar 30, 2026
2c87765
demo app: add JWT to buttons (login, updateJWT)
nan-li Mar 30, 2026
28a657f
update remote params identity verification key to "jwt_required"
nan-li Mar 30, 2026
d7b4b89
Fix: set all HTTP headers before writing request body
nan-li Mar 30, 2026
684db4c
demo app: use Identity verification toggle to make requests
nan-li Mar 30, 2026
c0bde45
Add isDisabledInternally to SubscriptionModel for IV logout
nan-li Mar 30, 2026
ad2b83a
Encapsulate JWT invalidation listener management in UserManager
nan-li Mar 30, 2026
5c37446
debug: dump full operation queue in OperationRepo log
nan-li Mar 30, 2026
ccd95cb
Fix spotless import ordering in CoreModule and UserManager
nan-li Mar 30, 2026
457b745
Update detekt baselines for identity verification changes
nan-li Mar 30, 2026
00d3799
Fix unit test compilation for identity verification parameters
nan-li Mar 30, 2026
762917b
Fix demo app stalling on failed login by dismissing loading immediately
nan-li Mar 31, 2026
dd288a4
Fix runtime 401 not notifying developer to provide a new JWT
nan-li Mar 31, 2026
ba938da
Propagate externalId to executor result operations in OperationRepo
nan-li Mar 31, 2026
4cb1242
Fix race condition: stamp externalId synchronously before async enqueue
nan-li Mar 31, 2026
f9d911a
Harden JwtTokenStore against corrupted SharedPreferences data
nan-li Mar 31, 2026
e993fc0
Fix null useIdentityVerification blocking all ops for non-IV apps
nan-li Mar 31, 2026
76dd958
Add @Volatile to _jwtInvalidatedHandler for JMM visibility
nan-li Mar 31, 2026
a53f942
Skip push subscription disable on logout when JWT is already expired
nan-li Mar 31, 2026
f6e4227
Add identity verification manual test plan
nan-li Mar 31, 2026
b9b637d
Update IDENTITY_VERIFICATION_MANUAL_TEST_PLAN.md
nan-li Apr 1, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 33 additions & 15 deletions OneSignalSDK/detekt/detekt-baseline-core.xml

Large diffs are not rendered by default.

21 changes: 12 additions & 9 deletions OneSignalSDK/detekt/detekt-baseline-in-app-messages.xml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<?xml version="1.0" ?>
<?xml version='1.0' encoding='UTF-8'?>
<SmellBaseline>
<ManuallySuppressedIssues></ManuallySuppressedIssues>
<ManuallySuppressedIssues/>
<CurrentIssues>
<ID>ComplexCondition:InAppMessagesManager.kt$InAppMessagesManager$!message.isTriggerChanged &amp;&amp; isMessageDisplayed &amp;&amp; (isTriggerOnMessage || isNewTriggerAdded &amp;&amp; isOnlyDynamicTriggers)</ID>
<ID>ComplexMethod:TriggerController.kt$TriggerController$private fun evaluateTrigger(trigger: Trigger): Boolean</ID>
<ID>ComplexMethod:InAppMessagesManager.kt$InAppMessagesManager$private suspend fun fetchMessages(rywData: RywData)</ID>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should break it down if its a complex method.

<ID>ConstructorParameterNaming:DynamicTriggerController.kt$DynamicTriggerController$private val _session: ISessionService</ID>
<ID>ConstructorParameterNaming:DynamicTriggerController.kt$DynamicTriggerController$private val _state: InAppStateService</ID>
<ID>ConstructorParameterNaming:DynamicTriggerController.kt$DynamicTriggerController$private val _time: ITime</ID>
Expand Down Expand Up @@ -39,6 +39,7 @@
<ID>ConstructorParameterNaming:InAppMessagesManager.kt$InAppMessagesManager$private val _displayer: IInAppDisplayer</ID>
<ID>ConstructorParameterNaming:InAppMessagesManager.kt$InAppMessagesManager$private val _identityModelStore: IdentityModelStore</ID>
<ID>ConstructorParameterNaming:InAppMessagesManager.kt$InAppMessagesManager$private val _influenceManager: IInfluenceManager</ID>
<ID>ConstructorParameterNaming:InAppMessagesManager.kt$InAppMessagesManager$private val _jwtTokenStore: JwtTokenStore</ID>
<ID>ConstructorParameterNaming:InAppMessagesManager.kt$InAppMessagesManager$private val _languageContext: ILanguageContext</ID>
<ID>ConstructorParameterNaming:InAppMessagesManager.kt$InAppMessagesManager$private val _lifecycle: IInAppLifecycleService</ID>
<ID>ConstructorParameterNaming:InAppMessagesManager.kt$InAppMessagesManager$private val _outcomeEventsController: IOutcomeEventsController</ID>
Expand All @@ -65,10 +66,12 @@
<ID>ForbiddenComment:InAppMessagesManager.kt$InAppMessagesManager$// TODO until we don't fix the activity going forward or back dismissing the IAM, we need to auto dismiss</ID>
<ID>ForbiddenComment:InAppMessagesManager.kt$InAppMessagesManager$// TODO: Add more action payload preview logs here in future</ID>
<ID>LongMethod:DynamicTriggerController.kt$DynamicTriggerController$fun dynamicTriggerShouldFire(trigger: Trigger): Boolean</ID>
<ID>LongMethod:InAppMessagesManager.kt$InAppMessagesManager$private suspend fun fetchMessages(rywData: RywData)</ID>
<ID>LongMethod:InAppRepository.kt$InAppRepository$override suspend fun cleanCachedInAppMessages()</ID>
<ID>LongParameterList:IInAppBackendService.kt$IInAppBackendService$( appId: String, aliasLabel: String, aliasValue: String, subscriptionId: String, rywData: RywData, sessionDurationProvider: () -> Long, jwt: String? = null, )</ID>
<ID>LongParameterList:IInAppBackendService.kt$IInAppBackendService$( appId: String, subscriptionId: String, variantId: String?, messageId: String, clickId: String?, isFirstClick: Boolean, )</ID>
<ID>LongParameterList:InAppDisplayer.kt$InAppDisplayer$( private val _applicationService: IApplicationService, private val _lifecycle: IInAppLifecycleService, private val _promptFactory: IInAppMessagePromptFactory, private val _backend: IInAppBackendService, private val _influenceManager: IInfluenceManager, private val _configModelStore: ConfigModelStore, private val _languageContext: ILanguageContext, private val _time: ITime, )</ID>
<ID>LongParameterList:InAppMessagesManager.kt$InAppMessagesManager$( private val _applicationService: IApplicationService, private val _sessionService: ISessionService, private val _influenceManager: IInfluenceManager, private val _configModelStore: ConfigModelStore, private val _userManager: IUserManager, private val _identityModelStore: IdentityModelStore, private val _subscriptionManager: ISubscriptionManager, private val _outcomeEventsController: IOutcomeEventsController, private val _state: InAppStateService, private val _prefs: IInAppPreferencesController, private val _repository: IInAppRepository, private val _backend: IInAppBackendService, private val _triggerController: ITriggerController, private val _triggerModelStore: TriggerModelStore, private val _displayer: IInAppDisplayer, private val _lifecycle: IInAppLifecycleService, private val _languageContext: ILanguageContext, private val _time: ITime, private val _consistencyManager: IConsistencyManager, )</ID>
<ID>LongParameterList:InAppMessagesManager.kt$InAppMessagesManager$( private val _applicationService: IApplicationService, private val _sessionService: ISessionService, private val _influenceManager: IInfluenceManager, private val _configModelStore: ConfigModelStore, private val _userManager: IUserManager, private val _identityModelStore: IdentityModelStore, private val _subscriptionManager: ISubscriptionManager, private val _outcomeEventsController: IOutcomeEventsController, private val _state: InAppStateService, private val _prefs: IInAppPreferencesController, private val _repository: IInAppRepository, private val _backend: IInAppBackendService, private val _triggerController: ITriggerController, private val _triggerModelStore: TriggerModelStore, private val _displayer: IInAppDisplayer, private val _lifecycle: IInAppLifecycleService, private val _languageContext: ILanguageContext, private val _time: ITime, private val _consistencyManager: IConsistencyManager, private val _jwtTokenStore: JwtTokenStore, )</ID>
<ID>LongParameterList:OneSignalAnimate.kt$OneSignalAnimate$( view: View, deltaFromY: Float, deltaToY: Float, duration: Int, interpolator: Interpolator?, animCallback: Animation.AnimationListener?, )</ID>
<ID>MagicNumber:DraggableRelativeLayout.kt$DraggableRelativeLayout$3</ID>
<ID>MagicNumber:DraggableRelativeLayout.kt$DraggableRelativeLayout$3000</ID>
Expand All @@ -85,12 +88,12 @@
<ID>MagicNumber:InAppMessageView.kt$InAppMessageView$5</ID>
<ID>MagicNumber:InAppMessageView.kt$InAppMessageView$8</ID>
<ID>MagicNumber:InAppMessageView.kt$InAppMessageView$8.0</ID>
<ID>MagicNumber:InAppMessageView.kt$InAppMessageView.&lt;no name provided&gt;$5</ID>
<ID>MagicNumber:InAppMessageView.kt$InAppMessageView.&lt;no name provided>$5</ID>
<ID>MagicNumber:InAppMessagesManager.kt$InAppMessagesManager$1000</ID>
<ID>MagicNumber:InAppRepository.kt$InAppRepository$1000L</ID>
<ID>MagicNumber:OneSignalAnimate.kt$OneSignalAnimate$0.5f</ID>
<ID>MagicNumber:WebViewManager.kt$WebViewManager$3</ID>
<ID>NestedBlockDepth:TriggerController.kt$TriggerController$override fun isTriggerOnMessage( message: InAppMessage, triggersKeys: Collection&lt;String&gt;, ): Boolean</ID>
<ID>NestedBlockDepth:TriggerController.kt$TriggerController$override fun isTriggerOnMessage( message: InAppMessage, triggersKeys: Collection&lt;String>, ): Boolean</ID>
<ID>PrintStackTrace:InAppMessage.kt$InAppMessage$e</ID>
<ID>PrintStackTrace:InAppMessage.kt$InAppMessage$exception</ID>
<ID>PrintStackTrace:InAppMessageClickResult.kt$InAppMessageClickResult$e</ID>
Expand All @@ -100,17 +103,17 @@
<ID>PrintStackTrace:InAppMessageTag.kt$InAppMessageTag$e</ID>
<ID>PrintStackTrace:Trigger.kt$Trigger$exception</ID>
<ID>PrintStackTrace:WebViewManager.kt$WebViewManager.OSJavaScriptInterface$e</ID>
<ID>ReturnCount:DraggableRelativeLayout.kt$DraggableRelativeLayout.&lt;no name provided&gt;$override fun clampViewPositionVertical( child: View, top: Int, dy: Int, ): Int</ID>
<ID>ReturnCount:DraggableRelativeLayout.kt$DraggableRelativeLayout.&lt;no name provided>$override fun clampViewPositionVertical( child: View, top: Int, dy: Int, ): Int</ID>
<ID>ReturnCount:DynamicTriggerController.kt$DynamicTriggerController$fun dynamicTriggerShouldFire(trigger: Trigger): Boolean</ID>
<ID>ReturnCount:InAppBackendService.kt$InAppBackendService$override suspend fun getIAMData( appId: String, messageId: String, variantId: String?, ): GetIAMDataResponse</ID>
<ID>ReturnCount:InAppBackendService.kt$InAppBackendService$private suspend fun attemptFetchWithRetries( baseUrl: String, rywData: RywData, sessionDurationProvider: () -&gt; Long, ): List&lt;InAppMessage&gt;?</ID>
<ID>ReturnCount:InAppBackendService.kt$InAppBackendService$private suspend fun attemptFetchWithRetries( baseUrl: String, rywData: RywData, sessionDurationProvider: () -> Long, jwt: String? = null, ): List&lt;InAppMessage>?</ID>
<ID>ReturnCount:InAppHydrator.kt$InAppHydrator$fun hydrateIAMMessageContent(jsonObject: JSONObject): InAppMessageContent?</ID>
<ID>ReturnCount:InAppMessage.kt$InAppMessage$private fun parseEndTimeJson(json: JSONObject): Date?</ID>
<ID>ReturnCount:InAppMessagePreviewHandler.kt$InAppMessagePreviewHandler$private fun inAppPreviewPushUUID(payload: JSONObject): String?</ID>
<ID>ReturnCount:InAppMessagesManager.kt$InAppMessagesManager$override fun onMessageWasDisplayed(message: InAppMessage)</ID>
<ID>ReturnCount:InAppMessagesManager.kt$InAppMessagesManager$private suspend fun fetchMessages(rywData: RywData)</ID>
<ID>ReturnCount:TriggerController.kt$TriggerController$override fun evaluateMessageTriggers(message: InAppMessage): Boolean</ID>
<ID>ReturnCount:TriggerController.kt$TriggerController$override fun isTriggerOnMessage( message: InAppMessage, triggersKeys: Collection&lt;String&gt;, ): Boolean</ID>
<ID>ReturnCount:TriggerController.kt$TriggerController$override fun isTriggerOnMessage( message: InAppMessage, triggersKeys: Collection&lt;String>, ): Boolean</ID>
<ID>ReturnCount:TriggerController.kt$TriggerController$override fun messageHasOnlyDynamicTriggers(message: InAppMessage): Boolean</ID>
<ID>ReturnCount:TriggerController.kt$TriggerController$private fun evaluateTrigger(trigger: Trigger): Boolean</ID>
<ID>ReturnCount:TriggerController.kt$TriggerController$private fun triggerMatchesFlex( triggerValue: Any?, deviceValue: Any, operator: Trigger.OSTriggerOperator, ): Boolean</ID>
Expand Down
18 changes: 7 additions & 11 deletions OneSignalSDK/detekt/detekt-baseline-notifications.xml
Original file line number Diff line number Diff line change
Expand Up @@ -137,35 +137,30 @@
<ID>LongParameterList:INotificationGenerationWorkManager.kt$INotificationGenerationWorkManager$( context: Context, osNotificationId: String, androidNotificationId: Int, jsonPayload: JSONObject?, timestamp: Long, isRestoring: Boolean, isHighPriority: Boolean, )</ID>
<ID>LongParameterList:INotificationRepository.kt$INotificationRepository$( id: String, groupId: String?, collapseKey: String?, shouldDismissIdenticals: Boolean, isOpened: Boolean, androidId: Int, title: String?, body: String?, expireTime: Long, jsonPayload: String, )</ID>
<ID>LongParameterList:NotificationLifecycleService.kt$NotificationLifecycleService$( private val _applicationService: IApplicationService, private val _time: ITime, private val _configModelStore: ConfigModelStore, private val _influenceManager: IInfluenceManager, private val _subscriptionManager: ISubscriptionManager, private val _deviceService: IDeviceService, private val _backend: INotificationBackendService, private val _receiveReceiptWorkManager: IReceiveReceiptWorkManager, private val _analyticsTracker: IAnalyticsTracker, )</ID>
<ID>LoopWithTooManyJumpStatements:NotificationLifecycleService.kt$NotificationLifecycleService$for (i in 0 until data.length()) { val notificationId = NotificationFormatHelper.getOSNotificationIdFromJson(data[i] as JSONObject?) ?: continue if (postedOpenedNotifIds.contains(notificationId)) { continue } postedOpenedNotifIds.add(notificationId) suspendifyWithErrorHandling( useIO = true, // or false for CPU operations block = { _backend.updateNotificationAsOpened( appId, notificationId, subscriptionId, deviceType, ) }, onError = { ex -> if (ex is BackendException) { Logging.error("Notification opened confirmation failed with statusCode: ${ex.statusCode} response: ${ex.response}") } else { Logging.error("Unexpected error in notification opened confirmation", ex) } }, ) }</ID>
<ID>LoopWithTooManyJumpStatements:NotificationLifecycleService.kt$NotificationLifecycleService$for (i in 0 until data.length()) { val notificationId = NotificationFormatHelper.getOSNotificationIdFromJson(data[i] as JSONObject?) ?: continue if (postedOpenedNotifIds.contains(notificationId)) { continue } postedOpenedNotifIds.add(notificationId) suspendifyWithErrorHandling( useIO = true, // or false for CPU operations block = { _backend.updateNotificationAsOpened( appId, notificationId, subscriptionId, deviceType, ) }, onError = { ex -> if (ex is BackendException) { Logging.info("Notification opened confirmation failed with statusCode: ${ex.statusCode} response: ${ex.response}") } else { Logging.info("Unexpected error in notification opened confirmation", ex) } }, ) }</ID>
<ID>MagicNumber:FirebaseAnalyticsTracker.kt$FirebaseAnalyticsTracker$1000</ID>
<ID>MagicNumber:FirebaseAnalyticsTracker.kt$FirebaseAnalyticsTracker$30</ID>
<ID>MagicNumber:FirebaseAnalyticsTracker.kt$FirebaseAnalyticsTracker$60</ID>
<ID>MagicNumber:Notification.kt$Notification$1000</ID>
<ID>MagicNumber:NotificationBundleProcessor.kt$NotificationBundleProcessor$1000L</ID>
<ID>MagicNumber:NotificationBundleProcessor.kt$NotificationBundleProcessor$9</ID>
<ID>MagicNumber:NotificationChannelManager.kt$NotificationChannelManager$16</ID>
<ID>MagicNumber:NotificationChannelManager.kt$NotificationChannelManager$3</ID>
<ID>MagicNumber:NotificationChannelManager.kt$NotificationChannelManager$5</ID>
<ID>MagicNumber:NotificationChannelManager.kt$NotificationChannelManager$6</ID>
<ID>MagicNumber:NotificationChannelManager.kt$NotificationChannelManager$7</ID>
<ID>MagicNumber:NotificationChannelManager.kt$NotificationChannelManager$9</ID>
<ID>MagicNumber:NotificationDisplayBuilder.kt$NotificationDisplayBuilder$1000L</ID>
<ID>MagicNumber:NotificationDisplayBuilder.kt$NotificationDisplayBuilder$16</ID>
<ID>MagicNumber:NotificationDisplayBuilder.kt$NotificationDisplayBuilder$2000</ID>
<ID>MagicNumber:NotificationDisplayBuilder.kt$NotificationDisplayBuilder$3</ID>
<ID>MagicNumber:NotificationDisplayBuilder.kt$NotificationDisplayBuilder$4</ID>
<ID>MagicNumber:NotificationDisplayBuilder.kt$NotificationDisplayBuilder$5000</ID>
<ID>MagicNumber:NotificationDisplayBuilder.kt$NotificationDisplayBuilder$6</ID>
<ID>MagicNumber:NotificationDisplayBuilder.kt$NotificationDisplayBuilder$7</ID>
<ID>MagicNumber:NotificationDisplayBuilder.kt$NotificationDisplayBuilder$9</ID>
<ID>MagicNumber:NotificationDisplayer.kt$NotificationDisplayer$16</ID>
<ID>MagicNumber:NotificationDisplayer.kt$NotificationDisplayer$3</ID>
<ID>MagicNumber:NotificationDisplayer.kt$NotificationDisplayer$5000</ID>
<ID>MagicNumber:NotificationGenerationProcessor.kt$NotificationGenerationProcessor$1000</ID>
<ID>MagicNumber:NotificationGenerationProcessor.kt$NotificationGenerationProcessor$1000L</ID>
<ID>MagicNumber:NotificationGenerationWorkManager.kt$NotificationGenerationWorkManager.NotificationGenerationWorker$1000L</ID>
<ID>MagicNumber:NotificationHelper.kt$NotificationHelper$10</ID>
<ID>MagicNumber:NotificationPriorityMapper.kt$NotificationPriorityMapper$3</ID>
<ID>MagicNumber:NotificationPriorityMapper.kt$NotificationPriorityMapper$5</ID>
<ID>MagicNumber:NotificationPriorityMapper.kt$NotificationPriorityMapper$7</ID>
<ID>MagicNumber:NotificationQueryHelper.kt$NotificationQueryHelper$1000L</ID>
<ID>MagicNumber:NotificationQueryHelper.kt$NotificationQueryHelper$604800L</ID>
<ID>MagicNumber:NotificationRepository.kt$NotificationRepository$1000L</ID>
Expand Down Expand Up @@ -194,8 +189,6 @@
<ID>ReturnCount:GenerateNotificationOpenIntent.kt$GenerateNotificationOpenIntent$private fun getIntentAppOpen(): Intent?</ID>
<ID>ReturnCount:NotificationChannelManager.kt$NotificationChannelManager$override fun createNotificationChannel(notificationJob: NotificationGenerationJob): String</ID>
<ID>ReturnCount:NotificationChannelManager.kt$NotificationChannelManager$override fun processChannelList(list: JSONArray?)</ID>
<ID>ReturnCount:NotificationChannelManager.kt$NotificationChannelManager$private fun priorityToImportance(priority: Int): Int</ID>
<ID>ReturnCount:NotificationDisplayBuilder.kt$NotificationDisplayBuilder$private fun convertOSToAndroidPriority(priority: Int): Int</ID>
<ID>ReturnCount:NotificationDisplayBuilder.kt$NotificationDisplayBuilder$private fun getAccentColor(fcmJson: JSONObject): BigInteger?</ID>
<ID>ReturnCount:NotificationDisplayBuilder.kt$NotificationDisplayBuilder$private fun getBitmapFromAssetsOrResourceName(bitmapStr: String): Bitmap?</ID>
<ID>ReturnCount:NotificationDisplayBuilder.kt$NotificationDisplayBuilder$private fun getResourceIcon(iconName: String?): Int</ID>
Expand All @@ -213,6 +206,8 @@
<ID>ReturnCount:NotificationHelper.kt$NotificationHelper$fun getNotificationIdFromFCMJson(fcmJson: JSONObject?): String?</ID>
<ID>ReturnCount:NotificationLifecycleService.kt$NotificationLifecycleService$private fun shouldInitDirectSessionFromNotificationOpen(context: Activity): Boolean</ID>
<ID>ReturnCount:NotificationPermissionController.kt$NotificationPermissionController$override suspend fun prompt(fallbackToSettings: Boolean): Boolean</ID>
<ID>ReturnCount:NotificationPriorityMapper.kt$NotificationPriorityMapper$fun toAndroidImportance(osPriority: Int): Int</ID>
<ID>ReturnCount:NotificationPriorityMapper.kt$NotificationPriorityMapper$fun toAndroidPriority(osPriority: Int): Int</ID>
<ID>ReturnCount:NotificationRestoreProcessor.kt$NotificationRestoreProcessor$private fun getVisibleNotifications(): List&lt;Int>?</ID>
<ID>ReturnCount:NotificationRestoreWorkManager.kt$NotificationRestoreWorkManager.NotificationRestoreWorker$override suspend fun doWork(): Result</ID>
<ID>ReturnCount:NotificationSummaryManager.kt$NotificationSummaryManager$private suspend fun internalUpdateSummaryNotificationAfterChildRemoved( group: String, dismissed: Boolean, )</ID>
Expand Down Expand Up @@ -247,6 +242,7 @@
<ID>TooGenericExceptionCaught:NotificationGenerationProcessor.kt$NotificationGenerationProcessor$t: Throwable</ID>
<ID>TooGenericExceptionCaught:NotificationHelper.kt$NotificationHelper$e: Throwable</ID>
<ID>TooGenericExceptionCaught:NotificationHelper.kt$NotificationHelper$t: Throwable</ID>
<ID>TooGenericExceptionCaught:NotificationLifecycleService.kt$NotificationLifecycleService$e: Exception</ID>
<ID>TooGenericExceptionCaught:NotificationLimitManager.kt$NotificationLimitManager$t: Throwable</ID>
<ID>TooGenericExceptionCaught:NotificationRepository.kt$NotificationRepository$t: Throwable</ID>
<ID>TooGenericExceptionCaught:NotificationRestoreProcessor.kt$NotificationRestoreProcessor$t: Throwable</ID>
Expand Down
10 changes: 10 additions & 0 deletions OneSignalSDK/detekt/detekt-baseline-otel.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?xml version='1.0' encoding='UTF-8'?>
<SmellBaseline>
<ManuallySuppressedIssues/>
<CurrentIssues>
<ID>LongParameterList:OtelLoggingHelper.kt$OtelLoggingHelper$( telemetry: IOtelOpenTelemetryRemote, level: String, message: String, exceptionType: String? = null, exceptionMessage: String? = null, exceptionStacktrace: String? = null, )</ID>
<ID>ReturnCount:OtelConfigRemoteOneSignal.kt$OtelConfigRemoteOneSignal.ExporterLoggingConfig.LoggingLogRecordExporter$@Suppress("TooGenericExceptionCaught") private fun resolveHttpFailureMessage(throwable: Throwable?): String</ID>
<ID>TooGenericExceptionCaught:OtelCrashHandler.kt$OtelCrashHandler$t: Throwable</ID>
<ID>UndocumentedPublicFunction:IOtelCrashReporter.kt$IOtelCrashReporter$suspend fun saveCrash(thread: Thread, throwable: Throwable)</ID>
</CurrentIssues>
</SmellBaseline>
Loading
Loading