Search in sources :

Example 1 with StoredNotification

use of com.thebluealliance.androidclient.models.StoredNotification in project the-blue-alliance-android by the-blue-alliance.

the class RecentNotificationsSubscriber method parseData.

@Override
public void parseData() {
    mDataToBind.clear();
    for (int i = 0; i < mAPIData.size(); i++) {
        StoredNotification notification = mAPIData.get(i);
        BaseNotification renderable = notification.getNotification(mWriter, mMatchRenderer, mGson);
        if (renderable != null) {
            renderable.parseMessageData();
            Object viewModel = renderable.renderToViewModel(mContext, null);
            if (viewModel == null) {
                TbaLogger.w("Attempt to bind to a null ViewModel from " + notification.getType());
            } else {
                mDataToBind.add(viewModel);
            }
        }
    }
}
Also used : StoredNotification(com.thebluealliance.androidclient.models.StoredNotification) BaseNotification(com.thebluealliance.androidclient.gcm.notifications.BaseNotification)

Example 2 with StoredNotification

use of com.thebluealliance.androidclient.models.StoredNotification in project the-blue-alliance-android by the-blue-alliance.

the class NotificationsTable method getActive.

public List<StoredNotification> getActive() {
    ArrayList<StoredNotification> out = new ArrayList<>();
    Cursor cursor = mDb.query(Database.TABLE_NOTIFICATIONS, null, ACTIVE + " = 1", null, null, null, ID + " DESC", null);
    if (cursor != null && cursor.moveToFirst()) {
        do {
            out.add(ModelInflater.inflateStoredNotification(cursor));
        } while (cursor.moveToNext());
        cursor.close();
    }
    return out;
}
Also used : StoredNotification(com.thebluealliance.androidclient.models.StoredNotification) ArrayList(java.util.ArrayList) Cursor(android.database.Cursor)

Example 3 with StoredNotification

use of com.thebluealliance.androidclient.models.StoredNotification in project the-blue-alliance-android by the-blue-alliance.

the class EventMatchVideoNotification method buildNotification.

@Override
public Notification buildNotification(Context context, FollowsChecker followsChecker) {
    Resources r = context.getResources();
    String eventCode = EventHelper.getEventCode(eventKey);
    String title = r.getString(R.string.notification_event_match_video, eventCode);
    String notificationBody = r.getString(R.string.notification_event_match_video_content, EventHelper.shortName(eventName));
    // 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).setOnlyAlertOnce(true).setContentTitle(title).setContentText(notificationBody);
    NotificationCompat.BigTextStyle style = new NotificationCompat.BigTextStyle().bigText(notificationBody);
    builder.setStyle(style);
    return builder.build();
}
Also used : StoredNotification(com.thebluealliance.androidclient.models.StoredNotification) NotificationCompat(androidx.core.app.NotificationCompat) Intent(android.content.Intent) Resources(android.content.res.Resources)

Example 4 with StoredNotification

use of com.thebluealliance.androidclient.models.StoredNotification in project the-blue-alliance-android by the-blue-alliance.

the class GenericNotification method buildNotification.

@Override
public Notification buildNotification(Context context, FollowsChecker followsChecker) {
    stored = new StoredNotification();
    stored.setType(getNotificationType());
    stored.setTitle(title);
    stored.setBody(message);
    stored.setMessageData(messageData);
    stored.setTime(Calendar.getInstance().getTime());
    stored.setSystemId(getNotificationId());
    Intent intent = getIntent(context);
    NotificationCompat.Builder builder = getBaseBuilder(context, intent).setContentTitle(title).setContentText(message).setStyle(new NotificationCompat.BigTextStyle().bigText(message));
    return builder.build();
}
Also used : StoredNotification(com.thebluealliance.androidclient.models.StoredNotification) NotificationCompat(androidx.core.app.NotificationCompat) Intent(android.content.Intent)

Example 5 with StoredNotification

use of com.thebluealliance.androidclient.models.StoredNotification 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();
}
Also used : JsonParseException(com.google.gson.JsonParseException) Context(android.content.Context) JsonObject(com.google.gson.JsonObject) MatchWriter(com.thebluealliance.androidclient.database.writers.MatchWriter) StoredNotification(com.thebluealliance.androidclient.models.StoredNotification) NotificationCompat(androidx.core.app.NotificationCompat) Date(java.util.Date) Intent(android.content.Intent) MatchHelper(com.thebluealliance.androidclient.helpers.MatchHelper) ArrayList(java.util.ArrayList) Calendar(java.util.Calendar) Gson(com.google.gson.Gson) MatchType(com.thebluealliance.androidclient.types.MatchType) View(android.view.View) Build(android.os.Build) R(com.thebluealliance.androidclient.R) EventHelper(com.thebluealliance.androidclient.helpers.EventHelper) JSONHelper(com.thebluealliance.androidclient.helpers.JSONHelper) ViewMatchActivity(com.thebluealliance.androidclient.activities.ViewMatchActivity) LayoutInflater(android.view.LayoutInflater) Match(com.thebluealliance.androidclient.models.Match) TextUtils(android.text.TextUtils) MatchRenderer(com.thebluealliance.androidclient.renderers.MatchRenderer) ScoreNotificationViewModel(com.thebluealliance.androidclient.viewmodels.ScoreNotificationViewModel) IMatchAlliancesContainer(com.thebluealliance.api.model.IMatchAlliancesContainer) MyTBAHelper(com.thebluealliance.androidclient.helpers.MyTBAHelper) MatchListElement(com.thebluealliance.androidclient.listitems.MatchListElement) TextView(android.widget.TextView) Nullable(androidx.annotation.Nullable) Predicate(com.google.common.base.Predicate) Utilities(com.thebluealliance.androidclient.Utilities) FollowsChecker(com.thebluealliance.androidclient.gcm.FollowsChecker) GamedayTickerClickListener(com.thebluealliance.androidclient.listeners.GamedayTickerClickListener) Notification(android.app.Notification) Resources(android.content.res.Resources) MatchView(com.thebluealliance.androidclient.views.MatchView) StoredNotification(com.thebluealliance.androidclient.models.StoredNotification) Intent(android.content.Intent) MatchType(com.thebluealliance.androidclient.types.MatchType) IMatchAlliancesContainer(com.thebluealliance.api.model.IMatchAlliancesContainer) NotificationCompat(androidx.core.app.NotificationCompat) Resources(android.content.res.Resources)

Aggregations

StoredNotification (com.thebluealliance.androidclient.models.StoredNotification)23 Intent (android.content.Intent)11 NotificationCompat (androidx.core.app.NotificationCompat)11 Notification (android.app.Notification)10 Date (java.util.Date)8 Resources (android.content.res.Resources)6 ArrayList (java.util.ArrayList)6 Test (org.junit.Test)6 Context (android.content.Context)4 JsonObject (com.google.gson.JsonObject)4 Build (android.os.Build)3 Nullable (androidx.annotation.Nullable)3 Predicate (com.google.common.base.Predicate)3 Gson (com.google.gson.Gson)3 JsonParseException (com.google.gson.JsonParseException)3 R (com.thebluealliance.androidclient.R)3 Utilities (com.thebluealliance.androidclient.Utilities)3 ViewMatchActivity (com.thebluealliance.androidclient.activities.ViewMatchActivity)3 FollowsChecker (com.thebluealliance.androidclient.gcm.FollowsChecker)3 EventHelper (com.thebluealliance.androidclient.helpers.EventHelper)3