intercom-rails 0.3.1 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 08651bb54d9b9c588783f70646f08de114e2d7fc
|
4
|
+
data.tar.gz: 9bb02e0bdcb79a59d7e3a5ba6cde2ad7f5982caa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 72371243fbae2337000a1f3eb7dbf0beb32bb98ff3cf08b1430f04e7f7be2e755685910518742ae884a605359927247e6b2adcdba6d5da51d3bc08e5a231368c
|
7
|
+
data.tar.gz: a5b853032d971f3c50ef477982f065f3c55b3739ebc02a64f91e91f432b05c466e9ab08c37a76aabf305d2f4b6cbab6744a9613772adb51cbd3104db6d5af805
|
data/README.mdown
CHANGED
@@ -173,6 +173,38 @@ end
|
|
173
173
|
Attributes must be accessible in order to sync with intercom.
|
174
174
|
Additionally, attributes ending in "_at" will be parsed as times.
|
175
175
|
|
176
|
+
### Custom attributes for non-signed up users
|
177
|
+
|
178
|
+
In situations where you want to pass in specific request based custom data for non-signed up users or leads,
|
179
|
+
you can do that by setting custom attributes in ```config/initializers/intercom.rb```.
|
180
|
+
|
181
|
+
Any of these attributes can be used to pass in custom data.
|
182
|
+
|
183
|
+
Example:
|
184
|
+
|
185
|
+
**in ```config/initializers/intercom.rb```**
|
186
|
+
|
187
|
+
```ruby
|
188
|
+
config.user.lead_attributes = %w(ref_data utm_source)
|
189
|
+
```
|
190
|
+
|
191
|
+
**in ```app/controllers/posts_controller.rb```**
|
192
|
+
|
193
|
+
```ruby
|
194
|
+
class PostsController < ApplicationController
|
195
|
+
|
196
|
+
before_action :set_custom_attributes, only: [:index]
|
197
|
+
|
198
|
+
# Your logic here
|
199
|
+
|
200
|
+
protected
|
201
|
+
def set_custom_attributes
|
202
|
+
intercom_custom_data.user[:ref_data] = params[:api_ref_data]
|
203
|
+
intercom_custom_data.user[:utm_source] = params[:api_utm_source]
|
204
|
+
end
|
205
|
+
end
|
206
|
+
```
|
207
|
+
|
176
208
|
### Companies
|
177
209
|
|
178
210
|
By default, Intercom treats all Users as unrelated individuals. If for example you know users are part of a company, you can group them as such.
|
@@ -106,8 +106,12 @@ module IntercomRails
|
|
106
106
|
config_accessor :current, &IS_PROC_OR_ARRAY_OF_PROC_VALIDATOR
|
107
107
|
config_accessor :exclude_if, &IS_PROC_VALIDATOR
|
108
108
|
config_accessor :model, &IS_PROC_VALIDATOR
|
109
|
-
config_accessor :
|
109
|
+
config_accessor :lead_attributes, &ARRAY_VALIDATOR
|
110
110
|
config_accessor :custom_data, &CUSTOM_DATA_VALIDATOR
|
111
|
+
|
112
|
+
def self.company_association=(*)
|
113
|
+
warn "Setting a company association is no longer supported; remove the `config.user.company_association = ...` line from config/initializers/intercom.rb"
|
114
|
+
end
|
111
115
|
end
|
112
116
|
|
113
117
|
config_group :company do
|
@@ -11,14 +11,6 @@ module IntercomRails
|
|
11
11
|
config_delegator :plan
|
12
12
|
config_delegator :monthly_spend
|
13
13
|
|
14
|
-
def self.companies_for_user(user)
|
15
|
-
return unless config(:user).company_association.present?
|
16
|
-
companies = config(:user).company_association.call(user.user)
|
17
|
-
return unless companies.kind_of?(Array)
|
18
|
-
|
19
|
-
companies.map { |company| new(company) }.select { |company_proxy| company_proxy.valid? }
|
20
|
-
end
|
21
|
-
|
22
14
|
def self.current_in_context(search_object)
|
23
15
|
begin
|
24
16
|
if config.current.present?
|
@@ -19,6 +19,10 @@ module IntercomRails
|
|
19
19
|
@show_everywhere = options[:show_everywhere]
|
20
20
|
@session_duration = session_duration_from_config
|
21
21
|
self.user_details = options[:find_current_user_details] ? find_current_user_details : options[:user_details]
|
22
|
+
|
23
|
+
# Request specific custom data for non-signed up users base on lead_attributes
|
24
|
+
self.user_details = self.user_details.merge(find_lead_attributes)
|
25
|
+
|
22
26
|
self.company_details = if options[:find_current_company_details]
|
23
27
|
find_current_company_details
|
24
28
|
elsif options[:user_details]
|
@@ -78,6 +82,16 @@ module IntercomRails
|
|
78
82
|
csp_hash
|
79
83
|
end
|
80
84
|
|
85
|
+
def find_lead_attributes
|
86
|
+
lead_attributes = IntercomRails.config.user.lead_attributes
|
87
|
+
return {} unless controller.present? && lead_attributes && lead_attributes.size > 0
|
88
|
+
|
89
|
+
# Get custom data. This also allows to retrieve custom data
|
90
|
+
# set via helper function intercom_custom_data
|
91
|
+
custom_data = controller.intercom_custom_data.user.with_indifferent_access
|
92
|
+
custom_data.select {|k, v| lead_attributes.map(&:to_s).include?(k)}
|
93
|
+
end
|
94
|
+
|
81
95
|
private
|
82
96
|
def intercom_javascript
|
83
97
|
intercom_settings_json = ActiveSupport::JSON.encode(intercom_settings).gsub('<', '\u003C')
|
@@ -50,6 +50,13 @@ IntercomRails.config do |config|
|
|
50
50
|
#
|
51
51
|
# config.user.model = Proc.new { User }
|
52
52
|
|
53
|
+
# == Lead/custom attributes for non-signed up users
|
54
|
+
# Pass additional attributes to for potential leads or
|
55
|
+
# non-signed up users as an an array.
|
56
|
+
# Any attribute contained in config.user.lead_attributes can be used
|
57
|
+
# as custom attribute in the application.
|
58
|
+
# config.user.lead_attributes = %w(ref_data utm_source)
|
59
|
+
|
53
60
|
# == Exclude users
|
54
61
|
# A Proc that given a user returns true if the user should be excluded
|
55
62
|
# from imports and Javascript inclusion, false otherwise.
|
@@ -66,14 +73,6 @@ IntercomRails.config do |config|
|
|
66
73
|
# :favorite_color => :favorite_color
|
67
74
|
# }
|
68
75
|
|
69
|
-
# == User -> Company association
|
70
|
-
# A Proc that given a user returns an array of companies
|
71
|
-
# that the user belongs to.
|
72
|
-
# This is only used for importing users using rake command but it will not inject a list of companies in the intercom widget
|
73
|
-
#
|
74
|
-
# config.user.company_association = Proc.new { |user| user.companies.to_a }
|
75
|
-
# config.user.company_association = Proc.new { |user| [user.company] }
|
76
|
-
|
77
76
|
# == Current company method/variable
|
78
77
|
# The method/variable that contains the current company for the current user,
|
79
78
|
# in your controllers. 'Companies' are generic groupings of users, so this
|
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.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben McRedmond
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-06-
|
13
|
+
date: 2016-06-28 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
@@ -202,9 +202,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
202
202
|
version: '0'
|
203
203
|
requirements: []
|
204
204
|
rubyforge_project: intercom-rails
|
205
|
-
rubygems_version: 2.
|
205
|
+
rubygems_version: 2.5.1
|
206
206
|
signing_key:
|
207
207
|
specification_version: 4
|
208
208
|
summary: Rails helper for emitting javascript script tags for Intercom
|
209
209
|
test_files: []
|
210
|
-
has_rdoc:
|