Skip to content

Commit 0e3649d

Browse files
authored
Merge pull request #117 from CatalystCode/thcao/code-refactoring
[Android] Code refactoring
2 parents f0e00fe + 1712110 commit 0e3649d

14 files changed

+1014
-958
lines changed

android/src/main/java/com/azure/reactnative/notificationhub/NotificationHubUtil.java

Lines changed: 0 additions & 442 deletions
This file was deleted.
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
package com.azure.reactnative.notificationhub;
2+
3+
public final class ReactNativeConstants {
4+
// Notification
5+
public static final String AZURE_NOTIFICATION_HUB_NAME = "AzureNotificationHub";
6+
public static final String NOTIF_REGISTER_AZURE_HUB_EVENT = "azureNotificationHubRegistered";
7+
public static final String NOTIF_AZURE_HUB_REGISTRATION_ERROR_EVENT = "azureNotificationHubRegistrationError";
8+
public static final String DEVICE_NOTIF_EVENT = "remoteNotificationReceived";
9+
public static final String NOTIFICATION_CHANNEL_ID = "rn-push-notification-channel-id";
10+
11+
// Shared prefs used in NotificationHubUtil
12+
public static final String SHARED_PREFS_NAME = "com.azure.reactnative.notificationhub.NotificationHubUtil";
13+
public static final String KEY_FOR_PREFS_REGISTRATIONID = "AzureNotificationHub_registrationID";
14+
public static final String KEY_FOR_PREFS_CONNECTIONSTRING = "AzureNotificationHub_connectionString";
15+
public static final String KEY_FOR_PREFS_HUBNAME = "AzureNotificationHub_hubName";
16+
public static final String KEY_FOR_PREFS_FCMTOKEN = "AzureNotificationHub_FCMToken";
17+
public static final String KEY_FOR_PREFS_TAGS = "AzureNotificationHub_Tags";
18+
public static final String KEY_FOR_PREFS_SENDERID = "AzureNotificationHub_senderID";
19+
public static final String KEY_FOR_PREFS_CHANNELIMPORTANCE = "AzureNotificationHub_channelImportance";
20+
public static final String KEY_FOR_PREFS_CHANNELSHOWBADGE = "AzureNotificationHub_channelShowBadge";
21+
public static final String KEY_FOR_PREFS_CHANNELENABLELIGHTS = "AzureNotificationHub_channelEnableLights";
22+
public static final String KEY_FOR_PREFS_CHANNELENABLEVIBRATION = "AzureNotificationHub_channelEnableVibration";
23+
24+
// Remote notification payload
25+
public static final String KEY_REMOTE_NOTIFICATION_MESSAGE = "message";
26+
public static final String KEY_REMOTE_NOTIFICATION_ID = "google.message_id";
27+
public static final String KEY_REMOTE_NOTIFICATION_TITLE = "title";
28+
public static final String KEY_REMOTE_NOTIFICATION_PRIORITY = "google.original_priority";
29+
public static final String KEY_REMOTE_NOTIFICATION_TICKER = "ticker";
30+
public static final String KEY_REMOTE_NOTIFICATION_AUTO_CANCEL = "autoCancel";
31+
public static final String KEY_REMOTE_NOTIFICATION_GROUP = "group";
32+
public static final String KEY_REMOTE_NOTIFICATION_LARGE_ICON = "largeIcon";
33+
public static final String KEY_REMOTE_NOTIFICATION_SUB_TEXT = "subText";
34+
public static final String KEY_REMOTE_NOTIFICATION_NUMBER = "number";
35+
public static final String KEY_REMOTE_NOTIFICATION_SMALL_ICON = "smallIcon";
36+
public static final String KEY_REMOTE_NOTIFICATION_BIG_TEXT = "bigText";
37+
public static final String KEY_REMOTE_NOTIFICATION_PLAY_SOUND = "playSound";
38+
public static final String KEY_REMOTE_NOTIFICATION_SOUND_NAME = "soundName";
39+
public static final String KEY_REMOTE_NOTIFICATION_ONGOING = "ongoing";
40+
public static final String KEY_REMOTE_NOTIFICATION_COLOR = "color";
41+
public static final String KEY_REMOTE_NOTIFICATION_VIBRATE = "vibrate";
42+
public static final String KEY_REMOTE_NOTIFICATION_VIBRATION = "vibration";
43+
public static final String KEY_REMOTE_NOTIFICATION_FOREGROUND = "foreground";
44+
public static final String KEY_REMOTE_NOTIFICATION_ACTIONS = "actions";
45+
public static final String KEY_REMOTE_NOTIFICATION_ACTION = "action";
46+
public static final String KEY_REMOTE_NOTIFICATION_TAG = "tag";
47+
public static final String KEY_REMOTE_NOTIFICATION_USER_INTERACTION = "userInteraction";
48+
public static final String KEY_REMOTE_NOTIFICATION_COLDSTART = "coldstart";
49+
50+
// Remote notification payload's priority
51+
public static final String REMOTE_NOTIFICATION_PRIORITY_MAX = "max";
52+
public static final String REMOTE_NOTIFICATION_PRIORITY_HIGH = "high";
53+
public static final String REMOTE_NOTIFICATION_PRIORITY_LOW = "low";
54+
public static final String REMOTE_NOTIFICATION_PRIORITY_MIN = "min";
55+
public static final String REMOTE_NOTIFICATION_PRIORITY_NORMAL = "normal";
56+
57+
// Intent payload
58+
public static final String KEY_INTENT_NOTIFICATION = "notification";
59+
60+
// Resources
61+
public static final String RESOURCE_DEF_TYPE_MIPMAP = "mipmap";
62+
public static final String RESOURCE_DEF_TYPE_RAW = "raw";
63+
public static final String RESOURCE_NAME_NOTIFICATION = "ic_notification";
64+
public static final String RESOURCE_NAME_LAUNCHER = "ic_launcher";
65+
66+
// Errors
67+
public static final String ERROR_NO_ACTIVITY_CLASS = "No activity class found for the notification";
68+
public static final String ERROR_NO_MESSAGE = "No message specified for the notification";
69+
public static final String ERROR_NO_NOTIF_ID = "No notification ID specified for the notification";
70+
public static final String ERROR_COVERT_ACTIONS = "Exception while converting actions to JSON object.";
71+
public static final String ERROR_GET_ACTIONS_ARRAY = "Exception while getting action from actionsArray.";
72+
public static final String ERROR_SEND_PUSH_NOTIFICATION = "failed to send push notification";
73+
public static final String ERROR_ACTIVITY_CLASS_NOT_FOUND = "Activity class not found";
74+
public static final String ERROR_INVALID_ARGUMENTS = "E_INVALID_ARGUMENTS";
75+
public static final String ERROR_INVALID_CONNECTION_STRING = "Connection string cannot be null.";
76+
public static final String ERROR_INVALID_HUBNAME = "Hub name cannot be null.";
77+
public static final String ERROR_INVALID_SENDER_ID = "Sender ID cannot be null.";
78+
public static final String ERROR_PLAY_SERVICES = "E_PLAY_SERVICES";
79+
public static final String ERROR_PLAY_SERVICES_DISABLED = "User must enable Google Play Services.";
80+
public static final String ERROR_PLAY_SERVICES_UNSUPPORTED = "This device is not supported by Google Play Services.";
81+
public static final String ERROR_NOTIFICATION_HUB = "E_NOTIFICATION_HUB";
82+
public static final String ERROR_NOT_REGISTERED = "E_NOT_REGISTERED";
83+
public static final String ERROR_NOT_REGISTERED_DESC = "No registration to Azure Notification Hub.";
84+
85+
private ReactNativeConstants() {
86+
}
87+
}

android/src/main/java/com/azure/reactnative/notificationhub/ReactNativeFirebaseMessagingService.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,7 @@
1111
import com.google.firebase.messaging.FirebaseMessagingService;
1212
import com.google.firebase.messaging.RemoteMessage;
1313

14-
import static com.azure.reactnative.notificationhub.ReactNativeNotificationsHandler.KEY_REMOTE_NOTIFICATION_COLDSTART;
15-
import static com.azure.reactnative.notificationhub.ReactNativeNotificationsHandler.KEY_REMOTE_NOTIFICATION_FOREGROUND;
16-
import static com.azure.reactnative.notificationhub.ReactNativeNotificationsHandler.KEY_REMOTE_NOTIFICATION_USER_INTERACTION;
14+
import static com.azure.reactnative.notificationhub.ReactNativeConstants.*;
1715

1816
public class ReactNativeFirebaseMessagingService extends FirebaseMessagingService {
1917

@@ -23,8 +21,8 @@ public class ReactNativeFirebaseMessagingService extends FirebaseMessagingServic
2321

2422
public static void createNotificationChannel(Context context) {
2523
if (notificationChannelID == null) {
26-
NotificationHubUtil notificationHubUtil = NotificationHubUtil.getInstance();
27-
NotificationChannelBuilder builder = NotificationChannelBuilder.Factory.create();
24+
ReactNativeNotificationHubUtil notificationHubUtil = ReactNativeNotificationHubUtil.getInstance();
25+
ReactNativeNotificationChannelBuilder builder = ReactNativeNotificationChannelBuilder.Factory.create();
2826
if (notificationHubUtil.hasChannelImportance(context)) {
2927
builder.setImportance(notificationHubUtil.getChannelImportance(context));
3028
}
@@ -41,7 +39,7 @@ public static void createNotificationChannel(Context context) {
4139
builder.enableVibration(notificationHubUtil.getChannelEnableVibration(context));
4240
}
4341

44-
notificationChannelID = ReactNativeNotificationsHandler.NOTIFICATION_CHANNEL_ID;
42+
notificationChannelID = NOTIFICATION_CHANNEL_ID;
4543
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
4644
NotificationChannel channel = builder.build();
4745
NotificationManager notificationManager = (NotificationManager) context.getSystemService(
@@ -68,13 +66,13 @@ public static void deleteNotificationChannel(Context context) {
6866
public void onNewToken(String token) {
6967
Log.i(TAG, "Refreshing FCM Registration Token");
7068

71-
Intent intent = NotificationHubUtil.IntentFactory.createIntent(this, ReactNativeRegistrationIntentService.class);
69+
Intent intent = ReactNativeNotificationHubUtil.IntentFactory.createIntent(this, ReactNativeRegistrationIntentService.class);
7270
ReactNativeRegistrationIntentService.enqueueWork(this, intent);
7371
}
7472

7573
@Override
7674
public void onMessageReceived(RemoteMessage remoteMessage) {
77-
NotificationHubUtil notificationHubUtil = NotificationHubUtil.getInstance();
75+
ReactNativeNotificationHubUtil notificationHubUtil = ReactNativeNotificationHubUtil.getInstance();
7876
Log.d(TAG, "Remote message from: " + remoteMessage.getFrom());
7977

8078
if (notificationChannelID == null) {

android/src/main/java/com/azure/reactnative/notificationhub/NotificationChannelBuilder.java renamed to android/src/main/java/com/azure/reactnative/notificationhub/ReactNativeNotificationChannelBuilder.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
import android.app.NotificationChannel;
44
import android.app.NotificationManager;
55

6-
public class NotificationChannelBuilder {
7-
private String mID = ReactNativeNotificationsHandler.NOTIFICATION_CHANNEL_ID;
6+
public class ReactNativeNotificationChannelBuilder {
7+
private String mID = ReactNativeConstants.NOTIFICATION_CHANNEL_ID;
88
private CharSequence mName = "rn-push-notification-channel-name";
99
private String mDesc = "rn-push-notification-channel-description";
1010
private int mImportance = NotificationManager.IMPORTANCE_DEFAULT;
@@ -13,12 +13,12 @@ public class NotificationChannelBuilder {
1313
private boolean mEnableVibration = true;
1414

1515
public static class Factory {
16-
public static NotificationChannelBuilder create() {
17-
return new NotificationChannelBuilder();
16+
public static ReactNativeNotificationChannelBuilder create() {
17+
return new ReactNativeNotificationChannelBuilder();
1818
}
1919
}
2020

21-
private NotificationChannelBuilder() {
21+
private ReactNativeNotificationChannelBuilder() {
2222
}
2323

2424
public NotificationChannel build() {
@@ -30,32 +30,32 @@ public NotificationChannel build() {
3030
return channel;
3131
}
3232

33-
public NotificationChannelBuilder setName(CharSequence name) {
33+
public ReactNativeNotificationChannelBuilder setName(CharSequence name) {
3434
this.mName = name;
3535
return this;
3636
}
3737

38-
public NotificationChannelBuilder setImportance(int importance) {
38+
public ReactNativeNotificationChannelBuilder setImportance(int importance) {
3939
this.mImportance = importance;
4040
return this;
4141
}
4242

43-
public NotificationChannelBuilder setDescription(String desc) {
43+
public ReactNativeNotificationChannelBuilder setDescription(String desc) {
4444
this.mDesc = desc;
4545
return this;
4646
}
4747

48-
public NotificationChannelBuilder setShowBadge(boolean showBadge) {
48+
public ReactNativeNotificationChannelBuilder setShowBadge(boolean showBadge) {
4949
this.mShowBadge = showBadge;
5050
return this;
5151
}
5252

53-
public NotificationChannelBuilder enableLights(boolean enableLights) {
53+
public ReactNativeNotificationChannelBuilder enableLights(boolean enableLights) {
5454
this.mEnableLights = enableLights;
5555
return this;
5656
}
5757

58-
public NotificationChannelBuilder enableVibration(boolean enableVibration) {
58+
public ReactNativeNotificationChannelBuilder enableVibration(boolean enableVibration) {
5959
this.mEnableVibration = enableVibration;
6060
return this;
6161
}

android/src/main/java/com/azure/reactnative/notificationhub/ReactNativeNotificationHubModule.java

Lines changed: 7 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -26,29 +26,10 @@
2626
import com.facebook.react.bridge.ReadableMap;
2727
import com.facebook.react.bridge.UiThreadUtil;
2828

29-
import static com.azure.reactnative.notificationhub.ReactNativeNotificationsHandler.KEY_INTENT_NOTIFICATION;
30-
import static com.azure.reactnative.notificationhub.ReactNativeNotificationsHandler.KEY_REMOTE_NOTIFICATION_COLDSTART;
31-
import static com.azure.reactnative.notificationhub.ReactNativeNotificationsHandler.KEY_REMOTE_NOTIFICATION_FOREGROUND;
32-
import static com.azure.reactnative.notificationhub.ReactNativeNotificationsHandler.KEY_REMOTE_NOTIFICATION_USER_INTERACTION;
29+
import static com.azure.reactnative.notificationhub.ReactNativeConstants.*;
3330

3431
public class ReactNativeNotificationHubModule extends ReactContextBaseJavaModule implements
3532
ActivityEventListener, LifecycleEventListener {
36-
public static final String AZURE_NOTIFICATION_HUB_NAME = "AzureNotificationHub";
37-
public static final String NOTIF_REGISTER_AZURE_HUB_EVENT = "azureNotificationHubRegistered";
38-
public static final String NOTIF_AZURE_HUB_REGISTRATION_ERROR_EVENT = "azureNotificationHubRegistrationError";
39-
public static final String DEVICE_NOTIF_EVENT = "remoteNotificationReceived";
40-
41-
public static final String ERROR_INVALID_ARGUMENTS = "E_INVALID_ARGUMENTS";
42-
public static final String ERROR_INVALID_CONNECTION_STRING = "Connection string cannot be null.";
43-
public static final String ERROR_INVALID_HUBNAME = "Hub name cannot be null.";
44-
public static final String ERROR_INVALID_SENDER_ID = "Sender ID cannot be null.";
45-
public static final String ERROR_PLAY_SERVICES = "E_PLAY_SERVICES";
46-
public static final String ERROR_PLAY_SERVICES_DISABLED = "User must enable Google Play Services.";
47-
public static final String ERROR_PLAY_SERVICES_UNSUPPORTED = "This device is not supported by Google Play Services.";
48-
public static final String ERROR_NOTIFICATION_HUB = "E_NOTIFICATION_HUB";
49-
public static final String ERROR_NOT_REGISTERED = "E_NOT_REGISTERED";
50-
public static final String ERROR_NOT_REGISTERED_DESC = "No registration to Azure Notification Hub.";
51-
5233
private static final int PLAY_SERVICES_RESOLUTION_REQUEST = 9000;
5334
private static final int NOTIFICATION_DELAY_ON_START = 3000;
5435

@@ -72,18 +53,18 @@ public String getName() {
7253
}
7354

7455
public void setIsForeground(boolean isForeground) {
75-
NotificationHubUtil notificationHubUtil = NotificationHubUtil.getInstance();
56+
ReactNativeNotificationHubUtil notificationHubUtil = ReactNativeNotificationHubUtil.getInstance();
7657
notificationHubUtil.setAppIsForeground(isForeground);
7758
}
7859

7960
public boolean getIsForeground() {
80-
NotificationHubUtil notificationHubUtil = NotificationHubUtil.getInstance();
61+
ReactNativeNotificationHubUtil notificationHubUtil = ReactNativeNotificationHubUtil.getInstance();
8162
return notificationHubUtil.getAppIsForeground();
8263
}
8364

8465
@ReactMethod
8566
public void register(ReadableMap config, Promise promise) {
86-
NotificationHubUtil notificationHubUtil = NotificationHubUtil.getInstance();
67+
ReactNativeNotificationHubUtil notificationHubUtil = ReactNativeNotificationHubUtil.getInstance();
8768
String connectionString = config.getString("connectionString");
8869
if (connectionString == null) {
8970
promise.reject(ERROR_INVALID_ARGUMENTS, ERROR_INVALID_CONNECTION_STRING);
@@ -153,14 +134,14 @@ public void register(ReadableMap config, Promise promise) {
153134
return;
154135
}
155136

156-
Intent intent = NotificationHubUtil.IntentFactory.createIntent(
137+
Intent intent = ReactNativeNotificationHubUtil.IntentFactory.createIntent(
157138
reactContext, ReactNativeRegistrationIntentService.class);
158139
ReactNativeRegistrationIntentService.enqueueWork(reactContext, intent);
159140
}
160141

161142
@ReactMethod
162143
public void unregister(Promise promise) {
163-
NotificationHubUtil notificationHubUtil = NotificationHubUtil.getInstance();
144+
ReactNativeNotificationHubUtil notificationHubUtil = ReactNativeNotificationHubUtil.getInstance();
164145

165146
ReactContext reactContext = getReactApplicationContext();
166147
String connectionString = notificationHubUtil.getConnectionString(reactContext);
@@ -172,7 +153,7 @@ public void unregister(Promise promise) {
172153
return;
173154
}
174155

175-
NotificationHub hub = notificationHubUtil.createNotificationHub(hubName, connectionString, reactContext);
156+
NotificationHub hub = ReactNativeUtil.createNotificationHub(hubName, connectionString, reactContext);
176157
try {
177158
hub.unregister();
178159
notificationHubUtil.setRegistrationID(reactContext, null);

0 commit comments

Comments
 (0)