这是基于vue-vben-admin 模板适用于abp vNext的前端管理项目
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

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,
};
}