Source: TwisterHashtag.js

var inherits = require('inherits');

var TwisterResource = require('./TwisterResource.js');


/**
 * Describes a hashtag resource.
 * @module
 */
TwisterHashtag = function (name,scope) {
    
    TwisterResource.call(this,name,scope);
    this._type = "hashtag";
    this._data = {};
	this._hasParentUser = false;
    
}

inherits(TwisterHashtag,TwisterResource);

TwisterHashtag.prototype._do = function (cbfunc) {
	this.doPosts(cbfunc);
}

TwisterHashtag.prototype._queryAndDo = function (cbfunc, querySettings) {
    
    var currentCounter = 1;
        
    var Twister = this._scope;
    
    var thisHashtag = this;
    
    thisHashtag._data = {};

    thisHashtag._lastUpdate=Date.now()/1000;
        
    thisHashtag.dhtget([thisHashtag._name, "hashtag", "m"],

        function (result) {

            var TwisterPost = require("./TwisterPost.js");

            for (i=0; i<result.length; i++) {

                var username = result[i].p.v.userpost.n;
                var id = result[i].p.v.userpost.k;

                thisHashtag._data[username+":post"+id]=true;                

                if (! (id in Twister.getUser(username)._stream._posts ) ) {
                
                    Twister.getUser(username)._stream._verifyAndCachePost(result[i].p.v);
                    
                }

            }
        
            thisHashtag._do(cbfunc);

        }
                        
    ); 
        
}


/** @function
 * @name doPosts 
 * @description calls cbfunc with every {@link TwisterPost} object of the hashtag.
 * @param {function} cbfunc callback function
 */
TwisterHashtag.prototype.doPosts = function (cbfunc) {

	var posts = [];
	
    for (var key in this._data) {

        var nandk = key.split(":post");
        var username = nandk[0];
        var id = parseInt(nandk[1]);
        
		posts.push(Twister.getUser(username).getPost(id));
		
    }
	
	cbfunc(posts);

}

module.exports = TwisterHashtag;