use of com.thebluealliance.androidclient.gcm.FollowsChecker in project the-blue-alliance-android by the-blue-alliance.
the class ScoreNotification method buildNotification.
@Override
public Notification buildNotification(Context context, FollowsChecker followsChecker) {
Resources r = context.getResources();
matchKey = match.getKey();
String matchTitle = MatchHelper.getMatchTitleFromMatchKey(context, matchKey);
String matchAbbrevTitle = MatchHelper.getAbbrevMatchTitleFromMatchKey(context, matchKey);
IMatchAlliancesContainer alliances = match.getAlliances();
int redScore = Match.getRedScore(alliances);
int blueScore = Match.getBlueScore(alliances);
// Boldify the team numbers that the user is following, but only if the system supports
// java 8 language features
CharSequence firstTeams;
CharSequence secondTeams;
ArrayList<String> redTeams = Match.teamNumbers(Match.getRedTeams(alliances));
ArrayList<String> blueTeams = Match.teamNumbers(Match.getBlueTeams(alliances));
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {
Predicate<String> isFollowing = teamNumber -> followsChecker.followsTeam(context, teamNumber, matchKey, NotificationTypes.MATCH_SCORE);
firstTeams = Utilities.boldNameList(redTeams, isFollowing);
secondTeams = Utilities.boldNameList(blueTeams, isFollowing);
} else {
firstTeams = Utilities.stringifyListOfStrings(context, redTeams);
secondTeams = Utilities.stringifyListOfStrings(context, blueTeams);
}
// Make sure the score string is formatted properly with the winning score first
String scoreString;
if (blueScore > redScore) {
scoreString = blueScore + "-" + redScore;
CharSequence temp = firstTeams;
firstTeams = secondTeams;
secondTeams = temp;
} else {
scoreString = redScore + "-" + blueScore;
}
MatchType matchType = MatchType.fromShortType(match.getCompLevel());
boolean useSpecial2015Format = match.getYear() == 2015 && matchType != MatchType.FINAL;
String eventShortName = EventHelper.shortName(eventName);
String template;
if (useSpecial2015Format) {
// firstTeams played secondTeams (for 2015 non-finals matches)
template = context.getString(R.string.notification_score_teams_played_teams);
} else if (blueScore == redScore) {
// firstTeams tied secondTeams
template = context.getString(R.string.notification_score_teams_tied_teams);
} else {
// firstTeams beat secondTeams
template = context.getString(R.string.notification_score_teams_beat_teams);
}
CharSequence notificationBody = TextUtils.expandTemplate(template, eventShortName, matchTitle, firstTeams, secondTeams, scoreString);
// We can finally build the notification!
Intent instance = getIntent(context);
stored = new StoredNotification();
stored.setType(getNotificationType());
String eventCode = EventHelper.getEventCode(matchKey);
String notificationTitle = r.getString(R.string.notification_score_title, eventCode, matchAbbrevTitle);
stored.setTitle(notificationTitle);
stored.setBody(notificationBody.toString());
stored.setIntent(MyTBAHelper.serializeIntent(instance));
stored.setTime(Calendar.getInstance().getTime());
stored.setMessageData(messageData);
stored.setSystemId(getNotificationId());
NotificationCompat.Builder builder = getBaseBuilder(context, instance).setContentTitle(notificationTitle).setContentText(notificationBody);
NotificationCompat.BigTextStyle style = new NotificationCompat.BigTextStyle().bigText(notificationBody);
builder.setStyle(style);
return builder.build();
}
use of com.thebluealliance.androidclient.gcm.FollowsChecker in project the-blue-alliance-android by the-blue-alliance.
the class UpcomingMatchNotification method buildNotification.
/**
* @param context a Context object for use by the notification builder
* @param followsChecker for checking which teams the user follows
* @return A constructed notification
*/
@Override
public Notification buildNotification(Context context, FollowsChecker followsChecker) {
String scheduledStartTimeString;
if (JSONHelper.isNull(matchTime)) {
scheduledStartTimeString = "";
} else {
long scheduledStartTimeUNIX = matchTime.getAsLong();
// We multiply by 1000 because the Date constructor expects ms
Date scheduledStartTime = new Date(scheduledStartTimeUNIX * 1000);
java.text.DateFormat format = android.text.format.DateFormat.getTimeFormat(context);
scheduledStartTimeString = format.format(scheduledStartTime);
}
// Boldify the team numbers that the user is following, but only if the system supports
// java 8 language features
CharSequence redTeamNumbers;
CharSequence blueTeamNumbers;
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {
Predicate<String> isFollowing = teamNumber -> followsChecker.followsTeam(context, teamNumber, matchKey, NotificationTypes.UPCOMING_MATCH);
redTeamNumbers = Utilities.boldNameList(Arrays.asList(redTeams), isFollowing);
blueTeamNumbers = Utilities.boldNameList(Arrays.asList(blueTeams), isFollowing);
} else {
redTeamNumbers = Utilities.stringifyListOfStrings(context, Arrays.asList(redTeams));
blueTeamNumbers = Utilities.stringifyListOfStrings(context, Arrays.asList(blueTeams));
}
String matchTitle = MatchHelper.getMatchTitleFromMatchKey(context, matchKey);
String matchAbbrevTitle = MatchHelper.getAbbrevMatchTitleFromMatchKey(context, matchKey);
String eventShortName = EventHelper.shortName(eventName);
String template = scheduledStartTimeString.isEmpty() ? context.getString(R.string.notification_upcoming_match_no_time) : context.getString(R.string.notification_upcoming_match);
CharSequence contentText = TextUtils.expandTemplate(template, eventShortName, matchTitle, redTeamNumbers, blueTeamNumbers, scheduledStartTimeString);
Intent instance = getIntent(context);
stored = new StoredNotification();
stored.setType(getNotificationType());
String eventCode = EventHelper.getEventCode(matchKey);
String notificationTitle = context.getString(R.string.notification_upcoming_match_title, eventCode, matchAbbrevTitle);
stored.setTitle(notificationTitle);
stored.setBody(contentText.toString());
stored.setMessageData(messageData);
stored.setIntent(MyTBAHelper.serializeIntent(instance));
stored.setTime(Calendar.getInstance().getTime());
stored.setSystemId(getNotificationId());
PendingIntent watchIntent = null;
String watchTitle = null;
if (webcast != null && webcast.isJsonObject()) {
JsonObject webcastJson = webcast.getAsJsonObject();
WebcastType webcastType = WebcastHelper.getType(webcastJson.get("type").getAsString());
if (webcastType != WebcastType.NONE) {
watchTitle = webcastType.render(context);
Intent webcastIntent = WebcastHelper.getIntentForWebcast(context, matchKey, webcastType, webcastJson, 0);
watchIntent = PendingIntent.getActivity(context, (int) System.currentTimeMillis(), webcastIntent, 0);
}
}
NotificationCompat.Builder builder = getBaseBuilder(context, instance).setContentTitle(notificationTitle).setContentText(contentText);
// Add Watch button
if (watchIntent != null) {
builder.addAction(R.drawable.ic_videocam_black_24dp, watchTitle, watchIntent);
}
NotificationCompat.BigTextStyle style = new NotificationCompat.BigTextStyle().bigText(contentText);
builder.setStyle(style);
return builder.build();
}
use of com.thebluealliance.androidclient.gcm.FollowsChecker in project the-blue-alliance-android by the-blue-alliance.
the class TeamMatchVideoNotification method buildNotification.
@Override
public Notification buildNotification(Context context, FollowsChecker followsChecker) {
Resources r = context.getResources();
ArrayList<String> teamNumbers = Match.teamNumbers(mMatchTeamKeys);
CharSequence teamNumberString;
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {
Predicate<String> isFollowing = teamNumber -> followsChecker.followsTeam(context, teamNumber, mMatchKey, NotificationTypes.MATCH_VIDEO);
teamNumberString = Utilities.boldNameList(teamNumbers, isFollowing);
} else {
teamNumberString = Utilities.stringifyListOfStrings(context, teamNumbers);
}
String matchTitle = MatchHelper.getAbbrevMatchTitleFromMatchKey(context, mMatchKey);
String eventCode = EventHelper.getEventCode(mMatchKey);
String title = r.getString(R.string.notification_team_match_video, eventCode, matchTitle);
String notificationBody = r.getString(R.string.notification_team_match_video_content, EventHelper.shortName(mEventName), teamNumberString);
// We can finally build the notification!
Intent instance = getIntent(context);
stored = new StoredNotification();
stored.setType(getNotificationType());
stored.setTitle(title);
stored.setBody(notificationBody);
stored.setIntent(MyTBAHelper.serializeIntent(instance));
stored.setTime(Calendar.getInstance().getTime());
stored.setMessageData(messageData);
stored.setSystemId(getNotificationId());
NotificationCompat.Builder builder = getBaseBuilder(context, instance).setContentTitle(title).setContentText(notificationBody);
NotificationCompat.BigTextStyle style = new NotificationCompat.BigTextStyle().bigText(notificationBody);
builder.setStyle(style);
return builder.build();
}
Aggregations