@@ -878,16 +878,16 @@ void Remote::PullGroups(ProgressFunction progress)
878878}
879879
880880
881- Ref<CollabGroup> Remote::CreateGroup (const std::string& name, const std::vector<std::string>& usernames )
881+ Ref<CollabGroup> Remote::CreateGroup (const std::string& name, const std::vector<Ref<CollabUser>>& users )
882882{
883- const char ** cstrNames = new const char *[usernames .size ()];
884- for (size_t i = 0 ; i < usernames .size (); i++)
883+ BNCollaborationUser ** cUsers = new BNCollaborationUser*[users .size ()];
884+ for (size_t i = 0 ; i < users .size (); i++)
885885 {
886- cstrNames [i] = usernames [i]. c_str () ;
886+ cUsers [i] = users [i]-> m_object ;
887887 }
888888
889- BNCollaborationGroup* group = BNRemoteCreateGroup (m_object, name.c_str (), cstrNames, usernames .size ());
890- delete[] cstrNames ;
889+ BNCollaborationGroup* group = BNRemoteCreateGroup (m_object, name.c_str (), cUsers, users .size ());
890+ delete[] cUsers ;
891891 if (!group)
892892 return nullptr ;
893893 return new CollabGroup (group);
@@ -1076,22 +1076,38 @@ void CollabGroup::SetName(const std::string& name)
10761076}
10771077
10781078
1079- void CollabGroup::SetUsernames ( const std::vector<std::string>& usernames )
1079+ std::vector<Ref<CollabUser>> CollabGroup::GetUsers ( )
10801080{
1081- const char ** cNames = new const char *[usernames.size ()];
1082- for (size_t i = 0 ; i < usernames.size (); i++)
1081+ size_t count = 0 ;
1082+ BNCollaborationUser** users = BNCollaborationGroupGetUsers (m_object, &count);
1083+ std::vector<Ref<CollabUser>> out;
1084+ out.reserve (count);
1085+ for (size_t i = 0 ; i < count; i++)
1086+ {
1087+ out.push_back (new CollabUser (BNNewCollaborationUserReference (users[i])));
1088+ }
1089+ BNFreeCollaborationUserList (users, count);
1090+ return out;
1091+ }
1092+
1093+
1094+ void CollabGroup::SetUsers (const std::vector<Ref<CollabUser>>& users)
1095+ {
1096+ size_t count = users.size ();
1097+ BNCollaborationUser** cUsers = new BNCollaborationUser*[count];
1098+ for (size_t i = 0 ; i < count; i++)
10831099 {
1084- cNames [i] = usernames [i]. c_str () ;
1100+ cUsers [i] = users [i]-> m_object ;
10851101 }
10861102
1087- BNCollaborationGroupSetUsernames (m_object, cNames, usernames. size () );
1088- delete[] cNames ;
1103+ BNCollaborationGroupSetUsers (m_object, cUsers, count );
1104+ delete[] cUsers ;
10891105}
10901106
10911107
1092- bool CollabGroup::ContainsUser (const std::string& username )
1108+ bool CollabGroup::ContainsUser (Ref<CollabUser> user )
10931109{
1094- return BNCollaborationGroupContainsUser (m_object, username. c_str () );
1110+ return BNCollaborationGroupContainsUser (m_object, user-> m_object );
10951111}
10961112
10971113
@@ -1566,21 +1582,21 @@ void RemoteProject::DeletePermission(Ref<CollabPermission> permission)
15661582}
15671583
15681584
1569- bool RemoteProject::CanUserView (const std::string& username )
1585+ bool RemoteProject::CanUserView (Ref<CollabUser> user )
15701586{
1571- return BNRemoteProjectCanUserView (m_object, username. c_str () );
1587+ return BNRemoteProjectCanUserView (m_object, user-> m_object );
15721588}
15731589
15741590
1575- bool RemoteProject::CanUserEdit (const std::string& username )
1591+ bool RemoteProject::CanUserEdit (Ref<CollabUser> user )
15761592{
1577- return BNRemoteProjectCanUserEdit (m_object, username. c_str () );
1593+ return BNRemoteProjectCanUserEdit (m_object, user-> m_object );
15781594}
15791595
15801596
1581- bool RemoteProject::CanUserAdmin (const std::string& username )
1597+ bool RemoteProject::CanUserAdmin (Ref<CollabUser> user )
15821598{
1583- return BNRemoteProjectCanUserAdmin (m_object, username. c_str () );
1599+ return BNRemoteProjectCanUserAdmin (m_object, user-> m_object );
15841600}
15851601
15861602
0 commit comments