created a method to get actionType and targetType from feed action key

This commit is contained in:
namushka 2024-06-08 02:34:33 +03:00
parent d4416586bb
commit d9e0257ea1
No known key found for this signature in database

View File

@ -0,0 +1,177 @@
enum FeedAction {
Create = "create",
Upload = "upload",
Update = "update",
Delete = "delete",
Rename = "rename",
Move = "move",
Copy = "copy",
}
enum FeedTarget {
File = "file",
Folder = "folder",
Room = "room",
RoomTag = "roomTag",
RoomLogo = "roomLogo",
RoomExternalLink = "roomExternalLink",
User = "user",
Group = "group",
}
export type AnyFeedInfo = (typeof feedInfo)[number];
export type ActionByTarget<T extends `${FeedTarget}`> = Extract<
AnyFeedInfo,
{ targetType: T }
>["actionType"];
export const feedInfo = [
//
// FILE
{
key: "FileCreated",
targetType: `${FeedTarget.File}`,
actionType: `${FeedAction.Create}`,
},
{
key: "FileUploaded",
targetType: `${FeedTarget.File}`,
actionType: `${FeedAction.Upload}`,
},
{
key: "UserFileUpdated",
targetType: `${FeedTarget.File}`,
actionType: `${FeedAction.Update}`,
},
{
key: "FileRenamed",
targetType: `${FeedTarget.File}`,
actionType: `${FeedAction.Rename}`,
},
{
key: "FileMoved",
targetType: `${FeedTarget.File}`,
actionType: `${FeedAction.Move}`,
},
{
key: "FileCopied",
targetType: `${FeedTarget.File}`,
actionType: `${FeedAction.Copy}`,
},
{
key: "FileDeleted",
targetType: `${FeedTarget.File}`,
actionType: `${FeedAction.Delete}`,
},
//
// FOLDER
{
key: "FolderCreated",
targetType: `${FeedTarget.Folder}`,
actionType: `${FeedAction.Create}`,
},
{
key: "FolderRenamed",
targetType: `${FeedTarget.Folder}`,
actionType: `${FeedAction.Rename}`,
},
{
key: "FolderMoved",
targetType: `${FeedTarget.Folder}`,
actionType: `${FeedAction.Move}`,
},
{
key: "FolderCopied",
targetType: `${FeedTarget.Folder}`,
actionType: `${FeedAction.Copy}`,
},
{
key: "FolderDeleted",
targetType: `${FeedTarget.Folder}`,
actionType: `${FeedAction.Delete}`,
},
//
// ROOM
{
key: "RoomCreated",
targetType: `${FeedTarget.Room}`,
actionType: `${FeedAction.Create}`,
},
{
key: "RoomRenamed",
targetType: `${FeedTarget.Room}`,
actionType: `${FeedAction.Rename}`,
},
// ROOM TAGS
{
key: "AddedRoomTags",
targetType: `${FeedTarget.RoomTag}`,
actionType: `${FeedAction.Create}`,
},
{
key: "DeletedRoomTags",
targetType: `${FeedTarget.RoomTag}`,
actionType: `${FeedAction.Delete}`,
},
// ROOM LOGO
{
key: "RoomLogoCreated",
targetType: `${FeedTarget.RoomLogo}`,
actionType: `${FeedAction.Create}`,
},
{
key: "RoomLogoDeleted",
targetType: `${FeedTarget.RoomLogo}`,
actionType: `${FeedAction.Delete}`,
},
// ROOM EXTERNAL LINK
{
key: "RoomExternalLinkCreated",
targetType: `${FeedTarget.RoomExternalLink}`,
actionType: `${FeedAction.Create}`,
},
{
key: "RoomExternalLinkDeleted",
targetType: `${FeedTarget.RoomExternalLink}`,
actionType: `${FeedAction.Delete}`,
},
//
// USER
{
key: "RoomCreateUser",
targetType: `${FeedTarget.User}`,
actionType: `${FeedAction.Create}`,
},
{
key: "RoomUpdateAccessForUser",
targetType: `${FeedTarget.User}`,
actionType: `${FeedAction.Update}`,
},
{
key: "RoomRemoveUser",
targetType: `${FeedTarget.User}`,
actionType: `${FeedAction.Delete}`,
},
//
// GROUP
{
key: "RoomGroupAdded",
targetType: `${FeedTarget.Group}`,
actionType: `${FeedAction.Create}`,
},
{
key: "RoomUpdateAccessForGroup",
targetType: `${FeedTarget.Group}`,
actionType: `${FeedAction.Update}`,
},
{
key: "RoomGroupRemove",
targetType: `${FeedTarget.Group}`,
actionType: `${FeedAction.Delete}`,
},
] as const;
export const getFeedInfo = (feed: { action: { key: AnyFeedInfo["key"] } }) => {
return feedInfo.find((info) => info.key === feed.action.key)!;
};