import {Log} from "fme-logger"; var L = new Log("groups"); import {TradechatUser} from "./users"; import {TradechatServer} from "../tradechat-server"; import {Collection} from "mongodb"; import { autoLinkUsernamesOrLists } from "twitter-text"; export class TradechatGroup { name:string = ""; _id?: string ; id:string = ""; maxSize:number = 10; owner:TradechatUser = {} as TradechatUser; members:TradechatUser[]= []; socketsId:string[] = []; } export class TradechatGroupController { groupDb:Collection = {} as Collection; groups:TradechatGroup[] = []; constructor(public tradechatServer:TradechatServer){ } init = async () => { this.groupDb = this.tradechatServer.db.collection("groups"); } addOnlineUserToGroups = (user:TradechatUser) => { for (var i in user.groups) { var group = user.groups[i]; // this.getGroup(group).socketsId } } getGroup = (group:TradechatGroup) => { } getGroups = async () => { this.groups = await this.groupDb.find({}).toArray(); } createGroup = async (groupName:string,groupOwner:TradechatUser) => { var group = await this.groupDb.find({"name":groupName}).toArray() as TradechatGroup[]; if (group.length == 0) { var newGroup = new TradechatGroup(); newGroup.name = groupName; newGroup.owner = groupOwner; newGroup.members.push(groupOwner); await this.groupDb.save(newGroup); } } addUserToGroup = async (groupName:string,user:TradechatUser) => { var index = -1; var groups = await this.groupDb.find({"name":groupName}).toArray() as TradechatGroup[]; if (groups.length == 1) { let group = groups[0]; index = group.members.findIndex( (a) => { return a.id == user.id}); if (index == -1) { L.info ("Add User To Group:",user); group.members.push(user); await this.groupDb.save(group); } else { L.error("addUsrToGroup: already a member",user); } } else { L.error("addUserToGroup: Too many or few groups",index,groups); } } removeUserFromGroup = async (groupName:string,user:TradechatUser) => { var index = -1; var groups = await this.groupDb.find({"name":groupName}).toArray() as TradechatGroup[]; if (groups.length == 1) { let group = groups[0]; index = group.members.findIndex( (a) => { return a.id == user.id}); if (index == -1) { L.error ("RemoveUserFromGroup: can't find ",user); } else { L.error("addUsrToGroup: already a member",user); group.members.splice(index,1); await this.groupDb.save(group); } } else { L.error("addUserToGroup: Too many or few groups",index,groups); } } }