package com.whatscloud.logic.push; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; import com.bugsense.trace.BugSenseHandler; import com.whatscloud.config.debug.Logging; import com.whatscloud.config.reporting.BugSense; import com.whatscloud.logic.auth.User; import com.whatscloud.logic.sync.manager.SyncManager; import com.whatscloud.services.SendService; import com.whatscloud.utils.strings.StringUtils; public class PushReceiver extends BroadcastReceiver { Context mContext; @Override public void onReceive(Context context, Intent intent) { //-------------------------------- // Save context for later //-------------------------------- this.mContext = context; //--------------------------------- // Initialize bug tracking //--------------------------------- BugSenseHandler.initAndStartSession(context, BugSense.API_KEY); //-------------------------------- // Not logged in? Stop. //-------------------------------- if (!User.isSignedIn(context) ) { return; } //-------------------------------- // Handle the push //-------------------------------- handlePush(context, intent); } void handlePush(Context context, Intent intent) { //--------------------------------- // Log the push //--------------------------------- Log.d(Logging.TAG_NAME, "Received push"); //-------------------------------- // Get do //-------------------------------- String method = intent.getStringExtra("do"); //-------------------------------- // No method, ignore //-------------------------------- if (StringUtils.stringIsNullOrEmpty(method)) { return; } //-------------------------------- // Are we resetting unread count? //-------------------------------- if ( method.equals("unread") ) { //-------------------------------- // Reset unread count //-------------------------------- resetUnreadCount(context); } else { //-------------------------------- // Async and network-related // Let a service take care of it //-------------------------------- context.startService(new Intent(context, SendService.class)); } } void resetUnreadCount(Context context) { //-------------------------------- // Call upon our sync manager //-------------------------------- SyncManager manager = new SyncManager(context, false); //-------------------------------- // Send the pending messages //-------------------------------- try { manager.resetTotalUnreadCount(); } catch( Exception exc ) { //-------------------------------- // Log the error //-------------------------------- Log.e(Logging.TAG_NAME, exc.getMessage()); } } }