11var LocalPresence = require ( './local-presence' ) ;
22var ShareDBError = require ( '../../error' ) ;
3+ var util = require ( '../../util' ) ;
34var ERROR_CODE = ShareDBError . CODES ;
45
56module . exports = LocalDocPresence ;
@@ -77,15 +78,15 @@ LocalDocPresence.prototype._transformAgainstOp = function(op, source) {
7778 var presence = this ;
7879 this . _pendingMessages . forEach ( function ( message ) {
7980 try {
80- message . p = presence . _doc . type . transformPresence ( message . p , op , source ) ;
81+ message . p = presence . _transformPresence ( message . p , op , source ) ;
8182 } catch ( error ) {
8283 var callback = presence . _getCallback ( message . pv ) ;
8384 presence . _callbackOrEmit ( error , callback ) ;
8485 }
8586 } ) ;
8687
8788 try {
88- this . value = this . _doc . type . transformPresence ( this . value , op , source ) ;
89+ this . value = this . _transformPresence ( this . value , op , source ) ;
8990 } catch ( error ) {
9091 this . emit ( 'error' , error ) ;
9192 }
@@ -112,3 +113,14 @@ LocalDocPresence.prototype._message = function() {
112113 message . t = null ;
113114 return message ;
114115} ;
116+
117+ LocalDocPresence . prototype . _transformPresence = function ( value , op , source ) {
118+ var type = this . _doc . type ;
119+ if ( ! util . supportsPresence ( type ) ) {
120+ throw new ShareDBError (
121+ ERROR_CODE . ERR_TYPE_DOES_NOT_SUPPORT_PRESENCE ,
122+ 'Type does not support presence: ' + type . name
123+ ) ;
124+ }
125+ return type . transformPresence ( value , op , source ) ;
126+ } ;
0 commit comments