Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Fix] Organisation Setting missing option #838

Merged
merged 3 commits into from
May 25, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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