Skip to content

Commit a54a58e

Browse files
committed
Merge pull request zetavg#27 from ActiDoo/master
add support for inboxStyle
2 parents 45417ca + 015ebce commit a54a58e

File tree

3 files changed

+78
-15
lines changed

3 files changed

+78
-15
lines changed

android/src/main/java/io/neson/react-native/notification/Notification.java

Lines changed: 33 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import android.app.PendingIntent;
66
import android.app.AlarmManager;
77
import android.app.NotificationManager;
8-
import android.support.v4.app.NotificationCompat;
98
import android.content.Context;
109
import android.content.Intent;
1110
import android.content.SharedPreferences;
@@ -21,6 +20,8 @@
2120
import io.neson.react.notification.NotificationEventReceiver;
2221
import io.neson.react.notification.NotificationPublisher;
2322

23+
import android.support.v7.app.NotificationCompat;
24+
import android.text.Html;
2425
import android.util.Log;
2526
import android.graphics.Color;
2627

@@ -112,7 +113,7 @@ public Notification delete() {
112113
* Build the notification.
113114
*/
114115
public android.app.Notification build() {
115-
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context);
116+
android.support.v7.app.NotificationCompat.Builder notificationBuilder = new android.support.v7.app.NotificationCompat.Builder(context);
116117

117118
notificationBuilder
118119
.setContentTitle(attributes.subject)
@@ -125,21 +126,39 @@ public android.app.Notification build() {
125126
notificationBuilder.setPriority(attributes.priority);
126127
}
127128

128-
int defaults = 0;
129+
if(attributes.inboxStyle){
129130

130-
if ("default".equals(attributes.sound)) {
131-
defaults = defaults | NotificationCompat.DEFAULT_SOUND;
132-
}
131+
android.support.v7.app.NotificationCompat.InboxStyle inboxStyle = new android.support.v7.app.NotificationCompat.InboxStyle();
133132

134-
if ("default".equals(attributes.vibrate)) {
135-
defaults = defaults | NotificationCompat.DEFAULT_VIBRATE;
136-
}
133+
if(attributes.inboxStyleBigContentTitle != null){
134+
inboxStyle.setBigContentTitle(attributes.inboxStyleBigContentTitle);
135+
}
136+
if(attributes.inboxStyleSummaryText != null){
137+
inboxStyle.setSummaryText(attributes.inboxStyleSummaryText);
138+
}
139+
if(attributes.inboxStyleLines != null){
140+
for(int i=0; i< attributes.inboxStyleLines.size(); i++){
141+
inboxStyle.addLine(Html.fromHtml(attributes.inboxStyleLines.get(i)));
142+
}
143+
}
137144

138-
if ("default".equals(attributes.lights)) {
139-
defaults = defaults | NotificationCompat.DEFAULT_LIGHTS;
140-
}
145+
Log.i("ReactSystemNotification", "set inbox style!!");
141146

142-
notificationBuilder.setDefaults(defaults);
147+
}else{
148+
149+
int defaults = 0;
150+
if ("default".equals(attributes.sound)) {
151+
defaults = defaults | android.app.Notification.DEFAULT_SOUND;
152+
}
153+
if ("default".equals(attributes.vibrate)) {
154+
defaults = defaults | android.app.Notification.DEFAULT_VIBRATE;
155+
}
156+
if ("default".equals(attributes.lights)) {
157+
defaults = defaults | android.app.Notification.DEFAULT_LIGHTS;
158+
}
159+
notificationBuilder.setDefaults(defaults);
160+
161+
}
143162

144163
if (attributes.onlyAlertOnce != null) {
145164
notificationBuilder.setOnlyAlertOnce(attributes.onlyAlertOnce);
@@ -156,7 +175,7 @@ public android.app.Notification build() {
156175

157176
if (attributes.bigText != null) {
158177
notificationBuilder
159-
.setStyle(new NotificationCompat.BigTextStyle()
178+
.setStyle(new android.support.v7.app.NotificationCompat.BigTextStyle()
160179
.bigText(attributes.bigText));
161180
}
162181

android/src/main/java/io/neson/react-native/notification/NotificationAttributes.java

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
package io.neson.react.notification;
22

3+
import com.facebook.react.bridge.ReadableArray;
34
import com.facebook.react.bridge.ReadableMap;
5+
import com.facebook.react.bridge.WritableArray;
46
import com.facebook.react.bridge.WritableMap;
7+
8+
import java.util.ArrayList;
59
import java.util.Map;
610
import java.util.Iterator;
711
import com.google.gson.Gson;
@@ -49,6 +53,11 @@ public class NotificationAttributes {
4953
public String category;
5054
public Boolean localOnly;
5155

56+
public Boolean inboxStyle;
57+
public String inboxStyleBigContentTitle;
58+
public String inboxStyleSummaryText;
59+
public ArrayList<String> inboxStyleLines;
60+
5261
public void loadFromMap(Map map) {
5362
WritableMap writableMap = (WritableMap) new WritableNativeMap();
5463

@@ -125,6 +134,23 @@ public void loadFromReadableMap(ReadableMap readableMap) {
125134
if (readableMap.hasKey("number")) number = readableMap.getInt("number");
126135
if (readableMap.hasKey("category")) category = readableMap.getString("category");
127136
if (readableMap.hasKey("localOnly")) localOnly = readableMap.getBoolean("localOnly");
137+
138+
if (readableMap.hasKey("inboxStyle")){
139+
inboxStyle = true;
140+
ReadableMap inboxStyle = readableMap.getMap("inboxStyle");
141+
142+
inboxStyleBigContentTitle = inboxStyle.getString("bigContentTitle");
143+
inboxStyleSummaryText = inboxStyle.getString("summaryText");
144+
145+
ReadableArray inboxLines = inboxStyle.getArray("lines");
146+
inboxStyleLines = new ArrayList<>();
147+
for(int i=0; i < inboxLines.size(); i++){
148+
inboxStyleLines.add(inboxLines.getString(i));
149+
}
150+
}else{
151+
inboxStyle = false;
152+
}
153+
128154
}
129155

130156
public ReadableMap asReadableMap() {
@@ -172,6 +198,24 @@ public ReadableMap asReadableMap() {
172198
if (category != null) writableMap.putString("category", category);
173199
if (localOnly != null) writableMap.putBoolean("localOnly", localOnly);
174200

201+
if (inboxStyle){
202+
203+
WritableMap inboxStyle = new com.facebook.react.bridge.WritableNativeMap();
204+
205+
if (inboxStyleBigContentTitle != null) inboxStyle.putString("bigContentTitle", inboxStyleBigContentTitle);
206+
if (inboxStyleSummaryText != null) inboxStyle.putString("summaryText", inboxStyleSummaryText);
207+
208+
if(inboxStyleLines != null){
209+
WritableArray inboxLines = new com.facebook.react.bridge.WritableNativeArray();
210+
for(int i=0; i < inboxStyleLines.size(); i++){
211+
inboxLines.pushString(inboxStyleLines.get(i));
212+
}
213+
inboxStyle.putArray("lines", inboxLines);
214+
}
215+
216+
writableMap.putMap("inboxStyle", inboxStyle);
217+
}
218+
175219
return (ReadableMap) writableMap;
176220
}
177221
}

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@
1616
],
1717
"peerDependencies": {
1818
"react-native": ">=0.15.0",
19-
"react-native-gcm-android": "^0.2.0"
19+
"react-native-gcm-android": "^0.1.9"
2020
}
2121
}

0 commit comments

Comments
 (0)