Skip to content

Commit a44590e

Browse files
authored
JSON encode intercomSettings (#584)
1 parent b12031d commit a44590e

File tree

6 files changed

+15
-5
lines changed

6 files changed

+15
-5
lines changed

intercom_flutter/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changelog
22

3+
## 9.4.19
4+
5+
* Bump `intercom_flutter_web` to `1.1.11`
6+
37
## 9.4.18
48

59
* Bump Intercom iOS SDK version to [19.3.4](https://github.com/intercom/intercom-ios/releases/tag/19.3.4)

intercom_flutter/pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: intercom_flutter
22
description: Flutter plugin for Intercom integration. Provides in-app messaging
33
and help-center Intercom services
4-
version: 9.4.18
4+
version: 9.4.19
55
homepage: https://github.com/v3rm0n/intercom_flutter
66

77
dependencies:
@@ -10,7 +10,7 @@ dependencies:
1010
flutter_web_plugins:
1111
sdk: flutter
1212
intercom_flutter_platform_interface: ^2.0.6
13-
intercom_flutter_web: ^1.1.10
13+
intercom_flutter_web: ^1.1.11
1414

1515
dev_dependencies:
1616
flutter_test:

intercom_flutter_web/CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# Changelog
22

3+
## 1.1.11
4+
5+
* JSON-encode `intercomSettings` before injecting the Intercom script to avoid invalid JavaScript
6+
syntax. Fixes [#582](https://github.com/v3rm0n/intercom_flutter/issues/582)
7+
38
## 1.1.10
49

510
* Implemented method `setThemeMode`.

intercom_flutter_web/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ This package is already included as part of the `intercom_flutter` package depen
88

99
But if you want to use this package as alone, add the dependency `intercom_flutter_web`.
1010
You don't need to add Intercom script in the index.html file, it will be automatically injected.
11-
But you can pre-define some Intercom settings, if you want (optional).
11+
But you can pre-define some Intercom settings, if you want (optional), such as `api_base`, `hide_default_launcher`, etc.
1212
```html
1313
<script>
1414
window.intercomSettings = {

intercom_flutter_web/lib/intercom_flutter_web.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import 'dart:async';
2+
import 'dart:convert';
23
import 'dart:js_interop';
34
import 'dart:js_interop_unsafe';
45

@@ -52,7 +53,7 @@ class IntercomFlutterWeb extends IntercomFlutterPlatform {
5253
web.HTMLScriptElement script =
5354
web.document.createElement("script") as web.HTMLScriptElement;
5455
script.text = """
55-
window.intercomSettings = ${updateIntercomSettings('app_id', "'$appId'")};
56+
window.intercomSettings = ${jsonEncode(updateIntercomSettings('app_id', appId))};
5657
(function(){var w=window;var ic=w.Intercom;if(typeof ic==="function"){ic('reattach_activator');ic('update',w.intercomSettings);}else{var d=document;var i=function(){i.c(arguments);};i.q=[];i.c=function(args){i.q.push(args);};w.Intercom=i;var l=function(){var s=d.createElement('script');s.type='text/javascript';s.async=true;s.src='https://widget.intercom.io/widget/' + '$appId';var x=d.getElementsByTagName('script')[0];x.parentNode.insertBefore(s, x);};if(document.readyState==='complete'){l();}else if(w.attachEvent){w.attachEvent('onload',l);}else{w.addEventListener('load',l,false);}}})();
5758
""";
5859
if (web.document.body != null) {

intercom_flutter_web/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: intercom_flutter_web
22
description: Web platform implementation of intercom_flutter
3-
version: 1.1.10
3+
version: 1.1.11
44
homepage: https://github.com/v3rm0n/intercom_flutter
55

66
flutter:

0 commit comments

Comments
 (0)