@@ -110,11 +110,13 @@ class ManageGroupRouteState extends State<ManageGroupRoute> {
110110 stream: bloc.groupLoaded,
111111 builder: (context, snapshot) {
112112 if (snapshot.hasData) {
113+
114+ var group = snapshot.data! ;
113115 return Column (
114116 crossAxisAlignment: CrossAxisAlignment .start,
115117 children: < Widget > [
116118 if (bloc.mrClient
117- .isPortfolioOrSuperAdmin (snapshot.data ! .portfolioId))
119+ .isPortfolioOrSuperAdmin (group .portfolioId))
118120 Padding (
119121 padding: const EdgeInsets .all (8.0 ),
120122 child: FilledButton .icon (
@@ -125,7 +127,7 @@ class ManageGroupRouteState extends State<ManageGroupRoute> {
125127 .addOverlay ((BuildContext context) {
126128 return AddMembersDialogWidget (
127129 bloc: bloc,
128- group: snapshot.data ! ,
130+ group: group ,
129131 );
130132 }),
131133 ),
@@ -143,22 +145,22 @@ class ManageGroupRouteState extends State<ManageGroupRoute> {
143145 label: Text (
144146 AppLocalizations .of (context)! .columnName),
145147 onSort: (columnIndex, ascending) {
146- onSortColumn (snapshot.data ! .members ,
148+ onSortColumn (group.sMembers ,
147149 columnIndex, ascending);
148150 }),
149151 DataColumn (
150152 label: Text (
151153 AppLocalizations .of (context)! .columnEmail),
152154 onSort: (columnIndex, ascending) {
153- onSortColumn (snapshot.data ! .members ,
155+ onSortColumn (group.sMembers ,
154156 columnIndex, ascending);
155157 },
156158 ),
157159 DataColumn (
158160 label: Text (AppLocalizations .of (context)!
159161 .columnMemberType),
160162 onSort: (columnIndex, ascending) {
161- onSortColumn (snapshot.data ! .members ,
163+ onSortColumn (group.sMembers ,
162164 columnIndex, ascending);
163165 },
164166 ),
@@ -171,24 +173,22 @@ class ManageGroupRouteState extends State<ManageGroupRoute> {
171173 onSort: (i, a) => {}),
172174 ],
173175 rows: [
174- for (Person member in snapshot.data ! .members )
176+ for (GroupPerson member in group.sMembers )
175177 DataRow (cells: [
176178 DataCell (
177- Text (member.name ?? '' ),
179+ Text (member.person. name ?? '' ),
178180 ),
179181 DataCell (Text (
180- member.personType == PersonType .person
181- ? member.email!
182+ member.person.type == PersonType .person
183+ ? member.person. email!
182184 : "" )),
183185 DataCell (Text (
184- member.personType == PersonType .person
186+ member.person.type == PersonType .person
185187 ? AppLocalizations .of (context)!
186188 .memberTypeUser
187189 : AppLocalizations .of (context)!
188190 .memberTypeServiceAccount)),
189- DataCell (bloc.mrClient
190- .isPortfolioOrSuperAdmin (
191- snapshot.data! .portfolioId)
191+ DataCell (! member.superuser
192192 ? Tooltip (
193193 message: AppLocalizations .of (context)!
194194 .removeFromGroup,
@@ -197,14 +197,14 @@ class ManageGroupRouteState extends State<ManageGroupRoute> {
197197 onPressed: () async {
198198 try {
199199 await bloc.removeFromGroup (
200- snapshot.data ! , member);
200+ group , member.person.id );
201201 if (context.mounted) {
202202 bloc.mrClient.addSnackbar (
203203 Text (AppLocalizations .of (
204204 context)!
205205 .memberRemovedFromGroup (
206- member.name ?? '' ,
207- snapshot.data !
206+ member.person. name,
207+ group
208208 .name)));
209209 }
210210 } catch (e, s) {
@@ -230,39 +230,39 @@ class ManageGroupRouteState extends State<ManageGroupRoute> {
230230 );
231231 }
232232
233- void onSortColumn (List <Person > people, int columnIndex, bool ascending) {
233+ void onSortColumn (List <GroupPerson > people, int columnIndex, bool ascending) {
234234 setState (() {
235235 if (columnIndex == 0 ) {
236236 if (ascending) {
237237 people.sort ((a, b) {
238- return a.name! .toLowerCase ().compareTo (b.name! .toLowerCase ());
238+ return a.person. name.toLowerCase ().compareTo (b.person .name! .toLowerCase ());
239239 });
240240 } else {
241241 people.sort ((a, b) {
242- return b.name! .toLowerCase ().compareTo (a.name! .toLowerCase ());
242+ return b.person. name.toLowerCase ().compareTo (a.person. name.toLowerCase ());
243243 });
244244 }
245245 }
246246 if (columnIndex == 1 ) {
247247 if (ascending) {
248248 people.sort ((a, b) =>
249- a.email! .toLowerCase ().compareTo (b.email! .toLowerCase ()));
249+ a.person. email! .toLowerCase ().compareTo (b.person .email! .toLowerCase ()));
250250 } else {
251251 people.sort ((a, b) =>
252- b.email! .toLowerCase ().compareTo (a.email! .toLowerCase ()));
252+ b.person. email! .toLowerCase ().compareTo (a.person .email! .toLowerCase ()));
253253 }
254254 }
255255 if (columnIndex == 2 ) {
256256 if (ascending) {
257- people.sort ((a, b) => a.personType
257+ people.sort ((a, b) => a.person.type
258258 .toString ()
259259 .toLowerCase ()
260- .compareTo (b.personType .toString ().toLowerCase ()));
260+ .compareTo (b.person.type .toString ().toLowerCase ()));
261261 } else {
262- people.sort ((a, b) => b.personType
262+ people.sort ((a, b) => b.person.type
263263 .toString ()
264264 .toLowerCase ()
265- .compareTo (a.personType .toString ().toLowerCase ()));
265+ .compareTo (a.person.type .toString ().toLowerCase ()));
266266 }
267267 }
268268 if (sortColumnIndex == columnIndex) {
@@ -430,10 +430,8 @@ class _AddMembersDialogWidgetState extends State<AddMembersDialogWidget> {
430430 keepCase: true ,
431431 onPressed: () async {
432432 final group = widget.group;
433- group.members = List .from (group.members)..addAll (membersToAdd);
434- // remove duplicates
435- group.members = group.members.toSet ().toList ();
436- final success = await widget.bloc.updateGroup (group);
433+
434+ final success = await widget.bloc.addUsersToGroup (group, membersToAdd);
437435 if (success) {
438436 widget.bloc.mrClient.removeOverlay ();
439437 if (context.mounted) {
0 commit comments