// Useful to when you want to save the EziFBIncomingRequest Object in CCArray or CCDictionary. CCObject* EziFBIncomingRequest::copyWithZone(CCZone *pZone) { CCZone* pNewZone = NULL; EziFBIncomingRequest* pCopy = NULL; if(pZone && pZone->m_pCopyObject) { //in case of being called at sub class pCopy = (EziFBIncomingRequest*)(pZone->m_pCopyObject); } else { pCopy = new EziFBIncomingRequest(); pNewZone = new CCZone(pCopy); } pCopy->setReceiverID(getReceiverID()); pCopy->setSender(getSender()); pCopy->setRequestID(getRequestID()); pCopy->setMessage(getMessage()); pCopy->setConsumed(isConsumed()); pCopy->setDataDictionary(getDataDictionary()); CC_SAFE_DELETE(pNewZone); return pCopy; }
void internalRequestRecieveCallback(int responseCode, const char* requestID, const char* message, const char* senderID, const char* senderName, const char* receiverID, const char* data, const char* errorMessage) { EziFacebookDelegate* tempFBDelegate; tempFBDelegate = EziSocialObject::sharedObject()->getFacebookDelegate(); if (responseCode == EziSocialWrapperNS::RESPONSE_CODE::FB_CHALLENGE_RECEIVE || responseCode == EziSocialWrapperNS::RESPONSE_CODE::FB_GIFT_RECEIVE || responseCode == EziSocialWrapperNS::RESPONSE_CODE::FB_INVITE_RECEIVE) { // We can mark this request ID as complete in the List. //EziFBIncomingRequestManager::sharedManager()->requestComepleted(requestID); EziFBIncomingRequest* incomingRequest = EziFBIncomingRequestManager::sharedManager()->getIncomingRequest(requestID); switch (responseCode) { case EziSocialWrapperNS::RESPONSE_CODE::FB_CHALLENGE_RECEIVE: incomingRequest->setRequestType(EziSocialWrapperNS::FB_REQUEST::REQUEST_CHALLENGE); break; case EziSocialWrapperNS::RESPONSE_CODE::FB_INVITE_RECEIVE: incomingRequest->setRequestType(EziSocialWrapperNS::FB_REQUEST::REQUEST_INVITE); break; case EziSocialWrapperNS::RESPONSE_CODE::FB_GIFT_RECEIVE: incomingRequest->setRequestType(EziSocialWrapperNS::FB_REQUEST::REQUEST_GIFT); break; default: break; } incomingRequest->setMessage(message); incomingRequest->setSender(senderID, senderName); incomingRequest->setReceiverID(receiverID); incomingRequest->setDataDictionary(getCustomizedDictionary(data)); incomingRequest->setDataFetchedFromFacebook(true); incomingRequest->saveToUserDefaults(); EziFBIncomingRequestManager::sharedManager()->processNextRequest(); } if (tempFBDelegate) { tempFBDelegate->fbRecieveRequestCallback(responseCode, message, senderName, getCustomizedDictionary(data)); } }
EziFBIncomingRequest* EziFBIncomingRequest::createForRequestID(std::string requestID) { EziFBIncomingRequest* fbRequest = EziFBIncomingRequest::create(); if (fbRequest) { fbRequest->setRequestID(requestID); // Build the items from CCUserDefaults std::string key = FB_INCOMING_REQUEST_DATA_; key.append(requestID); std::string dataKey = DATA_DICTIONARY_; dataKey.append(requestID); std::string statusKey = REQUEST_CONSUMED_STATUS_; statusKey.append(requestID); std::string requestData = CCUserDefault::sharedUserDefault()->getStringForKey(key.c_str()); std::string dictionaryString = CCUserDefault::sharedUserDefault()->getStringForKey(dataKey.c_str()); bool toConsumed = CCUserDefault::sharedUserDefault()->getBoolForKey(statusKey.c_str()); // Mark it as consumed or not. fbRequest->setConsumed(toConsumed); // We need to break Request Data String and Data Dictionary String std::vector< std::string > requestDataVector = EziSocialObject::tokenizeStr(requestData.c_str(), ";"); std::vector< std::string > dataDictionaryVector = EziSocialObject::tokenizeStr(dictionaryString.c_str(), ";"); if (requestData.size()==0) { // Data is not fetched from the Facebook. fbRequest->setDataFetchedFromFacebook(false); } else { fbRequest->setDataFetchedFromFacebook(true); } // Save the Request Data for (int i=0; i<requestDataVector.size(); i += 2) { fbRequest->setData(requestDataVector[i], requestDataVector[i+1]); } // Build the Data Dictionary if (dataDictionaryVector.size()%2 == 0 && dataDictionaryVector.size() > 0) // It should be of even size. { CCDictionary *dataDictionary = CCDictionary::create(); for (int j=0; j<dataDictionaryVector.size(); j += 2) { dataDictionary->setObject(CCString::create(dataDictionaryVector[j+1]), dataDictionaryVector[j]); } fbRequest->setDataDictionary(dataDictionary); } } return fbRequest; }