Update Angular integration docs based on plugin changes in 3.0.x
This commit is contained in:
parent
de2f33f333
commit
93b1481a2c
@ -24,7 +24,7 @@ application, then putting it into a service is a good approach.
|
|||||||
|
|
||||||
This lets us avoid having a global ``converse`` API object (accessible via
|
This lets us avoid having a global ``converse`` API object (accessible via
|
||||||
``windows.converse``), and instead we can get hold of the converse API via
|
``windows.converse``), and instead we can get hold of the converse API via
|
||||||
angular's dependency injection, when we specify it as a dependency for our
|
angular's dependency injection when we specify it as a dependency for our
|
||||||
angular components.
|
angular components.
|
||||||
|
|
||||||
Below is an example code that wraps converse.js as an angular.js service.
|
Below is an example code that wraps converse.js as an angular.js service.
|
||||||
@ -33,27 +33,21 @@ Below is an example code that wraps converse.js as an angular.js service.
|
|||||||
|
|
||||||
angular.module('converse', []).service('converse', function() {
|
angular.module('converse', []).service('converse', function() {
|
||||||
// We create three promises, which will be resolved at various times
|
// We create three promises, which will be resolved at various times
|
||||||
var loaded_deferred = new $.Deferred(), // Converse.js has been loaded
|
var loaded_deferred = new $.Deferred(),
|
||||||
connected_deferred = new $.Deferred(), // An XMPP connection has been established
|
connected_deferred = new $.Deferred();
|
||||||
roster_deferred = new $.Deferred(); // The contacts roster has been fetched.
|
|
||||||
|
|
||||||
var loaded_promise = loaded_deferred.promise(),
|
|
||||||
connected_promise = connected_deferred.promise(),
|
|
||||||
roster_promise = roster_deferred.promise();
|
|
||||||
|
|
||||||
// This is the API of the service.
|
|
||||||
var service = {
|
var service = {
|
||||||
'waitUntilLoaded': _.constant(loaded_promise),
|
'waitUntilLoaded': _.constant(loaded_deferred.promise()),
|
||||||
'initialize': function initConverse(options) {
|
'initialize': function initConverse(options) {
|
||||||
this.waitUntilLoaded().done(_.partial(this.api.initialize, options));
|
this.waitUntilLoaded().done(_.partial(this.api.initialize, options));
|
||||||
},
|
},
|
||||||
'waitUntilConnected': _.constant(connected_promise),
|
'waitUntilConnected': _.constant(connected_deferred.promise())
|
||||||
'waitUntilRosterFetched': _.constant(roster_promise),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Here we define the core components of converse.js that will be
|
// Here we define the core components of converse.js that will be
|
||||||
// loaded and used.
|
// loaded and used.
|
||||||
define(["converse-core",
|
define([
|
||||||
|
"converse-core",
|
||||||
// START: Removable components
|
// START: Removable components
|
||||||
// --------------------
|
// --------------------
|
||||||
// Any of the following components may be removed if they're not needed.
|
// Any of the following components may be removed if they're not needed.
|
||||||
@ -79,7 +73,16 @@ Below is an example code that wraps converse.js as an angular.js service.
|
|||||||
|
|
||||||
], function(converse) {
|
], function(converse) {
|
||||||
service.api = converse;
|
service.api = converse;
|
||||||
return deferred.resolve();
|
|
||||||
|
// Register a plugin which resolves `waitUntilConnected` promise.
|
||||||
|
converse.plugins.add('conversejs-angular-service', {
|
||||||
|
initialize: function () {
|
||||||
|
this._converse.api.listen.on('connected', connected_deferred.resolve);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Converse.js has been loaded, so we can resolve the `waitUntilLoaded` promise.
|
||||||
|
return loaded_deferred.resolve();
|
||||||
});
|
});
|
||||||
require(["converse"]);
|
require(["converse"]);
|
||||||
return service;
|
return service;
|
||||||
@ -120,6 +123,7 @@ your components, for example:
|
|||||||
'jid': bare_jid,
|
'jid': bare_jid,
|
||||||
'keepalive': true,
|
'keepalive': true,
|
||||||
'credentials_url': credentials_url,
|
'credentials_url': credentials_url,
|
||||||
|
'whitelisted_plugins': ['conversejs-angular-service']
|
||||||
});
|
});
|
||||||
|
|
||||||
// More custom code could come here...
|
// More custom code could come here...
|
||||||
@ -129,7 +133,7 @@ your components, for example:
|
|||||||
You might have noticed the ``waitUntilLoaded()`` method being called on the ``converse``
|
You might have noticed the ``waitUntilLoaded()`` method being called on the ``converse``
|
||||||
service. This is a special method added to the service (see the implementation
|
service. This is a special method added to the service (see the implementation
|
||||||
example above) that makes sure that converse.js is loaded and available. It
|
example above) that makes sure that converse.js is loaded and available. It
|
||||||
returns a jQuery promise which resolves once converse.js is available.
|
returns a promise which resolves once converse.js is available.
|
||||||
|
|
||||||
This is necessary because with otherwise you might run into race-conditions
|
This is necessary because with otherwise you might run into race-conditions
|
||||||
when your angular application loads more quickly then converse.js.
|
when your angular application loads more quickly then converse.js.
|
||||||
|
Loading…
Reference in New Issue
Block a user