Skip to content

Commit fd0c730

Browse files
author
Robert Szuba
authored
Merge pull request #175 from Onegini/develop
Develop
2 parents 16bc93f + eae47bc commit fd0c730

File tree

5 files changed

+85
-6
lines changed

5 files changed

+85
-6
lines changed

app/build.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ android {
5757
minSdkVersion 19
5858
targetSdkVersion 29
5959
versionCode 19
60-
versionName "6.0.0"
60+
versionName "6.1.0"
6161
multiDexEnabled true
6262
}
6363
buildTypes {
@@ -79,12 +79,12 @@ android {
7979

8080
dependencies {
8181
// Onegini SDK
82-
api('com.onegini.mobile.sdk.android:onegini-sdk:10.0.0@aar') {
82+
api('com.onegini.mobile.sdk.android:onegini-sdk:10.1.0@aar') {
8383
transitive = true
8484
}
8585

8686
// Rest Client
87-
implementation 'com.squareup.retrofit2:adapter-rxjava:2.5.0'
87+
implementation 'com.squareup.retrofit2:adapter-rxjava:2.6.4'
8888

8989
// Google Support
9090
implementation 'androidx.appcompat:appcompat:1.1.0'
@@ -108,7 +108,7 @@ dependencies {
108108
annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.0'
109109
// RxJava
110110
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
111-
implementation 'io.reactivex.rxjava2:rxjava:2.2.15'
111+
implementation 'io.reactivex.rxjava2:rxjava:2.2.17'
112112
}
113113

114114
configurations.all {

app/src/main/java/com/onegini/mobile/exampleapp/OneginiConfigModel.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public class OneginiConfigModel implements OneginiClientConfigModel {
2525
private final String appIdentifier = "ExampleApp";
2626
private final String appPlatform = "android";
2727
private final String redirectionUri = "oneginiexample://loginsuccess";
28-
private final String appVersion = "6.0.0";
28+
private final String appVersion = "6.1.0";
2929
private final String baseURL = "https://demo-msp.onegini.com";
3030
private final String resourceBaseURL = "https://demo-msp.onegini.com/resources/";
3131
private final String keystoreHash = "b243b00e336e0b8f0c212779e0a276a382768a99706e452098ab0f3f77e8f616";

app/src/main/java/com/onegini/mobile/exampleapp/adapter/PendingPushMessagesAdapter.java

Lines changed: 61 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,25 +16,38 @@
1616

1717
package 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+
1922
import java.text.SimpleDateFormat;
2023
import java.util.ArrayList;
2124
import java.util.Calendar;
25+
import java.util.Iterator;
2226
import java.util.List;
2327
import java.util.Locale;
2428
import java.util.Set;
2529

2630
import android.content.Context;
2731
import android.content.Intent;
28-
import androidx.recyclerview.widget.RecyclerView;
2932
import android.view.LayoutInflater;
3033
import android.view.View;
3134
import android.view.View.OnClickListener;
3235
import android.view.ViewGroup;
36+
import android.widget.ImageView;
3337
import android.widget.TextView;
38+
import android.widget.Toast;
39+
40+
import androidx.recyclerview.widget.RecyclerView;
41+
import com.onegini.mobile.exampleapp.OneginiSDK;
3442
import com.onegini.mobile.exampleapp.R;
3543
import com.onegini.mobile.exampleapp.model.User;
3644
import com.onegini.mobile.exampleapp.network.fcm.MobileAuthenticationService;
3745
import 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;
3851
import com.onegini.mobile.sdk.android.model.entity.OneginiMobileAuthWithPushRequest;
3952
import 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);
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportWidth="24.0"
5+
android:viewportHeight="24.0">
6+
<path
7+
android:fillColor="#808080"
8+
android:pathData="M6,19c0,1.1 0.9,2 2,2h8c1.1,0 2,-0.9 2,-2V7H6v12zM19,4h-3.5l-1,-1h-5l-1,1H5v2h14V4z"/>
9+
</vector>

app/src/main/res/layout/row_item_pending_message.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,5 +70,15 @@
7070
android:layout_below="@+id/pending_message"
7171
android:layout_alignParentLeft="true"
7272
android:layout_alignParentStart="true"/>
73+
74+
<ImageView
75+
android:id="@+id/pending_message_deny"
76+
android:layout_width="wrap_content"
77+
android:layout_height="wrap_content"
78+
android:src="@drawable/ic_delete_grey_24dp"
79+
android:layout_alignParentEnd="true"
80+
android:baselineAlignBottom="true"
81+
android:layout_alignBaseline="@id/pending_message_expires"
82+
android:padding="8dp"/>
7383
</RelativeLayout>
7484
</androidx.cardview.widget.CardView>

0 commit comments

Comments
 (0)