mirror of
				https://gitlab.com/comunic/comunicapiv2
				synced 2025-10-31 01:24:43 +00:00 
			
		
		
		
	Can get all the membership of a user
This commit is contained in:
		
							
								
								
									
										24
									
								
								src/controllers/FriendsController.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								src/controllers/FriendsController.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | ||||
| import { Friend } from "../entities/Friend"; | ||||
|  | ||||
| /** | ||||
|  * Friends controller | ||||
|  *  | ||||
|  * @author Pierre HUBERT | ||||
|  */ | ||||
|  | ||||
| export class FriendsController { | ||||
|  | ||||
| 	/** | ||||
| 	 * Turn a friend object into an API entry | ||||
| 	 *  | ||||
| 	 * @param friend Friend object to transform | ||||
| 	 */ | ||||
| 	public static FriendToAPI(friend: Friend) : any { | ||||
| 		return { | ||||
| 			ID_friend: friend.friendID, | ||||
| 			accepted: friend.accepted, | ||||
| 			time_last_activity: friend.lastActivityTime | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| } | ||||
| @@ -7,6 +7,7 @@ import { SearchController } from "./SearchController"; | ||||
| import { GroupsController } from "./GroupsController"; | ||||
| import { NotificationsController } from "./NotificationsController"; | ||||
| import { VirtualDirectoryController } from "./VirtualDirectoryController"; | ||||
| import { WebAppControllers } from "./WebAppController"; | ||||
|  | ||||
| /** | ||||
|  * Controllers routes | ||||
| @@ -152,4 +153,9 @@ export const Routes : Route[] = [ | ||||
|  | ||||
| 	{path: "/virtualDirectory/find", cb: (h) => VirtualDirectoryController.Find(h)}, | ||||
|  | ||||
|  | ||||
| 	 | ||||
| 	// Web app controller | ||||
| 	{path: "/webApp/getMemberships", cb: (h) => WebAppControllers.GetMemberships(h)}, | ||||
| 	 | ||||
| ] | ||||
							
								
								
									
										36
									
								
								src/controllers/WebAppController.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								src/controllers/WebAppController.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,36 @@ | ||||
| import { RequestHandler } from "../entities/RequestHandler"; | ||||
| import { WebappHelper } from "../helpers/WebappHelper"; | ||||
| import { UserMembershipType } from "../entities/UserMembershipEntry"; | ||||
| import { FriendsController } from "./FriendsController"; | ||||
| import { Friend } from "../entities/Friend"; | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Web application controllers | ||||
|  *  | ||||
|  * @author Pierre HUBERT | ||||
|  */ | ||||
| export class WebAppControllers { | ||||
|  | ||||
| 	/** | ||||
| 	 * Get the memberships of the user | ||||
| 	 *  | ||||
| 	 * @param h Request handler | ||||
| 	 */ | ||||
| 	public static async GetMemberships(h: RequestHandler) { | ||||
| 		 | ||||
| 		const list = await WebappHelper.GetUserMemberships(h.getUserId()); | ||||
| 		 | ||||
| 		h.send(list.map((l) => l.type == UserMembershipType.FRIEND ? { | ||||
| 			// In case of friend | ||||
| 			type: "friend", | ||||
| 			friend: FriendsController.FriendToAPI(<Friend>l.el) | ||||
| 		} : { | ||||
| 			// In case of group | ||||
| 			type: "group", | ||||
| 			id: l.el, | ||||
| 			last_activity: l.lastActivity | ||||
| 		})); | ||||
| 	} | ||||
|  | ||||
| } | ||||
							
								
								
									
										17
									
								
								src/entities/UserMembershipEntry.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								src/entities/UserMembershipEntry.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | ||||
| import { Friend } from "./Friend"; | ||||
|  | ||||
| /** | ||||
|  * Get information about a membership | ||||
|  *  | ||||
|  * @author Pierre HUBERT | ||||
|  */ | ||||
|  | ||||
| export enum UserMembershipType { GROUP, FRIEND } | ||||
|  | ||||
| export class UserMembershipEntry { | ||||
| 	constructor( | ||||
| 		public lastActivity: number, | ||||
| 		public el: Friend | number, | ||||
| 		public type: UserMembershipType | ||||
| 	) {} | ||||
| } | ||||
| @@ -454,6 +454,16 @@ export class GroupsHelper { | ||||
| 		}); | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Get the last activity time of a group | ||||
| 	 *  | ||||
| 	 * @param groupID Target group ID | ||||
| 	 */ | ||||
| 	public static async GetLastActivity(groupID: number) : Promise<number> { | ||||
| 		// TODO : implement | ||||
| 		return groupID; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Turn a database row into a {GroupInfo} object | ||||
| 	 *  | ||||
|   | ||||
							
								
								
									
										40
									
								
								src/helpers/WebappHelper.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								src/helpers/WebappHelper.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,40 @@ | ||||
| import { UserMembershipEntry, UserMembershipType } from "../entities/UserMembershipEntry"; | ||||
| import { FriendsHelper } from "./FriendsHelper"; | ||||
| import { GroupsHelper } from "./GroupsHelper"; | ||||
|  | ||||
| /** | ||||
|  * Web applications helper | ||||
|  *  | ||||
|  * @author Pierre HUBERT | ||||
|  */ | ||||
|  | ||||
| export class WebappHelper { | ||||
|  | ||||
| 	/** | ||||
| 	 * Get all the membership of a user | ||||
| 	 *  | ||||
| 	 * @param userID Target user ID | ||||
| 	 */ | ||||
| 	public static async GetUserMemberships(userID: number) : Promise<Array<UserMembershipEntry>> { | ||||
|  | ||||
| 		// Get the list of friends of the user | ||||
| 		const friendsList = await FriendsHelper.GetList(userID); | ||||
| 		const groupsList = await GroupsHelper.GetListUser(userID); | ||||
|  | ||||
| 		const list : Array<UserMembershipEntry> = []; | ||||
|  | ||||
| 		// Add friends to the list | ||||
| 		friendsList.forEach((f) => list.push(new UserMembershipEntry( | ||||
| 			f.lastActivityTime, f, UserMembershipType.FRIEND))); | ||||
| 		 | ||||
| 		// Add groups to the list | ||||
| 		for(const g of groupsList) list.push(new UserMembershipEntry( | ||||
| 			await GroupsHelper.GetLastActivity(g), g, UserMembershipType.GROUP)); | ||||
|  | ||||
| 		// Sort entries by latest activities | ||||
| 		list.sort((a, b) => b.lastActivity - a.lastActivity); | ||||
|  | ||||
| 		return list; | ||||
| 	} | ||||
|  | ||||
| } | ||||
		Reference in New Issue
	
	Block a user