You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
2.5 KiB
62 lines
2.5 KiB
|
|
import { useLocalization } from '/@/hooks/abp/useLocalization';
|
|
import { NotificationInfo } from '/@/api/messages/notifications/model';
|
|
import { NotificationContentType, NotificationLifetime, NotificationSeverity, NotificationType } from '/@/api/realtime/notifications/types';
|
|
|
|
interface Notification {
|
|
name: string;
|
|
title: string;
|
|
message: string;
|
|
description?: string;
|
|
creationTime: Date;
|
|
lifetime: NotificationLifetime;
|
|
type: NotificationType;
|
|
severity: NotificationSeverity;
|
|
contentType: NotificationContentType;
|
|
data: Recordable<string>;
|
|
}
|
|
|
|
export function useNotificationSerializer() {
|
|
function deserialize(notificationInfo: NotificationInfo): Notification {
|
|
const { data } = notificationInfo;
|
|
let title = data.extraProperties.title;
|
|
let message = data.extraProperties.message;
|
|
let description = data.extraProperties.description;
|
|
if (data.extraProperties.L === true || data.extraProperties.L === 'true') {
|
|
const { L } = useLocalization(
|
|
[data.extraProperties.title.resourceName ?? data.extraProperties.title.ResourceName,
|
|
data.extraProperties.message.resourceName ?? data.extraProperties.message.ResourceName,
|
|
data.extraProperties.description?.resourceName ?? data.extraProperties.description?.ResourceName ?? "AbpUi"]);
|
|
title = L(
|
|
data.extraProperties.title.name ?? data.extraProperties.title.Name,
|
|
data.extraProperties.title.values ?? data.extraProperties.title.Values,
|
|
);
|
|
message = L(
|
|
data.extraProperties.message.name ?? data.extraProperties.message.Name,
|
|
data.extraProperties.message.values ?? data.extraProperties.message.Values,
|
|
);
|
|
if (description) {
|
|
description = L(
|
|
data.extraProperties.description.name ?? data.extraProperties.description.Name,
|
|
data.extraProperties.description.values ?? data.extraProperties.description.Values,
|
|
);
|
|
}
|
|
}
|
|
return {
|
|
title,
|
|
message,
|
|
description,
|
|
creationTime: notificationInfo.creationTime,
|
|
contentType: notificationInfo.contentType,
|
|
lifetime: notificationInfo.lifetime,
|
|
severity: notificationInfo.severity,
|
|
type: notificationInfo.type,
|
|
data: data.extraProperties,
|
|
name: notificationInfo.name,
|
|
};
|
|
};
|
|
|
|
return {
|
|
deserialize,
|
|
};
|
|
}
|