intercom-rails 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/MIT-LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License
2
2
 
3
- Copyright (c) 2011- Intercom App, Inc. (https://www.intercom.io)
3
+ Copyright (c) 2011- Intercom, Inc. (https://www.intercom.io)
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.rdoc CHANGED
@@ -9,9 +9,22 @@ Add this to your Gemfile:
9
9
 
10
10
  gem "intercom-rails"
11
11
 
12
+ Then run:
13
+
12
14
  <code>bundle install</code>
13
15
 
14
16
  == Usage
17
+
18
+ Take note of your app_id from here: You can find your app id here: https://www.intercom.io/apps/api_keys
19
+
20
+ === rails generator
21
+
22
+ The <strong>intercom:install</strong> rails generator will add <code>intercom_script_tag</code> to your application layout. It provides a great start that will work well for most people and is easily customised.
23
+
24
+ <code>rails g intercom:install YOUR-APP-ID</code>
25
+
26
+ === manual install
27
+
15
28
  In your layout file:
16
29
 
17
30
  <% if logged_in? %>
@@ -29,13 +42,10 @@ In your layout file:
29
42
  :custom_data allows you to specify any app/user/situational data to associate with the current_user. It will be visible in Intercom, and you'll be able to search/filter/send messages based on it.
30
43
 
31
44
  e.g.
32
-
33
- :plan => "Pro"
34
-
35
- or
45
+ :plan => "Pro",
36
46
  :dashboard_page => 'http://dashboard.example.com/user-id'
37
47
 
38
- See IntercomRails::ScriptTagHelper for more details.
48
+ See {IntercomRails::ScriptTagHelper} for more details.
39
49
 
40
50
  == Contributors
41
51
 
@@ -1,4 +1,5 @@
1
1
  require "active_support/json"
2
+ require "active_support/core_ext/hash/indifferent_access"
2
3
 
3
4
  module IntercomRails
4
5
  # Helper methods for generating Intercom javascript script tags.
@@ -28,8 +29,9 @@ module IntercomRails
28
29
  # {:activator => "#Intercom"}
29
30
  # ) %>
30
31
  def intercom_script_tag(user_details, widget_options={})
31
- intercom_settings = user_details.merge({:widget => widget_options})
32
+ intercom_settings = user_details.merge({:widget => widget_options}).with_indifferent_access
32
33
  intercom_settings_with_dates_as_timestamps = convert_dates_to_unix_timestamps(intercom_settings)
34
+ intercom_settings_with_dates_as_timestamps.reject! { |key, value| %w(email name user_id).include?(key.to_s) && value.nil? }
33
35
  intercom_script = <<-INTERCOM_SCRIPT
34
36
  <script id="IntercomSettingsScriptTag">
35
37
  var intercomSettings = #{ActiveSupport::JSON.encode(intercom_settings_with_dates_as_timestamps)};
@@ -1,3 +1,3 @@
1
1
  module IntercomRails
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -13,4 +13,12 @@ class IntercomRailsTest < MiniTest::Unit::TestCase
13
13
  assert_match(/.created_at.\s*:\s*#{now.to_i}/, intercom_script_tag({:created_at => now}))
14
14
  assert_match(/.something.\s*:\s*#{now.to_i}/, intercom_script_tag({:custom_data => {"something" => now}}))
15
15
  end
16
+
17
+ def test_strips_out_nil_entries_for_standard_attributes
18
+ %w(name email user_id).each do |standard_attribute|
19
+ assert_match(/.#{standard_attribute}.\s*:\s*"value"/, intercom_script_tag({standard_attribute => 'value'}))
20
+ assert(!intercom_script_tag({standard_attribute.to_sym => nil}).include?("\"#{standard_attribute}\":"), "should strip #{standard_attribute} when nil")
21
+ assert(!intercom_script_tag({standard_attribute => nil}).include?("\"#{standard_attribute}\":"), "should strip #{standard_attribute} when nil")
22
+ end
23
+ end
16
24
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: intercom-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,11 +11,11 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2012-03-27 00:00:00.000000000Z
14
+ date: 2012-05-03 00:00:00.000000000Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: activesupport
18
- requirement: &70176105438820 !ruby/object:Gem::Requirement
18
+ requirement: &70285909407560 !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ! '>'
@@ -23,10 +23,10 @@ dependencies:
23
23
  version: '3.0'
24
24
  type: :runtime
25
25
  prerelease: false
26
- version_requirements: *70176105438820
26
+ version_requirements: *70285909407560
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: minitest
29
- requirement: &70176105438140 !ruby/object:Gem::Requirement
29
+ requirement: &70285909407140 !ruby/object:Gem::Requirement
30
30
  none: false
31
31
  requirements:
32
32
  - - ! '>='
@@ -34,10 +34,10 @@ dependencies:
34
34
  version: '0'
35
35
  type: :development
36
36
  prerelease: false
37
- version_requirements: *70176105438140
37
+ version_requirements: *70285909407140
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: rake
40
- requirement: &70176105437320 !ruby/object:Gem::Requirement
40
+ requirement: &70285909437140 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
43
  - - ! '>='
@@ -45,7 +45,7 @@ dependencies:
45
45
  version: '0'
46
46
  type: :development
47
47
  prerelease: false
48
- version_requirements: *70176105437320
48
+ version_requirements: *70285909437140
49
49
  description: Intercom (https://www.intercom.io) is a customer relationship management
50
50
  and messaging tool for web app owners. This library makes it easier to use the correct
51
51
  javascript tracking code in your rails applications.