Skip to content

Commit 6ded6a2

Browse files
committed
[User Model] Push notification/subscription alignment
* Use SubscriptionStatus enum for subscription status across the codebase. * IUserManager.subscriptions.push can no longer be null. If there isn't a push subscription a "dummy" one is now returned. * Add `fallbackToSettings` parameter for `ILocationManager.requestPermission` and `INotificationsManager.requestPermission` * Renamed `INotificationsManager.permissionsStatus` to `permission` and made it a simple Boolean. * Added `INotificationsManager.canRequestPermission` as a flag to indicate when permissions can be requested. * Added `ISubscription.addChangeHandler` to allow user to listen for changes to the subscription.
1 parent 6816df4 commit 6ded6a2

File tree

69 files changed

+1104
-696
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+1104
-696
lines changed

Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/activity/MainActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ protected void onCreate(Bundle savedInstanceState) {
2121
setContentView(R.layout.main_activity_layout);
2222

2323
viewModel = new MainActivityViewModel();
24-
OneSignal.getNotifications().addPushPermissionHandler(viewModel);
24+
OneSignal.getNotifications().addPermissionChangedHandler(viewModel);
2525
// TODO("STILL SUPPORT?")
2626
// OneSignal.addSubscriptionObserver(viewModel);
2727
// OneSignal.addEmailSubscriptionObserver(viewModel);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
package com.onesignal.sdktest.adapter;
2+
3+
import android.content.Context;
4+
import android.view.LayoutInflater;
5+
import android.view.View;
6+
import android.view.ViewGroup;
7+
import android.widget.LinearLayout;
8+
import android.widget.TextView;
9+
10+
import androidx.annotation.NonNull;
11+
import androidx.recyclerview.widget.RecyclerView;
12+
13+
import com.onesignal.sdktest.R;
14+
import com.onesignal.sdktest.callback.SingleItemActionCallback;
15+
import com.onesignal.sdktest.callback.SubscriptionItemActionCallback;
16+
import com.onesignal.user.subscriptions.IEmailSubscription;
17+
import com.onesignal.user.subscriptions.ISmsSubscription;
18+
import com.onesignal.user.subscriptions.ISubscription;
19+
20+
import java.util.ArrayList;
21+
22+
public class SubscriptionRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
23+
24+
private LayoutInflater layoutInflater;
25+
26+
private Context context;
27+
28+
private ArrayList<ISubscription> subscriptions;
29+
private SubscriptionItemActionCallback callback;
30+
31+
public SubscriptionRecyclerViewAdapter(Context context, ArrayList<ISubscription> subscriptions, SubscriptionItemActionCallback callback) {
32+
this.context = context;
33+
34+
this.subscriptions = subscriptions;
35+
this.callback = callback;
36+
37+
layoutInflater = LayoutInflater.from(context);
38+
}
39+
40+
@NonNull
41+
@Override
42+
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int position) {
43+
View view = layoutInflater.inflate(R.layout.subscription_recycler_view_item_layout, parent, false);
44+
view.setHasTransientState(true);
45+
return new SubscriptionViewHolder(view);
46+
}
47+
48+
@Override
49+
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
50+
((SubscriptionViewHolder) holder).setData(position, subscriptions.get(position));
51+
}
52+
53+
@Override
54+
public int getItemCount() {
55+
return subscriptions.size();
56+
}
57+
58+
public class SubscriptionViewHolder extends RecyclerView.ViewHolder {
59+
60+
private LinearLayout singleLinearLayout;
61+
private TextView idTextView;
62+
private TextView addressTitleTextView;
63+
private TextView addressTextView;
64+
65+
private ISubscription item;
66+
67+
SubscriptionViewHolder(View itemView) {
68+
super(itemView);
69+
70+
singleLinearLayout = itemView.findViewById(R.id.subscription_recycler_view_item_linear_layout);
71+
idTextView = itemView.findViewById(R.id.subscription_recycler_view_item_id_text_view);
72+
addressTitleTextView = itemView.findViewById(R.id.subscription_recycler_view_item_address_title_text_view);
73+
addressTextView = itemView.findViewById(R.id.subscription_recycler_view_item_address_text_view);
74+
}
75+
76+
private void setData(int position, ISubscription item) {
77+
this.item = item;
78+
populateInterfaceElements(position);
79+
}
80+
81+
private void populateInterfaceElements(final int position) {
82+
idTextView.setText(item.getId());
83+
84+
if(item instanceof IEmailSubscription) {
85+
addressTitleTextView.setText(R.string.email_colon);
86+
addressTextView.setText(((IEmailSubscription) item).getEmail());
87+
}
88+
else if(item instanceof ISmsSubscription) {
89+
addressTitleTextView.setText(R.string.sms_colon);
90+
addressTextView.setText(((ISmsSubscription) item).getNumber());
91+
}
92+
93+
singleLinearLayout.setOnLongClickListener(new View.OnLongClickListener() {
94+
@Override
95+
public boolean onLongClick(View v) {
96+
callback.onLongClick(item);
97+
return false;
98+
}
99+
});
100+
101+
}
102+
103+
}
104+
105+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.onesignal.sdktest.callback;
2+
3+
import com.onesignal.user.subscriptions.ISubscription;
4+
5+
public interface SubscriptionItemActionCallback {
6+
7+
void onLongClick(ISubscription value);
8+
9+
}

0 commit comments

Comments
 (0)