Merge pull request #838 from shtrom/pebble-notifications-squash
Send notification to Pebble on new message
This commit is contained in:
commit
8264474a0c
|
@ -21,11 +21,15 @@ import android.util.Log;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
import org.json.JSONArray;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
import eu.siacs.conversations.Config;
|
import eu.siacs.conversations.Config;
|
||||||
import eu.siacs.conversations.R;
|
import eu.siacs.conversations.R;
|
||||||
import eu.siacs.conversations.entities.Account;
|
import eu.siacs.conversations.entities.Account;
|
||||||
|
@ -65,6 +69,24 @@ public class NotificationService {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void notifyPebble(Message message) {
|
||||||
|
final Intent i = new Intent("com.getpebble.action.SEND_NOTIFICATION");
|
||||||
|
|
||||||
|
final HashMap data = new HashMap();
|
||||||
|
final Conversation conversation = message.getConversation();
|
||||||
|
data.put("title", conversation.getName());
|
||||||
|
data.put("body", message.getBody());
|
||||||
|
final JSONObject jsonData = new JSONObject(data);
|
||||||
|
final String notificationData = new JSONArray().put(jsonData).toString();
|
||||||
|
|
||||||
|
i.putExtra("messageType", "PEBBLE_ALERT");
|
||||||
|
i.putExtra("sender", "Conversations"); /* XXX: Shouldn't be hardcoded, e.g., AbstractGenerator.APP_NAME); */
|
||||||
|
i.putExtra("notificationData", notificationData);
|
||||||
|
|
||||||
|
mXmppConnectionService.sendBroadcast(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public boolean notificationsEnabled() {
|
public boolean notificationsEnabled() {
|
||||||
return mXmppConnectionService.getPreferences().getBoolean("show_notification", true);
|
return mXmppConnectionService.getPreferences().getBoolean("show_notification", true);
|
||||||
}
|
}
|
||||||
|
@ -110,9 +132,13 @@ public class NotificationService {
|
||||||
notifications.put(conversationUuid, mList);
|
notifications.put(conversationUuid, mList);
|
||||||
}
|
}
|
||||||
final Account account = message.getConversation().getAccount();
|
final Account account = message.getConversation().getAccount();
|
||||||
updateNotification((!(this.mIsInForeground && this.mOpenConversation == null) || !isScreenOn)
|
final boolean doNotify = (!(this.mIsInForeground && this.mOpenConversation == null) || !isScreenOn)
|
||||||
&& !account.inGracePeriod()
|
&& !account.inGracePeriod()
|
||||||
&& !this.inMiniGracePeriod(account));
|
&& !this.inMiniGracePeriod(account);
|
||||||
|
updateNotification(doNotify);
|
||||||
|
if (doNotify) {
|
||||||
|
notifyPebble(message);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue