npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@tamvm/angular-intercom

v2.1.2

Published

An Angular.js wrapper for Intercom.io (forked - support api_base)

Downloads

29

Readme

angular-intercom Build Status

An Angular.js wrapper for Intercom.io providing a simple and familiar API for Angular Developer. I also added a asynchronous loading option $intercomProvider.asyncLoading(true) to allow anyone to quickly drop in and start using Intercom. This is great for startups who need a quick and easy way to interact with their customers

How do I add this to my project?

You can download angular-intercom by:

  • (prefered) Using bower and running bower install angular-intercom --save
  • Using npm and running npm install angular-intercom --save
  • Downloading it manually by clicking here to download development (unminified) (minified)
  • CDN https://cdn.rawgit.com/gdi2290/angular-intercom/master/angular-intercom.min.js

Example

Here is a simple Example App which allows you to include your own app_id to test. Below is a quick start guide. Use either $intercom or Intercom service depending on your preference and opinions.

<!-- I'm using angular 1.3.8+ but any version should work -->
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular.js"></script>


<!-- 
You can include Intercom's script manually just make sure you add your app_id
<script async defer src="https://widget.intercom.io/widget/<%= INTERCOM_APPID %>"></script>
-->

<!-- 
Or you can include Intercom sdk as you normally would
<script>
(function(){var w=window;var ic=w.Intercom;if(typeof ic==="function"){ic('reattach_activator');ic('update',intercomSettings);}else{var d=document;var i=function(){i.c(arguments)};i.q=[];i.c=function(args){i.q.push(args)};w.Intercom=i;function l(){var s=d.createElement('script');s.type='text/javascript';s.async=true;

s.src='https://widget.intercom.io/widget/<%= INSERT APP_ID HERE %>';

var x=d.getElementsByTagName('script')[0];x.parentNode.insertBefore(s,x);}if(w.attachEvent){w.attachEvent('onload',l);}else{w.addEventListener('load',l,false);}}})()
</script>
-->
<!-- 
Or you can ask the module to load the script for you (see below) 
-->

<!-- include this module after angular.js -->
<script src="app/bower_components/angular-intercom/angular-intercom.js"></script>

<script>
  angular.module('intercomApp', [
    'ngIntercom' // or you can use 'angular-intercom'
  ])
  .value('fakeUser', {
    email: '[email protected]',
    name: 'John Doe',
    created_at: 1234567890,
    user_id: '9876'
  })

  // inject your app_id anyway you like
  .constant('INTERCOM_APPID', 'd0idn8ii')

  // Configure your $intercom module with appID
  .config(function($intercomProvider, INTERCOM_APPID) {
    // Either include your app_id here or later on boot
    $intercomProvider
      .appID(INTERCOM_APPID);

    // you can include the Intercom's script yourself or use the built in async loading feature
    $intercomProvider
      .asyncLoading(true)
  })
  .run(function($intercom, fakeUser) {
    // boot $intercom after you have user data usually after auth success
    $intercom.boot(fakeUser); // app_id not required if set in .config() block
  })
  //                                       Intercom // you may use Intercom rather than $intercom
  .controller('MainCtrl', function($scope, $intercom, fakeUser) {

    $scope.user = fakeUser;

    // Register listeners to $intercom using '.$on()' rather than '.on()' to trigger a safe $apply on $rootScope
    $intercom.$on('show', function() {
      $scope.showing = true; // currently Intercom onShow callback isn't working
    });
    $intercom.$on('hide', function() {
      $scope.showing = false;
    });



    $scope.show = function() {
      $intercom.show();
    };

    $scope.hide = function() {
      $intercom.hide();
    };

    $scope.update = function(user) {
      $intercom.update(user);
    };

  });

</script>

Require.js/AMD

angular-intercom is provides a Require.js/AMD interface, however it works differently depending on if you are using $intercomProvider.asyncLoading(true)or not.

If you are using $intercomProvider.asyncLoading(true), then don't specify the "intercom" dependency at all, just load "angular_intercom" in paths, i.e.

paths: {
  "angular_intercom": '/somePath/angular-intercom/angular-intercom'
}

If you wish to load the intercom library through Require.js/AMD rather than using $intercomProvider.asyncLoading(true), you first need to find the CDN url provided by intercom.io. To do this, curl the url you received from intercom.io during intercom.io setup

curl https://widget.intercom.io/widget/INTERCOM_APPID

You should get something like

<html><body>You are being <a href="https://js.intercomcdn.com/intercom.xxxxxxx.js">redirected</a>.</body></html>

This means your CDN url is https://js.intercomcdn.com/intercom.xxxxxxx.js. Now in your paths for require.js, you would have something like this (remember to remove the .js at the end of the CDN url)

paths: {
  "intercom": "https://js.intercomcdn.com/intercom.xxxxxxx",
  "angular_intercom": '/somePath/angular-intercom/angular-intercom'
}

And in your shim, you would do this

shim: {
  "angular_intercom": ["intercom"]
}

When "intercom" loads, it will attach itself to window, which will automatically be detected by angular-intercom

Then you can just use "angular_intercom" as any other Require.js/AMD module definition, i.e.

define(['angular', 'angular_intercom'], function(angular, angular_intercom) {
  // Bootstrap angular here
});

Node.js

In node.js, angular-intercom will try and require a intercom dependency. If this fails, it will expect the Intercom object to exposed via the global object

Intercom.io

What is Intercom? An entirely new way to connect with your customers. Intercom shows you who is using your product and makes it easy to personally communicate with them through targeted, behavior-driven email and in-app messages.

Changelog

Please see changelog for recent updates

License

MIT