1616
1717package com .onegini .mobile .exampleapp .adapter ;
1818
19+ import static android .content .Intent .FLAG_ACTIVITY_CLEAR_TASK ;
20+ import static android .content .Intent .FLAG_ACTIVITY_NEW_TASK ;
21+
1922import java .text .SimpleDateFormat ;
2023import java .util .ArrayList ;
2124import java .util .Calendar ;
25+ import java .util .Iterator ;
2226import java .util .List ;
2327import java .util .Locale ;
2428import java .util .Set ;
2529
2630import android .content .Context ;
2731import android .content .Intent ;
28- import androidx .recyclerview .widget .RecyclerView ;
2932import android .view .LayoutInflater ;
3033import android .view .View ;
3134import android .view .View .OnClickListener ;
3235import android .view .ViewGroup ;
36+ import android .widget .ImageView ;
3337import android .widget .TextView ;
38+ import android .widget .Toast ;
39+
40+ import androidx .recyclerview .widget .RecyclerView ;
41+ import com .onegini .mobile .exampleapp .OneginiSDK ;
3442import com .onegini .mobile .exampleapp .R ;
3543import com .onegini .mobile .exampleapp .model .User ;
3644import com .onegini .mobile .exampleapp .network .fcm .MobileAuthenticationService ;
3745import com .onegini .mobile .exampleapp .storage .UserStorage ;
46+ import com .onegini .mobile .exampleapp .util .DeregistrationUtil ;
47+ import com .onegini .mobile .exampleapp .view .activity .LoginActivity ;
48+ import com .onegini .mobile .sdk .android .handlers .OneginiDenyMobileAuthWithPushRequestHandler ;
49+ import com .onegini .mobile .sdk .android .handlers .error .OneginiAuthenticatorDeregistrationError ;
50+ import com .onegini .mobile .sdk .android .handlers .error .OneginiDenyMobileAuthWithPushRequestError ;
3851import com .onegini .mobile .sdk .android .model .entity .OneginiMobileAuthWithPushRequest ;
3952import com .onegini .mobile .sdk .android .model .entity .UserProfile ;
4053
@@ -82,6 +95,51 @@ public void onBindViewHolder(final PendingPushMessagesAdapter.ViewHolder viewHol
8295 viewHolder .expiresTextView .setText (context .getString (R .string .notification_expires_at , sdf .format (calendar .getTime ())));
8396
8497 viewHolder .onClickListener = v -> context .startService (getServiceIntent (oneginiMobileAuthWithPushRequest ));
98+ setDenyButtonListener (viewHolder , oneginiMobileAuthWithPushRequest );
99+ }
100+
101+ private void setDenyButtonListener (final ViewHolder viewHolder , final OneginiMobileAuthWithPushRequest oneginiMobileAuthWithPushRequest ) {
102+ viewHolder .denyButton
103+ .setOnClickListener (v -> OneginiSDK .getOneginiClient (context ).getUserClient ().denyMobileAuthWithPushRequest (oneginiMobileAuthWithPushRequest ,
104+ new OneginiDenyMobileAuthWithPushRequestHandler () {
105+ @ Override
106+ public void onSuccess () {
107+ removeRequestFromList (oneginiMobileAuthWithPushRequest .getTransactionId ());
108+ notifyDataSetChanged ();
109+ }
110+
111+ @ Override
112+ public void onError (final OneginiDenyMobileAuthWithPushRequestError error ) {
113+ @ OneginiDenyMobileAuthWithPushRequestError .DenyMobileAuthWithPushRequestErrorType int errorType = error .getErrorType ();
114+ if (errorType == OneginiAuthenticatorDeregistrationError .USER_DEREGISTERED ) {
115+ final UserProfile authenticatedUserProfile = OneginiSDK .getOneginiClient (context ).getUserClient ().getAuthenticatedUserProfile ();
116+ new DeregistrationUtil (context ).onUserDeregistered (authenticatedUserProfile );
117+ startLoginActivity (error .getMessage ());
118+ } else if (errorType == OneginiAuthenticatorDeregistrationError .DEVICE_DEREGISTERED ) {
119+ new DeregistrationUtil (context ).onDeviceDeregistered ();
120+ startLoginActivity (error .getMessage ());
121+ } else {
122+ Toast .makeText (context , error .getMessage (), Toast .LENGTH_SHORT ).show ();
123+ }
124+ }
125+ }));
126+ }
127+
128+ private void removeRequestFromList (final String transactionId ) {
129+ final Iterator <OneginiMobileAuthWithPushRequest > iterator = list .iterator ();
130+ while (iterator .hasNext ()) {
131+ final OneginiMobileAuthWithPushRequest request = iterator .next ();
132+ if (request .getTransactionId ().equals (transactionId )) {
133+ iterator .remove ();
134+ }
135+ }
136+ }
137+
138+ private void startLoginActivity (final String errorMessage ) {
139+ final Intent intent = new Intent (context , LoginActivity .class );
140+ intent .putExtra (LoginActivity .ERROR_MESSAGE_EXTRA , errorMessage );
141+ intent .addFlags (FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TASK );
142+ context .startActivity (intent );
85143 }
86144
87145 @ Override
@@ -103,6 +161,7 @@ static class ViewHolder extends RecyclerView.ViewHolder {
103161 final TextView dateTextView ;
104162 final TextView profileTextView ;
105163 final TextView expiresTextView ;
164+ final ImageView denyButton ;
106165
107166 OnClickListener onClickListener ;
108167
@@ -113,6 +172,7 @@ static class ViewHolder extends RecyclerView.ViewHolder {
113172 dateTextView = itemView .findViewById (R .id .pending_message_timestamp );
114173 profileTextView = itemView .findViewById (R .id .pending_message_profile );
115174 expiresTextView = itemView .findViewById (R .id .pending_message_expires );
175+ denyButton = itemView .findViewById (R .id .pending_message_deny );
116176 itemView .setOnClickListener (v -> {
117177 if (onClickListener != null ) {
118178 onClickListener .onClick (v );
0 commit comments