Skip to content

Commit

Permalink
Merge pull request #838 from anand-aman/master
Browse files Browse the repository at this point in the history
[Fix] Organisation Setting missing option
  • Loading branch information
TheHazeEffect authored May 25, 2021
2 parents 8598b9b + eb3f815 commit d0a2473
Show file tree
Hide file tree
Showing 8 changed files with 91 additions and 123 deletions.
6 changes: 3 additions & 3 deletions lib/locator.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ import 'package:talawa/services/navigation_service.dart';
import 'package:talawa/utils/gql_client.dart';
import 'package:talawa/view_models/newwfeed_view_model/new_article_page_view_model.dart';
import 'package:talawa/view_models/page_view_model/add_event_page_view_model.dart';
import 'package:talawa/view_models/page_view_model/create_organization_page_viewModel.dart';
import 'package:talawa/view_models/page_view_model/create_organization_page_view_model.dart';
import 'package:talawa/view_models/page_view_model/events_page_view_model.dart';
import 'package:talawa/view_models/page_view_model/join_organization_view_model.dart';
import 'package:talawa/view_models/page_view_model/update_profile_page_viewModel.dart';
import 'package:talawa/view_models/page_view_model/profile_page_viewModel.dart';
import 'package:talawa/view_models/page_view_model/update_profile_page_view_model.dart';
import 'package:talawa/view_models/page_view_model/profile_page_view_model.dart';
import 'package:talawa/view_models/swtich_org_vm.dart';
import 'services/api_.dart';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,7 @@ class ProfilePageViewModel extends BaseModel {
bool get isCreator => _isCreator;
AuthController get authController => _authController;

initialize(BuildContext context, bool isCreator, List<User> test) {
if (isCreator != null && test != null) {
_userDetails = test;
_isCreator = isCreator;
_org = _userDetails[0].joinedOrganizations;
}
initialize({@required BuildContext context}) {
_context = context;
fetchUserDetails();
}
Expand All @@ -60,8 +55,8 @@ class ProfilePageViewModel extends BaseModel {
_orgId = await _preferences.getCurrentOrgId();
_userID = await _preferences.getUserId();
final GraphQLClient _client = _graphQLConfiguration.clientToQuery();
final QueryResult result = await _client.query(QueryOptions(
documentNode: gql(_query.fetchUserInfo), variables: {'id': _userID}));
final QueryResult result =
await _client.query(QueryOptions(documentNode: gql(_query.fetchUserInfo), variables: {'id': _userID}));
if (result.hasException) {
print(result.exception);
CustomToast.exceptionToast(msg: "Something went wrong!");
Expand All @@ -81,12 +76,9 @@ class ProfilePageViewModel extends BaseModel {
}
}
if (notFound == _org.length && _org.isNotEmpty) {
_orgController.setNewOrg(
_context, _org[0]['_id'].toString(), _org[0]['name'].toString());
Provider.of<Preferences>(_context, listen: false)
.saveCurrentOrgName(_org[0]['name'].toString());
Provider.of<Preferences>(_context, listen: false)
.saveCurrentOrgId(_org[0]['_id'].toString());
_orgController.setNewOrg(_context, _org[0]['_id'].toString(), _org[0]['name'].toString());
Provider.of<Preferences>(_context, listen: false).saveCurrentOrgName(_org[0]['name'].toString());
Provider.of<Preferences>(_context, listen: false).saveCurrentOrgId(_org[0]['_id'].toString());
await _preferences.saveCurrentOrgImgSrc(_org[0]['image'].toString());
}
fetchOrgAdmin();
Expand All @@ -100,8 +92,7 @@ class ProfilePageViewModel extends BaseModel {
_orgId = await _preferences.getCurrentOrgId();
if (_orgId != null) {
final GraphQLClient _client = _graphQLConfiguration.authClient();
final QueryResult result = await _client
.query(QueryOptions(documentNode: gql(_query.fetchOrgById(_orgId))));
final QueryResult result = await _client.query(QueryOptions(documentNode: gql(_query.fetchOrgById(_orgId))));
if (result.hasException) {
print(result.exception.toString());
CustomToast.exceptionToast(msg: "Please Try Again later!");
Expand All @@ -110,8 +101,7 @@ class ProfilePageViewModel extends BaseModel {
_curOrganization = result.data['organizations'] as List;
_creator = result.data['organizations'][0]['creator']['_id'].toString();
_isPublic = result.data['organizations'][0]['isPublic'] as bool;
result.data['organizations'][0]['admins']
.forEach((userId) => _admins.add(userId));
result.data['organizations'][0]['admins'].forEach((userId) => _admins.add(userId));
for (int i = 0; i < _admins.length; i++) {
print(_admins[i]['_id']);
if (_admins[i]['_id'] == _userID) {
Expand All @@ -137,8 +127,7 @@ class ProfilePageViewModel extends BaseModel {

final GraphQLClient _client = _graphQLConfiguration.authClient();

final QueryResult result = await _client
.mutate(MutationOptions(documentNode: gql(_query.leaveOrg(orgId))));
final QueryResult result = await _client.mutate(MutationOptions(documentNode: gql(_query.leaveOrg(orgId))));

if (result.hasException) {
final ExceptionType exceptionType = retrieveExceptionType(result);
Expand All @@ -154,24 +143,17 @@ class ProfilePageViewModel extends BaseModel {
}
if (!result.loading) {
print('done');
remaindingOrg =
result.data['leaveOrganization']['joinedOrganizations'] as List;
remaindingOrg = result.data['leaveOrganization']['joinedOrganizations'] as List;
if (remaindingOrg.isEmpty) {
newOrgId = null;
} else if (remaindingOrg.isNotEmpty) {
newOrgId = result.data['leaveOrganization']['joinedOrganizations'][0]
['_id']
.toString();
newOrgName = result.data['leaveOrganization']['joinedOrganizations'][0]
['name']
.toString();
newOrgId = result.data['leaveOrganization']['joinedOrganizations'][0]['_id'].toString();
newOrgName = result.data['leaveOrganization']['joinedOrganizations'][0]['name'].toString();
}

_orgController.setNewOrg(_context, newOrgId, newOrgName);
Provider.of<Preferences>(_context, listen: false)
.saveCurrentOrgName(newOrgName);
Provider.of<Preferences>(_context, listen: false)
.saveCurrentOrgId(newOrgId);
Provider.of<Preferences>(_context, listen: false).saveCurrentOrgName(newOrgName);
Provider.of<Preferences>(_context, listen: false).saveCurrentOrgId(newOrgId);
// _successToast('You are no longer apart of this organization');
pushNewScreen(
_context,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:talawa/utils/ui_scaling.dart';
import 'package:talawa/utils/uidata.dart';
import 'package:talawa/view_models/page_view_model/create_organization_page_viewModel.dart';
import 'package:talawa/view_models/page_view_model/create_organization_page_view_model.dart';

Widget addImage(CreateOrganizationViewModel model, BuildContext context) {
//function which is being called when the image is being add
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import 'package:talawa/utils/custom_toast.dart';
import 'package:talawa/utils/ui_scaling.dart';
import 'package:talawa/utils/uidata.dart';
import 'package:talawa/utils/validator.dart';
import 'package:talawa/view_models/page_view_model/create_organization_page_viewModel.dart';
import 'package:talawa/view_models/page_view_model/create_organization_page_view_model.dart';
import 'package:talawa/views/base_view.dart';
import 'package:talawa/views/pages/organization/Create%20Organization/create_organization_UI_Helper.dart';

Expand Down
156 changes: 71 additions & 85 deletions lib/views/pages/organization/profile_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import 'package:talawa/model/user.dart';
import 'package:talawa/utils/gql_client.dart';
import 'package:talawa/utils/ui_scaling.dart';
import 'package:talawa/utils/uidata.dart';
import 'package:talawa/view_models/page_view_model/profile_page_viewModel.dart';
import 'package:talawa/view_models/page_view_model/profile_page_view_model.dart';
import 'package:talawa/views/base_view.dart';
import 'package:talawa/views/pages/organization/join_organization_view.dart';
import 'package:talawa/views/pages/organization/update_profile_page_view.dart';
Expand All @@ -19,14 +19,60 @@ import 'package:talawa/views/widgets/loading.dart';
import 'switch_org_page.dart';

class ProfilePage extends StatelessWidget {
const ProfilePage({this.isCreator, this.test});
final bool isCreator;
final List<User> test;
const ProfilePage();

Widget showOrgSettingsButton({@required BuildContext context, @required ProfilePageViewModel model}) {
return ListTile(
key: const Key('Organization Settings'),
title: const Text(
'Organization Settings',
style: TextStyle(fontSize: 18.0),
),
leading: const Icon(
Icons.settings,
color: UIData.secondaryColor,
),
onTap: () {
pushNewScreen(
context,
screen: OrganizationSettings(
creator: model.creator == model.userID, public: model.isPublic, organization: model.curOrganization),
);
});
}

Widget showLeaveOrgButton({@required BuildContext context, @required ProfilePageViewModel model}) {
return model.org.isEmpty
? const SizedBox()
: ListTile(
key: const Key('Leave This Organization'),
title: const Text(
'Leave This Organization',
style: TextStyle(fontSize: 18.0),
),
leading: const Icon(
Icons.exit_to_app,
color: UIData.secondaryColor,
),
onTap: () async {
showDialog(
context: context,
builder: (BuildContext context) {
return AlertBox(
message: "Are you sure you want to leave this organization?",
function: model.leaveOrg,
);
},
);
},
);
}

//main build starts from here
@override
Widget build(BuildContext context) {
return BaseView<ProfilePageViewModel>(
onModelReady: (model) => model.initialize(context, isCreator, test),
onModelReady: (model) => model.initialize(context: context),
builder: (context, model, child) => Scaffold(
key: const Key('PROFILE_PAGE_SCAFFOLD'),
backgroundColor: Colors.white,
Expand Down Expand Up @@ -66,44 +112,30 @@ class ProfilePage extends StatelessWidget {
trailing: model.userDetails[0].image != null
? CircleAvatar(
radius: SizeConfig.safeBlockVertical * 3.75,
backgroundImage: NetworkImage(Provider.of<
GraphQLConfiguration>(context)
.displayImgRoute +
model.userDetails[0].image.toString()))
backgroundImage: NetworkImage(
Provider.of<GraphQLConfiguration>(context).displayImgRoute +
model.userDetails[0].image.toString()))
: CircleAvatar(
radius:
SizeConfig.safeBlockVertical * 5.625,
radius: SizeConfig.safeBlockVertical * 5.625,
backgroundColor: Colors.white,
child: Text(
model.userDetails[0].firstName
.toString()
.substring(0, 1)
.toUpperCase() +
model.userDetails[0].lastName
.toString()
.substring(0, 1)
.toUpperCase(),
model.userDetails[0].firstName.toString().substring(0, 1).toUpperCase() +
model.userDetails[0].lastName.toString().substring(0, 1).toUpperCase(),
style: const TextStyle(
color: UIData.primaryColor,
)),
)),
SizedBox(height: SizeConfig.safeBlockVertical * 1.25),
Padding(
padding: EdgeInsets.only(
left: SizeConfig.safeBlockHorizontal * 4),
child: Text(
"${model.userDetails[0].firstName} ${model.userDetails[0].lastName}",
style: const TextStyle(
fontSize: 20.0, color: Colors.white)),
padding: EdgeInsets.only(left: SizeConfig.safeBlockHorizontal * 4),
child: Text("${model.userDetails[0].firstName} ${model.userDetails[0].lastName}",
style: const TextStyle(fontSize: 20.0, color: Colors.white)),
),
SizedBox(height: SizeConfig.safeBlockVertical * 0.625),
Padding(
padding: EdgeInsets.only(
left: SizeConfig.safeBlockHorizontal * 4),
child: Text(
"Current Organization: ${model.orgName ?? 'No Organization Joined'}",
style: const TextStyle(
fontSize: 16.0, color: Colors.white)),
padding: EdgeInsets.only(left: SizeConfig.safeBlockHorizontal * 4),
child: Text("Current Organization: ${model.orgName ?? 'No Organization Joined'}",
style: const TextStyle(fontSize: 16.0, color: Colors.white)),
),
],
),
Expand Down Expand Up @@ -169,56 +201,12 @@ class ProfilePage extends StatelessWidget {
),
);
}),
model.isCreator == null
? const SizedBox()
: isCreator == true
? ListTile(
key: const Key('Organization Settings'),
title: const Text(
'Organization Settings',
style: TextStyle(fontSize: 18.0),
),
leading: const Icon(
Icons.settings,
color: UIData.secondaryColor,
),
onTap: () {
pushNewScreen(
context,
screen: OrganizationSettings(
creator:
model.creator == model.userID,
public: model.isPublic,
organization:
model.curOrganization),
);
})
: model.org.isEmpty
? const SizedBox()
: ListTile(
key: const Key(
'Leave This Organization'),
title: const Text(
'Leave This Organization',
style: TextStyle(fontSize: 18.0),
),
leading: const Icon(
Icons.exit_to_app,
color: UIData.secondaryColor,
),
onTap: () async {
showDialog(
context: context,
builder: (BuildContext context) {
return AlertBox(
message:
"Are you sure you want to leave this organization?",
function: model.leaveOrg,
);
},
);
},
),
///Only Creator of the Org can access Organisation settings
///If the user is the creator, Organisation Setting button is display
///Else Leave Organisation button is displayed for the members of Organisation
model.isCreator
? showOrgSettingsButton(context: context, model: model)
: showLeaveOrgButton(context: context, model: model),
ListTile(
key: const Key('Logout'),
title: const Text(
Expand All @@ -234,10 +222,8 @@ class ProfilePage extends StatelessWidget {
context: context,
builder: (BuildContext context) {
return AlertBox(
message:
"Are you sure you want to logout?",
function: () => model.authController
.logout(context));
message: "Are you sure you want to logout?",
function: () => model.authController.logout(context));
});
}),
MyAboutTile(),
Expand Down
2 changes: 1 addition & 1 deletion lib/views/pages/organization/update_profile_page_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import 'package:talawa/enums/viewstate.dart';
import 'package:talawa/utils/ui_scaling.dart';
import 'package:talawa/utils/uidata.dart';
import 'package:talawa/utils/validator.dart';
import 'package:talawa/view_models/page_view_model/update_profile_page_viewModel.dart';
import 'package:talawa/view_models/page_view_model/update_profile_page_view_model.dart';
import 'package:talawa/views/base_view.dart';

class UpdateProfileView extends StatelessWidget {
Expand Down

0 comments on commit d0a2473

Please sign in to comment.