mirror of
https://github.com/bitwarden/browser
synced 2026-02-19 02:44:01 +00:00
* add notification handler for auto confirm * add missing state check * fix test * isolate angular specific code from shared lib code * clean up * use autoconfirm method * fix test
229 lines
7.0 KiB
TypeScript
229 lines
7.0 KiB
TypeScript
import { Policy } from "@bitwarden/common/admin-console/models/domain/policy";
|
|
import { NotificationViewResponse as EndUserNotificationResponse } from "@bitwarden/common/vault/notifications/models";
|
|
|
|
import { NotificationType, PushNotificationLogOutReasonType } from "../../enums";
|
|
|
|
import { BaseResponse } from "./base.response";
|
|
|
|
export class NotificationResponse extends BaseResponse {
|
|
contextId: string;
|
|
type: NotificationType;
|
|
payload: any;
|
|
|
|
constructor(response: any) {
|
|
super(response);
|
|
this.contextId = this.getResponseProperty("ContextId");
|
|
this.type = this.getResponseProperty("Type");
|
|
|
|
let payload = this.getResponseProperty("Payload");
|
|
|
|
if (typeof payload === "string") {
|
|
try {
|
|
payload = JSON.parse(payload);
|
|
} catch {
|
|
// guess it was a string
|
|
}
|
|
}
|
|
|
|
switch (this.type) {
|
|
case NotificationType.SyncCipherCreate:
|
|
case NotificationType.SyncCipherDelete:
|
|
case NotificationType.SyncCipherUpdate:
|
|
case NotificationType.SyncLoginDelete:
|
|
this.payload = new SyncCipherNotification(payload);
|
|
break;
|
|
case NotificationType.SyncFolderCreate:
|
|
case NotificationType.SyncFolderDelete:
|
|
case NotificationType.SyncFolderUpdate:
|
|
this.payload = new SyncFolderNotification(payload);
|
|
break;
|
|
case NotificationType.SyncVault:
|
|
case NotificationType.SyncCiphers:
|
|
case NotificationType.SyncOrganizations:
|
|
case NotificationType.SyncOrgKeys:
|
|
case NotificationType.SyncSettings:
|
|
this.payload = new UserNotification(payload);
|
|
break;
|
|
case NotificationType.LogOut:
|
|
this.payload = new LogOutNotification(payload);
|
|
break;
|
|
case NotificationType.SyncSendCreate:
|
|
case NotificationType.SyncSendUpdate:
|
|
case NotificationType.SyncSendDelete:
|
|
this.payload = new SyncSendNotification(payload);
|
|
break;
|
|
case NotificationType.AuthRequest:
|
|
case NotificationType.AuthRequestResponse:
|
|
this.payload = new AuthRequestPushNotification(payload);
|
|
break;
|
|
case NotificationType.SyncOrganizationStatusChanged:
|
|
this.payload = new OrganizationStatusPushNotification(payload);
|
|
break;
|
|
case NotificationType.SyncOrganizationCollectionSettingChanged:
|
|
this.payload = new OrganizationCollectionSettingChangedPushNotification(payload);
|
|
break;
|
|
case NotificationType.Notification:
|
|
case NotificationType.NotificationStatus:
|
|
this.payload = new EndUserNotificationResponse(payload);
|
|
break;
|
|
case NotificationType.OrganizationBankAccountVerified:
|
|
this.payload = new OrganizationBankAccountVerifiedPushNotification(payload);
|
|
break;
|
|
case NotificationType.ProviderBankAccountVerified:
|
|
this.payload = new ProviderBankAccountVerifiedPushNotification(payload);
|
|
break;
|
|
case NotificationType.SyncPolicy:
|
|
this.payload = new SyncPolicyNotification(payload);
|
|
break;
|
|
case NotificationType.AutoConfirmMember:
|
|
this.payload = new AutoConfirmMemberNotification(payload);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
export class SyncCipherNotification extends BaseResponse {
|
|
id: string;
|
|
userId: string;
|
|
organizationId: string;
|
|
collectionIds: string[];
|
|
revisionDate: Date;
|
|
|
|
constructor(response: any) {
|
|
super(response);
|
|
this.id = this.getResponseProperty("Id");
|
|
this.userId = this.getResponseProperty("UserId");
|
|
this.organizationId = this.getResponseProperty("OrganizationId");
|
|
this.collectionIds = this.getResponseProperty("CollectionIds");
|
|
this.revisionDate = new Date(this.getResponseProperty("RevisionDate"));
|
|
}
|
|
}
|
|
|
|
export class SyncFolderNotification extends BaseResponse {
|
|
id: string;
|
|
userId: string;
|
|
revisionDate: Date;
|
|
|
|
constructor(response: any) {
|
|
super(response);
|
|
this.id = this.getResponseProperty("Id");
|
|
this.userId = this.getResponseProperty("UserId");
|
|
this.revisionDate = new Date(this.getResponseProperty("RevisionDate"));
|
|
}
|
|
}
|
|
|
|
export class UserNotification extends BaseResponse {
|
|
userId: string;
|
|
date: Date;
|
|
|
|
constructor(response: any) {
|
|
super(response);
|
|
this.userId = this.getResponseProperty("UserId");
|
|
this.date = new Date(this.getResponseProperty("Date"));
|
|
}
|
|
}
|
|
|
|
export class SyncSendNotification extends BaseResponse {
|
|
id: string;
|
|
userId: string;
|
|
revisionDate: Date;
|
|
|
|
constructor(response: any) {
|
|
super(response);
|
|
this.id = this.getResponseProperty("Id");
|
|
this.userId = this.getResponseProperty("UserId");
|
|
this.revisionDate = new Date(this.getResponseProperty("RevisionDate"));
|
|
}
|
|
}
|
|
|
|
export class AuthRequestPushNotification extends BaseResponse {
|
|
id: string;
|
|
userId: string;
|
|
|
|
constructor(response: any) {
|
|
super(response);
|
|
this.id = this.getResponseProperty("Id");
|
|
this.userId = this.getResponseProperty("UserId");
|
|
}
|
|
}
|
|
|
|
export class OrganizationStatusPushNotification extends BaseResponse {
|
|
organizationId: string;
|
|
enabled: boolean;
|
|
|
|
constructor(response: any) {
|
|
super(response);
|
|
this.organizationId = this.getResponseProperty("OrganizationId");
|
|
this.enabled = this.getResponseProperty("Enabled");
|
|
}
|
|
}
|
|
|
|
export class OrganizationCollectionSettingChangedPushNotification extends BaseResponse {
|
|
organizationId: string;
|
|
limitCollectionCreation: boolean;
|
|
limitCollectionDeletion: boolean;
|
|
|
|
constructor(response: any) {
|
|
super(response);
|
|
|
|
this.organizationId = this.getResponseProperty("OrganizationId");
|
|
this.limitCollectionCreation = this.getResponseProperty("LimitCollectionCreation");
|
|
this.limitCollectionDeletion = this.getResponseProperty("LimitCollectionDeletion");
|
|
}
|
|
}
|
|
|
|
export class OrganizationBankAccountVerifiedPushNotification extends BaseResponse {
|
|
organizationId: string;
|
|
|
|
constructor(response: any) {
|
|
super(response);
|
|
this.organizationId = this.getResponseProperty("OrganizationId");
|
|
}
|
|
}
|
|
|
|
export class ProviderBankAccountVerifiedPushNotification extends BaseResponse {
|
|
providerId: string;
|
|
adminId: string;
|
|
|
|
constructor(response: any) {
|
|
super(response);
|
|
this.providerId = this.getResponseProperty("ProviderId");
|
|
this.adminId = this.getResponseProperty("AdminId");
|
|
}
|
|
}
|
|
|
|
export class SyncPolicyNotification extends BaseResponse {
|
|
policy: Policy;
|
|
|
|
constructor(response: any) {
|
|
super(response);
|
|
this.policy = this.getResponseProperty("Policy");
|
|
}
|
|
}
|
|
|
|
export class LogOutNotification extends BaseResponse {
|
|
userId: string;
|
|
reason?: PushNotificationLogOutReasonType;
|
|
|
|
constructor(response: any) {
|
|
super(response);
|
|
this.userId = this.getResponseProperty("UserId");
|
|
this.reason = this.getResponseProperty("Reason");
|
|
}
|
|
}
|
|
|
|
export class AutoConfirmMemberNotification extends BaseResponse {
|
|
userId: string;
|
|
targetUserId: string;
|
|
organizationId: string;
|
|
|
|
constructor(response: any) {
|
|
super(response);
|
|
this.targetUserId = this.getResponseProperty("TargetUserId");
|
|
this.userId = this.getResponseProperty("UserId");
|
|
this.organizationId = this.getResponseProperty("OrganizationId");
|
|
}
|
|
}
|