From b75b5a3d1a3bf001923d49923dcebee95ba2327e Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Thu, 29 Jun 2017 17:09:49 +0300 Subject: notifications and configurations refactoring --- .../java/com/juick/components/Notifications.java | 29 +++++++++++----------- 1 file changed, 15 insertions(+), 14 deletions(-) (limited to 'juick-notifications/src/main/java/com/juick/components/Notifications.java') diff --git a/juick-notifications/src/main/java/com/juick/components/Notifications.java b/juick-notifications/src/main/java/com/juick/components/Notifications.java index 0a315f76..f0ab3b81 100644 --- a/juick-notifications/src/main/java/com/juick/components/Notifications.java +++ b/juick-notifications/src/main/java/com/juick/components/Notifications.java @@ -19,7 +19,8 @@ package com.juick.components; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.android.gcm.server.*; -import com.juick.TokensList; +import com.juick.DeviceRegistration; +import com.juick.User; import com.notnoop.apns.APNS; import com.notnoop.apns.ApnsService; import org.apache.commons.lang3.math.NumberUtils; @@ -72,29 +73,29 @@ public class Notifications implements NotificationClientListener, AutoCloseable boolean isReply = jmsg.getRid() > 0; int pmTo = NumberUtils.toInt(msg.getTo().getLocal(), 0); - final List tokensList = new ArrayList<>(); + final List users = new ArrayList<>(); if (isPM) { - tokensList.addAll(rest.exchange(String.format("http://api.juick.com/notifications?type=gcm&uid=%d", + users.addAll(rest.exchange(String.format("http://api.juick.com/notifications?uid=%d", pmTo), - HttpMethod.GET, null, new ParameterizedTypeReference>() { + HttpMethod.GET, null, new ParameterizedTypeReference>() { }).getBody()); } else { if (isReply) { - tokensList.addAll(rest.exchange(String.format("http://api.juick.com/notifications?type=gcm&uid=%d&mid=%d&rid=%d", + users.addAll(rest.exchange(String.format("http://api.juick.com/notifications?uid=%d&mid=%d&rid=%d", jmsg.getUser().getUid(), jmsg.getMid(), jmsg.getRid()), - HttpMethod.GET, null, new ParameterizedTypeReference>() { + HttpMethod.GET, null, new ParameterizedTypeReference>() { }).getBody()); } else { - tokensList.addAll(rest.exchange(String.format("http://api.juick.com/notifications?type=gcm&uid=%s&mid=%s", + users.addAll(rest.exchange(String.format("http://api.juick.com/notifications?uid=%s&mid=%s", jmsg.getUser().getUid(), jmsg.getMid()), - HttpMethod.GET, null, new ParameterizedTypeReference>() { + HttpMethod.GET, null, new ParameterizedTypeReference>() { }).getBody()); } } // GCM - List regids = tokensList.stream().filter(t -> t.getType().equals("gcm")) - .flatMap(t -> t.getTokens().stream()).collect(Collectors.toList()); + List regids = users.stream().flatMap(u -> u.getDevices().stream()).filter(d -> d.getType().equals("gcm")) + .map(DeviceRegistration::getToken).collect(Collectors.toList()); if (!regids.isEmpty()) { try { String json = jsonMapper.writeValueAsString(jmsg); @@ -124,8 +125,8 @@ public class Notifications implements NotificationClientListener, AutoCloseable } /*** WinPhone ***/ - List urls = tokensList.stream().filter(t -> t.getType().equals("mpns")) - .flatMap(t -> t.getTokens().stream()).collect(Collectors.toList()); + List urls = users.stream().flatMap(u -> u.getDevices().stream()).filter(d -> d.getType().equals("mpns")) + .map(DeviceRegistration::getToken).collect(Collectors.toList()); if (urls.isEmpty()) { logger.info("WNS: no recipients"); @@ -160,8 +161,8 @@ public class Notifications implements NotificationClientListener, AutoCloseable } /*** iOS ***/ - List tokens = tokensList.stream().filter(t -> t.getType().equals("apns")) - .flatMap(t -> t.getTokens().stream()).collect(Collectors.toList()); + List tokens = users.stream().flatMap(u -> u.getDevices().stream()).filter(d -> d.getType().equals("apns")) + .map(DeviceRegistration::getToken).collect(Collectors.toList()); if (!tokens.isEmpty()) { for (String token : tokens) { String payload = APNS.newPayload().alertTitle("@" + jmsg.getUser().getName()).alertBody(jmsg.getText()).build(); -- cgit v1.2.3