diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index d4ceabb..cc95279 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -29,28 +29,29 @@ jobs: skip_test: true dry_run: false - notify: - name: Notify Slack - needs: publish - # Release context is only available when triggered by a release (not workflow_dispatch) - if: github.event_name == 'release' - runs-on: ubuntu-latest - - steps: - - name: Send release announcement to Slack - env: - SLACK_WEBHOOK: ${{ secrets.RELEASES_SLACK_WEBHOOK }} - RELEASE_TAG: ${{ github.event.release.tag_name }} - RELEASE_BODY: ${{ github.event.release.body }} - RELEASE_URL: ${{ github.event.release.html_url }} - run: | - # Extract the changelog from the release body: - # drop the "More info" trailer and the leading "- " list markers. - # Trailing blank lines are stripped by the command substitution. - changelog=$(printf '%s\n' "$RELEASE_BODY" | tr -d '\r' | sed -e '/^More info:/,$d' -e 's/^- //') - - text=$(printf '*Flutter SDK version `%s`* is now available :rocket:\n```%s```\nhttps://pub.dev/packages/didomi_sdk/versions/%s\n%s' \ - "$RELEASE_TAG" "$changelog" "$RELEASE_TAG" "$RELEASE_URL") - - jq -n --arg text "$text" '{ text: $text }' \ - | curl --silent --show-error --fail -X POST -H 'Content-Type: application/json' -d @- "$SLACK_WEBHOOK" +# Disable notify steps: either use a dedicated webhook or look for expected parameters (message build from those params) +# notify: +# name: Notify Slack +# needs: publish +# # Release context is only available when triggered by a release (not workflow_dispatch) +# if: github.event_name == 'release' +# runs-on: ubuntu-latest +# +# steps: +# - name: Send release announcement to Slack +# env: +# SLACK_WEBHOOK: ${{ secrets.RELEASES_SLACK_WEBHOOK }} +# RELEASE_TAG: ${{ github.event.release.tag_name }} +# RELEASE_BODY: ${{ github.event.release.body }} +# RELEASE_URL: ${{ github.event.release.html_url }} +# run: | +# # Extract the changelog from the release body: +# # drop the "More info" trailer and the leading "- " list markers. +# # Trailing blank lines are stripped by the command substitution. +# changelog=$(printf '%s\n' "$RELEASE_BODY" | tr -d '\r' | sed -e '/^More info:/,$d' -e 's/^- //') +# +# text=$(printf '*Flutter SDK version `%s`* is now available :rocket:\n```%s```\nhttps://pub.dev/packages/didomi_sdk/versions/%s\n%s' \ +# "$RELEASE_TAG" "$changelog" "$RELEASE_TAG" "$RELEASE_URL") +# +# jq -n --arg text "$text" '{ text: $text }' \ +# | curl --silent --show-error --fail -X POST -H 'Content-Type: application/json' -d @- "$SLACK_WEBHOOK" diff --git a/CHANGELOG.md b/CHANGELOG.md index 93b4deb..729450f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## 2.31.0 - Update latest versions of native Android (2.47.0) and iOS (2.47.0) sdks. +- Fix DCS signature events (`onDcsSignatureReady`, `onDcsSignatureError`) never being triggered. ## 2.30.0 - Update latest versions of native Android (2.46.0) and iOS (2.46.0) sdks. diff --git a/android/src/main/kotlin/io/didomi/fluttersdk/DidomiEventStreamHandler.kt b/android/src/main/kotlin/io/didomi/fluttersdk/DidomiEventStreamHandler.kt index 1502d03..890c09a 100644 --- a/android/src/main/kotlin/io/didomi/fluttersdk/DidomiEventStreamHandler.kt +++ b/android/src/main/kotlin/io/didomi/fluttersdk/DidomiEventStreamHandler.kt @@ -82,7 +82,7 @@ class DidomiEventStreamHandler : EventChannel.StreamHandler, DidomiEventListener @Deprecated("SPI purposes are now displayed in preferences screen.", replaceWith = ReplaceWith("noticeClickMoreInfo")) override fun noticeClickViewSPIPurposes(event: NoticeClickViewSPIPurposesEvent) { - sendEvent("noticeClickViewSPIPurposes") + sendEvent("onNoticeClickViewSPIPurposes") } override fun noticeClickMoreInfo(event: NoticeClickMoreInfoEvent) { @@ -127,7 +127,7 @@ class DidomiEventStreamHandler : EventChannel.StreamHandler, DidomiEventListener @Deprecated("SPI purposes are now displayed in preferences screen.", replaceWith = ReplaceWith("noticeClickMoreInfo")) override fun preferencesClickViewSPIPurposes(event: PreferencesClickViewSPIPurposesEvent) { - sendEvent("preferencesClickViewSPIPurposes") + sendEvent("onPreferencesClickViewSPIPurposes") } override fun preferencesClickSaveChoices(event: PreferencesClickSaveChoicesEvent) { @@ -180,7 +180,7 @@ class DidomiEventStreamHandler : EventChannel.StreamHandler, DidomiEventListener @Deprecated("SPI purposes now trigger the same events as other purposes.", replaceWith = ReplaceWith("preferencesClickPurposeAgree")) override fun preferencesClickSPIPurposeAgree(event: PreferencesClickSPIPurposeAgreeEvent) { - sendEvent("preferencesClickSPIPurposeAgree", mapOf("purposeId" to event.purposeId)) + sendEvent("onPreferencesClickSPIPurposeAgree", mapOf("purposeId" to event.purposeId)) } @Deprecated("SPI purposes now trigger the same events as other purposes.", replaceWith = ReplaceWith("preferencesClickPurposeDisagree")) @@ -200,7 +200,7 @@ class DidomiEventStreamHandler : EventChannel.StreamHandler, DidomiEventListener @Deprecated("SPI purposes now trigger the same events as other purposes.", replaceWith = ReplaceWith("preferencesClickSaveChoices")) override fun preferencesClickSPIPurposeSaveChoices(event: PreferencesClickSPIPurposeSaveChoicesEvent) { - sendEvent("preferencesClickSPIPurposeSaveChoices") + sendEvent("onPreferencesClickSPIPurposeSaveChoices") } /* diff --git a/example/lib/events_helper.dart b/example/lib/events_helper.dart index b1f3db1..5f0ef7d 100644 --- a/example/lib/events_helper.dart +++ b/example/lib/events_helper.dart @@ -148,6 +148,19 @@ class EventsHelper { onEvent("Language has not changed: $reason"); }; + // DCS signature events + didomiListener.onDcsSignatureReady = () { + onEvent("DCS signature is ready"); + }; + didomiListener.onDcsSignatureError = () { + onEvent("DCS signature generation failed"); + }; + + // External SDKs integration events + didomiListener.onIntegrationError = (event) { + onEvent("Integration error on ${event.integrationName}: ${event.reason}"); + }; + // Widgets events didomiListener.onShowWidget = (event) { onEvent("Widget displayed (widgetId: ${event.widgetId}, layerName: ${event.layerName})"); diff --git a/lib/events/events_handler.dart b/lib/events/events_handler.dart index ccc9b31..269c7ed 100644 --- a/lib/events/events_handler.dart +++ b/lib/events/events_handler.dart @@ -238,6 +238,61 @@ class EventsHandler { } break; + /// SPI screen events + + case "onNoticeClickViewSPIPurposes": + for (var listener in listeners) { + // ignore: deprecated_member_use_from_same_package + listener.onNoticeClickViewSPIPurposes(); + } + break; + + case "onPreferencesClickViewSPIPurposes": + for (var listener in listeners) { + // ignore: deprecated_member_use_from_same_package + listener.onPreferencesClickViewSPIPurposes(); + } + break; + + case "onPreferencesClickSPIPurposeAgree": + final String spiPurposeAgreeId = event["purposeId"].toString(); + for (var listener in listeners) { + // ignore: deprecated_member_use_from_same_package + listener.onPreferencesClickSPIPurposeAgree(spiPurposeAgreeId); + } + break; + + case "onPreferencesClickSPIPurposeDisagree": + final String spiPurposeDisagreeId = event["purposeId"].toString(); + for (var listener in listeners) { + // ignore: deprecated_member_use_from_same_package + listener.onPreferencesClickSPIPurposeDisagree(spiPurposeDisagreeId); + } + break; + + case "onPreferencesClickSPICategoryAgree": + final String spiCategoryAgreeId = event["categoryId"].toString(); + for (var listener in listeners) { + // ignore: deprecated_member_use_from_same_package + listener.onPreferencesClickSPICategoryAgree(spiCategoryAgreeId); + } + break; + + case "onPreferencesClickSPICategoryDisagree": + final String spiCategoryDisagreeId = event["categoryId"].toString(); + for (var listener in listeners) { + // ignore: deprecated_member_use_from_same_package + listener.onPreferencesClickSPICategoryDisagree(spiCategoryDisagreeId); + } + break; + + case "onPreferencesClickSPIPurposeSaveChoices": + for (var listener in listeners) { + // ignore: deprecated_member_use_from_same_package + listener.onPreferencesClickSPIPurposeSaveChoices(); + } + break; + /// Consent events case "onVendorStatusChanged": @@ -304,13 +359,13 @@ class EventsHandler { /// DCS signature events - case "onDcsSignatureError": + case "onDCSSignatureError": for (var listener in listeners) { listener.onDcsSignatureError(); } break; - case "onDcsSignatureReady": + case "onDCSSignatureReady": for (var listener in listeners) { listener.onDcsSignatureReady(); }