use of co.krypt.krypton.protocol.UnpairRequest in project krypton-android by kryptco.
the class Notifications method notifyRejectJob.
private static void notifyRejectJob(Context context, Pairing pairing, Request request, String title) {
if (!new Settings(context).approvedNotificationsEnabled()) {
return;
}
Intent resultIntent = new Intent(context, MainActivity.class);
NotificationCompat.Builder mBuilder = buildNotification(context, APPROVED_CHANNEL_ID).setColor(Color.RED).setContentTitle(title).setAutoCancel(true).setPriority(NotificationCompat.PRIORITY_MAX).setCategory(NotificationCompat.CATEGORY_MESSAGE).setVisibility(NotificationCompat.VISIBILITY_PUBLIC);
if (!new Settings(context).silenceNotifications()) {
mBuilder.setDefaults(Notification.DEFAULT_SOUND).setVibrate(new long[] { 0, 100, 100, 100 });
}
request.body.visit(new RequestBody.Visitor<Void, RuntimeException>() {
@Override
public Void visit(MeRequest meRequest) throws RuntimeException {
return null;
}
@Override
public Void visit(SignRequest signRequest) throws RuntimeException {
mBuilder.setContentText(pairing.workstationName + ": " + signRequest.display());
return null;
}
@Override
public Void visit(GitSignRequest gitSignRequest) throws RuntimeException {
mBuilder.setContentTitle(gitSignRequest.title() + " Rejected").setContentText(pairing.workstationName + ": " + gitSignRequest.display());
RemoteViews remoteViewsSmall = new RemoteViews(context.getPackageName(), R.layout.result_remote);
remoteViewsSmall.setTextViewText(R.id.workstationName, pairing.workstationName);
remoteViewsSmall.setTextViewText(R.id.header, "Rejected Request From");
gitSignRequest.fillShortRemoteViews(remoteViewsSmall, false, null);
mBuilder.setCustomContentView(remoteViewsSmall);
RemoteViews remoteViewsBig = new RemoteViews(context.getPackageName(), R.layout.result_remote);
remoteViewsBig.setTextViewText(R.id.workstationName, pairing.workstationName);
remoteViewsBig.setTextViewText(R.id.header, "Rejected Request From");
gitSignRequest.fillRemoteViews(remoteViewsBig, false, null);
mBuilder.setCustomBigContentView(remoteViewsBig);
return null;
}
@Override
public Void visit(UnpairRequest unpairRequest) throws RuntimeException {
return null;
}
@Override
public Void visit(HostsRequest hostsRequest) throws RuntimeException {
return null;
}
@Override
public Void visit(ReadTeamRequest readTeamRequest) throws RuntimeException {
return null;
}
@Override
public Void visit(LogDecryptionRequest logDecryptionRequest) throws RuntimeException {
return null;
}
@Override
public Void visit(TeamOperationRequest teamOperationRequest) throws RuntimeException {
return null;
}
});
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
stackBuilder.addParentStack(MainActivity.class);
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(resultPendingIntent);
NotificationManagerCompat mNotifyMgr = NotificationManagerCompat.from(context);
mNotifyMgr.notify(0, mBuilder.build());
}
use of co.krypt.krypton.protocol.UnpairRequest in project krypton-android by kryptco.
the class ApprovalDialog method showApprovalDialog.
public static void showApprovalDialog(final Activity activity, final String requestID) {
Pair<Pairing, Request> pendingRequestAndPairing = Policy.getPendingRequestAndPairing(requestID);
if (pendingRequestAndPairing == null) {
Log.e(TAG, "user clicked notification for unknown request");
return;
}
Pairing pairing = pendingRequestAndPairing.first;
Request request = pendingRequestAndPairing.second;
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setIcon(R.mipmap.ic_launcher);
// setPositiveButton: right button
// setNeutralButton: left button
// setNegativeButton: middle button
long temporaryApprovalSeconds = Policy.temporaryApprovalSeconds(activity, request);
boolean temporaryApprovalEnabled = temporaryApprovalSeconds > 0;
String temporaryApprovalDuration = Policy.temporaryApprovalDuration(activity, request);
request.body.visit(new RequestBody.Visitor<Void, RuntimeException>() {
@Override
public Void visit(MeRequest meRequest) throws RuntimeException {
return null;
}
@Override
public Void visit(SignRequest signRequest) throws RuntimeException {
builder.setPositiveButton("Once", (dialog, id) -> Policy.onAction(activity.getApplicationContext(), requestID, Policy.APPROVE_ONCE));
if (temporaryApprovalEnabled) {
builder.setNeutralButton("All for " + temporaryApprovalDuration, (dialog, id) -> Policy.onAction(activity.getApplicationContext(), requestID, Policy.APPROVE_ALL_TEMPORARILY));
if (signRequest.hostNameVerified) {
builder.setNegativeButton("This host for " + temporaryApprovalDuration, (dialog, id) -> Policy.onAction(activity.getApplicationContext(), requestID, Policy.APPROVE_THIS_TEMPORARILY));
}
}
return null;
}
@Override
public Void visit(GitSignRequest gitSignRequest) throws RuntimeException {
builder.setPositiveButton("Once", (dialog, id) -> Policy.onAction(activity.getApplicationContext(), requestID, Policy.APPROVE_ONCE));
if (temporaryApprovalEnabled) {
builder.setNeutralButton("All for " + temporaryApprovalDuration, (dialog, id) -> Policy.onAction(activity.getApplicationContext(), requestID, Policy.APPROVE_ALL_TEMPORARILY));
}
return null;
}
@Override
public Void visit(UnpairRequest unpairRequest) throws RuntimeException {
return null;
}
@Override
public Void visit(HostsRequest hostsRequest) throws RuntimeException {
builder.setPositiveButton("Allow", (dialog, id) -> Policy.onAction(activity.getApplicationContext(), requestID, Policy.APPROVE_ONCE));
if (temporaryApprovalEnabled) {
builder.setNeutralButton("All for " + temporaryApprovalDuration, (dialog, id) -> Policy.onAction(activity.getApplicationContext(), requestID, Policy.APPROVE_ALL_TEMPORARILY));
}
return null;
}
@Override
public Void visit(ReadTeamRequest readTeamRequest) throws RuntimeException {
builder.setPositiveButton("Allow for " + temporaryApprovalDuration, (dialog, id) -> Policy.onAction(activity.getApplicationContext(), requestID, Policy.APPROVE_ALL_TEMPORARILY));
return null;
}
@Override
public Void visit(LogDecryptionRequest logDecryptionRequest) throws RuntimeException {
builder.setPositiveButton("Allow for " + temporaryApprovalDuration, (dialog, id) -> Policy.onAction(activity.getApplicationContext(), requestID, Policy.APPROVE_ALL_TEMPORARILY));
return null;
}
@Override
public Void visit(TeamOperationRequest teamOperationRequest) throws RuntimeException {
builder.setPositiveButton("Allow", (dialog, id) -> Policy.onAction(activity.getApplicationContext(), requestID, Policy.APPROVE_ONCE));
return null;
}
});
builder.setOnDismissListener(dialogInterface -> {
Policy.onAction(activity.getApplicationContext(), requestID, Policy.REJECT);
});
View requestView = activity.getLayoutInflater().inflate(R.layout.request, null);
TextView workstationNameText = (TextView) requestView.findViewById(R.id.workstationName);
workstationNameText.setText(pairing.workstationName);
ConstraintLayout content = (ConstraintLayout) requestView.findViewById(R.id.content);
request.fillView(content);
builder.setView(requestView);
builder.create().show();
}
Aggregations